@projectcor/maia-components 2.50.1-1 → 2.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/README.md +2 -0
  2. package/lib/App.js +19 -44
  3. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +1 -3
  4. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +1 -3
  5. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +14 -24
  6. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +10 -28
  7. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +15 -19
  8. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +4 -8
  9. package/lib/components/atoms/ClientSelector/ClientSelector.js +13 -15
  10. package/lib/components/atoms/Fade/Fade.js +6 -10
  11. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
  12. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
  13. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +2 -3
  14. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +2 -3
  15. package/lib/components/atoms/MAIAInput/MAIAInput.js +99 -123
  16. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +4 -9
  17. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +5 -4
  18. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +26 -28
  19. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +14 -15
  20. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
  21. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +24 -41
  22. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +10 -25
  23. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +43 -78
  24. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +11 -9
  25. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +15 -37
  26. package/lib/components/index.js +1 -2
  27. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +8 -6
  28. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +4 -6
  29. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +16 -25
  30. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
  31. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +72 -93
  32. package/lib/components/molecules/ChatAIHome/styles.js +78 -85
  33. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +14 -30
  34. package/lib/components/molecules/ChatAIMessages/newStyles.js +35 -32
  35. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +1 -8
  36. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +8 -25
  37. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  38. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
  39. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
  40. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +367 -63
  41. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -10
  42. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +2 -5
  43. package/lib/components/molecules/Sidebar/Sidebar.js +23 -41
  44. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +2 -2
  45. package/lib/components/organisms/ProjectSummary/ProjectSummary.js +7 -11
  46. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +1 -4
  47. package/lib/constants/permissions/index.js +2 -2
  48. package/lib/constants/permissions/utils.js +1 -4
  49. package/lib/dev/DevReasoningTimeline.js +37 -68
  50. package/lib/dev/Providers.js +3 -5
  51. package/lib/hooks/useAgentModel/useUpdateAgent.js +6 -7
  52. package/lib/hooks/useChatManager/useChatManager.helpers.js +3 -3
  53. package/lib/hooks/useChatManager/useChatManager.js +7 -8
  54. package/lib/hooks/useEntitySearch.js +1 -3
  55. package/lib/hooks/useFrequentlyUsedActions.js +22 -61
  56. package/lib/hooks/useKnowledge/downloadKnowledge.js +4 -4
  57. package/lib/hooks/useKnowledge/useKnowledgeOperations.js +15 -16
  58. package/lib/hooks/useProjectSummaryConfig.js +5 -10
  59. package/lib/index.js +2 -5
  60. package/lib/lang/br/index.js +2 -27
  61. package/lib/lang/en/index.js +2 -27
  62. package/lib/lang/es/index.js +2 -27
  63. package/lib/lang/fr/index.js +2 -27
  64. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  65. package/lib/services/maia/Agents/connectors.js +1 -3
  66. package/lib/store/sessions/sessionStreamManager.js +55 -51
  67. package/lib/store/useChatsStore.js +3 -4
  68. package/lib/styles/cascade.js +3 -29
  69. package/lib/styles/transitions.js +1 -3
  70. package/lib/types/global.d.js +1 -1
  71. package/lib/utils/hoursPlannerQuickActionType.js +1 -116
  72. package/lib/utils/imagePreprocessor.js +3 -14
  73. package/lib/utils/navigateContextEntity.js +2 -2
  74. package/lib/utils/openTaskInCorPanel.js +2 -2
  75. package/lib/utils/streamActivityMessages.helpers.js +4 -5
  76. package/lib/utils/streamActivityMessages.js +20 -32
  77. package/package.json +1 -1
  78. package/lib/components/atoms/ActionableButton.spec.js +0 -111
  79. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +0 -52
  80. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +0 -11
  81. package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.spec.js +0 -63
  82. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -183
  83. package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +0 -123
  84. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +0 -139
  85. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +0 -385
  86. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +0 -78
  87. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +0 -94
  88. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +0 -396
  89. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +0 -80
  90. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +0 -526
  91. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +0 -169
  92. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +0 -11
  93. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +0 -77
  94. package/lib/components/atoms/Backdrop/Backdrop.spec.js +0 -28
  95. package/lib/components/atoms/CardMenu/CardMenu.spec.js +0 -56
  96. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +0 -67
  97. package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
  98. package/lib/components/atoms/Chip/Chip.spec.js +0 -82
  99. package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +0 -26
  100. package/lib/components/atoms/ClientSelector/ClientSelector.helpers.spec.js +0 -45
  101. package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +0 -133
  102. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.spec.js +0 -107
  103. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
  104. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +0 -46
  105. package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +0 -109
  106. package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +0 -81
  107. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +0 -92
  108. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +0 -319
  109. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +0 -107
  110. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +0 -136
  111. package/lib/components/atoms/CopyToClipboard.spec.js +0 -74
  112. package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +0 -76
  113. package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +0 -86
  114. package/lib/components/atoms/Expand/Expand.spec.js +0 -57
  115. package/lib/components/atoms/Fade/Fade.spec.js +0 -66
  116. package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +0 -75
  117. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +0 -104
  118. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +0 -91
  119. package/lib/components/atoms/HelpButton.spec.js +0 -87
  120. package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +0 -96
  121. package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +0 -54
  122. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +0 -21
  123. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +0 -20
  124. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +0 -26
  125. package/lib/components/atoms/LoadingText/LoadingText.spec.js +0 -25
  126. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
  127. package/lib/components/atoms/MAIAError/MAIAError.spec.js +0 -27
  128. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.spec.js +0 -113
  129. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +0 -381
  130. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -719
  131. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +0 -92
  132. package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +0 -193
  133. package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +0 -32
  134. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +0 -64
  135. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +0 -43
  136. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +0 -114
  137. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +0 -51
  138. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +0 -48
  139. package/lib/components/atoms/ModalProject/ModalProject.spec.js +0 -66
  140. package/lib/components/atoms/NextPageLoader.spec.js +0 -37
  141. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +0 -20
  142. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +0 -35
  143. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +0 -47
  144. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +0 -146
  145. package/lib/components/atoms/PrimaryButton.spec.js +0 -42
  146. package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +0 -69
  147. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
  148. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
  149. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -170
  150. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +0 -199
  151. package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +0 -70
  152. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -120
  153. package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +0 -8
  154. package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +0 -31
  155. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
  156. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
  157. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +0 -29
  158. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +0 -38
  159. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +0 -16
  160. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
  161. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +0 -24
  162. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.spec.js +0 -71
  163. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -120
  164. package/lib/components/atoms/Switch/Switch.spec.js +0 -41
  165. package/lib/components/atoms/TextArea/CustomTextArea.spec.js +0 -52
  166. package/lib/components/atoms/TextArea/TextArea.helpers.spec.js +0 -25
  167. package/lib/components/atoms/TextArea/TextArea.spec.js +0 -126
  168. package/lib/components/atoms/ThirdButton.spec.js +0 -29
  169. package/lib/components/atoms/VideoModal/VideoModal.spec.js +0 -68
  170. package/lib/components/atoms/WithAppCfg.spec.js +0 -82
  171. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +0 -53
  172. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -742
  173. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +0 -107
  174. package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +0 -256
  175. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +0 -175
  176. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +0 -318
  177. package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +0 -50
  178. package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +0 -94
  179. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
  180. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
  181. package/lib/components/molecules/AgentInputBlock/index.js +0 -5
  182. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
  183. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
  184. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
  185. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
  186. package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
  187. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +0 -66
  188. package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +0 -145
  189. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +0 -204
  190. package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.spec.js +0 -622
  191. package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -264
  192. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +0 -86
  193. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
  194. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +0 -742
  195. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -541
  196. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
  197. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -1394
  198. package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +0 -1401
  199. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +0 -33
  200. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +0 -116
  201. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +0 -134
  202. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +0 -142
  203. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +0 -241
  204. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.js +0 -69
  205. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.spec.js +0 -144
  206. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentDropdown.js +0 -95
  207. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentSelector.js +0 -174
  208. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.js +0 -99
  209. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.spec.js +0 -65
  210. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
  211. package/lib/components/molecules/ChatAIModal/constants.spec.js +0 -16
  212. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +0 -22
  213. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +0 -67
  214. package/lib/components/molecules/ChatAIModal/layout.spec.js +0 -72
  215. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.spec.js +0 -93
  216. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +0 -297
  217. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.spec.js +0 -62
  218. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -221
  219. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +0 -66
  220. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -369
  221. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +0 -10
  222. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +0 -104
  223. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +0 -139
  224. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
  225. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
  226. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +0 -126
  227. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +0 -115
  228. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +0 -79
  229. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +0 -37
  230. package/lib/components/molecules/Sidebar/Sidebar.helpers.spec.js +0 -119
  231. package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -464
  232. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +0 -1067
  233. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -1236
  234. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +0 -112
  235. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.spec.js +0 -77
  236. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -503
  237. package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
  238. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
  239. package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -246
  240. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  241. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
  242. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -291
  243. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
  244. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -284
  245. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -343
  246. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -197
  247. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -94
  248. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -69
  249. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
  250. package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
  251. package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
  252. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  253. package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +0 -53
  254. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
  255. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
  256. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
  257. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +0 -49
  258. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +0 -67
  259. package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +0 -117
  260. package/lib/components/organisms/SnackBar/Snackbar.spec.js +0 -66
  261. package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +0 -19
  262. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +0 -52
  263. package/lib/constants/formatExtensions.spec.js +0 -15
  264. package/lib/constants/maiaExternalConnectorsAccess.spec.js +0 -29
  265. package/lib/constants/maiaFeatureAccess.spec.js +0 -30
  266. package/lib/constants/maiaHourAgentAccess.spec.js +0 -30
  267. package/lib/constants/maiaTaskPanelAccess.spec.js +0 -41
  268. package/lib/constants/permissions/clientRoleAccess.spec.js +0 -65
  269. package/lib/constants/permissions/utils.spec.js +0 -128
  270. package/lib/constants/plannerSyncEvents.spec.js +0 -31
  271. package/lib/constants/taskUrls.spec.js +0 -9
  272. package/lib/dev/DevMaiaPage.js +0 -30
  273. package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
  274. package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
  275. package/lib/hooks/useAccessClient/useAccessClient.spec.js +0 -149
  276. package/lib/hooks/useAgentModel/useAgentModel.spec.js +0 -83
  277. package/lib/hooks/useAgentModel/useCreateAgent.helpers.spec.js +0 -268
  278. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -314
  279. package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +0 -183
  280. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -374
  281. package/lib/hooks/useAgentSuggestions.spec.js +0 -89
  282. package/lib/hooks/useCaretPosition.spec.js +0 -58
  283. package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +0 -2027
  284. package/lib/hooks/useChatManager/useChatManager.spec.js +0 -2409
  285. package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +0 -491
  286. package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -729
  287. package/lib/hooks/useChats/useChats.spec.js +0 -208
  288. package/lib/hooks/useClientSearch.helpers.spec.js +0 -52
  289. package/lib/hooks/useClientSearch.spec.js +0 -86
  290. package/lib/hooks/useContextMentions.helpers.spec.js +0 -267
  291. package/lib/hooks/useContextMentions.spec.js +0 -338
  292. package/lib/hooks/useContextPinPopover.helpers.spec.js +0 -183
  293. package/lib/hooks/useContextPinPopover.spec.js +0 -159
  294. package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
  295. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
  296. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.spec.js +0 -257
  297. package/lib/hooks/useDebounce.spec.js +0 -42
  298. package/lib/hooks/useEntitySearch.helpers.spec.js +0 -723
  299. package/lib/hooks/useEntitySearch.spec.js +0 -718
  300. package/lib/hooks/useEvent.spec.js +0 -45
  301. package/lib/hooks/useFrequentlyAskedQuestions.spec.js +0 -222
  302. package/lib/hooks/useFrequentlyUsedActions.spec.js +0 -293
  303. package/lib/hooks/useIsMaiaPageRoute.js +0 -26
  304. package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
  305. package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +0 -122
  306. package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +0 -148
  307. package/lib/hooks/useKnowledge/saveKnowledge.spec.js +0 -104
  308. package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +0 -178
  309. package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
  310. package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
  311. package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
  312. package/lib/hooks/useMentionPopover.helpers.spec.js +0 -100
  313. package/lib/hooks/useMentionPopover.spec.js +0 -392
  314. package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +0 -176
  315. package/lib/hooks/useMinimizedPillBottomOffset.spec.js +0 -89
  316. package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
  317. package/lib/hooks/useModal/useModal.spec.js +0 -73
  318. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.spec.js +0 -138
  319. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +0 -417
  320. package/lib/hooks/useProjectSearch.helpers.spec.js +0 -89
  321. package/lib/hooks/useProjectSearch.spec.js +0 -91
  322. package/lib/hooks/useProjectSummary.spec.js +0 -193
  323. package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +0 -151
  324. package/lib/hooks/useProjectSummaryConfig.spec.js +0 -133
  325. package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +0 -112
  326. package/lib/hooks/useRecentClientsSearch.helpers.spec.js +0 -33
  327. package/lib/hooks/useRecentClientsSearch.spec.js +0 -85
  328. package/lib/hooks/useRecentContexts.spec.js +0 -139
  329. package/lib/hooks/useResize.spec.js +0 -37
  330. package/lib/hooks/useSkillsCatalog.spec.js +0 -88
  331. package/lib/hooks/useSlashCommands.spec.js +0 -139
  332. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +0 -101
  333. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
  334. package/lib/hooks/useStreamResponse.spec.js +0 -199
  335. package/lib/hooks/useT.spec.js +0 -20
  336. package/lib/hooks/useToggle.spec.js +0 -33
  337. package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +0 -171
  338. package/lib/services/appcues.spec.js +0 -37
  339. package/lib/services/maia/Access/updateAccess.spec.js +0 -137
  340. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -121
  341. package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -91
  342. package/lib/services/maia/Agents/connectors.spec.js +0 -496
  343. package/lib/services/maia/Agents/createAgent.spec.js +0 -55
  344. package/lib/services/maia/Agents/deleteAgent.spec.js +0 -57
  345. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
  346. package/lib/services/maia/Agents/getAgentById.spec.js +0 -190
  347. package/lib/services/maia/Agents/getAgentModels.spec.js +0 -190
  348. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -89
  349. package/lib/services/maia/Agents/getAgents.helpers.spec.js +0 -325
  350. package/lib/services/maia/Agents/getAgents.spec.js +0 -1135
  351. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
  352. package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -59
  353. package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
  354. package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
  355. package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
  356. package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
  357. package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
  358. package/lib/services/maia/Chats/patchChat.spec.js +0 -41
  359. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
  360. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
  361. package/lib/services/maia/Knowledge/delete.spec.js +0 -45
  362. package/lib/services/maia/Knowledge/download.spec.js +0 -78
  363. package/lib/services/maia/Knowledge/save.spec.js +0 -58
  364. package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +0 -225
  365. package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -181
  366. package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
  367. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -103
  368. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
  369. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
  370. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
  371. package/lib/services/maia/Skills/createSkill.spec.js +0 -68
  372. package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
  373. package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
  374. package/lib/services/maia/Skills/getSkills.spec.js +0 -152
  375. package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
  376. package/lib/services/maia/client.spec.js +0 -56
  377. package/lib/services/utils/fetchCOR.spec.js +0 -211
  378. package/lib/services/utils/getCookie.spec.js +0 -20
  379. package/lib/services/utils/mapChatMessages.helpers.spec.js +0 -336
  380. package/lib/services/utils/mapChatMessages.spec.js +0 -254
  381. package/lib/store/chatsSidebarOptimistic.spec.js +0 -145
  382. package/lib/store/maiaLastChatPersistence.spec.js +0 -22
  383. package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
  384. package/lib/store/sessions/sessionNotificationSound.spec.js +0 -145
  385. package/lib/store/sessions/sessionNotifications.helpers.spec.js +0 -63
  386. package/lib/store/sessions/sessionNotifications.spec.js +0 -106
  387. package/lib/store/sessions/sessionStreamManager.helpers.spec.js +0 -177
  388. package/lib/store/sessions/sessionStreamManager.spec.js +0 -939
  389. package/lib/store/sessions/sessions.types.spec.js +0 -16
  390. package/lib/store/sessions/useSessionsStore.spec.js +0 -135
  391. package/lib/store/useChatsStore.spec.js +0 -619
  392. package/lib/store/useFaqsStore.spec.js +0 -57
  393. package/lib/utils/actionCategoryMap.spec.js +0 -18
  394. package/lib/utils/agentDisplayName.spec.js +0 -48
  395. package/lib/utils/autoApproveStorage.spec.js +0 -25
  396. package/lib/utils/chatInputFiles.spec.js +0 -39
  397. package/lib/utils/contextMentionIcons.spec.js +0 -41
  398. package/lib/utils/contextMentionLabel.spec.js +0 -13
  399. package/lib/utils/contextMentionTriggers.spec.js +0 -44
  400. package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
  401. package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
  402. package/lib/utils/entityLinkRender.spec.js +0 -72
  403. package/lib/utils/fileDownloadHelper.spec.js +0 -67
  404. package/lib/utils/formatQuickActionMessage.spec.js +0 -27
  405. package/lib/utils/formatUnreadCount.spec.js +0 -12
  406. package/lib/utils/getUnitFileSize.spec.js +0 -18
  407. package/lib/utils/hitlAnalytics.spec.js +0 -136
  408. package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -124
  409. package/lib/utils/imagePreprocessor.helpers.spec.js +0 -28
  410. package/lib/utils/imagePreprocessor.spec.js +0 -112
  411. package/lib/utils/maiaPageRoute.js +0 -24
  412. package/lib/utils/maiaPageRoute.spec.js +0 -23
  413. package/lib/utils/mapBackendLang.spec.js +0 -19
  414. package/lib/utils/navigateContextEntity.spec.js +0 -50
  415. package/lib/utils/normalizeAgentConnectors.spec.js +0 -98
  416. package/lib/utils/openTaskInCorPanel.spec.js +0 -43
  417. package/lib/utils/orchestratorSubagents.spec.js +0 -32
  418. package/lib/utils/reasoningMappers.spec.js +0 -103
  419. package/lib/utils/recentContextsHomeLimit.spec.js +0 -32
  420. package/lib/utils/renderContextMentions.helpers.spec.js +0 -87
  421. package/lib/utils/renderContextMentions.spec.js +0 -268
  422. package/lib/utils/retryCompletion.spec.js +0 -181
  423. package/lib/utils/skillContentSize.spec.js +0 -13
  424. package/lib/utils/slashCommandMarker.spec.js +0 -43
  425. package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
  426. package/lib/utils/sseStreamContent.spec.js +0 -31
  427. package/lib/utils/streamActivityMessages.helpers.spec.js +0 -84
  428. package/lib/utils/streamActivityMessages.spec.js +0 -336
  429. package/lib/utils/validateTrimmedFields.spec.js +0 -26
@@ -8,25 +8,28 @@ export var MessageWrapper = styled.div.withConfig({
8
8
  componentId: "sc-1k23l8x-0"
9
9
  })(["padding:16px;"]);
10
10
 
11
- /** Área de mensajes: columna acotada; el scroll vive solo en SCMessagesScroll. */
11
+ /** Contenedor exterior del área de mensajes. Cuando expanded, no hace scroll; el scroll lo tiene SCMessagesScroll. */
12
12
  export var SCMessagesOuter = styled.div.withConfig({
13
13
  displayName: "newStyles__SCMessagesOuter",
14
14
  componentId: "sc-1k23l8x-1"
15
- })(["display:flex;flex:1 1 0%;flex-direction:column;width:100%;min-height:0;position:relative;overflow:hidden;"]);
15
+ })(["display:flex;flex-grow:1;justify-content:center;position:relative;min-height:0;", ""], function (_ref) {
16
+ var $scrollOnParent = _ref.$scrollOnParent;
17
+ return $scrollOnParent ? '' : 'overflow: auto; overscroll-behavior-y: contain;';
18
+ });
16
19
 
17
- /** Scroller del hilo: fija el botón "ir al final" y los gradientes en el área del chat. */
20
+ /** Cuando expanded, este contenedor hace scroll para que el botón "ir al final" quede fijo en el área del chat */
18
21
  export var SCMessagesScroll = styled.div.withConfig({
19
22
  displayName: "newStyles__SCMessagesScroll",
20
23
  componentId: "sc-1k23l8x-2"
21
- })(["flex:1 1 0%;min-height:0;width:100%;overflow-y:auto;overscroll-behavior-y:contain;display:flex;justify-content:center;"]);
24
+ })(["flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;display:flex;justify-content:center;"]);
22
25
 
23
- /** Columna de mensajes (max 864px). Sin overflow propio: crece dentro de SCMessagesScroll. */
26
+ /** Contenedor interior de mensajes (maxWidth 864px). Cuando expanded, overflow visible para que scroll lo tenga SCMessagesScroll */
24
27
  export var SCMessagesInner = styled.div.withConfig({
25
28
  displayName: "newStyles__SCMessagesInner",
26
29
  componentId: "sc-1k23l8x-3"
27
- })(["flex:1 0 auto;display:flex;flex-direction:column;gap:24px;padding:0 16px;width:100%;max-width:864px;overflow:visible;", " &::after{content:'';flex-shrink:0;height:40px;margin-top:-24px;}"], function (_ref) {
28
- var $skipEnter = _ref.$skipEnter;
29
- return !$skipEnter && css(["animation:", " 0.5s ease-out;"], fadeIn);
30
+ })(["flex-grow:1;display:flex;flex-direction:column;gap:24px;padding:0 16px;width:100%;max-width:864px;animation:", " 0.5s ease-out;", " &::after{content:'';flex-shrink:0;height:40px;margin-top:-24px;}"], fadeIn, function (_ref2) {
31
+ var $scrollOnParent = _ref2.$scrollOnParent;
32
+ return $scrollOnParent ? 'overflow: visible;' : 'overflow-y: auto; overscroll-behavior-y: contain;';
30
33
  });
31
34
  export var SCTurnSpacer = styled.div.withConfig({
32
35
  displayName: "newStyles__SCTurnSpacer",
@@ -34,8 +37,8 @@ export var SCTurnSpacer = styled.div.withConfig({
34
37
  })(["height:0;flex-shrink:0;margin-top:-24px;pointer-events:none;"]);
35
38
 
36
39
  /** Difuminado en los bordes del área scrolleable: indica que hay contenido fuera de vista. */
37
- var messagesEdgeGradient = css(["position:absolute;left:0;right:0;height:48px;width:100%;max-width:864px;margin:0 auto;pointer-events:none;z-index:5;opacity:", ";transition:opacity 0.3s ease-in-out;"], function (_ref2) {
38
- var $show = _ref2.$show;
40
+ var messagesEdgeGradient = css(["position:absolute;left:0;right:0;height:48px;width:100%;max-width:864px;margin:0 auto;pointer-events:none;z-index:5;opacity:", ";transition:opacity 0.3s ease-in-out;"], function (_ref3) {
41
+ var $show = _ref3.$show;
39
42
  return $show ? 1 : 0;
40
43
  });
41
44
  export var SCMessagesGradientTop = styled.div.withConfig({
@@ -61,11 +64,11 @@ export var SCOptionsList = styled.div.withConfig({
61
64
  export var SCOptionItem = styled.div.withConfig({
62
65
  displayName: "newStyles__SCOptionItem",
63
66
  componentId: "sc-1k23l8x-9"
64
- })(["color:", ";font-size:14px;line-height:140%;cursor:", ";opacity:", ";"], GLOBAL_COLORS.dark, function (_ref3) {
65
- var $hasSelection = _ref3.$hasSelection;
67
+ })(["color:", ";font-size:14px;line-height:140%;cursor:", ";opacity:", ";"], GLOBAL_COLORS.dark, function (_ref4) {
68
+ var $hasSelection = _ref4.$hasSelection;
66
69
  return $hasSelection ? 'not-allowed' : 'pointer';
67
- }, function (_ref4) {
68
- var $dimmed = _ref4.$dimmed;
70
+ }, function (_ref5) {
71
+ var $dimmed = _ref5.$dimmed;
69
72
  return $dimmed ? 0.5 : 1;
70
73
  });
71
74
 
@@ -89,8 +92,8 @@ export var SCProjectLinkIcon = styled.span.withConfig({
89
92
  export var SCMessageItemWrapper = styled.div.withConfig({
90
93
  displayName: "newStyles__SCMessageItemWrapper",
91
94
  componentId: "sc-1k23l8x-13"
92
- })(["position:relative;display:flex;gap:8px;flex-direction:column;", ""], function (_ref5) {
93
- var $isAssistant = _ref5.$isAssistant;
95
+ })(["position:relative;display:flex;gap:8px;flex-direction:column;", ""], function (_ref6) {
96
+ var $isAssistant = _ref6.$isAssistant;
94
97
  return $isAssistant && 'justify-content: start;';
95
98
  });
96
99
 
@@ -104,8 +107,8 @@ export var SCMessageItemInner = styled.div.withConfig({
104
107
  export var SCAttachmentsRow = styled.div.withConfig({
105
108
  displayName: "newStyles__SCAttachmentsRow",
106
109
  componentId: "sc-1k23l8x-15"
107
- })(["display:flex;justify-content:", ";gap:12px;flex-wrap:wrap;"], function (_ref6) {
108
- var $isAssistant = _ref6.$isAssistant;
110
+ })(["display:flex;justify-content:", ";gap:12px;flex-wrap:wrap;"], function (_ref7) {
111
+ var $isAssistant = _ref7.$isAssistant;
109
112
  return $isAssistant ? 'flex-start' : 'flex-end';
110
113
  });
111
114
 
@@ -119,20 +122,20 @@ export var SCApprovalActionsColumn = styled.div.withConfig({
119
122
  export var SCCAIMessageWrapper = styled.div.withConfig({
120
123
  displayName: "newStyles__SCCAIMessageWrapper",
121
124
  componentId: "sc-1k23l8x-17"
122
- })(["contain:layout style;min-width:0;max-width:100%;padding:", ";border-radius:8px;background-color:", ";display:flex;flex-direction:column;gap:16px;", " &.has-task-links a[data-cor-link='task']{text-decoration:none !important;color:#202020 !important;font-weight:600 !important;position:relative;display:inline !important;padding:2px 0 !important;padding-left:22px !important;white-space:normal !important;overflow-wrap:break-word !important;word-break:break-word !important;&:hover{text-decoration-line:underline !important;text-decoration-color:#b3b3b3 !important;text-decoration-thickness:1px !important;text-underline-offset:2px !important;background:#bed5eb !important;border-radius:4px !important;}&::before{content:'';position:absolute;left:0;top:0;width:20px;height:20px;background-image:", ";background-size:contain;background-repeat:no-repeat;background-position:center;}}&.has-project-links a[data-cor-link='project']{text-decoration:none !important;color:#202020 !important;font-weight:600 !important;display:inline-flex !important;align-items:baseline !important;gap:2px !important;padding:2px 0 !important;white-space:normal !important;overflow-wrap:break-word !important;word-break:break-word !important;vertical-align:baseline !important;&:hover{text-decoration-line:underline !important;text-decoration-color:#b3b3b3 !important;text-decoration-thickness:1px !important;text-underline-offset:2px !important;background:#bed5eb !important;border-radius:4px !important;}}", ""], function (_ref7) {
123
- var isCurrentUser = _ref7.isCurrentUser;
125
+ })(["contain:layout style;min-width:0;max-width:100%;padding:", ";border-radius:8px;background-color:", ";display:flex;flex-direction:column;gap:16px;", " &.has-task-links a[data-cor-link='task']{text-decoration:none !important;color:#202020 !important;font-weight:600 !important;position:relative;display:inline !important;padding:2px 0 !important;padding-left:22px !important;white-space:normal !important;overflow-wrap:break-word !important;word-break:break-word !important;&:hover{text-decoration-line:underline !important;text-decoration-color:#b3b3b3 !important;text-decoration-thickness:1px !important;text-underline-offset:2px !important;background:#bed5eb !important;border-radius:4px !important;}&::before{content:'';position:absolute;left:0;top:0;width:20px;height:20px;background-image:", ";background-size:contain;background-repeat:no-repeat;background-position:center;}}&.has-project-links a[data-cor-link='project']{text-decoration:none !important;color:#202020 !important;font-weight:600 !important;display:inline-flex !important;align-items:baseline !important;gap:2px !important;padding:2px 0 !important;white-space:normal !important;overflow-wrap:break-word !important;word-break:break-word !important;vertical-align:baseline !important;&:hover{text-decoration-line:underline !important;text-decoration-color:#b3b3b3 !important;text-decoration-thickness:1px !important;text-underline-offset:2px !important;background:#bed5eb !important;border-radius:4px !important;}}", ""], function (_ref8) {
126
+ var isCurrentUser = _ref8.isCurrentUser;
124
127
  return isCurrentUser ? '12px' : '0px';
125
- }, function (_ref8) {
126
- var isCurrentUser = _ref8.isCurrentUser,
127
- isFrontendCancelled = _ref8.isFrontendCancelled;
128
+ }, function (_ref9) {
129
+ var isCurrentUser = _ref9.isCurrentUser,
130
+ isFrontendCancelled = _ref9.isFrontendCancelled;
128
131
  if (isFrontendCancelled) return 'transparent';
129
132
  if (isCurrentUser) return BLUE_IA_COLORS[50];
130
133
  return 'transparent';
131
- }, function (_ref9) {
132
- var isCurrentUser = _ref9.isCurrentUser;
133
- return isCurrentUser && css(["overflow-wrap:anywhere;align-self:flex-end;max-width:75%;"]);
134
- }, TASK_LINK_ICON_CSS_URL, function (_ref0) {
134
+ }, function (_ref0) {
135
135
  var isCurrentUser = _ref0.isCurrentUser;
136
+ return isCurrentUser && css(["overflow-wrap:anywhere;align-self:flex-end;max-width:75%;"]);
137
+ }, TASK_LINK_ICON_CSS_URL, function (_ref1) {
138
+ var isCurrentUser = _ref1.isCurrentUser;
136
139
  return isCurrentUser && css(["&.has-task-links a[data-cor-link='task']{font-size:14px !important;line-height:20px !important;}&.has-task-links a[data-cor-link='task']::before{top:0;top:calc((1lh - 20px) / 2);}&.has-project-links a[data-cor-link='project']{font-size:14px !important;line-height:20px !important;}"]);
137
140
  });
138
141
  var fadeInUp = keyframes(["from{opacity:0;transform:translateX(-50%) translateY(10px);}to{opacity:1;transform:translateX(-50%) translateY(0);}"]);
@@ -145,11 +148,11 @@ export var ScrollToBottomButton = styled.button.withConfig({
145
148
  export var SCScrollIconSwap = styled.span.withConfig({
146
149
  displayName: "newStyles__SCScrollIconSwap",
147
150
  componentId: "sc-1k23l8x-19"
148
- })(["position:absolute;display:inline-flex;align-items:center;justify-content:center;opacity:", ";transform:scale(", ");transition:opacity 180ms ease-out,transform 180ms ease-out;pointer-events:none;"], function (_ref1) {
149
- var $visible = _ref1.$visible;
150
- return $visible ? 1 : 0;
151
- }, function (_ref10) {
151
+ })(["position:absolute;display:inline-flex;align-items:center;justify-content:center;opacity:", ";transform:scale(", ");transition:opacity 180ms ease-out,transform 180ms ease-out;pointer-events:none;"], function (_ref10) {
152
152
  var $visible = _ref10.$visible;
153
+ return $visible ? 1 : 0;
154
+ }, function (_ref11) {
155
+ var $visible = _ref11.$visible;
153
156
  return $visible ? 1 : 0.72;
154
157
  });
155
158
  var writingDot = keyframes(["0%,60%,100%{transform:translateY(0);opacity:0.35;}30%{transform:translateY(-3px);opacity:1;}"]);
@@ -157,4 +160,4 @@ export var SCWritingDots = styled.span.withConfig({
157
160
  displayName: "newStyles__SCWritingDots",
158
161
  componentId: "sc-1k23l8x-20"
159
162
  })(["display:inline-flex;align-items:center;gap:3px;span{width:4px;height:4px;border-radius:50%;background:#202020;animation:", " 1.2s ease-in-out infinite;}span:nth-child(2){animation-delay:0.16s;}span:nth-child(3){animation-delay:0.32s;}"], writingDot);
160
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJrZXlmcmFtZXMiLCJCTFVFX0lBX0NPTE9SUyIsIkdMT0JBTF9DT0xPUlMiLCJUQVNLX0xJTktfSUNPTl9DU1NfVVJMIiwiZmFkZUluIiwiTWVzc2FnZVdyYXBwZXIiLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIlNDTWVzc2FnZXNPdXRlciIsIlNDTWVzc2FnZXNTY3JvbGwiLCJTQ01lc3NhZ2VzSW5uZXIiLCJfcmVmIiwiJHNraXBFbnRlciIsIlNDVHVyblNwYWNlciIsIm1lc3NhZ2VzRWRnZUdyYWRpZW50IiwiX3JlZjIiLCIkc2hvdyIsIlNDTWVzc2FnZXNHcmFkaWVudFRvcCIsIlNDTWVzc2FnZXNHcmFkaWVudEJvdHRvbSIsIlNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uIiwiU0NPcHRpb25zTGlzdCIsIlNDT3B0aW9uSXRlbSIsImRhcmsiLCJfcmVmMyIsIiRoYXNTZWxlY3Rpb24iLCJfcmVmNCIsIiRkaW1tZWQiLCJTQ1Rhc2tMaW5rIiwiYSIsIlNDUHJvamVjdExpbmsiLCJTQ1Byb2plY3RMaW5rSWNvbiIsInNwYW4iLCJTQ01lc3NhZ2VJdGVtV3JhcHBlciIsIl9yZWY1IiwiJGlzQXNzaXN0YW50IiwiU0NNZXNzYWdlSXRlbUlubmVyIiwiU0NBdHRhY2htZW50c1JvdyIsIl9yZWY2IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiX3JlZjciLCJpc0N1cnJlbnRVc2VyIiwiX3JlZjgiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwiX3JlZjkiLCJfcmVmMCIsImZhZGVJblVwIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJidXR0b24iLCJTQ1Njcm9sbEljb25Td2FwIiwiX3JlZjEiLCIkdmlzaWJsZSIsIl9yZWYxMCIsIndyaXRpbmdEb3QiLCJTQ1dyaXRpbmdEb3RzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1lc3NhZ2VzL25ld1N0eWxlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG5pbXBvcnQgc3R5bGVkLCB7IGNzcywga2V5ZnJhbWVzIH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnXG5pbXBvcnQgeyBCTFVFX0lBX0NPTE9SUywgR0xPQkFMX0NPTE9SUyB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9jb25maWcnXG5pbXBvcnQgeyBUQVNLX0xJTktfSUNPTl9DU1NfVVJMIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Rhc2tMaW5rSWNvbidcblxuY29uc3QgZmFkZUluID0ga2V5ZnJhbWVzYFxuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmc6IDE2cHg7XG5gXG5cbi8qKiDDgXJlYSBkZSBtZW5zYWplczogY29sdW1uYSBhY290YWRhOyBlbCBzY3JvbGwgdml2ZSBzb2xvIGVuIFNDTWVzc2FnZXNTY3JvbGwuICovXG5leHBvcnQgY29uc3QgU0NNZXNzYWdlc091dGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMSAxIDAlO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuYFxuXG4vKiogU2Nyb2xsZXIgZGVsIGhpbG86IGZpamEgZWwgYm90w7NuIFwiaXIgYWwgZmluYWxcIiB5IGxvcyBncmFkaWVudGVzIGVuIGVsIMOhcmVhIGRlbCBjaGF0LiAqL1xuZXhwb3J0IGNvbnN0IFNDTWVzc2FnZXNTY3JvbGwgPSBzdHlsZWQuZGl2YFxuICBmbGV4OiAxIDEgMCU7XG4gIG1pbi1oZWlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGNvbnRhaW47XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuYFxuXG4vKiogQ29sdW1uYSBkZSBtZW5zYWplcyAobWF4IDg2NHB4KS4gU2luIG92ZXJmbG93IHByb3BpbzogY3JlY2UgZGVudHJvIGRlIFNDTWVzc2FnZXNTY3JvbGwuICovXG5leHBvcnQgY29uc3QgU0NNZXNzYWdlc0lubmVyID0gc3R5bGVkLmRpdjx7ICRza2lwRW50ZXI/OiBib29sZWFuIH0+YFxuICBmbGV4OiAxIDAgYXV0bztcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAyNHB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDg2NHB4O1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgJHsoeyAkc2tpcEVudGVyIH0pID0+XG4gICAgISRza2lwRW50ZXIgJiZcbiAgICBjc3NgXG4gICAgICBhbmltYXRpb246ICR7ZmFkZUlufSAwLjVzIGVhc2Utb3V0O1xuICAgIGB9XG5cbiAgLyogQ29sY2jDs24gZGUgc2Nyb2xsIGFsIGZpbmFsIHBhcmEgcXVlIGVsIMO6bHRpbW8gbWVuc2FqZSBubyBxdWVkZSBwZWdhZG8gYWxcbiAgICAgaW5wdXQuIFZhIGNvbW8gZmxleCBpdGVtIChubyBwYWRkaW5nKSBwb3JxdWUgY3VhbmRvIGVzdGUgY29udGVuZWRvciBlcyBlbFxuICAgICBzY3JvbGxlciBlbCBwYWRkaW5nLWJvdHRvbSBubyBzZSByZXNwZXRhIGFsIGZpbmFsIGRlbCBzY3JvbGwuXG4gICAgIEVsIG1hcmdpbiBuZWdhdGl2byBjYW5jZWxhIGVsIGdhcCBkZWwgbGlzdGFkby4gKi9cbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtYXJnaW4tdG9wOiAtMjRweDtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NUdXJuU3BhY2VyID0gc3R5bGVkLmRpdmBcbiAgaGVpZ2h0OiAwO1xuICBmbGV4LXNocmluazogMDtcbiAgbWFyZ2luLXRvcDogLTI0cHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYFxuXG4vKiogRGlmdW1pbmFkbyBlbiBsb3MgYm9yZGVzIGRlbCDDoXJlYSBzY3JvbGxlYWJsZTogaW5kaWNhIHF1ZSBoYXkgY29udGVuaWRvIGZ1ZXJhIGRlIHZpc3RhLiAqL1xuY29uc3QgbWVzc2FnZXNFZGdlR3JhZGllbnQgPSBjc3M8eyAkc2hvdzogYm9vbGVhbiB9PmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgaGVpZ2h0OiA0OHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA4NjRweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAvKiBEZWJham8gZGVsIFNjcm9sbFRvQm90dG9tQnV0dG9uICh6LWluZGV4IDEwKS4gKi9cbiAgei1pbmRleDogNTtcbiAgb3BhY2l0eTogJHsoeyAkc2hvdyB9KSA9PiAoJHNob3cgPyAxIDogMCl9O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZS1pbi1vdXQ7XG5gXG5cbmV4cG9ydCBjb25zdCBTQ01lc3NhZ2VzR3JhZGllbnRUb3AgPSBzdHlsZWQuZGl2PHsgJHNob3c6IGJvb2xlYW4gfT5gXG4gICR7bWVzc2FnZXNFZGdlR3JhZGllbnR9XG4gIHRvcDogMDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgIHRvIGJvdHRvbSxcbiAgICAjZmZmZmZmIDAlLFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KSAzMCUsXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIDcwJSxcbiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDEwMCVcbiAgKTtcbmBcblxuZXhwb3J0IGNvbnN0IFNDTWVzc2FnZXNHcmFkaWVudEJvdHRvbSA9IHN0eWxlZC5kaXY8eyAkc2hvdzogYm9vbGVhbiB9PmBcbiAgJHttZXNzYWdlc0VkZ2VHcmFkaWVudH1cbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgdG8gdG9wLFxuICAgICNmZmZmZmYgMCUsXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpIDMwJSxcbiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgNzAlLFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMTAwJVxuICApO1xuYFxuXG4vKiogQ29sdW1uYSBwYXJhIGxvYWRpbmcvbG9hZGluZyBtZXNzYWdlcyAqL1xuZXhwb3J0IGNvbnN0IFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLyogU0NNZXNzYWdlc0lubmVyIHVzYSBnYXAgMjRweDsgZWwgbmVnYXRpdm8gbG8gY2FuY2VsYWJhIHkgZWwgaW5kaWNhZG9yXG4gICAgIHF1ZWRhYmEgcGVnYWRvIGFsIGJ1YmJsZSBkZWwgdXN1YXJpby4gRGVqYW1vcyAxNnB4IGRlIGFpcmUuICovXG4gIG1hcmdpbi10b3A6IC04cHg7XG5gXG5cbi8qKiBMaXN0YSBkZSBvcGNpb25lcyAoTWVzc2FnZU9wdGlvbnMpICovXG5leHBvcnQgY29uc3QgU0NPcHRpb25zTGlzdCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTJweDtcbmBcblxuZXhwb3J0IGNvbnN0IFNDT3B0aW9uSXRlbSA9IHN0eWxlZC5kaXY8eyAkaGFzU2VsZWN0aW9uPzogYm9vbGVhbjsgJGRpbW1lZD86IGJvb2xlYW4gfT5gXG4gIGNvbG9yOiAke0dMT0JBTF9DT0xPUlMuZGFya307XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE0MCU7XG4gIGN1cnNvcjogJHsoeyAkaGFzU2VsZWN0aW9uIH0pID0+ICgkaGFzU2VsZWN0aW9uID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJyl9O1xuICBvcGFjaXR5OiAkeyh7ICRkaW1tZWQgfSkgPT4gKCRkaW1tZWQgPyAwLjUgOiAxKX07XG5gXG5cbi8qKiBFbmxhY2UgZGUgdGFyZWEgKHRhc2sgbGluaykgKi9cbmV4cG9ydCBjb25zdCBTQ1Rhc2tMaW5rID0gc3R5bGVkLmFgXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjMzM3YWI3ICFpbXBvcnRhbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbmBcblxuLyoqIEVubGFjZSBkZSBwcm95ZWN0byAocHJvamVjdCBsaW5rKSAqL1xuZXhwb3J0IGNvbnN0IFNDUHJvamVjdExpbmsgPSBzdHlsZWQuYWBcbiAgY3Vyc29yOiBwb2ludGVyO1xuYFxuXG5leHBvcnQgY29uc3QgU0NQcm9qZWN0TGlua0ljb24gPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmbGV4LXNocmluazogMDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiA0cHg7XG5gXG5cbi8qKiBXcmFwcGVyIGRlIHVuIG1lbnNhamUgKHBvc2ljacOzbiwgZmxleCwgZ2FwKSAqL1xuZXhwb3J0IGNvbnN0IFNDTWVzc2FnZUl0ZW1XcmFwcGVyID0gc3R5bGVkLmRpdjx7ICRpc0Fzc2lzdGFudD86IGJvb2xlYW4gfT5gXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiA4cHg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICR7KHsgJGlzQXNzaXN0YW50IH0pID0+ICRpc0Fzc2lzdGFudCAmJiAnanVzdGlmeS1jb250ZW50OiBzdGFydDsnfVxuYFxuXG4vKiogQ29udGVuZWRvciBpbnRlcmlvciBkZWwgbWVuc2FqZSAoYXR0YWNobWVudHMgKyBhcHByb3ZhbCArIGNvbnRlbnQpICovXG5leHBvcnQgY29uc3QgU0NNZXNzYWdlSXRlbUlubmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiA4cHg7XG4gIG1pbi13aWR0aDogMDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuYFxuXG4vKiogRmlsYSBkZSBhdHRhY2htZW50cyAoZmxleCBlbmQgcGFyYSB1c3VhcmlvLCBmbGV4IHN0YXJ0IHBhcmEgYXNzaXN0YW50KSAqL1xuZXhwb3J0IGNvbnN0IFNDQXR0YWNobWVudHNSb3cgPSBzdHlsZWQuZGl2PHsgJGlzQXNzaXN0YW50PzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiAkeyh7ICRpc0Fzc2lzdGFudCB9KSA9PiAoJGlzQXNzaXN0YW50ID8gJ2ZsZXgtc3RhcnQnIDogJ2ZsZXgtZW5kJyl9O1xuICBnYXA6IDEycHg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbmBcblxuLyoqIENvbHVtbmEgZGUgYWNjaW9uZXMgZGUgYXBwcm92YWwgKi9cbmV4cG9ydCBjb25zdCBTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTJweDtcbmBcblxuLyoqIFdyYXBwZXIgZGVsIGNvbnRlbmlkbyBkZWwgbWVuc2FqZS4gY29udGFpbiBsaW1pdGEgcmVwYWludCBkdXJhbnRlIHN0cmVhbWluZyBhbCDDoXJlYSBkZWwgdGV4dG8uICovXG5leHBvcnQgY29uc3QgU0NDQUlNZXNzYWdlV3JhcHBlciA9IHN0eWxlZC5kaXY8eyBpc0N1cnJlbnRVc2VyOiBib29sZWFuOyBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhbiB9PmBcbiAgY29udGFpbjogbGF5b3V0IHN0eWxlO1xuICBtaW4td2lkdGg6IDA7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyBpc0N1cnJlbnRVc2VyIH0pID0+IChpc0N1cnJlbnRVc2VyID8gJzEycHgnIDogJzBweCcpfTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IGlzQ3VycmVudFVzZXIsIGlzRnJvbnRlbmRDYW5jZWxsZWQgfSkgPT4ge1xuICAgIGlmIChpc0Zyb250ZW5kQ2FuY2VsbGVkKSByZXR1cm4gJ3RyYW5zcGFyZW50J1xuICAgIGlmIChpc0N1cnJlbnRVc2VyKSByZXR1cm4gQkxVRV9JQV9DT0xPUlNbNTBdXG4gICAgcmV0dXJuICd0cmFuc3BhcmVudCdcbiAgfX07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTZweDtcbiAgJHsoeyBpc0N1cnJlbnRVc2VyIH0pID0+XG4gICAgaXNDdXJyZW50VXNlciAmJlxuICAgIGNzc2BcbiAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG4gICAgICBtYXgtd2lkdGg6IDc1JTtcbiAgICBgfVxuXG4gICYuaGFzLXRhc2stbGlua3MgYVtkYXRhLWNvci1saW5rPSd0YXNrJ10ge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjMjAyMDIwICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctbGVmdDogMjJweCAhaW1wb3J0YW50O1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZCAhaW1wb3J0YW50O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tY29sb3I6ICNiM2IzYjMgIWltcG9ydGFudDtcbiAgICAgIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDFweCAhaW1wb3J0YW50O1xuICAgICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAycHggIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQ6ICNiZWQ1ZWIgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICB3aWR0aDogMjBweDtcbiAgICAgIGhlaWdodDogMjBweDtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6ICR7VEFTS19MSU5LX0lDT05fQ1NTX1VSTH07XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gICYuaGFzLXByb2plY3QtbGlua3MgYVtkYXRhLWNvci1saW5rPSdwcm9qZWN0J10ge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjMjAyMDIwICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiAycHggIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZCAhaW1wb3J0YW50O1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tY29sb3I6ICNiM2IzYjMgIWltcG9ydGFudDtcbiAgICAgIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDFweCAhaW1wb3J0YW50O1xuICAgICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAycHggIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQ6ICNiZWQ1ZWIgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICR7KHsgaXNDdXJyZW50VXNlciB9KSA9PlxuICAgIGlzQ3VycmVudFVzZXIgJiZcbiAgICBjc3NgXG4gICAgICAmLmhhcy10YXNrLWxpbmtzIGFbZGF0YS1jb3ItbGluaz0ndGFzayddIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgICYuaGFzLXRhc2stbGlua3MgYVtkYXRhLWNvci1saW5rPSd0YXNrJ106OmJlZm9yZSB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgdG9wOiBjYWxjKCgxbGggLSAyMHB4KSAvIDIpO1xuICAgICAgfVxuXG4gICAgICAmLmhhcy1wcm9qZWN0LWxpbmtzIGFbZGF0YS1jb3ItbGluaz0ncHJvamVjdCddIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgYH1cbmBcblxuY29uc3QgZmFkZUluVXAgPSBrZXlmcmFtZXNgXG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMTBweCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFNjcm9sbFRvQm90dG9tQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMTBweDtcbiAgYXNwZWN0LXJhdGlvOiAxLzE7XG4gIGJvcmRlci1yYWRpdXM6IDIxLjVweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgYm94LXNoYWRvdzogMCA0cHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDE1cHg7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDEwO1xuICBhbmltYXRpb246ICR7ZmFkZUluVXB9IDAuM3MgZWFzZTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzIGVhc2U7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjdmN2Y3O1xuICB9XG5gXG5cbi8qIExvcyBkb3MgaWNvbm9zIHNlIHN1cGVycG9uZW4gcGFyYSBwb2RlciBjcnV6YXJsb3M7IGVsIGJvdMOzbiB5YSBlcyBgcG9zaXRpb246IGFic29sdXRlYC4gKi9cbmV4cG9ydCBjb25zdCBTQ1Njcm9sbEljb25Td2FwID0gc3R5bGVkLnNwYW48eyAkdmlzaWJsZTogYm9vbGVhbiB9PmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG9wYWNpdHk6ICR7KHsgJHZpc2libGUgfSkgPT4gKCR2aXNpYmxlID8gMSA6IDApfTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgkeyh7ICR2aXNpYmxlIH0pID0+ICgkdmlzaWJsZSA/IDEgOiAwLjcyKX0pO1xuICB0cmFuc2l0aW9uOlxuICAgIG9wYWNpdHkgMTgwbXMgZWFzZS1vdXQsXG4gICAgdHJhbnNmb3JtIDE4MG1zIGVhc2Utb3V0O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmBcblxuY29uc3Qgd3JpdGluZ0RvdCA9IGtleWZyYW1lc2BcbiAgMCUsIDYwJSwgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDAuMzU7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NXcml0aW5nRG90cyA9IHN0eWxlZC5zcGFuYFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAzcHg7XG5cbiAgc3BhbiB7XG4gICAgd2lkdGg6IDRweDtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZDogIzIwMjAyMDtcbiAgICBhbmltYXRpb246ICR7d3JpdGluZ0RvdH0gMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgfVxuXG4gIHNwYW46bnRoLWNoaWxkKDIpIHtcbiAgICBhbmltYXRpb24tZGVsYXk6IDAuMTZzO1xuICB9XG5cbiAgc3BhbjpudGgtY2hpbGQoMykge1xuICAgIGFuaW1hdGlvbi1kZWxheTogMC4zMnM7XG4gIH1cbmBcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxPQUFPQSxNQUFNLElBQUlDLEdBQUcsRUFBRUMsU0FBUyxRQUFRLG1CQUFtQjtBQUMxRCxTQUFTQyxjQUFjLEVBQUVDLGFBQWEsUUFBUSx3QkFBd0I7QUFDdEUsU0FBU0Msc0JBQXNCLFFBQVEsaUNBQWlDO0FBRXhFLElBQU1DLE1BQU0sR0FBR0osU0FBUyxvQ0FPdkI7QUFFRCxPQUFPLElBQU1LLGNBQWMsR0FBR1AsTUFBTSxDQUFDUSxHQUFHLENBQUFDLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEscUJBRXZDOztBQUVEO0FBQ0EsT0FBTyxJQUFNQyxlQUFlLEdBQUdaLE1BQU0sQ0FBQ1EsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLGlIQVF4Qzs7QUFFRDtBQUNBLE9BQU8sSUFBTUUsZ0JBQWdCLEdBQUdiLE1BQU0sQ0FBQ1EsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLDhIQVF6Qzs7QUFFRDtBQUNBLE9BQU8sSUFBTUcsZUFBZSxHQUFHZCxNQUFNLENBQUNRLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSxtTUFTckMsVUFBQUksSUFBQTtFQUFBLElBQUdDLFVBQVUsR0FBQUQsSUFBQSxDQUFWQyxVQUFVO0VBQUEsT0FDYixDQUFDQSxVQUFVLElBQ1hmLEdBQUcsb0NBQ1lLLE1BQU0sQ0FDcEI7QUFBQSxFQVlKO0FBRUQsT0FBTyxJQUFN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
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJrZXlmcmFtZXMiLCJCTFVFX0lBX0NPTE9SUyIsIkdMT0JBTF9DT0xPUlMiLCJUQVNLX0xJTktfSUNPTl9DU1NfVVJMIiwiZmFkZUluIiwiTWVzc2FnZVdyYXBwZXIiLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIlNDTWVzc2FnZXNPdXRlciIsIl9yZWYiLCIkc2Nyb2xsT25QYXJlbnQiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiX3JlZjIiLCJTQ1R1cm5TcGFjZXIiLCJtZXNzYWdlc0VkZ2VHcmFkaWVudCIsIl9yZWYzIiwiJHNob3ciLCJTQ01lc3NhZ2VzR3JhZGllbnRUb3AiLCJTQ01lc3NhZ2VzR3JhZGllbnRCb3R0b20iLCJTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbiIsIlNDT3B0aW9uc0xpc3QiLCJTQ09wdGlvbkl0ZW0iLCJkYXJrIiwiX3JlZjQiLCIkaGFzU2VsZWN0aW9uIiwiX3JlZjUiLCIkZGltbWVkIiwiU0NUYXNrTGluayIsImEiLCJTQ1Byb2plY3RMaW5rIiwiU0NQcm9qZWN0TGlua0ljb24iLCJzcGFuIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJfcmVmNiIsIiRpc0Fzc2lzdGFudCIsIlNDTWVzc2FnZUl0ZW1Jbm5lciIsIlNDQXR0YWNobWVudHNSb3ciLCJfcmVmNyIsIlNDQXBwcm92YWxBY3Rpb25zQ29sdW1uIiwiU0NDQUlNZXNzYWdlV3JhcHBlciIsIl9yZWY4IiwiaXNDdXJyZW50VXNlciIsIl9yZWY5IiwiaXNGcm9udGVuZENhbmNlbGxlZCIsIl9yZWYwIiwiX3JlZjEiLCJmYWRlSW5VcCIsIlNjcm9sbFRvQm90dG9tQnV0dG9uIiwiYnV0dG9uIiwiU0NTY3JvbGxJY29uU3dhcCIsIl9yZWYxMCIsIiR2aXNpYmxlIiwiX3JlZjExIiwid3JpdGluZ0RvdCIsIlNDV3JpdGluZ0RvdHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTWVzc2FnZXMvbmV3U3R5bGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbmltcG9ydCBzdHlsZWQsIHsgY3NzLCBrZXlmcmFtZXMgfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcbmltcG9ydCB7IEJMVUVfSUFfQ09MT1JTLCBHTE9CQUxfQ09MT1JTIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7IFRBU0tfTElOS19JQ09OX0NTU19VUkwgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvdGFza0xpbmtJY29uJ1xuXG5jb25zdCBmYWRlSW4gPSBrZXlmcmFtZXNgXG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IE1lc3NhZ2VXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogMTZweDtcbmBcblxuLyoqIENvbnRlbmVkb3IgZXh0ZXJpb3IgZGVsIMOhcmVhIGRlIG1lbnNhamVzLiBDdWFuZG8gZXhwYW5kZWQsIG5vIGhhY2Ugc2Nyb2xsOyBlbCBzY3JvbGwgbG8gdGllbmUgU0NNZXNzYWdlc1Njcm9sbC4gKi9cbmV4cG9ydCBjb25zdCBTQ01lc3NhZ2VzT3V0ZXIgPSBzdHlsZWQuZGl2PHsgJHNjcm9sbE9uUGFyZW50PzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1ncm93OiAxO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiAwO1xuICAkeyh7ICRzY3JvbGxPblBhcmVudCB9KSA9PiAoJHNjcm9sbE9uUGFyZW50ID8gJycgOiAnb3ZlcmZsb3c6IGF1dG87IG92ZXJzY3JvbGwtYmVoYXZpb3IteTogY29udGFpbjsnKX1cbmBcblxuLyoqIEN1YW5kbyBleHBhbmRlZCwgZXN0ZSBjb250ZW5lZG9yIGhhY2Ugc2Nyb2xsIHBhcmEgcXVlIGVsIGJvdMOzbiBcImlyIGFsIGZpbmFsXCIgcXVlZGUgZmlqbyBlbiBlbCDDoXJlYSBkZWwgY2hhdCAqL1xuZXhwb3J0IGNvbnN0IFNDTWVzc2FnZXNTY3JvbGwgPSBzdHlsZWQuZGl2YFxuICBmbGV4OiAxO1xuICBtaW4taGVpZ2h0OiAwO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGNvbnRhaW47XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuYFxuXG4vKiogQ29udGVuZWRvciBpbnRlcmlvciBkZSBtZW5zYWplcyAobWF4V2lkdGggODY0cHgpLiBDdWFuZG8gZXhwYW5kZWQsIG92ZXJmbG93IHZpc2libGUgcGFyYSBxdWUgc2Nyb2xsIGxvIHRlbmdhIFNDTWVzc2FnZXNTY3JvbGwgKi9cbmV4cG9ydCBjb25zdCBTQ01lc3NhZ2VzSW5uZXIgPSBzdHlsZWQuZGl2PHsgJHNjcm9sbE9uUGFyZW50PzogYm9vbGVhbiB9PmBcbiAgZmxleC1ncm93OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDI0cHg7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogODY0cHg7XG4gIGFuaW1hdGlvbjogJHtmYWRlSW59IDAuNXMgZWFzZS1vdXQ7XG4gICR7KHsgJHNjcm9sbE9uUGFyZW50IH0pID0+XG4gICAgJHNjcm9sbE9uUGFyZW50ID8gJ292ZXJmbG93OiB2aXNpYmxlOycgOiAnb3ZlcmZsb3cteTogYXV0bzsgb3ZlcnNjcm9sbC1iZWhhdmlvci15OiBjb250YWluOyd9XG5cbiAgLyogQ29sY2jDs24gZGUgc2Nyb2xsIGFsIGZpbmFsIHBhcmEgcXVlIGVsIMO6bHRpbW8gbWVuc2FqZSBubyBxdWVkZSBwZWdhZG8gYWxcbiAgICAgaW5wdXQuIFZhIGNvbW8gZmxleCBpdGVtIChubyBwYWRkaW5nKSBwb3JxdWUgY3VhbmRvIGVzdGUgY29udGVuZWRvciBlcyBlbFxuICAgICBzY3JvbGxlciBlbCBwYWRkaW5nLWJvdHRvbSBubyBzZSByZXNwZXRhIGFsIGZpbmFsIGRlbCBzY3JvbGwuXG4gICAgIEVsIG1hcmdpbiBuZWdhdGl2byBjYW5jZWxhIGVsIGdhcCBkZWwgbGlzdGFkby4gKi9cbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtYXJnaW4tdG9wOiAtMjRweDtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NUdXJuU3BhY2VyID0gc3R5bGVkLmRpdmBcbiAgaGVpZ2h0OiAwO1xuICBmbGV4LXNocmluazogMDtcbiAgbWFyZ2luLXRvcDogLTI0cHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYFxuXG4vKiogRGlmdW1pbmFkbyBlbiBsb3MgYm9yZGVzIGRlbCDDoXJlYSBzY3JvbGxlYWJsZTogaW5kaWNhIHF1ZSBoYXkgY29udGVuaWRvIGZ1ZXJhIGRlIHZpc3RhLiAqL1xuY29uc3QgbWVzc2FnZXNFZGdlR3JhZGllbnQgPSBjc3M8eyAkc2hvdzogYm9vbGVhbiB9PmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgaGVpZ2h0OiA0OHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA4NjRweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAvKiBEZWJham8gZGVsIFNjcm9sbFRvQm90dG9tQnV0dG9uICh6LWluZGV4IDEwKS4gKi9cbiAgei1pbmRleDogNTtcbiAgb3BhY2l0eTogJHsoeyAkc2hvdyB9KSA9PiAoJHNob3cgPyAxIDogMCl9O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZS1pbi1vdXQ7XG5gXG5cbmV4cG9ydCBjb25zdCBTQ01lc3NhZ2VzR3JhZGllbnRUb3AgPSBzdHlsZWQuZGl2PHsgJHNob3c6IGJvb2xlYW4gfT5gXG4gICR7bWVzc2FnZXNFZGdlR3JhZGllbnR9XG4gIHRvcDogMDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgIHRvIGJvdHRvbSxcbiAgICAjZmZmZmZmIDAlLFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KSAzMCUsXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIDcwJSxcbiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDEwMCVcbiAgKTtcbmBcblxuZXhwb3J0IGNvbnN0IFNDTWVzc2FnZXNHcmFkaWVudEJvdHRvbSA9IHN0eWxlZC5kaXY8eyAkc2hvdzogYm9vbGVhbiB9PmBcbiAgJHttZXNzYWdlc0VkZ2VHcmFkaWVudH1cbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgdG8gdG9wLFxuICAgICNmZmZmZmYgMCUsXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpIDMwJSxcbiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgNzAlLFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMTAwJVxuICApO1xuYFxuXG4vKiogQ29sdW1uYSBwYXJhIGxvYWRpbmcvbG9hZGluZyBtZXNzYWdlcyAqL1xuZXhwb3J0IGNvbnN0IFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLyogU0NNZXNzYWdlc0lubmVyIHVzYSBnYXAgMjRweDsgZWwgbmVnYXRpdm8gbG8gY2FuY2VsYWJhIHkgZWwgaW5kaWNhZG9yXG4gICAgIHF1ZWRhYmEgcGVnYWRvIGFsIGJ1YmJsZSBkZWwgdXN1YXJpby4gRGVqYW1vcyAxNnB4IGRlIGFpcmUuICovXG4gIG1hcmdpbi10b3A6IC04cHg7XG5gXG5cbi8qKiBMaXN0YSBkZSBvcGNpb25lcyAoTWVzc2FnZU9wdGlvbnMpICovXG5leHBvcnQgY29uc3QgU0NPcHRpb25zTGlzdCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTJweDtcbmBcblxuZXhwb3J0IGNvbnN0IFNDT3B0aW9uSXRlbSA9IHN0eWxlZC5kaXY8eyAkaGFzU2VsZWN0aW9uPzogYm9vbGVhbjsgJGRpbW1lZD86IGJvb2xlYW4gfT5gXG4gIGNvbG9yOiAke0dMT0JBTF9DT0xPUlMuZGFya307XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE0MCU7XG4gIGN1cnNvcjogJHsoeyAkaGFzU2VsZWN0aW9uIH0pID0+ICgkaGFzU2VsZWN0aW9uID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJyl9O1xuICBvcGFjaXR5OiAkeyh7ICRkaW1tZWQgfSkgPT4gKCRkaW1tZWQgPyAwLjUgOiAxKX07XG5gXG5cbi8qKiBFbmxhY2UgZGUgdGFyZWEgKHRhc2sgbGluaykgKi9cbmV4cG9ydCBjb25zdCBTQ1Rhc2tMaW5rID0gc3R5bGVkLmFgXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjMzM3YWI3ICFpbXBvcnRhbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbmBcblxuLyoqIEVubGFjZSBkZSBwcm95ZWN0byAocHJvamVjdCBsaW5rKSAqL1xuZXhwb3J0IGNvbnN0IFNDUHJvamVjdExpbmsgPSBzdHlsZWQuYWBcbiAgY3Vyc29yOiBwb2ludGVyO1xuYFxuXG5leHBvcnQgY29uc3QgU0NQcm9qZWN0TGlua0ljb24gPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmbGV4LXNocmluazogMDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiA0cHg7XG5gXG5cbi8qKiBXcmFwcGVyIGRlIHVuIG1lbnNhamUgKHBvc2ljacOzbiwgZmxleCwgZ2FwKSAqL1xuZXhwb3J0IGNvbnN0IFNDTWVzc2FnZUl0ZW1XcmFwcGVyID0gc3R5bGVkLmRpdjx7ICRpc0Fzc2lzdGFudD86IGJvb2xlYW4gfT5gXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiA4cHg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICR7KHsgJGlzQXNzaXN0YW50IH0pID0+ICRpc0Fzc2lzdGFudCAmJiAnanVzdGlmeS1jb250ZW50OiBzdGFydDsnfVxuYFxuXG4vKiogQ29udGVuZWRvciBpbnRlcmlvciBkZWwgbWVuc2FqZSAoYXR0YWNobWVudHMgKyBhcHByb3ZhbCArIGNvbnRlbnQpICovXG5leHBvcnQgY29uc3QgU0NNZXNzYWdlSXRlbUlubmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiA4cHg7XG4gIG1pbi13aWR0aDogMDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuYFxuXG4vKiogRmlsYSBkZSBhdHRhY2htZW50cyAoZmxleCBlbmQgcGFyYSB1c3VhcmlvLCBmbGV4IHN0YXJ0IHBhcmEgYXNzaXN0YW50KSAqL1xuZXhwb3J0IGNvbnN0IFNDQXR0YWNobWVudHNSb3cgPSBzdHlsZWQuZGl2PHsgJGlzQXNzaXN0YW50PzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiAkeyh7ICRpc0Fzc2lzdGFudCB9KSA9PiAoJGlzQXNzaXN0YW50ID8gJ2ZsZXgtc3RhcnQnIDogJ2ZsZXgtZW5kJyl9O1xuICBnYXA6IDEycHg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbmBcblxuLyoqIENvbHVtbmEgZGUgYWNjaW9uZXMgZGUgYXBwcm92YWwgKi9cbmV4cG9ydCBjb25zdCBTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTJweDtcbmBcblxuLyoqIFdyYXBwZXIgZGVsIGNvbnRlbmlkbyBkZWwgbWVuc2FqZS4gY29udGFpbiBsaW1pdGEgcmVwYWludCBkdXJhbnRlIHN0cmVhbWluZyBhbCDDoXJlYSBkZWwgdGV4dG8uICovXG5leHBvcnQgY29uc3QgU0NDQUlNZXNzYWdlV3JhcHBlciA9IHN0eWxlZC5kaXY8eyBpc0N1cnJlbnRVc2VyOiBib29sZWFuOyBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhbiB9PmBcbiAgY29udGFpbjogbGF5b3V0IHN0eWxlO1xuICBtaW4td2lkdGg6IDA7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyBpc0N1cnJlbnRVc2VyIH0pID0+IChpc0N1cnJlbnRVc2VyID8gJzEycHgnIDogJzBweCcpfTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IGlzQ3VycmVudFVzZXIsIGlzRnJvbnRlbmRDYW5jZWxsZWQgfSkgPT4ge1xuICAgIGlmIChpc0Zyb250ZW5kQ2FuY2VsbGVkKSByZXR1cm4gJ3RyYW5zcGFyZW50J1xuICAgIGlmIChpc0N1cnJlbnRVc2VyKSByZXR1cm4gQkxVRV9JQV9DT0xPUlNbNTBdXG4gICAgcmV0dXJuICd0cmFuc3BhcmVudCdcbiAgfX07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTZweDtcbiAgJHsoeyBpc0N1cnJlbnRVc2VyIH0pID0+XG4gICAgaXNDdXJyZW50VXNlciAmJlxuICAgIGNzc2BcbiAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG4gICAgICBtYXgtd2lkdGg6IDc1JTtcbiAgICBgfVxuXG4gICYuaGFzLXRhc2stbGlua3MgYVtkYXRhLWNvci1saW5rPSd0YXNrJ10ge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjMjAyMDIwICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctbGVmdDogMjJweCAhaW1wb3J0YW50O1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZCAhaW1wb3J0YW50O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tY29sb3I6ICNiM2IzYjMgIWltcG9ydGFudDtcbiAgICAgIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDFweCAhaW1wb3J0YW50O1xuICAgICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAycHggIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQ6ICNiZWQ1ZWIgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICB3aWR0aDogMjBweDtcbiAgICAgIGhlaWdodDogMjBweDtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6ICR7VEFTS19MSU5LX0lDT05fQ1NTX1VSTH07XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gICYuaGFzLXByb2plY3QtbGlua3MgYVtkYXRhLWNvci1saW5rPSdwcm9qZWN0J10ge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjMjAyMDIwICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiAycHggIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZCAhaW1wb3J0YW50O1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tY29sb3I6ICNiM2IzYjMgIWltcG9ydGFudDtcbiAgICAgIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDFweCAhaW1wb3J0YW50O1xuICAgICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAycHggIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQ6ICNiZWQ1ZWIgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICR7KHsgaXNDdXJyZW50VXNlciB9KSA9PlxuICAgIGlzQ3VycmVudFVzZXIgJiZcbiAgICBjc3NgXG4gICAgICAmLmhhcy10YXNrLWxpbmtzIGFbZGF0YS1jb3ItbGluaz0ndGFzayddIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgICYuaGFzLXRhc2stbGlua3MgYVtkYXRhLWNvci1saW5rPSd0YXNrJ106OmJlZm9yZSB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgdG9wOiBjYWxjKCgxbGggLSAyMHB4KSAvIDIpO1xuICAgICAgfVxuXG4gICAgICAmLmhhcy1wcm9qZWN0LWxpbmtzIGFbZGF0YS1jb3ItbGluaz0ncHJvamVjdCddIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgYH1cbmBcblxuY29uc3QgZmFkZUluVXAgPSBrZXlmcmFtZXNgXG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMTBweCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFNjcm9sbFRvQm90dG9tQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMTBweDtcbiAgYXNwZWN0LXJhdGlvOiAxLzE7XG4gIGJvcmRlci1yYWRpdXM6IDIxLjVweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgYm94LXNoYWRvdzogMCA0cHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDE1cHg7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDEwO1xuICBhbmltYXRpb246ICR7ZmFkZUluVXB9IDAuM3MgZWFzZTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzIGVhc2U7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjdmN2Y3O1xuICB9XG5gXG5cbi8qIExvcyBkb3MgaWNvbm9zIHNlIHN1cGVycG9uZW4gcGFyYSBwb2RlciBjcnV6YXJsb3M7IGVsIGJvdMOzbiB5YSBlcyBgcG9zaXRpb246IGFic29sdXRlYC4gKi9cbmV4cG9ydCBjb25zdCBTQ1Njcm9sbEljb25Td2FwID0gc3R5bGVkLnNwYW48eyAkdmlzaWJsZTogYm9vbGVhbiB9PmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG9wYWNpdHk6ICR7KHsgJHZpc2libGUgfSkgPT4gKCR2aXNpYmxlID8gMSA6IDApfTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgkeyh7ICR2aXNpYmxlIH0pID0+ICgkdmlzaWJsZSA/IDEgOiAwLjcyKX0pO1xuICB0cmFuc2l0aW9uOlxuICAgIG9wYWNpdHkgMTgwbXMgZWFzZS1vdXQsXG4gICAgdHJhbnNmb3JtIDE4MG1zIGVhc2Utb3V0O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmBcblxuY29uc3Qgd3JpdGluZ0RvdCA9IGtleWZyYW1lc2BcbiAgMCUsIDYwJSwgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDAuMzU7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NXcml0aW5nRG90cyA9IHN0eWxlZC5zcGFuYFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAzcHg7XG5cbiAgc3BhbiB7XG4gICAgd2lkdGg6IDRweDtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZDogIzIwMjAyMDtcbiAgICBhbmltYXRpb246ICR7d3JpdGluZ0RvdH0gMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgfVxuXG4gIHNwYW46bnRoLWNoaWxkKDIpIHtcbiAgICBhbmltYXRpb24tZGVsYXk6IDAuMTZzO1xuICB9XG5cbiAgc3BhbjpudGgtY2hpbGQoMykge1xuICAgIGFuaW1hdGlvbi1kZWxheTogMC4zMnM7XG4gIH1cbmBcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxPQUFPQSxNQUFNLElBQUlDLEdBQUcsRUFBRUMsU0FBUyxRQUFRLG1CQUFtQjtBQUMxRCxTQUFTQyxjQUFjLEVBQUVDLGFBQWEsUUFBUSx3QkFBd0I7QUFDdEUsU0FBU0Msc0JBQXNCLFFBQVEsaUNBQWlDO0FBRXhFLElBQU1DLE1BQU0sR0FBR0osU0FBUyxvQ0FPdkI7QUFFRCxPQUFPLElBQU1LLGNBQWMsR0FBR1AsTUFBTSxDQUFDUSxHQUFHLENBQUFDLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEscUJBRXZDOztBQUVEO0FBQ0EsT0FBTyxJQUFNQyxlQUFlLEdBQUdaLE1BQU0sQ0FBQ1EsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLDRGQU1yQyxVQUFBRSxJQUFBO0VBQUEsSUFBR0MsZUFBZSxHQUFBRCxJQUFBLENBQWZDLGVBQWU7RUFBQSxPQUFRQSxlQUFlLEdBQUcsRUFBRSxHQUFH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
@@ -178,13 +178,6 @@ export var ensureAgentsBeforeSkillUse = /*#__PURE__*/function () {
178
178
  return _ref3.apply(this, arguments);
179
179
  };
180
180
  }();
181
- /** Visibilidad del panel host cuando la página /maia del sidebar está activa. */
182
- export var getMaiaHostPanelPresentation = function getMaiaHostPanelPresentation(isMinimized, isMaiaPageRoute) {
183
- return {
184
- hidePanelContent: isMinimized || isMaiaPageRoute,
185
- showMinimizedPill: isMinimized && !isMaiaPageRoute
186
- };
187
- };
188
181
  export var resolveHostTakeoverEntityState = function resolveHostTakeoverEntityState(detail) {
189
182
  var _detail$project, _detail$task;
190
183
  var isGlobalHeaderOpen = detail.section === 'header' || detail.section === 'planner';
@@ -571,4 +564,4 @@ export var buildUserInitialMessageFromStartChat = function buildUserInitialMessa
571
564
  export var shouldResetSidebarErrorOnStartChat = function shouldResetSidebarErrorOnStartChat(sidebarHasError) {
572
565
  return sidebarHasError;
573
566
  };
574
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYW5BY2Nlc3NUb0NoYXRBSSIsImNhbkFjY2Vzc1RvU2tpbGxzIiwidmFsaWRhdGVJc01haWEiLCJpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudCIsImlzVmFsaWRNYWlhUGFuZWxPcHRpb24iLCJpc0FjdGl2ZVNlc3Npb25TdGF0dXMiLCJvcHRpb25zIiwiTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMiLCJpc0xlZ2FjeUNvbnRleHRFbnRpdHkiLCJlbnRpdHkiLCJCb29sZWFuIiwiaW5jbHVkZXMiLCJyZXNvbHZlTGVnYWN5Q29udGV4dFNlc3Npb24iLCJjb21wdXRlZEN1cnJlbnRPcHRpb24iLCJjaGF0T3B0aW9uIiwic2Vzc2lvbk1ldGEiLCJhZ2VudFR5cGUiLCJhZ2VudEVudGl0eSIsImNvbnRleHROYW1lIiwidGFza05hbWUiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJlbnRpdHlUeXBlIiwiaGFzQW55QWN0aXZlU2Vzc2lvbkluTWV0YSIsIm1ldGEiLCJPYmplY3QiLCJ2YWx1ZXMiLCJzb21lIiwiZW50cnkiLCJzdGF0dXMiLCJpc0dsb2JhbE1haWFTZWN0aW9uIiwic2VjdGlvbiIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJjdXJyZW50T3B0aW9uIiwiaG9tZU9wdGlvbiIsInZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlIiwidXNlciIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJyZXNvbHZlQ29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiX3JlZiIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsIm11bHRpQWdlbnRzQWNjZXNzIiwiaXNNQUlBIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsIm15QWdlbnRzIiwibXlTa2lsbHMiLCJ0eXBlIiwiaG9tZSIsImNoYXQiLCJzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yIiwic2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yIiwicHJvamVjdFNlbGVjdG9yIiwiY2xpZW50U2VsZWN0b3IiLCJyZXNvbHZlU2lkZWJhckFnZW50c05hdkFjdGl2ZSIsImlzTWFpYWtlckFnZW50U2VsZWN0ZWQiLCJyZXNvbHZlSW5pdGlhbEN1cnJlbnRPcHRpb24iLCJzYXZlZEFnZW50c05hdkFjdGl2ZSIsInNhdmVkQ3VycmVudE9wdGlvbiIsInNob3VsZFJlc3RvcmVFeHBhbmRlZFBhbmVsIiwic2F2ZWRTZXNzaW9uIiwiX3NhdmVkU2Vzc2lvbiRpc0V4cGFuIiwiaXNFeHBhbmRlZCIsInJlc29sdmVEZWZhdWx0RmxvYXRpbmdQYW5lbFBvc2l0aW9uIiwidmlld3BvcnRXaWR0aCIsInBhbmVsV2lkdGgiLCJwYWRkaW5nIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwieCIsInkiLCJpc0Jhbm5lckZhcVJlYWR5VG9BdXRvU2VuZCIsInBhcmFtcyIsIl9wYXJhbXMkZmFxVGl0bGUiLCJmYXFUaXRsZSIsInRyaW0iLCJhbHJlYWR5U2VudCIsImxvYWRpbmciLCJhZ2VudElkIiwicHJvamVjdElkIiwiY2xpZW50SWQiLCJzaG91bGRTa2lwRmxvYXRpbmdEcmFnVGFyZ2V0IiwidGFyZ2V0IiwiY2xvc2VzdCIsImNsYW1wRmxvYXRpbmdQYW5lbFBvc2l0aW9uIiwicGFuZWxIZWlnaHQiLCJ2aWV3cG9ydEhlaWdodCIsIm9mZnNldCIsIm1heFgiLCJNYXRoIiwibWF4IiwibWF4WSIsIm1pbiIsImVuc3VyZUFnZW50c0JlZm9yZVNraWxsVXNlIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYyIiwidXNlRmlyc3RBZ2VudCIsImFnZW50cyIsImVuc3VyZUFnZW50c0xvYWRlZCIsImxvYWRlZEFnZW50cyIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJhYnJ1cHQiLCJzZW50Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJnZXRNYWlhSG9zdFBhbmVsUHJlc2VudGF0aW9uIiwiaXNNaW5pbWl6ZWQiLCJpc01haWFQYWdlUm91dGUiLCJoaWRlUGFuZWxDb250ZW50Iiwic2hvd01pbmltaXplZFBpbGwiLCJyZXNvbHZlSG9zdFRha2VvdmVyRW50aXR5U3RhdGUiLCJkZXRhaWwiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJHRhc2siLCJpc0dsb2JhbEhlYWRlck9wZW4iLCJfZGV0YWlsJGNsaWVudCIsInRhc2siLCJjbGVhckdsb2JhbFBpbm5lZENvbnRleHQiLCJidWlsZEhvc3RUYWtlb3ZlclBlcnNpc3RDb250ZXh0IiwiX2RldGFpbCRwcm9qZWN0MiIsIl9kZXRhaWwkY2xpZW50MiIsIl9kZXRhaWwkdGFzazIiLCJjaGlwc1Byb2plY3QiLCJkaXNwYXRjaFNraWxsTWVudGlvbkluc2VydCIsInNraWxsIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJyZXNvbHZlTWFpYU1vZGFsSTE4bkxhbmciLCJsYW5ndWFnZSIsInJlc29sdmVVc2VySGFzQWdlbnRNYW5hZ2VtZW50UGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsIm11bHRpQWdlbnRzRmVhdHVyZUFjY2VzcyIsIl9wZXJtaXNzaW9ucyRhaV9hZ2VudCIsIl9wZXJtaXNzaW9ucyRhaV9hZ2VudDIiLCJfcGVybWlzc2lvbnMkYWlfYWdlbnQzIiwiYWlfYWdlbnRzIiwiY3JlYXRlIiwiZWRpdCIsInNob3VsZFN0YXJ0TmV3Q2hhdEZyb21DYXRhbG9nIiwic2hvdWxkQmFja1N0YXJ0TmV3Q2hhdFByZXNlcnZpbmdDb250ZXh0Iiwic2hvdWxkQmFja0NsZWFyUGlubmVkQ29udGV4dCIsImRpZFJlc2V0Q29udGV4dEluU2VjdGlvbiIsInNob3VsZE1hcmtPcmNoZXN0cmF0b3JDb250ZXh0UmVzZXQiLCJ3YXNQaW5uZWQiLCJpc1Bpbm5lZCIsInJlc29sdmVNaW5pbWl6ZWRSZXN0b3JlVGFyZ2V0IiwiY2hhdHMiLCJsYXN0QWN0aXZlQ2hhdElkIiwiZmlyc3RVbnJlYWQiLCJmaW5kIiwiaXNSZWFkIiwic2Vzc2lvbkV4dGVybmFsSWQiLCJyZXNvbHZlSG9zdFRha2VvdmVyQWdlbnRJZCIsImN1cnJlbnRBZ2VudElkIiwiX2FnZW50cyQwJGlkIiwiX2FnZW50cyQiLCJpZCIsInJlc29sdmVGbG9hdGluZ1BhbmVsRHJhZ1Bvc2l0aW9uIiwibGF5b3V0TW9kZSIsImRyYWdQb3NpdGlvbiIsImRlZmF1bHRQb3NpdGlvbiIsImNsYW1wIiwicmVzb2x2ZU5leHREcmFnUG9zaXRpb24iLCJwcmV2aW91cyIsImJ1aWxkTWFpYVBhbmVsU2Vzc2lvblBhdGNoIiwiYWdlbnRzTmF2QWN0aXZlIiwiYWN0aXZlQ2hhdElkIiwic2lkZWJhck9wZW4iLCJob3N0Q29udGV4dCIsInJlc29sdmVIYXNQaW5uZWRDb250ZXh0IiwidGFza0lkIiwiY2hpcHNQcm9qZWN0SWQiLCJyZXNvbHZlT3JjaGVzdHJhdG9ySG9tZU5hdkZsYWdzIiwiaXNDaGF0VmlldyIsImlzSG9tZVN0ZXAyIiwiaGFzUGlubmVkQ29udGV4dCIsImlzSGVhZGVySG9tZVN0ZXAyIiwiaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIiLCJzaG91bGRTaG93T3JjaGVzdHJhdG9yQmFja0J1dHRvbiIsImhhc0Vycm9yIiwic2hvdWxkQ2xlYXJDbGllbnRPbkdvSG9tZUZyb21DaGF0Iiwic2hvdWxkQ2xlYXJUYXNrT25Hb0hvbWVGcm9tQ2hhdCIsInNob3VsZFJlc2V0QWdlbnRUb0ZpcnN0T25Hb0hvbWUiLCJhZ2VudHNDb3VudCIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJwcm9qZWN0X2RlbGV0ZWQiLCJzaG91bGRDbGVhck9yY2hlc3RyYXRvckdsb2JhbENvbnRleHRPbkdvSG9tZSIsInNob3VsZFVzZUFjdGl2ZUNoYXRTZW5kSGFuZGxlciIsImhhc1NlbmRNZXNzYWdlRnVuY3Rpb24iLCJzaG91bGRQcmVmZXRjaEFnZW50c0ZvckNhdGFsb2dOZXdDaGF0IiwibXlBZ2VudHNPcHRpb24iLCJteVNraWxsc09wdGlvbiIsImNhbk9wZW5NYWlhTWFya2V0cGxhY2UiLCJzaG91bGRNYXJrQWdlbnRBc0xlZ2FjeUNvbnRleHQiLCJsZWdhY3lDb250ZXh0U2Vzc2lvbiIsImlzX2xlZ2FjeV9jb250ZXh0IiwiYnVpbGRMZWdhY3lDb250ZXh0QWdlbnQiLCJfb2JqZWN0U3ByZWFkIiwiYnVpbGRMZWdhY3lDb250ZXh0TWlncmF0aW9uUGF0Y2giLCJwSWQiLCJwTmFtZSIsImNJZCIsImNOYW1lIiwidElkIiwidE5hbWUiLCJjbGVhcmVkIiwibmFtZSIsIlN0cmluZyIsInBhdGNoIiwiZmluZE9yY2hlc3RyYXRvckFnZW50IiwiY2FuZGlkYXRlIiwic2hvdWxkU2V0Q2hhdFZpZXdIaWRkZW5Pbk1vdW50IiwiaGFzUGVuZGluZ1Nlc3Npb25SZXN0b3JlIiwic2hvdWxkUGVyc2lzdExhc3RBY3RpdmVDaGF0SWQiLCJoYXNCYW5uZXJGYXFUaXRsZSIsInNob3VsZFN5bmNQYW5lbFNlc3Npb25PblBhZ2VIaWRlIiwicmVzb2x2ZUNhY2hlZEFnZW50c0lmQXZhaWxhYmxlIiwic2hvdWxkQXR0ZW1wdEluaXRpYWxBZ2VudHNGZXRjaCIsImNhY2hlZEFnZW50c0xlbmd0aCIsImFscmVhZHlGZXRjaGVkIiwiZmluZEFnZW50Rm9yQ2hhdEl0ZW0iLCJjaGF0QWdlbnRJZCIsImFnZW50SXRlbSIsIk51bWJlciIsInNob3VsZEFwcGx5Q2xpZW50T25Ib3N0VGFrZW92ZXIiLCJzaG91bGRTZWxlY3RGaXJzdEFnZW50T25Ib3N0VGFrZW92ZXIiLCJmaXJzdEFnZW50Iiwic2hvdWxkUmVzZXRDaGF0U3RhdGVPbkdvSG9tZSIsInNob3VsZENsZWFyQ29udGV4dEZvckNhdGFsb2dPclNraWxsQWdlbnQiLCJyZXNvbHZlT3Blbk5ld0NoYXRXaXRoQWdlbnRDb250ZXh0IiwiX2RldGFpbCRwcm9qZWN0MyIsIl9kZXRhaWwkY2xpZW50MyIsInNob3VsZFNldFRhc2siLCJjYW5Db250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQiLCJvcmNoZXN0cmF0b3IiLCJyZXNvbHZlU2Vzc2lvblJlc3RvcmVOYXZSb3V0ZSIsInNuYXBzaG90Iiwic2hvdWxkU2tpcEFnZW50c0xvYWRPblNlc3Npb25SZXN0b3JlIiwic2hvdWxkRmV0Y2hBZ2VudERldGFpbE9uU2Vzc2lvblJlc3RvcmUiLCJzaG91bGRQYXNzQWdlbnRUb0dldEFnZW50c09uUmVzdG9yZSIsInNob3VsZFNlbGVjdEZldGNoZWRBZ2VudEFmdGVyUmVzdG9yZSIsImFnZW50VG9TZWxlY3QiLCJyZXNvbHZlU25hcHNob3RDaGlwc1Byb2plY3QiLCJfaG9zdENvbnRleHQkY2hpcHNQcm8iLCJyZXNvbHZlQ2hhdE1vZGFsU2VjdGlvbkZsYWdzIiwic2hvd05ld0NoYXQiLCJpc015QWdlbnRzU2VjdGlvbiIsImlzTXlTa2lsbHNTZWN0aW9uIiwiaXNNYWlha2VyQ3JlYXRvckhvbWUiLCJzaG91bGRSZW5kZXJDaGF0U2lkZWJhciIsImhhc0FjY2VzcyIsImlzRmxvYXRpbmciLCJyZXNvbHZlQ2hhdE1vZGFsTWFpbkNvbnRlbnRWaWV3Iiwic2hvdWxkU2hvd0NoYXRNb2RhbEZvb3RlciIsIm9uSG9tZVdpdGhBZ2VudHMiLCJvbkNoYXQiLCJzaG91bGRVc2VFbGV2YXRlZE1haWFQYW5lbCIsInNob3VsZFJlc2VsZWN0QWdlbnRBZnRlckRlbGV0ZSIsImRlbGV0ZWRBZ2VudElkIiwic2hvdWxkQ2xlYXJEcmFnUG9zaXRpb25PbkxheW91dENoYW5nZSIsInNob3VsZFBlcnNpc3REcmFnUG9zaXRpb25PbkRyYWdFbmQiLCJzaG91bGRTdGFydEZsb2F0aW5nUGFuZWxEcmFnIiwicG9pbnRlckJ1dHRvbiIsImlzQWN0aXZlRmxvYXRpbmdEcmFnUG9pbnRlciIsImRyYWdQb2ludGVySWQiLCJldmVudFBvaW50ZXJJZCIsInNob3VsZE9wZW5Ta2lsbHNDYXRhbG9nIiwidXNlckhhc1NraWxsc0FjY2VzcyIsInNob3VsZFVzZURyYWdDbGFtcEZhbGxiYWNrIiwiY29udGVudFdyYXBwZXIiLCJyZXNvbHZlTGF5b3V0RHJhZ1Bvc2l0aW9uVXBkYXRlIiwiZGVmYXVsdHMiLCJpbm5lcldpZHRoIiwicGFkIiwicmVzb2x2ZVBlcnNpc3RlZERyYWdQb3NpdGlvbk9uRW5kIiwiYnVpbGRVc2VySW5pdGlhbE1lc3NhZ2VGcm9tU3RhcnRDaGF0IiwiaW5wdXQiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJjb250ZXh0RGF0YSIsInNob3VsZFJlc2V0U2lkZWJhckVycm9yT25TdGFydENoYXQiLCJzaWRlYmFySGFzRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwuaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENPUlVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHR5cGUgeyBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IGNhbkFjY2Vzc1RvQ2hhdEFJLCBjYW5BY2Nlc3NUb1NraWxscyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgdHlwZSB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgdHlwZSB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHR5cGUgeyBNYWlhSG9zdE9wZW5EZXRhaWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYWlhSG9zdE9wZW4nXG5pbXBvcnQgeyBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBpc1ZhbGlkTWFpYVBhbmVsT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvbWFpYVBhbmVsU2Vzc2lvblBlcnNpc3RlbmNlJ1xuaW1wb3J0IHR5cGUgeyBNYWlhQWdlbnRzTmF2QWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvbWFpYVBhbmVsU2Vzc2lvblBlcnNpc3RlbmNlJ1xuaW1wb3J0IHsgaXNBY3RpdmVTZXNzaW9uU3RhdHVzLCB0eXBlIFNlc3Npb25TdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9ucy50eXBlcydcbmltcG9ydCB7IG9wdGlvbnMgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB0eXBlIHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgdHlwZSB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5cbmV4cG9ydCBjb25zdCBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUyA9IFsncHJvamVjdCcsICd0YXNrJywgJ2NsaWVudCddIGFzIGNvbnN0XG5leHBvcnQgdHlwZSBMZWdhY3lDb250ZXh0RW50aXR5ID0gKHR5cGVvZiBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUylbbnVtYmVyXVxuXG5leHBvcnQgdHlwZSBMZWdhY3lTZXNzaW9uTWV0YSA9IHtcbiAgYWdlbnRUeXBlPzogc3RyaW5nXG4gIGFnZW50RW50aXR5Pzogc3RyaW5nXG4gIHRhc2tOYW1lPzogc3RyaW5nXG4gIHByb2plY3ROYW1lPzogc3RyaW5nXG4gIGNsaWVudE5hbWU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IGlzTGVnYWN5Q29udGV4dEVudGl0eSA9IChlbnRpdHk6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGVudGl0eSBpcyBMZWdhY3lDb250ZXh0RW50aXR5ID0+XG4gIEJvb2xlYW4oZW50aXR5ICYmIExFR0FDWV9DT05URVhUX0VOVElUSUVTLmluY2x1ZGVzKGVudGl0eSBhcyBMZWdhY3lDb250ZXh0RW50aXR5KSlcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVMZWdhY3lDb250ZXh0U2Vzc2lvbiA9IChcbiAgY29tcHV0ZWRDdXJyZW50T3B0aW9uOiBvcHRpb25zLFxuICBjaGF0T3B0aW9uOiBvcHRpb25zLFxuICBzZXNzaW9uTWV0YTogTGVnYWN5U2Vzc2lvbk1ldGEgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiB7IGVudGl0eVR5cGU6IExlZ2FjeUNvbnRleHRFbnRpdHk7IGNvbnRleHROYW1lOiBzdHJpbmcgfSB8IG51bGwgPT4ge1xuICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBjaGF0T3B0aW9uIHx8ICFzZXNzaW9uTWV0YSB8fCBzZXNzaW9uTWV0YS5hZ2VudFR5cGUgIT09ICdjbG9uZScpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgZW50aXR5ID0gc2Vzc2lvbk1ldGEuYWdlbnRFbnRpdHlcbiAgaWYgKCFpc0xlZ2FjeUNvbnRleHRFbnRpdHkoZW50aXR5KSkgcmV0dXJuIG51bGxcblxuICBsZXQgY29udGV4dE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBpZiAoZW50aXR5ID09PSAndGFzaycpIHtcbiAgICBjb250ZXh0TmFtZSA9IHNlc3Npb25NZXRhLnRhc2tOYW1lXG4gIH0gZWxzZSBpZiAoZW50aXR5ID09PSAncHJvamVjdCcpIHtcbiAgICBjb250ZXh0TmFtZSA9IHNlc3Npb25NZXRhLnByb2plY3ROYW1lXG4gIH0gZWxzZSB7XG4gICAgY29udGV4dE5hbWUgPSBzZXNzaW9uTWV0YS5jbGllbnROYW1lXG4gIH1cblxuICByZXR1cm4geyBlbnRpdHlUeXBlOiBlbnRpdHksIGNvbnRleHROYW1lOiBjb250ZXh0TmFtZSB8fCAnJyB9XG59XG5cbmV4cG9ydCBjb25zdCBoYXNBbnlBY3RpdmVTZXNzaW9uSW5NZXRhID0gKG1ldGE6IFJlY29yZDxzdHJpbmcsIHsgc3RhdHVzPzogU2Vzc2lvblN0YXR1cyB9IHwgdW5kZWZpbmVkPik6IGJvb2xlYW4gPT5cbiAgT2JqZWN0LnZhbHVlcyhtZXRhKS5zb21lKGVudHJ5ID0+IGlzQWN0aXZlU2Vzc2lvblN0YXR1cyhlbnRyeT8uc3RhdHVzKSlcblxuZXhwb3J0IHR5cGUgQWlDaGF0QmFja0Rlc3RpbmF0aW9uID1cbiAgJ2dsb2JhbF9jb250ZXh0X2hvbWUnIHwgJ3Rhc2tfaG9tZScgfCAncGxhbm5lcl9ob21lJyB8ICdwcm9qZWN0X2hvbWUnIHwgJ2NsaWVudF9ob21lJ1xuXG5leHBvcnQgY29uc3QgaXNHbG9iYWxNYWlhU2VjdGlvbiA9IChzZWN0aW9uOiBTZWN0aW9uKTogYm9vbGVhbiA9PiBzZWN0aW9uID09PSAnaGVhZGVyJ1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9IChcbiAgc2VjdGlvbjogU2VjdGlvbixcbiAgYWdlbnRUeXBlOiBBZ2VudFsndHlwZSddIHwgdW5kZWZpbmVkLFxuICBjdXJyZW50T3B0aW9uOiBzdHJpbmcsXG4gIGhvbWVPcHRpb246IHN0cmluZ1xuKTogQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0+IHtcbiAgaWYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiBjdXJyZW50T3B0aW9uID09PSBob21lT3B0aW9uKSB7XG4gICAgcmV0dXJuICdnbG9iYWxfY29udGV4dF9ob21lJ1xuICB9XG4gIGlmIChzZWN0aW9uID09PSAndGFzaycpIHJldHVybiAndGFza19ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSByZXR1cm4gJ3BsYW5uZXJfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdwcm9qZWN0JykgcmV0dXJuICdwcm9qZWN0X2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAnY2xpZW50JykgcmV0dXJuICdjbGllbnRfaG9tZSdcbiAgcmV0dXJuICdnbG9iYWxfY29udGV4dF9ob21lJ1xufVxuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUgPSAoc2VjdGlvbjogU2VjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQsIHVzZXI6IENPUlVzZXIpOiBib29sZWFuID0+IHtcbiAgaWYgKCFzZWN0aW9uIHx8ICFjYW5BY2Nlc3NUb0NoYXRBSSh1c2VyKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKHNlY3Rpb24gPT09ICdwbGFubmVyJyB8fCBzZWN0aW9uID09PSAndGFzaycpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyB8fCB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUylcbiAgfVxuXG4gIHJldHVybiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpXG59XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVDb21wdXRlZEN1cnJlbnRPcHRpb25QYXJhbXMgPSB7XG4gIGN1cnJlbnRPcHRpb246IG9wdGlvbnNcbiAgYWdlbnQ6IEFnZW50IHwgbnVsbCB8IHVuZGVmaW5lZFxuICBwcm9qZWN0OiBQcm9qZWN0IHwgbnVsbCB8IHVuZGVmaW5lZFxuICBjbGllbnQ6IENsaWVudCB8IG51bGwgfCB1bmRlZmluZWRcbiAgdXNlcjogQ09SVXNlclxuICBtdWx0aUFnZW50c0FjY2VzczogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUNvbXB1dGVkQ3VycmVudE9wdGlvbiA9ICh7XG4gIGN1cnJlbnRPcHRpb24sXG4gIGFnZW50LFxuICBwcm9qZWN0LFxuICBjbGllbnQsXG4gIHVzZXIsXG4gIG11bHRpQWdlbnRzQWNjZXNzLFxufTogUmVzb2x2ZUNvbXB1dGVkQ3VycmVudE9wdGlvblBhcmFtcyk6IG9wdGlvbnMgPT4ge1xuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcbiAgY29uc3QgaXNHbG9iYWxTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnXG4gIGNvbnN0IGlzUHJvamVjdFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09IG51bGwpXG4gIGNvbnN0IGlzQ2xpZW50U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50J1xuICBjb25zdCBpc01haWFrZXIgPSBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhZ2VudClcblxuICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyAmJiBtdWx0aUFnZW50c0FjY2Vzcykge1xuICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gIH1cblxuICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxscyAmJiBjYW5BY2Nlc3NUb1NraWxscyh1c2VyKSkge1xuICAgIHJldHVybiBvcHRpb25zLm15U2tpbGxzXG4gIH1cblxuICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgYWdlbnQ/LnR5cGUgIT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgIHJldHVybiBvcHRpb25zLmNoYXRcbiAgfVxuXG4gIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICBjb25zdCBzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNDbGllbnRTcGVjaWFsaXN0ICYmICFjbGllbnRcblxuICBpZiAoc2hvdWxkU2hvd1Byb2plY3RTZWxlY3Rvcikge1xuICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICB9XG4gIGlmIChzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnRPcHRpb25cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTaWRlYmFyQWdlbnRzTmF2QWN0aXZlID0gKFxuICBjb21wdXRlZEN1cnJlbnRPcHRpb246IG9wdGlvbnMsXG4gIGlzTWFpYWtlckFnZW50U2VsZWN0ZWQ6IGJvb2xlYW5cbik6IE1haWFBZ2VudHNOYXZBY3RpdmUgfCBudWxsID0+IHtcbiAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxscykgcmV0dXJuICdteVNraWxscydcbiAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykgcmV0dXJuICdteUFnZW50cydcbiAgaWYgKGlzTWFpYWtlckFnZW50U2VsZWN0ZWQpIHJldHVybiAnbWFpYWtlcidcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVJbml0aWFsQ3VycmVudE9wdGlvbiA9IChcbiAgc2F2ZWRBZ2VudHNOYXZBY3RpdmU6IE1haWFBZ2VudHNOYXZBY3RpdmUgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBzYXZlZEN1cnJlbnRPcHRpb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHVzZXI6IENPUlVzZXJcbik6IG9wdGlvbnMgPT4ge1xuICBpZiAoc2F2ZWRBZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cycpIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gIGlmIChzYXZlZEFnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJyAmJiBjYW5BY2Nlc3NUb1NraWxscyh1c2VyKSkgcmV0dXJuIG9wdGlvbnMubXlTa2lsbHNcbiAgaWYgKHNhdmVkQ3VycmVudE9wdGlvbiAmJiBpc1ZhbGlkTWFpYVBhbmVsT3B0aW9uKHNhdmVkQ3VycmVudE9wdGlvbikpIHtcbiAgICByZXR1cm4gc2F2ZWRDdXJyZW50T3B0aW9uIGFzIG9wdGlvbnNcbiAgfVxuICByZXR1cm4gb3B0aW9ucy5ob21lXG59XG5cbmV4cG9ydCBjb25zdCBzaG91bGRSZXN0b3JlRXhwYW5kZWRQYW5lbCA9IChzYXZlZFNlc3Npb246IHsgaXNFeHBhbmRlZD86IGJvb2xlYW4gfSB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuID0+XG4gIHNhdmVkU2Vzc2lvbj8uaXNFeHBhbmRlZCA/PyBmYWxzZVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZURlZmF1bHRGbG9hdGluZ1BhbmVsUG9zaXRpb24gPSAoXG4gIHZpZXdwb3J0V2lkdGg6IG51bWJlcixcbiAgcGFuZWxXaWR0aDogbnVtYmVyLFxuICBwYWRkaW5nID0gMTZcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9PiAoe1xuICB4OiB2aWV3cG9ydFdpZHRoIC0gcGFuZWxXaWR0aCAtIHBhZGRpbmcsXG4gIHk6IHBhZGRpbmcsXG59KVxuXG5leHBvcnQgY29uc3QgaXNCYW5uZXJGYXFSZWFkeVRvQXV0b1NlbmQgPSAocGFyYW1zOiB7XG4gIGZhcVRpdGxlPzogc3RyaW5nIHwgbnVsbFxuICBhbHJlYWR5U2VudDogYm9vbGVhblxuICBsb2FkaW5nOiBib29sZWFuXG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gIHNlY3Rpb246IFNlY3Rpb25cbiAgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbn0pOiBib29sZWFuID0+IHtcbiAgaWYgKCFwYXJhbXMuZmFxVGl0bGU/LnRyaW0oKSB8fCBwYXJhbXMuYWxyZWFkeVNlbnQgfHwgcGFyYW1zLmxvYWRpbmcgfHwgIXBhcmFtcy5hZ2VudElkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAocGFyYW1zLnNlY3Rpb24gPT09ICdwcm9qZWN0JykgcmV0dXJuIEJvb2xlYW4ocGFyYW1zLnByb2plY3RJZClcbiAgaWYgKHBhcmFtcy5zZWN0aW9uID09PSAnY2xpZW50JykgcmV0dXJuIEJvb2xlYW4ocGFyYW1zLmNsaWVudElkKVxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2tpcEZsb2F0aW5nRHJhZ1RhcmdldCA9ICh0YXJnZXQ6IEVsZW1lbnQgfCBudWxsKTogYm9vbGVhbiA9PlxuICBCb29sZWFuKHRhcmdldD8uY2xvc2VzdCgnYnV0dG9uLCBhLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW3JvbGU9XCJidXR0b25cIl0sIFtkYXRhLW5vLWRyYWc9XCJ0cnVlXCJdJykpXG5cbmV4cG9ydCBjb25zdCBjbGFtcEZsb2F0aW5nUGFuZWxQb3NpdGlvbiA9IChcbiAgeDogbnVtYmVyLFxuICB5OiBudW1iZXIsXG4gIHBhbmVsV2lkdGg6IG51bWJlcixcbiAgcGFuZWxIZWlnaHQ6IG51bWJlcixcbiAgdmlld3BvcnRXaWR0aDogbnVtYmVyLFxuICB2aWV3cG9ydEhlaWdodDogbnVtYmVyLFxuICBvZmZzZXQgPSAxNlxuKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgbWF4WCA9IE1hdGgubWF4KG9mZnNldCwgdmlld3BvcnRXaWR0aCAtIHBhbmVsV2lkdGggLSBvZmZzZXQpXG4gIGNvbnN0IG1heFkgPSBNYXRoLm1heChvZmZzZXQsIHZpZXdwb3J0SGVpZ2h0IC0gcGFuZWxIZWlnaHQgLSBvZmZzZXQpXG5cbiAgcmV0dXJuIHtcbiAgICB4OiBNYXRoLm1pbihNYXRoLm1heCh4LCBvZmZzZXQpLCBtYXhYKSxcbiAgICB5OiBNYXRoLm1pbihNYXRoLm1heCh5LCBvZmZzZXQpLCBtYXhZKSxcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBFbnN1cmVBZ2VudHNCZWZvcmVTa2lsbFVzZVBhcmFtcyA9IHtcbiAgdXNlRmlyc3RBZ2VudDogYm9vbGVhblxuICBhZ2VudHM6IEFnZW50W11cbiAgZW5zdXJlQWdlbnRzTG9hZGVkOiAoKSA9PiBQcm9taXNlPEFnZW50W10+XG59XG5cbi8qKiBHYXJhbnRpemEgcXVlIGxhIGxpc3RhIGRlIGFnZW50ZXMgZXN0w6kgZGlzcG9uaWJsZSBhbnRlcyBkZSBhYnJpciB1biBjaGF0IGNvbiB1bmEgc2tpbGwuICovXG5leHBvcnQgY29uc3QgZW5zdXJlQWdlbnRzQmVmb3JlU2tpbGxVc2UgPSBhc3luYyAoe1xuICB1c2VGaXJzdEFnZW50LFxuICBhZ2VudHMsXG4gIGVuc3VyZUFnZW50c0xvYWRlZCxcbn06IEVuc3VyZUFnZW50c0JlZm9yZVNraWxsVXNlUGFyYW1zKTogUHJvbWlzZTxBZ2VudCB8IHVuZGVmaW5lZD4gPT4ge1xuICBpZiAoIXVzZUZpcnN0QWdlbnQpIHJldHVybiB1bmRlZmluZWRcblxuICBjb25zdCBsb2FkZWRBZ2VudHMgPSBhZ2VudHMubGVuZ3RoID4gMCA/IGFnZW50cyA6IGF3YWl0IGVuc3VyZUFnZW50c0xvYWRlZCgpXG4gIHJldHVybiBsb2FkZWRBZ2VudHNbMF1cbn1cblxuZXhwb3J0IHR5cGUgTWFpYUhvc3RQYW5lbFByZXNlbnRhdGlvbiA9IHtcbiAgLyoqIE9jdWx0YSBlbCBwYW5lbCBmbG90YW50ZSBkZWwgaG9zdCBzaW4gcGVyc2lzdGlyIG1pbmltaXphZG8uICovXG4gIGhpZGVQYW5lbENvbnRlbnQ6IGJvb2xlYW5cbiAgc2hvd01pbmltaXplZFBpbGw6IGJvb2xlYW5cbn1cblxuLyoqIFZpc2liaWxpZGFkIGRlbCBwYW5lbCBob3N0IGN1YW5kbyBsYSBww6FnaW5hIC9tYWlhIGRlbCBzaWRlYmFyIGVzdMOhIGFjdGl2YS4gKi9cbmV4cG9ydCBjb25zdCBnZXRNYWlhSG9zdFBhbmVsUHJlc2VudGF0aW9uID0gKFxuICBpc01pbmltaXplZDogYm9vbGVhbixcbiAgaXNNYWlhUGFnZVJvdXRlOiBib29sZWFuXG4pOiBNYWlhSG9zdFBhbmVsUHJlc2VudGF0aW9uID0+ICh7XG4gIGhpZGVQYW5lbENvbnRlbnQ6IGlzTWluaW1pemVkIHx8IGlzTWFpYVBhZ2VSb3V0ZSxcbiAgc2hvd01pbmltaXplZFBpbGw6IGlzTWluaW1pemVkICYmICFpc01haWFQYWdlUm91dGUsXG59KVxuXG5leHBvcnQgdHlwZSBIb3N0VGFrZW92ZXJFbnRpdHlTdGF0ZSA9IHtcbiAgcHJvamVjdDogUHJvamVjdCB8IG51bGxcbiAgLyoqIGB1bmRlZmluZWRgID0gbm8gaW52b2NhciBzZXRDbGllbnQgKHAuIGVqLiB0YWtlb3ZlciBkZXNkZSBwcm95ZWN0bykuICovXG4gIGNsaWVudDogQ2xpZW50IHwgbnVsbCB8IHVuZGVmaW5lZFxuICB0YXNrOiBUYXNrIHwgbnVsbFxuICBjbGVhckdsb2JhbFBpbm5lZENvbnRleHQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVIb3N0VGFrZW92ZXJFbnRpdHlTdGF0ZSA9IChcbiAgZGV0YWlsOiBQaWNrPE1haWFIb3N0T3BlbkRldGFpbCwgJ3NlY3Rpb24nIHwgJ3Byb2plY3QnIHwgJ2NsaWVudCcgfCAndGFzayc+XG4pOiBIb3N0VGFrZW92ZXJFbnRpdHlTdGF0ZSA9PiB7XG4gIGNvbnN0IGlzR2xvYmFsSGVhZGVyT3BlbiA9IGRldGFpbC5zZWN0aW9uID09PSAnaGVhZGVyJyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3BsYW5uZXInXG4gIGNvbnN0IHByb2plY3QgPSBkZXRhaWwuc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IGRldGFpbC5zZWN0aW9uID09PSAndGFzaycgPyAoZGV0YWlsLnByb2plY3QgPz8gbnVsbCkgOiBudWxsXG5cbiAgbGV0IGNsaWVudDogQ2xpZW50IHwgbnVsbCB8IHVuZGVmaW5lZFxuICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnKSB7XG4gICAgY2xpZW50ID0gZGV0YWlsLmNsaWVudCA/PyBudWxsXG4gIH0gZWxzZSBpZiAoaXNHbG9iYWxIZWFkZXJPcGVuKSB7XG4gICAgY2xpZW50ID0gbnVsbFxuICB9XG5cbiAgY29uc3QgdGFzayA9IGRldGFpbC5zZWN0aW9uID09PSAndGFzaycgPyAoZGV0YWlsLnRhc2sgPz8gbnVsbCkgOiBudWxsXG5cbiAgcmV0dXJuIHtcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0YXNrLFxuICAgIGNsZWFyR2xvYmFsUGlubmVkQ29udGV4dDogaXNHbG9iYWxIZWFkZXJPcGVuLFxuICB9XG59XG5cbmV4cG9ydCB0eXBlIEhvc3RUYWtlb3ZlclBlcnNpc3RDb250ZXh0ID0ge1xuICBzZWN0aW9uOiBTZWN0aW9uXG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIGNsaWVudDogQ2xpZW50IHwgbnVsbFxuICB0YXNrOiBUYXNrIHwgbnVsbFxuICBjaGlwc1Byb2plY3Q6IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkSG9zdFRha2VvdmVyUGVyc2lzdENvbnRleHQgPSAoXG4gIGRldGFpbDogUGljazxNYWlhSG9zdE9wZW5EZXRhaWwsICdzZWN0aW9uJyB8ICdwcm9qZWN0JyB8ICdjbGllbnQnIHwgJ3Rhc2snPlxuKTogSG9zdFRha2VvdmVyUGVyc2lzdENvbnRleHQgPT4gKHtcbiAgc2VjdGlvbjogZGV0YWlsLnNlY3Rpb24gYXMgU2VjdGlvbixcbiAgcHJvamVjdDogZGV0YWlsLnNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snID8gKGRldGFpbC5wcm9qZWN0ID8/IG51bGwpIDogbnVsbCxcbiAgY2xpZW50OiBkZXRhaWwuc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyAoZGV0YWlsLmNsaWVudCA/PyBudWxsKSA6IG51bGwsXG4gIHRhc2s6IGRldGFpbC5zZWN0aW9uID09PSAndGFzaycgPyAoZGV0YWlsLnRhc2sgPz8gbnVsbCkgOiBudWxsLFxuICBjaGlwc1Byb2plY3Q6IG51bGwsXG59KVxuXG4vKiogSW5zZXJ0YSBsYSBtZW5jacOzbiBkZSBza2lsbCBjdWFuZG8gZWwgaW5wdXQgZGVsIGNoYXQgeWEgZXN0w6EgbW9udGFkby4gKi9cbmV4cG9ydCBjb25zdCBkaXNwYXRjaFNraWxsTWVudGlvbkluc2VydCA9IChza2lsbDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSk6IHZvaWQgPT4ge1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIHsgZGV0YWlsOiB7IHNraWxsIH0gfSkpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVNYWlhTW9kYWxJMThuTGFuZyA9IChsYW5ndWFnZTogc3RyaW5nKTogc3RyaW5nID0+IChsYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBsYW5ndWFnZSlcblxudHlwZSBBZ2VudE1hbmFnZW1lbnRQZXJtaXNzaW9ucyA9IHtcbiAgYWlfYWdlbnRzPzoge1xuICAgIGNyZWF0ZT86IGJvb2xlYW5cbiAgICBlZGl0PzogYm9vbGVhblxuICAgIGRlbGV0ZT86IGJvb2xlYW5cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVVzZXJIYXNBZ2VudE1hbmFnZW1lbnRQZXJtaXNzaW9ucyA9IChcbiAgcGVybWlzc2lvbnM6IEFnZW50TWFuYWdlbWVudFBlcm1pc3Npb25zIHwgdW5kZWZpbmVkLFxuICBtdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3M6IGJvb2xlYW5cbik6IGJvb2xlYW4gPT5cbiAgQm9vbGVhbihcbiAgICAocGVybWlzc2lvbnM/LmFpX2FnZW50cz8uY3JlYXRlIHx8IHBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmVkaXQgfHwgcGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZGVsZXRlKSAmJlxuICAgIG11bHRpQWdlbnRzRmVhdHVyZUFjY2Vzc1xuICApXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTdGFydE5ld0NoYXRGcm9tQ2F0YWxvZyA9IChcbiAgY29tcHV0ZWRDdXJyZW50T3B0aW9uOiBvcHRpb25zLFxuICBpc01haWFrZXJBZ2VudFNlbGVjdGVkOiBib29sZWFuXG4pOiBib29sZWFuID0+XG4gIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyB8fFxuICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMgfHxcbiAgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWQpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRCYWNrU3RhcnROZXdDaGF0UHJlc2VydmluZ0NvbnRleHQgPSAoY29tcHV0ZWRDdXJyZW50T3B0aW9uOiBvcHRpb25zLCBjaGF0T3B0aW9uOiBvcHRpb25zKTogYm9vbGVhbiA9PlxuICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IGNoYXRPcHRpb25cblxuZXhwb3J0IGNvbnN0IHNob3VsZEJhY2tDbGVhclBpbm5lZENvbnRleHQgPSAoXG4gIGNvbXB1dGVkQ3VycmVudE9wdGlvbjogb3B0aW9ucyxcbiAgaG9tZU9wdGlvbjogb3B0aW9ucyxcbiAgc2VjdGlvbjogU2VjdGlvbixcbiAgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uOiBib29sZWFuXG4pOiBib29sZWFuID0+IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gaG9tZU9wdGlvbiAmJiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSB8fCBkaWRSZXNldENvbnRleHRJblNlY3Rpb24pXG5cbmV4cG9ydCBjb25zdCBzaG91bGRNYXJrT3JjaGVzdHJhdG9yQ29udGV4dFJlc2V0ID0gKFxuICBzZWN0aW9uOiBTZWN0aW9uLFxuICBhZ2VudFR5cGU6IEFnZW50Wyd0eXBlJ10gfCB1bmRlZmluZWQsXG4gIHdhc1Bpbm5lZDogYm9vbGVhbixcbiAgaXNQaW5uZWQ6IGJvb2xlYW5cbik6IGJvb2xlYW4gPT4gIWlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiB3YXNQaW5uZWQgJiYgIWlzUGlubmVkXG5cbmV4cG9ydCB0eXBlIE1pbmltaXplZFJlc3RvcmVDaGF0ID0ge1xuICBpc1JlYWQ/OiBib29sZWFuXG4gIHNlc3Npb25FeHRlcm5hbElkPzogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlTWluaW1pemVkUmVzdG9yZVRhcmdldCA9IDxUIGV4dGVuZHMgTWluaW1pemVkUmVzdG9yZUNoYXQ+KFxuICBjaGF0czogVFtdLFxuICBsYXN0QWN0aXZlQ2hhdElkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBUIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgZmlyc3RVbnJlYWQgPSBjaGF0cy5maW5kKGNoYXQgPT4gY2hhdC5pc1JlYWQgPT09IGZhbHNlKVxuICBpZiAoZmlyc3RVbnJlYWQpIHJldHVybiBmaXJzdFVucmVhZFxuICByZXR1cm4gbGFzdEFjdGl2ZUNoYXRJZCA/IGNoYXRzLmZpbmQoY2hhdCA9PiBjaGF0LnNlc3Npb25FeHRlcm5hbElkID09PSBsYXN0QWN0aXZlQ2hhdElkKSA6IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUhvc3RUYWtlb3ZlckFnZW50SWQgPSAoXG4gIGNsZWFyR2xvYmFsUGlubmVkQ29udGV4dDogYm9vbGVhbixcbiAgYWdlbnRzOiBBZ2VudFtdLFxuICBjdXJyZW50QWdlbnRJZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGlmICghY2xlYXJHbG9iYWxQaW5uZWRDb250ZXh0KSByZXR1cm4gY3VycmVudEFnZW50SWQgPz8gbnVsbFxuICByZXR1cm4gYWdlbnRzWzBdPy5pZCA/PyBudWxsXG59XG5cbmV4cG9ydCB0eXBlIE1haWFQYW5lbERyYWdQb3NpdGlvbiA9IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUZsb2F0aW5nUGFuZWxEcmFnUG9zaXRpb24gPSAocGFyYW1zOiB7XG4gIGxheW91dE1vZGU6ICdzaWRlYmFyJyB8ICdmdWxsc2NyZWVuJyB8ICdmbG9hdGluZydcbiAgZHJhZ1Bvc2l0aW9uOiBNYWlhUGFuZWxEcmFnUG9zaXRpb24gfCBudWxsXG4gIHZpZXdwb3J0V2lkdGg6IG51bWJlclxuICBwYW5lbFdpZHRoOiBudW1iZXJcbiAgY2xhbXA6ICh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4gTWFpYVBhbmVsRHJhZ1Bvc2l0aW9uXG59KTogTWFpYVBhbmVsRHJhZ1Bvc2l0aW9uIHwgbnVsbCA9PiB7XG4gIGlmIChwYXJhbXMubGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgIHJldHVybiBwYXJhbXMuZHJhZ1Bvc2l0aW9uXG4gIH1cbiAgaWYgKHBhcmFtcy5kcmFnUG9zaXRpb24pIHtcbiAgICByZXR1cm4gcGFyYW1zLmRyYWdQb3NpdGlvblxuICB9XG4gIGNvbnN0IGRlZmF1bHRQb3NpdGlvbiA9IHJlc29sdmVEZWZhdWx0RmxvYXRpbmdQYW5lbFBvc2l0aW9uKHBhcmFtcy52aWV3cG9ydFdpZHRoLCBwYXJhbXMucGFuZWxXaWR0aClcbiAgcmV0dXJuIHBhcmFtcy5jbGFtcChkZWZhdWx0UG9zaXRpb24ueCwgZGVmYXVsdFBvc2l0aW9uLnkpXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlTmV4dERyYWdQb3NpdGlvbiA9IChcbiAgcHJldmlvdXM6IE1haWFQYW5lbERyYWdQb3NpdGlvbiB8IG51bGwsXG4gIG5leHQ6IE1haWFQYW5lbERyYWdQb3NpdGlvblxuKTogTWFpYVBhbmVsRHJhZ1Bvc2l0aW9uID0+IHtcbiAgaWYgKHByZXZpb3VzICYmIHByZXZpb3VzLnggPT09IG5leHQueCAmJiBwcmV2aW91cy55ID09PSBuZXh0LnkpIHtcbiAgICByZXR1cm4gcHJldmlvdXNcbiAgfVxuICByZXR1cm4gbmV4dFxufVxuXG5leHBvcnQgdHlwZSBNYWlhUGFuZWxTZXNzaW9uSG9zdENvbnRleHQgPSB7XG4gIHNlY3Rpb246IFNlY3Rpb25cbiAgcHJvamVjdDogUHJvamVjdCB8IG51bGxcbiAgY2xpZW50OiBDbGllbnQgfCBudWxsXG4gIHRhc2s6IFRhc2sgfCBudWxsXG4gIGNoaXBzUHJvamVjdDogdW5rbm93blxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRNYWlhUGFuZWxTZXNzaW9uUGF0Y2ggPSAocGFyYW1zOiB7XG4gIGlzTWluaW1pemVkOiBib29sZWFuXG4gIGN1cnJlbnRPcHRpb246IG9wdGlvbnNcbiAgYWdlbnRzTmF2QWN0aXZlOiBNYWlhQWdlbnRzTmF2QWN0aXZlIHwgbnVsbFxuICBhY3RpdmVDaGF0SWQ6IHN0cmluZyB8IG51bGxcbiAgYWdlbnRJZDogc3RyaW5nIHwgbnVsbFxuICBzaWRlYmFyT3BlbjogYm9vbGVhblxuICBsYXlvdXRNb2RlOiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnXG4gIGRyYWdQb3NpdGlvbjogTWFpYVBhbmVsRHJhZ1Bvc2l0aW9uIHwgbnVsbFxuICBob3N0Q29udGV4dDogTWFpYVBhbmVsU2Vzc2lvbkhvc3RDb250ZXh0XG59KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsID0+IHtcbiAgaWYgKHBhcmFtcy5pc01pbmltaXplZCkgcmV0dXJuIG51bGxcblxuICByZXR1cm4ge1xuICAgIGlzRXhwYW5kZWQ6IHRydWUsXG4gICAgY3VycmVudE9wdGlvbjogcGFyYW1zLmN1cnJlbnRPcHRpb24sXG4gICAgYWdlbnRzTmF2QWN0aXZlOiBwYXJhbXMuYWdlbnRzTmF2QWN0aXZlLFxuICAgIGFjdGl2ZUNoYXRJZDogcGFyYW1zLmFjdGl2ZUNoYXRJZCxcbiAgICBhZ2VudElkOiBwYXJhbXMuYWdlbnRJZCxcbiAgICBzaWRlYmFyT3BlbjogcGFyYW1zLnNpZGViYXJPcGVuLFxuICAgIGRyYWdQb3NpdGlvbjogcGFyYW1zLmxheW91dE1vZGUgPT09ICdmbG9hdGluZycgPyBwYXJhbXMuZHJhZ1Bvc2l0aW9uIDogbnVsbCxcbiAgICBob3N0Q29udGV4dDogcGFyYW1zLmhvc3RDb250ZXh0LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlSGFzUGlubmVkQ29udGV4dCA9IChwYXJhbXM6IHtcbiAgdGFza0lkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBjaGlwc1Byb2plY3RJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgY2xpZW50SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIHByb2plY3RJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbn0pOiBib29sZWFuID0+IEJvb2xlYW4ocGFyYW1zLnRhc2tJZCB8fCBwYXJhbXMuY2hpcHNQcm9qZWN0SWQgfHwgcGFyYW1zLmNsaWVudElkIHx8IHBhcmFtcy5wcm9qZWN0SWQpXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlT3JjaGVzdHJhdG9ySG9tZU5hdkZsYWdzID0gKHBhcmFtczoge1xuICBjb21wdXRlZEN1cnJlbnRPcHRpb246IG9wdGlvbnNcbiAgaG9tZU9wdGlvbjogb3B0aW9uc1xuICBjaGF0T3B0aW9uOiBvcHRpb25zXG4gIGhhc1Bpbm5lZENvbnRleHQ6IGJvb2xlYW5cbiAgc2VjdGlvbjogU2VjdGlvblxuICBkaWRSZXNldENvbnRleHRJblNlY3Rpb246IGJvb2xlYW5cbn0pOiB7XG4gIGlzQ2hhdFZpZXc6IGJvb2xlYW5cbiAgaXNIb21lU3RlcDI6IGJvb2xlYW5cbiAgaXNIZWFkZXJIb21lU3RlcDI6IGJvb2xlYW5cbiAgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDI6IGJvb2xlYW5cbn0gPT4ge1xuICBjb25zdCBpc0NoYXRWaWV3ID0gcGFyYW1zLmNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gcGFyYW1zLmNoYXRPcHRpb25cbiAgY29uc3QgaXNIb21lU3RlcDIgPSBwYXJhbXMuY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBwYXJhbXMuaG9tZU9wdGlvbiAmJiBwYXJhbXMuaGFzUGlubmVkQ29udGV4dFxuICByZXR1cm4ge1xuICAgIGlzQ2hhdFZpZXcsXG4gICAgaXNIb21lU3RlcDIsXG4gICAgaXNIZWFkZXJIb21lU3RlcDI6IGlzR2xvYmFsTWFpYVNlY3Rpb24ocGFyYW1zLnNlY3Rpb24pICYmIGlzSG9tZVN0ZXAyLFxuICAgIGlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyOiAhaXNHbG9iYWxNYWlhU2VjdGlvbihwYXJhbXMuc2VjdGlvbikgJiYgaXNIb21lU3RlcDIgJiYgcGFyYW1zLmRpZFJlc2V0Q29udGV4dEluU2VjdGlvbixcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2hvd09yY2hlc3RyYXRvckJhY2tCdXR0b24gPSAocGFyYW1zOiB7XG4gIGFnZW50VHlwZT86IHN0cmluZ1xuICBoYXNFcnJvcjogYm9vbGVhblxuICBsb2FkaW5nOiBib29sZWFuXG4gIGlzQ2hhdFZpZXc6IGJvb2xlYW5cbiAgaXNIZWFkZXJIb21lU3RlcDI6IGJvb2xlYW5cbiAgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDI6IGJvb2xlYW5cbn0pOiBib29sZWFuID0+XG4gIHBhcmFtcy5hZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmXG4gICFwYXJhbXMuaGFzRXJyb3IgJiZcbiAgIXBhcmFtcy5sb2FkaW5nICYmXG4gIChwYXJhbXMuaXNDaGF0VmlldyB8fCBwYXJhbXMuaXNIZWFkZXJIb21lU3RlcDIgfHwgcGFyYW1zLmlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkQ2xlYXJDbGllbnRPbkdvSG9tZUZyb21DaGF0ID0gKGFnZW50RW50aXR5Pzogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4gPT4gYWdlbnRFbnRpdHkgIT09ICdjbGllbnQnXG5cbmV4cG9ydCBjb25zdCBzaG91bGRDbGVhclRhc2tPbkdvSG9tZUZyb21DaGF0ID0gKHNlY3Rpb246IFNlY3Rpb24pOiBib29sZWFuID0+IHNlY3Rpb24gIT09ICd0YXNrJ1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkUmVzZXRBZ2VudFRvRmlyc3RPbkdvSG9tZSA9IChhZ2VudDogQWdlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBhZ2VudHNDb3VudDogbnVtYmVyKTogYm9vbGVhbiA9PlxuICBCb29sZWFuKFxuICAgICghYWdlbnQgfHwgYWdlbnQuaXNfZGVsZXRlZCB8fCBhZ2VudC5oYXNfbm90X3Blcm1pc3Npb25zIHx8IGFnZW50Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50LnByb2plY3RfZGVsZXRlZCkgJiZcbiAgICBhZ2VudHNDb3VudCA+IDBcbiAgKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkQ2xlYXJPcmNoZXN0cmF0b3JHbG9iYWxDb250ZXh0T25Hb0hvbWUgPSAoc2VjdGlvbjogU2VjdGlvbiwgYWdlbnRUeXBlPzogc3RyaW5nKTogYm9vbGVhbiA9PlxuICBpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcblxuZXhwb3J0IGNvbnN0IHNob3VsZFVzZUFjdGl2ZUNoYXRTZW5kSGFuZGxlciA9IChcbiAgY29tcHV0ZWRDdXJyZW50T3B0aW9uOiBvcHRpb25zLFxuICBjaGF0T3B0aW9uOiBvcHRpb25zLFxuICBoYXNTZW5kTWVzc2FnZUZ1bmN0aW9uOiBib29sZWFuXG4pOiBib29sZWFuID0+IEJvb2xlYW4oaGFzU2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IGNoYXRPcHRpb24pXG5cbmV4cG9ydCBjb25zdCBzaG91bGRQcmVmZXRjaEFnZW50c0ZvckNhdGFsb2dOZXdDaGF0ID0gKFxuICBjb21wdXRlZEN1cnJlbnRPcHRpb246IG9wdGlvbnMsXG4gIG15QWdlbnRzT3B0aW9uOiBvcHRpb25zLFxuICBteVNraWxsc09wdGlvbjogb3B0aW9uc1xuKTogYm9vbGVhbiA9PiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG15QWdlbnRzT3B0aW9uIHx8IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gbXlTa2lsbHNPcHRpb25cblxuZXhwb3J0IGNvbnN0IGNhbk9wZW5NYWlhTWFya2V0cGxhY2UgPSAobXVsdGlBZ2VudHNBY2Nlc3M6IGJvb2xlYW4pOiBib29sZWFuID0+IG11bHRpQWdlbnRzQWNjZXNzXG5cbmV4cG9ydCBjb25zdCBzaG91bGRNYXJrQWdlbnRBc0xlZ2FjeUNvbnRleHQgPSAoXG4gIGxlZ2FjeUNvbnRleHRTZXNzaW9uOiB1bmtub3duLFxuICBhZ2VudDogQWdlbnQgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBhZ2VudCBpcyBBZ2VudCA9PiBCb29sZWFuKGxlZ2FjeUNvbnRleHRTZXNzaW9uICYmIGFnZW50ICYmICFhZ2VudC5pc19sZWdhY3lfY29udGV4dClcblxuZXhwb3J0IGNvbnN0IGJ1aWxkTGVnYWN5Q29udGV4dEFnZW50ID0gKGFnZW50OiBBZ2VudCk6IEFnZW50ID0+ICh7IC4uLmFnZW50LCBpc19sZWdhY3lfY29udGV4dDogdHJ1ZSB9KVxuXG5leHBvcnQgdHlwZSBMZWdhY3lDb250ZXh0TWlncmF0aW9uTWV0YSA9IHtcbiAgYWdlbnRFbnRpdHk/OiBzdHJpbmdcbiAgcHJvamVjdElkPzogbnVtYmVyXG4gIHByb2plY3ROYW1lPzogc3RyaW5nXG4gIGNsaWVudElkPzogbnVtYmVyXG4gIGNsaWVudE5hbWU/OiBzdHJpbmdcbiAgdGFza0lkPzogbnVtYmVyXG4gIHRhc2tOYW1lPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIExlZ2FjeUNvbnRleHRDaGlwc1Byb2plY3QgPSB7XG4gIHByb2plY3RJZDogc3RyaW5nXG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgY2xpZW50TmFtZTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIExlZ2FjeUNvbnRleHRNaWdyYXRpb25QYXRjaCA9IHtcbiAgdGFzazogVGFzayB8IG51bGxcbiAgcHJvamVjdDogUHJvamVjdCB8IG51bGxcbiAgY2xpZW50OiBDbGllbnQgfCBudWxsXG4gIGNoaXBzUHJvamVjdDogTGVnYWN5Q29udGV4dENoaXBzUHJvamVjdCB8IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkTGVnYWN5Q29udGV4dE1pZ3JhdGlvblBhdGNoID0gKFxuICBzZXNzaW9uTWV0YTogTGVnYWN5Q29udGV4dE1pZ3JhdGlvbk1ldGEgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBMZWdhY3lDb250ZXh0TWlncmF0aW9uUGF0Y2ggfCBudWxsID0+IHtcbiAgaWYgKCFzZXNzaW9uTWV0YT8uYWdlbnRFbnRpdHkpIHJldHVybiBudWxsXG5cbiAgY29uc3Qge1xuICAgIGFnZW50RW50aXR5LFxuICAgIHByb2plY3RJZDogcElkLFxuICAgIHByb2plY3ROYW1lOiBwTmFtZSxcbiAgICBjbGllbnRJZDogY0lkLFxuICAgIGNsaWVudE5hbWU6IGNOYW1lLFxuICAgIHRhc2tJZDogdElkLFxuICAgIHRhc2tOYW1lOiB0TmFtZSxcbiAgfSA9IHNlc3Npb25NZXRhXG5cbiAgY29uc3QgY2xlYXJlZDogTGVnYWN5Q29udGV4dE1pZ3JhdGlvblBhdGNoID0ge1xuICAgIHRhc2s6IG51bGwsXG4gICAgcHJvamVjdDogbnVsbCxcbiAgICBjbGllbnQ6IG51bGwsXG4gICAgY2hpcHNQcm9qZWN0OiBudWxsLFxuICB9XG5cbiAgaWYgKGFnZW50RW50aXR5ID09PSAnY2xpZW50JyAmJiBjSWQgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IC4uLmNsZWFyZWQsIGNsaWVudDogeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9IH1cbiAgfVxuXG4gIGlmIChhZ2VudEVudGl0eSA9PT0gJ3Byb2plY3QnICYmIHBJZCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNsZWFyZWQsXG4gICAgICBwcm9qZWN0OiB7XG4gICAgICAgIGlkOiBwSWQsXG4gICAgICAgIG5hbWU6IHBOYW1lIHx8ICcnLFxuICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQsIGNsaWVudDogeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9IH0gOiB7fSksXG4gICAgICB9LFxuICAgICAgY2hpcHNQcm9qZWN0OiB7IHByb2plY3RJZDogU3RyaW5nKHBJZCksIHByb2plY3ROYW1lOiBwTmFtZSB8fCAnJywgY2xpZW50TmFtZTogY05hbWUgfHwgJycgfSxcbiAgICB9XG4gIH1cblxuICBpZiAoYWdlbnRFbnRpdHkgPT09ICd0YXNrJyAmJiB0SWQgIT0gbnVsbCkge1xuICAgIGNvbnN0IHRhc2s6IFRhc2sgPSB7XG4gICAgICBpZDogdElkLFxuICAgICAgbmFtZTogdE5hbWUgfHwgJycsXG4gICAgICAuLi4ocElkICE9IG51bGwgPyB7IHByb2plY3RJZDogcElkIH0gOiB7fSksXG4gICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQgfSA6IHt9KSxcbiAgICB9XG4gICAgbGV0IHBhdGNoOiBMZWdhY3lDb250ZXh0TWlncmF0aW9uUGF0Y2ggPSB7IC4uLmNsZWFyZWQsIHRhc2sgfVxuICAgIGlmIChjSWQgIT0gbnVsbCkge1xuICAgICAgcGF0Y2ggPSB7IC4uLnBhdGNoLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9XG4gICAgfVxuICAgIGlmIChwSWQgIT0gbnVsbCkge1xuICAgICAgcGF0Y2ggPSB7XG4gICAgICAgIC4uLnBhdGNoLFxuICAgICAgICBwcm9qZWN0OiB7XG4gICAgICAgICAgaWQ6IHBJZCxcbiAgICAgICAgICBuYW1lOiBwTmFtZSB8fCAnJyxcbiAgICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQsIGNsaWVudDogeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9IH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGNoaXBzUHJvamVjdDogeyBwcm9qZWN0SWQ6IFN0cmluZyhwSWQpLCBwcm9qZWN0TmFtZTogcE5hbWUgfHwgJycsIGNsaWVudE5hbWU6IGNOYW1lIHx8ICcnIH0sXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXRjaFxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGZpbmRPcmNoZXN0cmF0b3JBZ2VudCA9IChhZ2VudHM6IEFnZW50W10pOiBBZ2VudCB8IHVuZGVmaW5lZCA9PlxuICBhZ2VudHMuZmluZChjYW5kaWRhdGUgPT4gY2FuZGlkYXRlLnR5cGUgPT09ICdvcmNoZXN0cmF0b3InKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2V0Q2hhdFZpZXdIaWRkZW5Pbk1vdW50ID0gKGhhc1BlbmRpbmdTZXNzaW9uUmVzdG9yZTogYm9vbGVhbik6IGJvb2xlYW4gPT4gIWhhc1BlbmRpbmdTZXNzaW9uUmVzdG9yZVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkUGVyc2lzdExhc3RBY3RpdmVDaGF0SWQgPSAoYWN0aXZlQ2hhdElkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiBCb29sZWFuKGFjdGl2ZUNoYXRJZClcblxuZXhwb3J0IGNvbnN0IGhhc0Jhbm5lckZhcVRpdGxlID0gKGZhcVRpdGxlPzogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4gPT4gQm9vbGVhbihmYXFUaXRsZT8udHJpbSgpKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU3luY1BhbmVsU2Vzc2lvbk9uUGFnZUhpZGUgPSAoaXNNaW5pbWl6ZWQ6IGJvb2xlYW4pOiBib29sZWFuID0+ICFpc01pbmltaXplZFxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUNhY2hlZEFnZW50c0lmQXZhaWxhYmxlID0gKGFnZW50czogQWdlbnRbXSk6IEFnZW50W10gfCBudWxsID0+IChhZ2VudHMubGVuZ3RoID4gMCA/IGFnZW50cyA6IG51bGwpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRBdHRlbXB0SW5pdGlhbEFnZW50c0ZldGNoID0gKGNhY2hlZEFnZW50c0xlbmd0aDogbnVtYmVyLCBhbHJlYWR5RmV0Y2hlZDogYm9vbGVhbik6IGJvb2xlYW4gPT5cbiAgY2FjaGVkQWdlbnRzTGVuZ3RoID09PSAwICYmICFhbHJlYWR5RmV0Y2hlZFxuXG5leHBvcnQgY29uc3QgZmluZEFnZW50Rm9yQ2hhdEl0ZW0gPSAoYWdlbnRzOiBBZ2VudFtdLCBjaGF0QWdlbnRJZDogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogQWdlbnQgfCB1bmRlZmluZWQgPT5cbiAgYWdlbnRzLmZpbmQoYWdlbnRJdGVtID0+IE51bWJlcihhZ2VudEl0ZW0uaWQpID09PSBOdW1iZXIoY2hhdEFnZW50SWQpKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkQXBwbHlDbGllbnRPbkhvc3RUYWtlb3ZlciA9IChjbGllbnQ6IENsaWVudCB8IG51bGwgfCB1bmRlZmluZWQpOiBjbGllbnQgaXMgQ2xpZW50IHwgbnVsbCA9PlxuICBjbGllbnQgIT09IHVuZGVmaW5lZFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2VsZWN0Rmlyc3RBZ2VudE9uSG9zdFRha2VvdmVyID0gKFxuICBjbGVhckdsb2JhbFBpbm5lZENvbnRleHQ6IGJvb2xlYW4sXG4gIGZpcnN0QWdlbnQ6IEFnZW50IHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IGNsZWFyR2xvYmFsUGlubmVkQ29udGV4dCAmJiBCb29sZWFuKGZpcnN0QWdlbnQpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRSZXNldENoYXRTdGF0ZU9uR29Ib21lID0gKGN1cnJlbnRPcHRpb246IG9wdGlvbnMsIGNoYXRPcHRpb246IG9wdGlvbnMpOiBib29sZWFuID0+XG4gIGN1cnJlbnRPcHRpb24gPT09IGNoYXRPcHRpb25cblxuZXhwb3J0IGNvbnN0IHNob3VsZENsZWFyQ29udGV4dEZvckNhdGFsb2dPclNraWxsQWdlbnQgPSAoYWdlbnQ6IEFnZW50IHwgdW5kZWZpbmVkKTogYWdlbnQgaXMgQWdlbnQgPT4gQm9vbGVhbihhZ2VudClcblxuZXhwb3J0IHR5cGUgT3Blbk5ld0NoYXRXaXRoQWdlbnRDb250ZXh0UGF0Y2ggPSB7XG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIGNsaWVudDogQ2xpZW50IHwgbnVsbFxuICBzaG91bGRTZXRUYXNrOiBib29sZWFuXG4gIHRhc2s6IFRhc2sgfCBudWxsIHwgdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlT3Blbk5ld0NoYXRXaXRoQWdlbnRDb250ZXh0ID0gKGRldGFpbDoge1xuICBwcm9qZWN0PzogUHJvamVjdCB8IG51bGxcbiAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICB0YXNrPzogVGFzayB8IG51bGxcbn0pOiBPcGVuTmV3Q2hhdFdpdGhBZ2VudENvbnRleHRQYXRjaCA9PiAoe1xuICBwcm9qZWN0OiBkZXRhaWwucHJvamVjdCA/PyBudWxsLFxuICBjbGllbnQ6IGRldGFpbC5jbGllbnQgPz8gbnVsbCxcbiAgc2hvdWxkU2V0VGFzazogZGV0YWlsLnRhc2sgIT09IHVuZGVmaW5lZCxcbiAgdGFzazogZGV0YWlsLnRhc2ssXG59KVxuXG5leHBvcnQgY29uc3QgY2FuQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0ID0gKFxuICBzZXNzaW9uTWV0YTogTGVnYWN5U2Vzc2lvbk1ldGEgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBvcmNoZXN0cmF0b3I6IEFnZW50IHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IEJvb2xlYW4oc2Vzc2lvbk1ldGEgJiYgb3JjaGVzdHJhdG9yKVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uUmVzdG9yZU5hdlJvdXRlID0gJ215QWdlbnRzJyB8ICdteVNraWxscycgfCAnbWFpYWtlcicgfCAnY2hhdCcgfCAnc2F2ZWRPcHRpb24nIHwgJ25vbmUnXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU2Vzc2lvblJlc3RvcmVOYXZSb3V0ZSA9IChzbmFwc2hvdDoge1xuICBhZ2VudHNOYXZBY3RpdmU/OiBNYWlhQWdlbnRzTmF2QWN0aXZlIHwgbnVsbFxuICBjdXJyZW50T3B0aW9uPzogc3RyaW5nIHwgbnVsbFxuICBhY3RpdmVDaGF0SWQ/OiBzdHJpbmcgfCBudWxsXG59KTogU2Vzc2lvblJlc3RvcmVOYXZSb3V0ZSA9PiB7XG4gIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cycpIHJldHVybiAnbXlBZ2VudHMnXG4gIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscycpIHJldHVybiAnbXlTa2lsbHMnXG4gIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJykgcmV0dXJuICdtYWlha2VyJ1xuICBpZiAoc25hcHNob3QuY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0ICYmIHNuYXBzaG90LmFjdGl2ZUNoYXRJZCkgcmV0dXJuICdjaGF0J1xuICBpZiAoc25hcHNob3QuY3VycmVudE9wdGlvbiAmJiBpc1ZhbGlkTWFpYVBhbmVsT3B0aW9uKHNuYXBzaG90LmN1cnJlbnRPcHRpb24pKSByZXR1cm4gJ3NhdmVkT3B0aW9uJ1xuICByZXR1cm4gJ25vbmUnXG59XG5cbmV4cG9ydCBjb25zdCBzaG91bGRTa2lwQWdlbnRzTG9hZE9uU2Vzc2lvblJlc3RvcmUgPSAoXG4gIGFnZW50c05hdkFjdGl2ZTogTWFpYUFnZW50c05hdkFjdGl2ZSB8IG51bGwgfCB1bmRlZmluZWRcbik6IGJvb2xlYW4gPT4gYWdlbnRzTmF2QWN0aXZlID09PSAnbXlTa2lsbHMnXG5cbmV4cG9ydCBjb25zdCBzaG91bGRGZXRjaEFnZW50RGV0YWlsT25TZXNzaW9uUmVzdG9yZSA9IChcbiAgYWdlbnRJZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgYWdlbnRzTmF2QWN0aXZlOiBNYWlhQWdlbnRzTmF2QWN0aXZlIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiA9PiBCb29sZWFuKGFnZW50SWQgJiYgYWdlbnRzTmF2QWN0aXZlICE9PSAnbXlBZ2VudHMnKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkUGFzc0FnZW50VG9HZXRBZ2VudHNPblJlc3RvcmUgPSAoYWdlbnRzTmF2QWN0aXZlOiBNYWlhQWdlbnRzTmF2QWN0aXZlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgYWdlbnRzTmF2QWN0aXZlICE9PSAnbXlBZ2VudHMnXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTZWxlY3RGZXRjaGVkQWdlbnRBZnRlclJlc3RvcmUgPSAoXG4gIGFnZW50VG9TZWxlY3Q6IEFnZW50IHwgdW5kZWZpbmVkLFxuICBhZ2VudHNOYXZBY3RpdmU6IE1haWFBZ2VudHNOYXZBY3RpdmUgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IEJvb2xlYW4oYWdlbnRUb1NlbGVjdCAmJiBhZ2VudHNOYXZBY3RpdmUgIT09ICdteUFnZW50cycpXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU25hcHNob3RDaGlwc1Byb2plY3QgPSAoXG4gIGhvc3RDb250ZXh0PzogeyBjaGlwc1Byb2plY3Q/OiBMZWdhY3lDb250ZXh0Q2hpcHNQcm9qZWN0IHwgbnVsbCB9IHwgbnVsbFxuKTogTGVnYWN5Q29udGV4dENoaXBzUHJvamVjdCB8IG51bGwgPT4gaG9zdENvbnRleHQ/LmNoaXBzUHJvamVjdCA/PyBudWxsXG5cbmV4cG9ydCB0eXBlIENoYXRNb2RhbFNlY3Rpb25GbGFncyA9IHtcbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgaXNNeUFnZW50c1NlY3Rpb246IGJvb2xlYW5cbiAgaXNNeVNraWxsc1NlY3Rpb246IGJvb2xlYW5cbiAgaXNNYWlha2VyQ3JlYXRvckhvbWU6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVDaGF0TW9kYWxTZWN0aW9uRmxhZ3MgPSAoXG4gIGNvbXB1dGVkQ3VycmVudE9wdGlvbjogb3B0aW9ucyxcbiAgaXNNYWlha2VyQWdlbnRTZWxlY3RlZDogYm9vbGVhblxuKTogQ2hhdE1vZGFsU2VjdGlvbkZsYWdzID0+ICh7XG4gIHNob3dOZXdDaGF0OiBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCxcbiAgaXNNeUFnZW50c1NlY3Rpb246IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyxcbiAgaXNNeVNraWxsc1NlY3Rpb246IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxscyxcbiAgaXNNYWlha2VyQ3JlYXRvckhvbWU6IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWQsXG59KVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkUmVuZGVyQ2hhdFNpZGViYXIgPSAoaGFzQWNjZXNzOiBib29sZWFuLCBpc0Zsb2F0aW5nOiBib29sZWFuKTogYm9vbGVhbiA9PiBoYXNBY2Nlc3MgJiYgIWlzRmxvYXRpbmdcblxuZXhwb3J0IHR5cGUgQ2hhdE1vZGFsTWFpbkNvbnRlbnRWaWV3ID0gJ2Vycm9yJyB8ICdjaGF0JyB8ICdwcm9qZWN0U3VtbWFyeSdcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVDaGF0TW9kYWxNYWluQ29udGVudFZpZXcgPSAoaGFzRXJyb3I6IGJvb2xlYW4sIGhhc0FjY2VzczogYm9vbGVhbik6IENoYXRNb2RhbE1haW5Db250ZW50VmlldyA9PiB7XG4gIGlmIChoYXNFcnJvcikgcmV0dXJuICdlcnJvcidcbiAgaWYgKGhhc0FjY2VzcykgcmV0dXJuICdjaGF0J1xuICByZXR1cm4gJ3Byb2plY3RTdW1tYXJ5J1xufVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2hvd0NoYXRNb2RhbEZvb3RlciA9IChwYXJhbXM6IHtcbiAgY29tcHV0ZWRDdXJyZW50T3B0aW9uOiBvcHRpb25zXG4gIGhvbWVPcHRpb246IG9wdGlvbnNcbiAgY2hhdE9wdGlvbjogb3B0aW9uc1xuICBhZ2VudHNDb3VudDogbnVtYmVyXG4gIGlzTWFpYWtlckNyZWF0b3JIb21lOiBib29sZWFuXG4gIGhhc0Vycm9yOiBib29sZWFuXG4gIGxvYWRpbmc6IGJvb2xlYW5cbiAgaGFzQWNjZXNzOiBib29sZWFuXG59KTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IG9uSG9tZVdpdGhBZ2VudHMgPSBwYXJhbXMuY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBwYXJhbXMuaG9tZU9wdGlvbiAmJiBwYXJhbXMuYWdlbnRzQ291bnQgPiAwXG4gIGNvbnN0IG9uQ2hhdCA9IHBhcmFtcy5jb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IHBhcmFtcy5jaGF0T3B0aW9uXG4gIHJldHVybiAoXG4gICAgKG9uSG9tZVdpdGhBZ2VudHMgfHwgb25DaGF0KSAmJlxuICAgICFwYXJhbXMuaXNNYWlha2VyQ3JlYXRvckhvbWUgJiZcbiAgICAhcGFyYW1zLmhhc0Vycm9yICYmXG4gICAgIXBhcmFtcy5sb2FkaW5nICYmXG4gICAgcGFyYW1zLmhhc0FjY2Vzc1xuICApXG59XG5cbmV4cG9ydCBjb25zdCBzaG91bGRVc2VFbGV2YXRlZE1haWFQYW5lbCA9IChzZWN0aW9uOiBTZWN0aW9uKTogYm9vbGVhbiA9PiBzZWN0aW9uID09PSAndGFzaydcblxuZXhwb3J0IGNvbnN0IHNob3VsZFJlc2VsZWN0QWdlbnRBZnRlckRlbGV0ZSA9IChjdXJyZW50QWdlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBkZWxldGVkQWdlbnRJZDogc3RyaW5nKTogYm9vbGVhbiA9PlxuICBjdXJyZW50QWdlbnRJZCA9PT0gZGVsZXRlZEFnZW50SWRcblxuZXhwb3J0IGNvbnN0IHNob3VsZENsZWFyRHJhZ1Bvc2l0aW9uT25MYXlvdXRDaGFuZ2UgPSAobGF5b3V0TW9kZTogJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJyk6IGJvb2xlYW4gPT5cbiAgbGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJ1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkUGVyc2lzdERyYWdQb3NpdGlvbk9uRHJhZ0VuZCA9IChsYXlvdXRNb2RlOiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnKTogYm9vbGVhbiA9PlxuICBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTdGFydEZsb2F0aW5nUGFuZWxEcmFnID0gKGlzRmxvYXRpbmc6IGJvb2xlYW4sIHBvaW50ZXJCdXR0b246IG51bWJlcik6IGJvb2xlYW4gPT5cbiAgaXNGbG9hdGluZyAmJiBwb2ludGVyQnV0dG9uID09PSAwXG5cbmV4cG9ydCBjb25zdCBpc0FjdGl2ZUZsb2F0aW5nRHJhZ1BvaW50ZXIgPSAoZHJhZ1BvaW50ZXJJZDogbnVtYmVyIHwgdW5kZWZpbmVkLCBldmVudFBvaW50ZXJJZDogbnVtYmVyKTogYm9vbGVhbiA9PlxuICBkcmFnUG9pbnRlcklkID09PSBldmVudFBvaW50ZXJJZFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkT3BlblNraWxsc0NhdGFsb2cgPSAodXNlckhhc1NraWxsc0FjY2VzczogYm9vbGVhbik6IGJvb2xlYW4gPT4gdXNlckhhc1NraWxsc0FjY2Vzc1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkVXNlRHJhZ0NsYW1wRmFsbGJhY2sgPSAoY29udGVudFdyYXBwZXI6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4gIWNvbnRlbnRXcmFwcGVyXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlTGF5b3V0RHJhZ1Bvc2l0aW9uVXBkYXRlID0gKFxuICBsYXlvdXRNb2RlOiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnLFxuICBwcmV2OiBNYWlhUGFuZWxEcmFnUG9zaXRpb24gfCBudWxsLFxuICBjbGFtcDogKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiBNYWlhUGFuZWxEcmFnUG9zaXRpb24sXG4gIGRlZmF1bHRzOiB7IGlubmVyV2lkdGg6IG51bWJlcjsgcGFuZWxXaWR0aDogbnVtYmVyOyBwYWQ6IG51bWJlciB9XG4pOiBNYWlhUGFuZWxEcmFnUG9zaXRpb24gfCBudWxsID0+IHtcbiAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHJldHVybiBudWxsXG4gIGlmIChwcmV2KSByZXR1cm4gY2xhbXAocHJldi54LCBwcmV2LnkpXG4gIGNvbnN0IHggPSBkZWZhdWx0cy5pbm5lcldpZHRoIC0gZGVmYXVsdHMucGFuZWxXaWR0aCAtIGRlZmF1bHRzLnBhZFxuICByZXR1cm4gY2xhbXAoeCwgZGVmYXVsdHMucGFkKVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVBlcnNpc3RlZERyYWdQb3NpdGlvbk9uRW5kID0gKFxuICBsYXlvdXRNb2RlOiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnLFxuICBjb250ZW50V3JhcHBlcjogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IHNob3VsZFBlcnNpc3REcmFnUG9zaXRpb25PbkRyYWdFbmQobGF5b3V0TW9kZSkgJiYgQm9vbGVhbihjb250ZW50V3JhcHBlcilcblxuZXhwb3J0IHR5cGUgU3RhcnRDaGF0SW5pdGlhbE1lc3NhZ2VJbnB1dCA9IHtcbiAgbWVzc2FnZT86IHN0cmluZ1xuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgZmFxSWQ/OiBzdHJpbmdcbiAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdXG4gIGZ1YUlkPzogc3RyaW5nXG4gIHNjSWQ/OiBzdHJpbmdcbiAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRVc2VySW5pdGlhbE1lc3NhZ2VGcm9tU3RhcnRDaGF0ID0gKGlucHV0OiBTdGFydENoYXRJbml0aWFsTWVzc2FnZUlucHV0KSA9PiAoe1xuICBtZXNzYWdlOiBpbnB1dC5tZXNzYWdlIHx8ICcnLFxuICBhdHRhY2htZW50czogaW5wdXQuYXR0YWNobWVudHMgfHwgW10sXG4gIC4uLihpbnB1dC5mYXFJZCA/IHsgZmFxSWQ6IGlucHV0LmZhcUlkIH0gOiB7fSksXG4gIC4uLihpbnB1dC5hZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IGlucHV0LmFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gIC4uLihpbnB1dC5tZW50aW9ucyAmJiBpbnB1dC5tZW50aW9ucy5sZW5ndGggPiAwID8geyBtZW50aW9uczogaW5wdXQubWVudGlvbnMgfSA6IHt9KSxcbiAgLi4uKGlucHV0LmZ1YUlkID8geyBmdWFJZDogaW5wdXQuZnVhSWQgfSA6IHt9KSxcbiAgLi4uKGlucHV0LnNjSWQgPyB7IHNjSWQ6IGlucHV0LnNjSWQgfSA6IHt9KSxcbiAgLi4uKGlucHV0LmNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YTogaW5wdXQuY29udGV4dERhdGEgfSA6IHt9KSxcbn0pXG5cbmV4cG9ydCBjb25zdCBzaG91bGRSZXNldFNpZGViYXJFcnJvck9uU3RhcnRDaGF0ID0gKHNpZGViYXJIYXNFcnJvcjogYm9vbGVhbik6IGJvb2xlYW4gPT4gc2lkZWJhckhhc0Vycm9yXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsU0FBU0EsaUJBQWlCLEVBQUVDLGlCQUFpQixRQUFRLGdDQUFnQztBQUNyRixTQUFTQyxjQUFjLFFBQVEsd0NBQXdDO0FBTXZFLFNBQVNDLDZCQUE2QixRQUFRLGlDQUFpQztBQUMvRSxTQUFTQyxzQkFBc0IsUUFBUSw0Q0FBNEM7QUFFbkYsU0FBU0MscUJBQXFCLFFBQTRCLHdDQUF3QztBQUNsRyxTQUFTQyxPQUFPLFFBQVEsYUFBYTtBQUlyQyxPQUFPLElBQU1DLHVCQUF1QixHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQVU7QUFXN0UsT0FBTyxJQUFNQyxxQkFBcUIsR0FBRyxT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
567
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYW5BY2Nlc3NUb0NoYXRBSSIsImNhbkFjY2Vzc1RvU2tpbGxzIiwidmFsaWRhdGVJc01haWEiLCJpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudCIsImlzVmFsaWRNYWlhUGFuZWxPcHRpb24iLCJpc0FjdGl2ZVNlc3Npb25TdGF0dXMiLCJvcHRpb25zIiwiTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMiLCJpc0xlZ2FjeUNvbnRleHRFbnRpdHkiLCJlbnRpdHkiLCJCb29sZWFuIiwiaW5jbHVkZXMiLCJyZXNvbHZlTGVnYWN5Q29udGV4dFNlc3Npb24iLCJjb21wdXRlZEN1cnJlbnRPcHRpb24iLCJjaGF0T3B0aW9uIiwic2Vzc2lvbk1ldGEiLCJhZ2VudFR5cGUiLCJhZ2VudEVudGl0eSIsImNvbnRleHROYW1lIiwidGFza05hbWUiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJlbnRpdHlUeXBlIiwiaGFzQW55QWN0aXZlU2Vzc2lvbkluTWV0YSIsIm1ldGEiLCJPYmplY3QiLCJ2YWx1ZXMiLCJzb21lIiwiZW50cnkiLCJzdGF0dXMiLCJpc0dsb2JhbE1haWFTZWN0aW9uIiwic2VjdGlvbiIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJjdXJyZW50T3B0aW9uIiwiaG9tZU9wdGlvbiIsInZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlIiwidXNlciIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJyZXNvbHZlQ29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiX3JlZiIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsIm11bHRpQWdlbnRzQWNjZXNzIiwiaXNNQUlBIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsIm15QWdlbnRzIiwibXlTa2lsbHMiLCJ0eXBlIiwiaG9tZSIsImNoYXQiLCJzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yIiwic2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yIiwicHJvamVjdFNlbGVjdG9yIiwiY2xpZW50U2VsZWN0b3IiLCJyZXNvbHZlU2lkZWJhckFnZW50c05hdkFjdGl2ZSIsImlzTWFpYWtlckFnZW50U2VsZWN0ZWQiLCJyZXNvbHZlSW5pdGlhbEN1cnJlbnRPcHRpb24iLCJzYXZlZEFnZW50c05hdkFjdGl2ZSIsInNhdmVkQ3VycmVudE9wdGlvbiIsInNob3VsZFJlc3RvcmVFeHBhbmRlZFBhbmVsIiwic2F2ZWRTZXNzaW9uIiwiX3NhdmVkU2Vzc2lvbiRpc0V4cGFuIiwiaXNFeHBhbmRlZCIsInJlc29sdmVEZWZhdWx0RmxvYXRpbmdQYW5lbFBvc2l0aW9uIiwidmlld3BvcnRXaWR0aCIsInBhbmVsV2lkdGgiLCJwYWRkaW5nIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwieCIsInkiLCJpc0Jhbm5lckZhcVJlYWR5VG9BdXRvU2VuZCIsInBhcmFtcyIsIl9wYXJhbXMkZmFxVGl0bGUiLCJmYXFUaXRsZSIsInRyaW0iLCJhbHJlYWR5U2VudCIsImxvYWRpbmciLCJhZ2VudElkIiwicHJvamVjdElkIiwiY2xpZW50SWQiLCJzaG91bGRTa2lwRmxvYXRpbmdEcmFnVGFyZ2V0IiwidGFyZ2V0IiwiY2xvc2VzdCIsImNsYW1wRmxvYXRpbmdQYW5lbFBvc2l0aW9uIiwicGFuZWxIZWlnaHQiLCJ2aWV3cG9ydEhlaWdodCIsIm9mZnNldCIsIm1heFgiLCJNYXRoIiwibWF4IiwibWF4WSIsIm1pbiIsImVuc3VyZUFnZW50c0JlZm9yZVNraWxsVXNlIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYyIiwidXNlRmlyc3RBZ2VudCIsImFnZW50cyIsImVuc3VyZUFnZW50c0xvYWRlZCIsImxvYWRlZEFnZW50cyIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJhYnJ1cHQiLCJzZW50Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJyZXNvbHZlSG9zdFRha2VvdmVyRW50aXR5U3RhdGUiLCJkZXRhaWwiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJHRhc2siLCJpc0dsb2JhbEhlYWRlck9wZW4iLCJfZGV0YWlsJGNsaWVudCIsInRhc2siLCJjbGVhckdsb2JhbFBpbm5lZENvbnRleHQiLCJidWlsZEhvc3RUYWtlb3ZlclBlcnNpc3RDb250ZXh0IiwiX2RldGFpbCRwcm9qZWN0MiIsIl9kZXRhaWwkY2xpZW50MiIsIl9kZXRhaWwkdGFzazIiLCJjaGlwc1Byb2plY3QiLCJkaXNwYXRjaFNraWxsTWVudGlvbkluc2VydCIsInNraWxsIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJyZXNvbHZlTWFpYU1vZGFsSTE4bkxhbmciLCJsYW5ndWFnZSIsInJlc29sdmVVc2VySGFzQWdlbnRNYW5hZ2VtZW50UGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsIm11bHRpQWdlbnRzRmVhdHVyZUFjY2VzcyIsIl9wZXJtaXNzaW9ucyRhaV9hZ2VudCIsIl9wZXJtaXNzaW9ucyRhaV9hZ2VudDIiLCJfcGVybWlzc2lvbnMkYWlfYWdlbnQzIiwiYWlfYWdlbnRzIiwiY3JlYXRlIiwiZWRpdCIsInNob3VsZFN0YXJ0TmV3Q2hhdEZyb21DYXRhbG9nIiwic2hvdWxkQmFja1N0YXJ0TmV3Q2hhdFByZXNlcnZpbmdDb250ZXh0Iiwic2hvdWxkQmFja0NsZWFyUGlubmVkQ29udGV4dCIsImRpZFJlc2V0Q29udGV4dEluU2VjdGlvbiIsInNob3VsZE1hcmtPcmNoZXN0cmF0b3JDb250ZXh0UmVzZXQiLCJ3YXNQaW5uZWQiLCJpc1Bpbm5lZCIsInJlc29sdmVNaW5pbWl6ZWRSZXN0b3JlVGFyZ2V0IiwiY2hhdHMiLCJsYXN0QWN0aXZlQ2hhdElkIiwiZmlyc3RVbnJlYWQiLCJmaW5kIiwiaXNSZWFkIiwic2Vzc2lvbkV4dGVybmFsSWQiLCJyZXNvbHZlSG9zdFRha2VvdmVyQWdlbnRJZCIsImN1cnJlbnRBZ2VudElkIiwiX2FnZW50cyQwJGlkIiwiX2FnZW50cyQiLCJpZCIsInJlc29sdmVGbG9hdGluZ1BhbmVsRHJhZ1Bvc2l0aW9uIiwibGF5b3V0TW9kZSIsImRyYWdQb3NpdGlvbiIsImRlZmF1bHRQb3NpdGlvbiIsImNsYW1wIiwicmVzb2x2ZU5leHREcmFnUG9zaXRpb24iLCJwcmV2aW91cyIsImJ1aWxkTWFpYVBhbmVsU2Vzc2lvblBhdGNoIiwiaXNNaW5pbWl6ZWQiLCJhZ2VudHNOYXZBY3RpdmUiLCJhY3RpdmVDaGF0SWQiLCJzaWRlYmFyT3BlbiIsImhvc3RDb250ZXh0IiwicmVzb2x2ZUhhc1Bpbm5lZENvbnRleHQiLCJ0YXNrSWQiLCJjaGlwc1Byb2plY3RJZCIsInJlc29sdmVPcmNoZXN0cmF0b3JIb21lTmF2RmxhZ3MiLCJpc0NoYXRWaWV3IiwiaXNIb21lU3RlcDIiLCJoYXNQaW5uZWRDb250ZXh0IiwiaXNIZWFkZXJIb21lU3RlcDIiLCJpc1NlY3Rpb25SZXNldEhvbWVTdGVwMiIsInNob3VsZFNob3dPcmNoZXN0cmF0b3JCYWNrQnV0dG9uIiwiaGFzRXJyb3IiLCJzaG91bGRDbGVhckNsaWVudE9uR29Ib21lRnJvbUNoYXQiLCJzaG91bGRDbGVhclRhc2tPbkdvSG9tZUZyb21DaGF0Iiwic2hvdWxkUmVzZXRBZ2VudFRvRmlyc3RPbkdvSG9tZSIsImFnZW50c0NvdW50IiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsInByb2plY3RfZGVsZXRlZCIsInNob3VsZENsZWFyT3JjaGVzdHJhdG9yR2xvYmFsQ29udGV4dE9uR29Ib21lIiwic2hvdWxkVXNlQWN0aXZlQ2hhdFNlbmRIYW5kbGVyIiwiaGFzU2VuZE1lc3NhZ2VGdW5jdGlvbiIsInNob3VsZFByZWZldGNoQWdlbnRzRm9yQ2F0YWxvZ05ld0NoYXQiLCJteUFnZW50c09wdGlvbiIsIm15U2tpbGxzT3B0aW9uIiwiY2FuT3Blbk1haWFNYXJrZXRwbGFjZSIsInNob3VsZE1hcmtBZ2VudEFzTGVnYWN5Q29udGV4dCIsImxlZ2FjeUNvbnRleHRTZXNzaW9uIiwiaXNfbGVnYWN5X2NvbnRleHQiLCJidWlsZExlZ2FjeUNvbnRleHRBZ2VudCIsIl9vYmplY3RTcHJlYWQiLCJidWlsZExlZ2FjeUNvbnRleHRNaWdyYXRpb25QYXRjaCIsInBJZCIsInBOYW1lIiwiY0lkIiwiY05hbWUiLCJ0SWQiLCJ0TmFtZSIsImNsZWFyZWQiLCJuYW1lIiwiU3RyaW5nIiwicGF0Y2giLCJmaW5kT3JjaGVzdHJhdG9yQWdlbnQiLCJjYW5kaWRhdGUiLCJzaG91bGRTZXRDaGF0Vmlld0hpZGRlbk9uTW91bnQiLCJoYXNQZW5kaW5nU2Vzc2lvblJlc3RvcmUiLCJzaG91bGRQZXJzaXN0TGFzdEFjdGl2ZUNoYXRJZCIsImhhc0Jhbm5lckZhcVRpdGxlIiwic2hvdWxkU3luY1BhbmVsU2Vzc2lvbk9uUGFnZUhpZGUiLCJyZXNvbHZlQ2FjaGVkQWdlbnRzSWZBdmFpbGFibGUiLCJzaG91bGRBdHRlbXB0SW5pdGlhbEFnZW50c0ZldGNoIiwiY2FjaGVkQWdlbnRzTGVuZ3RoIiwiYWxyZWFkeUZldGNoZWQiLCJmaW5kQWdlbnRGb3JDaGF0SXRlbSIsImNoYXRBZ2VudElkIiwiYWdlbnRJdGVtIiwiTnVtYmVyIiwic2hvdWxkQXBwbHlDbGllbnRPbkhvc3RUYWtlb3ZlciIsInNob3VsZFNlbGVjdEZpcnN0QWdlbnRPbkhvc3RUYWtlb3ZlciIsImZpcnN0QWdlbnQiLCJzaG91bGRSZXNldENoYXRTdGF0ZU9uR29Ib21lIiwic2hvdWxkQ2xlYXJDb250ZXh0Rm9yQ2F0YWxvZ09yU2tpbGxBZ2VudCIsInJlc29sdmVPcGVuTmV3Q2hhdFdpdGhBZ2VudENvbnRleHQiLCJfZGV0YWlsJHByb2plY3QzIiwiX2RldGFpbCRjbGllbnQzIiwic2hvdWxkU2V0VGFzayIsImNhbkNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdCIsIm9yY2hlc3RyYXRvciIsInJlc29sdmVTZXNzaW9uUmVzdG9yZU5hdlJvdXRlIiwic25hcHNob3QiLCJzaG91bGRTa2lwQWdlbnRzTG9hZE9uU2Vzc2lvblJlc3RvcmUiLCJzaG91bGRGZXRjaEFnZW50RGV0YWlsT25TZXNzaW9uUmVzdG9yZSIsInNob3VsZFBhc3NBZ2VudFRvR2V0QWdlbnRzT25SZXN0b3JlIiwic2hvdWxkU2VsZWN0RmV0Y2hlZEFnZW50QWZ0ZXJSZXN0b3JlIiwiYWdlbnRUb1NlbGVjdCIsInJlc29sdmVTbmFwc2hvdENoaXBzUHJvamVjdCIsIl9ob3N0Q29udGV4dCRjaGlwc1BybyIsInJlc29sdmVDaGF0TW9kYWxTZWN0aW9uRmxhZ3MiLCJzaG93TmV3Q2hhdCIsImlzTXlBZ2VudHNTZWN0aW9uIiwiaXNNeVNraWxsc1NlY3Rpb24iLCJpc01haWFrZXJDcmVhdG9ySG9tZSIsInNob3VsZFJlbmRlckNoYXRTaWRlYmFyIiwiaGFzQWNjZXNzIiwiaXNGbG9hdGluZyIsInJlc29sdmVDaGF0TW9kYWxNYWluQ29udGVudFZpZXciLCJzaG91bGRTaG93Q2hhdE1vZGFsRm9vdGVyIiwib25Ib21lV2l0aEFnZW50cyIsIm9uQ2hhdCIsInNob3VsZFVzZUVsZXZhdGVkTWFpYVBhbmVsIiwic2hvdWxkUmVzZWxlY3RBZ2VudEFmdGVyRGVsZXRlIiwiZGVsZXRlZEFnZW50SWQiLCJzaG91bGRDbGVhckRyYWdQb3NpdGlvbk9uTGF5b3V0Q2hhbmdlIiwic2hvdWxkUGVyc2lzdERyYWdQb3NpdGlvbk9uRHJhZ0VuZCIsInNob3VsZFN0YXJ0RmxvYXRpbmdQYW5lbERyYWciLCJwb2ludGVyQnV0dG9uIiwiaXNBY3RpdmVGbG9hdGluZ0RyYWdQb2ludGVyIiwiZHJhZ1BvaW50ZXJJZCIsImV2ZW50UG9pbnRlcklkIiwic2hvdWxkT3BlblNraWxsc0NhdGFsb2ciLCJ1c2VySGFzU2tpbGxzQWNjZXNzIiwic2hvdWxkVXNlRHJhZ0NsYW1wRmFsbGJhY2siLCJjb250ZW50V3JhcHBlciIsInJlc29sdmVMYXlvdXREcmFnUG9zaXRpb25VcGRhdGUiLCJkZWZhdWx0cyIsImlubmVyV2lkdGgiLCJwYWQiLCJyZXNvbHZlUGVyc2lzdGVkRHJhZ1Bvc2l0aW9uT25FbmQiLCJidWlsZFVzZXJJbml0aWFsTWVzc2FnZUZyb21TdGFydENoYXQiLCJpbnB1dCIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsImNvbnRleHREYXRhIiwic2hvdWxkUmVzZXRTaWRlYmFyRXJyb3JPblN0YXJ0Q2hhdCIsInNpZGViYXJIYXNFcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9DaGF0QUlNb2RhbC5oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ09SVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgdHlwZSB7IFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgY2FuQWNjZXNzVG9DaGF0QUksIGNhbkFjY2Vzc1RvU2tpbGxzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB0eXBlIHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB0eXBlIHsgQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Rhc2snXG5pbXBvcnQgdHlwZSB7IE1haWFIb3N0T3BlbkRldGFpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL21haWFIb3N0T3BlbidcbmltcG9ydCB7IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IGlzVmFsaWRNYWlhUGFuZWxPcHRpb24gfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9tYWlhUGFuZWxTZXNzaW9uUGVyc2lzdGVuY2UnXG5pbXBvcnQgdHlwZSB7IE1haWFBZ2VudHNOYXZBY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9tYWlhUGFuZWxTZXNzaW9uUGVyc2lzdGVuY2UnXG5pbXBvcnQgeyBpc0FjdGl2ZVNlc3Npb25TdGF0dXMsIHR5cGUgU2Vzc2lvblN0YXR1cyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25zLnR5cGVzJ1xuaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB0eXBlIHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcblxuZXhwb3J0IGNvbnN0IExFR0FDWV9DT05URVhUX0VOVElUSUVTID0gWydwcm9qZWN0JywgJ3Rhc2snLCAnY2xpZW50J10gYXMgY29uc3RcbmV4cG9ydCB0eXBlIExlZ2FjeUNvbnRleHRFbnRpdHkgPSAodHlwZW9mIExFR0FDWV9DT05URVhUX0VOVElUSUVTKVtudW1iZXJdXG5cbmV4cG9ydCB0eXBlIExlZ2FjeVNlc3Npb25NZXRhID0ge1xuICBhZ2VudFR5cGU/OiBzdHJpbmdcbiAgYWdlbnRFbnRpdHk/OiBzdHJpbmdcbiAgdGFza05hbWU/OiBzdHJpbmdcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgY2xpZW50TmFtZT86IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgaXNMZWdhY3lDb250ZXh0RW50aXR5ID0gKGVudGl0eTogc3RyaW5nIHwgdW5kZWZpbmVkKTogZW50aXR5IGlzIExlZ2FjeUNvbnRleHRFbnRpdHkgPT5cbiAgQm9vbGVhbihlbnRpdHkgJiYgTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMuaW5jbHVkZXMoZW50aXR5IGFzIExlZ2FjeUNvbnRleHRFbnRpdHkpKVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUxlZ2FjeUNvbnRleHRTZXNzaW9uID0gKFxuICBjb21wdXRlZEN1cnJlbnRPcHRpb246IG9wdGlvbnMsXG4gIGNoYXRPcHRpb246IG9wdGlvbnMsXG4gIHNlc3Npb25NZXRhOiBMZWdhY3lTZXNzaW9uTWV0YSB8IG51bGwgfCB1bmRlZmluZWRcbik6IHsgZW50aXR5VHlwZTogTGVnYWN5Q29udGV4dEVudGl0eTsgY29udGV4dE5hbWU6IHN0cmluZyB9IHwgbnVsbCA9PiB7XG4gIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IGNoYXRPcHRpb24gfHwgIXNlc3Npb25NZXRhIHx8IHNlc3Npb25NZXRhLmFnZW50VHlwZSAhPT0gJ2Nsb25lJykge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBlbnRpdHkgPSBzZXNzaW9uTWV0YS5hZ2VudEVudGl0eVxuICBpZiAoIWlzTGVnYWN5Q29udGV4dEVudGl0eShlbnRpdHkpKSByZXR1cm4gbnVsbFxuXG4gIGxldCBjb250ZXh0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGlmIChlbnRpdHkgPT09ICd0YXNrJykge1xuICAgIGNvbnRleHROYW1lID0gc2Vzc2lvbk1ldGEudGFza05hbWVcbiAgfSBlbHNlIGlmIChlbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgIGNvbnRleHROYW1lID0gc2Vzc2lvbk1ldGEucHJvamVjdE5hbWVcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0TmFtZSA9IHNlc3Npb25NZXRhLmNsaWVudE5hbWVcbiAgfVxuXG4gIHJldHVybiB7IGVudGl0eVR5cGU6IGVudGl0eSwgY29udGV4dE5hbWU6IGNvbnRleHROYW1lIHx8ICcnIH1cbn1cblxuZXhwb3J0IGNvbnN0IGhhc0FueUFjdGl2ZVNlc3Npb25Jbk1ldGEgPSAobWV0YTogUmVjb3JkPHN0cmluZywgeyBzdGF0dXM/OiBTZXNzaW9uU3RhdHVzIH0gfCB1bmRlZmluZWQ+KTogYm9vbGVhbiA9PlxuICBPYmplY3QudmFsdWVzKG1ldGEpLnNvbWUoZW50cnkgPT4gaXNBY3RpdmVTZXNzaW9uU3RhdHVzKGVudHJ5Py5zdGF0dXMpKVxuXG5leHBvcnQgdHlwZSBBaUNoYXRCYWNrRGVzdGluYXRpb24gPVxuICAnZ2xvYmFsX2NvbnRleHRfaG9tZScgfCAndGFza19ob21lJyB8ICdwbGFubmVyX2hvbWUnIHwgJ3Byb2plY3RfaG9tZScgfCAnY2xpZW50X2hvbWUnXG5cbmV4cG9ydCBjb25zdCBpc0dsb2JhbE1haWFTZWN0aW9uID0gKHNlY3Rpb246IFNlY3Rpb24pOiBib29sZWFuID0+IHNlY3Rpb24gPT09ICdoZWFkZXInXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0gKFxuICBzZWN0aW9uOiBTZWN0aW9uLFxuICBhZ2VudFR5cGU6IEFnZW50Wyd0eXBlJ10gfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRPcHRpb246IHN0cmluZyxcbiAgaG9tZU9wdGlvbjogc3RyaW5nXG4pOiBBaUNoYXRCYWNrRGVzdGluYXRpb24gPT4ge1xuICBpZiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IGhvbWVPcHRpb24pIHtcbiAgICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG4gIH1cbiAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykgcmV0dXJuICd0YXNrX2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAncGxhbm5lcicpIHJldHVybiAncGxhbm5lcl9ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3Byb2plY3QnKSByZXR1cm4gJ3Byb2plY3RfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdjbGllbnQnKSByZXR1cm4gJ2NsaWVudF9ob21lJ1xuICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG59XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSA9IChzZWN0aW9uOiBTZWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCwgdXNlcjogQ09SVXNlcik6IGJvb2xlYW4gPT4ge1xuICBpZiAoIXNlY3Rpb24gfHwgIWNhbkFjY2Vzc1RvQ2hhdEFJKHVzZXIpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAoc2VjdGlvbiA9PT0gJ3BsYW5uZXInIHx8IHNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicpIHtcbiAgICByZXR1cm4gQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIHx8IHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKVxuICB9XG5cbiAgcmV0dXJuIEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUylcbn1cblxuZXhwb3J0IHR5cGUgUmVzb2x2ZUNvbXB1dGVkQ3VycmVudE9wdGlvblBhcmFtcyA9IHtcbiAgY3VycmVudE9wdGlvbjogb3B0aW9uc1xuICBhZ2VudDogQWdlbnQgfCBudWxsIHwgdW5kZWZpbmVkXG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsIHwgdW5kZWZpbmVkXG4gIGNsaWVudDogQ2xpZW50IHwgbnVsbCB8IHVuZGVmaW5lZFxuICB1c2VyOiBDT1JVc2VyXG4gIG11bHRpQWdlbnRzQWNjZXNzOiBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlQ29tcHV0ZWRDdXJyZW50T3B0aW9uID0gKHtcbiAgY3VycmVudE9wdGlvbixcbiAgYWdlbnQsXG4gIHByb2plY3QsXG4gIGNsaWVudCxcbiAgdXNlcixcbiAgbXVsdGlBZ2VudHNBY2Nlc3MsXG59OiBSZXNvbHZlQ29tcHV0ZWRDdXJyZW50T3B0aW9uUGFyYW1zKTogb3B0aW9ucyA9PiB7XG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuICBjb25zdCBpc0dsb2JhbFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCdcbiAgY29uc3QgaXNQcm9qZWN0U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT0gbnVsbClcbiAgY29uc3QgaXNDbGllbnRTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnXG4gIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50KVxuXG4gIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzICYmIG11bHRpQWdlbnRzQWNjZXNzKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgfVxuXG4gIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzICYmIGNhbkFjY2Vzc1RvU2tpbGxzKHVzZXIpKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMubXlTa2lsbHNcbiAgfVxuXG4gIGlmIChpc0dsb2JhbFNwZWNpYWxpc3QgJiYgIWlzTWFpYWtlciAmJiBhZ2VudD8udHlwZSAhPT0gJ29yY2hlc3RyYXRvcicgJiYgY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICB9XG5cbiAgY29uc3Qgc2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc1Byb2plY3RTcGVjaWFsaXN0ICYmICFwcm9qZWN0XG4gIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gIGlmIChzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMucHJvamVjdFNlbGVjdG9yXG4gIH1cbiAgaWYgKHNob3VsZFNob3dDbGllbnRTZWxlY3Rvcikge1xuICAgIHJldHVybiBvcHRpb25zLmNsaWVudFNlbGVjdG9yXG4gIH1cblxuICByZXR1cm4gY3VycmVudE9wdGlvblxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSAoXG4gIGNvbXB1dGVkQ3VycmVudE9wdGlvbjogb3B0aW9ucyxcbiAgaXNNYWlha2VyQWdlbnRTZWxlY3RlZDogYm9vbGVhblxuKTogTWFpYUFnZW50c05hdkFjdGl2ZSB8IG51bGwgPT4ge1xuICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzKSByZXR1cm4gJ215U2tpbGxzJ1xuICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzKSByZXR1cm4gJ215QWdlbnRzJ1xuICBpZiAoaXNNYWlha2VyQWdlbnRTZWxlY3RlZCkgcmV0dXJuICdtYWlha2VyJ1xuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUluaXRpYWxDdXJyZW50T3B0aW9uID0gKFxuICBzYXZlZEFnZW50c05hdkFjdGl2ZTogTWFpYUFnZW50c05hdkFjdGl2ZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHNhdmVkQ3VycmVudE9wdGlvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgdXNlcjogQ09SVXNlclxuKTogb3B0aW9ucyA9PiB7XG4gIGlmIChzYXZlZEFnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJykgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgaWYgKHNhdmVkQWdlbnRzTmF2QWN0aXZlID09PSAnbXlTa2lsbHMnICYmIGNhbkFjY2Vzc1RvU2tpbGxzKHVzZXIpKSByZXR1cm4gb3B0aW9ucy5teVNraWxsc1xuICBpZiAoc2F2ZWRDdXJyZW50T3B0aW9uICYmIGlzVmFsaWRNYWlhUGFuZWxPcHRpb24oc2F2ZWRDdXJyZW50T3B0aW9uKSkge1xuICAgIHJldHVybiBzYXZlZEN1cnJlbnRPcHRpb24gYXMgb3B0aW9uc1xuICB9XG4gIHJldHVybiBvcHRpb25zLmhvbWVcbn1cblxuZXhwb3J0IGNvbnN0IHNob3VsZFJlc3RvcmVFeHBhbmRlZFBhbmVsID0gKHNhdmVkU2Vzc2lvbjogeyBpc0V4cGFuZGVkPzogYm9vbGVhbiB9IHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgc2F2ZWRTZXNzaW9uPy5pc0V4cGFuZGVkID8/IGZhbHNlXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlRGVmYXVsdEZsb2F0aW5nUGFuZWxQb3NpdGlvbiA9IChcbiAgdmlld3BvcnRXaWR0aDogbnVtYmVyLFxuICBwYW5lbFdpZHRoOiBudW1iZXIsXG4gIHBhZGRpbmcgPSAxNlxuKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9ID0+ICh7XG4gIHg6IHZpZXdwb3J0V2lkdGggLSBwYW5lbFdpZHRoIC0gcGFkZGluZyxcbiAgeTogcGFkZGluZyxcbn0pXG5cbmV4cG9ydCBjb25zdCBpc0Jhbm5lckZhcVJlYWR5VG9BdXRvU2VuZCA9IChwYXJhbXM6IHtcbiAgZmFxVGl0bGU/OiBzdHJpbmcgfCBudWxsXG4gIGFscmVhZHlTZW50OiBib29sZWFuXG4gIGxvYWRpbmc6IGJvb2xlYW5cbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgc2VjdGlvbjogU2VjdGlvblxuICBwcm9qZWN0SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxufSk6IGJvb2xlYW4gPT4ge1xuICBpZiAoIXBhcmFtcy5mYXFUaXRsZT8udHJpbSgpIHx8IHBhcmFtcy5hbHJlYWR5U2VudCB8fCBwYXJhbXMubG9hZGluZyB8fCAhcGFyYW1zLmFnZW50SWQpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChwYXJhbXMuc2VjdGlvbiA9PT0gJ3Byb2plY3QnKSByZXR1cm4gQm9vbGVhbihwYXJhbXMucHJvamVjdElkKVxuICBpZiAocGFyYW1zLnNlY3Rpb24gPT09ICdjbGllbnQnKSByZXR1cm4gQm9vbGVhbihwYXJhbXMuY2xpZW50SWQpXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBzaG91bGRTa2lwRmxvYXRpbmdEcmFnVGFyZ2V0ID0gKHRhcmdldDogRWxlbWVudCB8IG51bGwpOiBib29sZWFuID0+XG4gIEJvb2xlYW4odGFyZ2V0Py5jbG9zZXN0KCdidXR0b24sIGEsIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbcm9sZT1cImJ1dHRvblwiXSwgW2RhdGEtbm8tZHJhZz1cInRydWVcIl0nKSlcblxuZXhwb3J0IGNvbnN0IGNsYW1wRmxvYXRpbmdQYW5lbFBvc2l0aW9uID0gKFxuICB4OiBudW1iZXIsXG4gIHk6IG51bWJlcixcbiAgcGFuZWxXaWR0aDogbnVtYmVyLFxuICBwYW5lbEhlaWdodDogbnVtYmVyLFxuICB2aWV3cG9ydFdpZHRoOiBudW1iZXIsXG4gIHZpZXdwb3J0SGVpZ2h0OiBudW1iZXIsXG4gIG9mZnNldCA9IDE2XG4pOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gPT4ge1xuICBjb25zdCBtYXhYID0gTWF0aC5tYXgob2Zmc2V0LCB2aWV3cG9ydFdpZHRoIC0gcGFuZWxXaWR0aCAtIG9mZnNldClcbiAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgdmlld3BvcnRIZWlnaHQgLSBwYW5lbEhlaWdodCAtIG9mZnNldClcblxuICByZXR1cm4ge1xuICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgIHk6IE1hdGgubWluKE1hdGgubWF4KHksIG9mZnNldCksIG1heFkpLFxuICB9XG59XG5cbmV4cG9ydCB0eXBlIEVuc3VyZUFnZW50c0JlZm9yZVNraWxsVXNlUGFyYW1zID0ge1xuICB1c2VGaXJzdEFnZW50OiBib29sZWFuXG4gIGFnZW50czogQWdlbnRbXVxuICBlbnN1cmVBZ2VudHNMb2FkZWQ6ICgpID0+IFByb21pc2U8QWdlbnRbXT5cbn1cblxuLyoqIEdhcmFudGl6YSBxdWUgbGEgbGlzdGEgZGUgYWdlbnRlcyBlc3TDqSBkaXNwb25pYmxlIGFudGVzIGRlIGFicmlyIHVuIGNoYXQgY29uIHVuYSBza2lsbC4gKi9cbmV4cG9ydCBjb25zdCBlbnN1cmVBZ2VudHNCZWZvcmVTa2lsbFVzZSA9IGFzeW5jICh7XG4gIHVzZUZpcnN0QWdlbnQsXG4gIGFnZW50cyxcbiAgZW5zdXJlQWdlbnRzTG9hZGVkLFxufTogRW5zdXJlQWdlbnRzQmVmb3JlU2tpbGxVc2VQYXJhbXMpOiBQcm9taXNlPEFnZW50IHwgdW5kZWZpbmVkPiA9PiB7XG4gIGlmICghdXNlRmlyc3RBZ2VudCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGNvbnN0IGxvYWRlZEFnZW50cyA9IGFnZW50cy5sZW5ndGggPiAwID8gYWdlbnRzIDogYXdhaXQgZW5zdXJlQWdlbnRzTG9hZGVkKClcbiAgcmV0dXJuIGxvYWRlZEFnZW50c1swXVxufVxuXG5leHBvcnQgdHlwZSBIb3N0VGFrZW92ZXJFbnRpdHlTdGF0ZSA9IHtcbiAgcHJvamVjdDogUHJvamVjdCB8IG51bGxcbiAgLyoqIGB1bmRlZmluZWRgID0gbm8gaW52b2NhciBzZXRDbGllbnQgKHAuIGVqLiB0YWtlb3ZlciBkZXNkZSBwcm95ZWN0bykuICovXG4gIGNsaWVudDogQ2xpZW50IHwgbnVsbCB8IHVuZGVmaW5lZFxuICB0YXNrOiBUYXNrIHwgbnVsbFxuICBjbGVhckdsb2JhbFBpbm5lZENvbnRleHQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVIb3N0VGFrZW92ZXJFbnRpdHlTdGF0ZSA9IChcbiAgZGV0YWlsOiBQaWNrPE1haWFIb3N0T3BlbkRldGFpbCwgJ3NlY3Rpb24nIHwgJ3Byb2plY3QnIHwgJ2NsaWVudCcgfCAndGFzayc+XG4pOiBIb3N0VGFrZW92ZXJFbnRpdHlTdGF0ZSA9PiB7XG4gIGNvbnN0IGlzR2xvYmFsSGVhZGVyT3BlbiA9IGRldGFpbC5zZWN0aW9uID09PSAnaGVhZGVyJyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3BsYW5uZXInXG4gIGNvbnN0IHByb2plY3QgPSBkZXRhaWwuc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IGRldGFpbC5zZWN0aW9uID09PSAndGFzaycgPyAoZGV0YWlsLnByb2plY3QgPz8gbnVsbCkgOiBudWxsXG5cbiAgbGV0IGNsaWVudDogQ2xpZW50IHwgbnVsbCB8IHVuZGVmaW5lZFxuICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnKSB7XG4gICAgY2xpZW50ID0gZGV0YWlsLmNsaWVudCA/PyBudWxsXG4gIH0gZWxzZSBpZiAoaXNHbG9iYWxIZWFkZXJPcGVuKSB7XG4gICAgY2xpZW50ID0gbnVsbFxuICB9XG5cbiAgY29uc3QgdGFzayA9IGRldGFpbC5zZWN0aW9uID09PSAndGFzaycgPyAoZGV0YWlsLnRhc2sgPz8gbnVsbCkgOiBudWxsXG5cbiAgcmV0dXJuIHtcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0YXNrLFxuICAgIGNsZWFyR2xvYmFsUGlubmVkQ29udGV4dDogaXNHbG9iYWxIZWFkZXJPcGVuLFxuICB9XG59XG5cbmV4cG9ydCB0eXBlIEhvc3RUYWtlb3ZlclBlcnNpc3RDb250ZXh0ID0ge1xuICBzZWN0aW9uOiBTZWN0aW9uXG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIGNsaWVudDogQ2xpZW50IHwgbnVsbFxuICB0YXNrOiBUYXNrIHwgbnVsbFxuICBjaGlwc1Byb2plY3Q6IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkSG9zdFRha2VvdmVyUGVyc2lzdENvbnRleHQgPSAoXG4gIGRldGFpbDogUGljazxNYWlhSG9zdE9wZW5EZXRhaWwsICdzZWN0aW9uJyB8ICdwcm9qZWN0JyB8ICdjbGllbnQnIHwgJ3Rhc2snPlxuKTogSG9zdFRha2VvdmVyUGVyc2lzdENvbnRleHQgPT4gKHtcbiAgc2VjdGlvbjogZGV0YWlsLnNlY3Rpb24gYXMgU2VjdGlvbixcbiAgcHJvamVjdDogZGV0YWlsLnNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snID8gKGRldGFpbC5wcm9qZWN0ID8/IG51bGwpIDogbnVsbCxcbiAgY2xpZW50OiBkZXRhaWwuc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyAoZGV0YWlsLmNsaWVudCA/PyBudWxsKSA6IG51bGwsXG4gIHRhc2s6IGRldGFpbC5zZWN0aW9uID09PSAndGFzaycgPyAoZGV0YWlsLnRhc2sgPz8gbnVsbCkgOiBudWxsLFxuICBjaGlwc1Byb2plY3Q6IG51bGwsXG59KVxuXG4vKiogSW5zZXJ0YSBsYSBtZW5jacOzbiBkZSBza2lsbCBjdWFuZG8gZWwgaW5wdXQgZGVsIGNoYXQgeWEgZXN0w6EgbW9udGFkby4gKi9cbmV4cG9ydCBjb25zdCBkaXNwYXRjaFNraWxsTWVudGlvbkluc2VydCA9IChza2lsbDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSk6IHZvaWQgPT4ge1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIHsgZGV0YWlsOiB7IHNraWxsIH0gfSkpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVNYWlhTW9kYWxJMThuTGFuZyA9IChsYW5ndWFnZTogc3RyaW5nKTogc3RyaW5nID0+IChsYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBsYW5ndWFnZSlcblxudHlwZSBBZ2VudE1hbmFnZW1lbnRQZXJtaXNzaW9ucyA9IHtcbiAgYWlfYWdlbnRzPzoge1xuICAgIGNyZWF0ZT86IGJvb2xlYW5cbiAgICBlZGl0PzogYm9vbGVhblxuICAgIGRlbGV0ZT86IGJvb2xlYW5cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVVzZXJIYXNBZ2VudE1hbmFnZW1lbnRQZXJtaXNzaW9ucyA9IChcbiAgcGVybWlzc2lvbnM6IEFnZW50TWFuYWdlbWVudFBlcm1pc3Npb25zIHwgdW5kZWZpbmVkLFxuICBtdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3M6IGJvb2xlYW5cbik6IGJvb2xlYW4gPT5cbiAgQm9vbGVhbihcbiAgICAocGVybWlzc2lvbnM/LmFpX2FnZW50cz8uY3JlYXRlIHx8IHBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmVkaXQgfHwgcGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZGVsZXRlKSAmJlxuICAgIG11bHRpQWdlbnRzRmVhdHVyZUFjY2Vzc1xuICApXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTdGFydE5ld0NoYXRGcm9tQ2F0YWxvZyA9IChcbiAgY29tcHV0ZWRDdXJyZW50T3B0aW9uOiBvcHRpb25zLFxuICBpc01haWFrZXJBZ2VudFNlbGVjdGVkOiBib29sZWFuXG4pOiBib29sZWFuID0+XG4gIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyB8fFxuICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMgfHxcbiAgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWQpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRCYWNrU3RhcnROZXdDaGF0UHJlc2VydmluZ0NvbnRleHQgPSAoY29tcHV0ZWRDdXJyZW50T3B0aW9uOiBvcHRpb25zLCBjaGF0T3B0aW9uOiBvcHRpb25zKTogYm9vbGVhbiA9PlxuICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IGNoYXRPcHRpb25cblxuZXhwb3J0IGNvbnN0IHNob3VsZEJhY2tDbGVhclBpbm5lZENvbnRleHQgPSAoXG4gIGNvbXB1dGVkQ3VycmVudE9wdGlvbjogb3B0aW9ucyxcbiAgaG9tZU9wdGlvbjogb3B0aW9ucyxcbiAgc2VjdGlvbjogU2VjdGlvbixcbiAgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uOiBib29sZWFuXG4pOiBib29sZWFuID0+IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gaG9tZU9wdGlvbiAmJiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSB8fCBkaWRSZXNldENvbnRleHRJblNlY3Rpb24pXG5cbmV4cG9ydCBjb25zdCBzaG91bGRNYXJrT3JjaGVzdHJhdG9yQ29udGV4dFJlc2V0ID0gKFxuICBzZWN0aW9uOiBTZWN0aW9uLFxuICBhZ2VudFR5cGU6IEFnZW50Wyd0eXBlJ10gfCB1bmRlZmluZWQsXG4gIHdhc1Bpbm5lZDogYm9vbGVhbixcbiAgaXNQaW5uZWQ6IGJvb2xlYW5cbik6IGJvb2xlYW4gPT4gIWlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiB3YXNQaW5uZWQgJiYgIWlzUGlubmVkXG5cbmV4cG9ydCB0eXBlIE1pbmltaXplZFJlc3RvcmVDaGF0ID0ge1xuICBpc1JlYWQ/OiBib29sZWFuXG4gIHNlc3Npb25FeHRlcm5hbElkPzogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlTWluaW1pemVkUmVzdG9yZVRhcmdldCA9IDxUIGV4dGVuZHMgTWluaW1pemVkUmVzdG9yZUNoYXQ+KFxuICBjaGF0czogVFtdLFxuICBsYXN0QWN0aXZlQ2hhdElkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBUIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgZmlyc3RVbnJlYWQgPSBjaGF0cy5maW5kKGNoYXQgPT4gY2hhdC5pc1JlYWQgPT09IGZhbHNlKVxuICBpZiAoZmlyc3RVbnJlYWQpIHJldHVybiBmaXJzdFVucmVhZFxuICByZXR1cm4gbGFzdEFjdGl2ZUNoYXRJZCA/IGNoYXRzLmZpbmQoY2hhdCA9PiBjaGF0LnNlc3Npb25FeHRlcm5hbElkID09PSBsYXN0QWN0aXZlQ2hhdElkKSA6IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUhvc3RUYWtlb3ZlckFnZW50SWQgPSAoXG4gIGNsZWFyR2xvYmFsUGlubmVkQ29udGV4dDogYm9vbGVhbixcbiAgYWdlbnRzOiBBZ2VudFtdLFxuICBjdXJyZW50QWdlbnRJZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGlmICghY2xlYXJHbG9iYWxQaW5uZWRDb250ZXh0KSByZXR1cm4gY3VycmVudEFnZW50SWQgPz8gbnVsbFxuICByZXR1cm4gYWdlbnRzWzBdPy5pZCA/PyBudWxsXG59XG5cbmV4cG9ydCB0eXBlIE1haWFQYW5lbERyYWdQb3NpdGlvbiA9IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUZsb2F0aW5nUGFuZWxEcmFnUG9zaXRpb24gPSAocGFyYW1zOiB7XG4gIGxheW91dE1vZGU6ICdzaWRlYmFyJyB8ICdmdWxsc2NyZWVuJyB8ICdmbG9hdGluZydcbiAgZHJhZ1Bvc2l0aW9uOiBNYWlhUGFuZWxEcmFnUG9zaXRpb24gfCBudWxsXG4gIHZpZXdwb3J0V2lkdGg6IG51bWJlclxuICBwYW5lbFdpZHRoOiBudW1iZXJcbiAgY2xhbXA6ICh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4gTWFpYVBhbmVsRHJhZ1Bvc2l0aW9uXG59KTogTWFpYVBhbmVsRHJhZ1Bvc2l0aW9uIHwgbnVsbCA9PiB7XG4gIGlmIChwYXJhbXMubGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgIHJldHVybiBwYXJhbXMuZHJhZ1Bvc2l0aW9uXG4gIH1cbiAgaWYgKHBhcmFtcy5kcmFnUG9zaXRpb24pIHtcbiAgICByZXR1cm4gcGFyYW1zLmRyYWdQb3NpdGlvblxuICB9XG4gIGNvbnN0IGRlZmF1bHRQb3NpdGlvbiA9IHJlc29sdmVEZWZhdWx0RmxvYXRpbmdQYW5lbFBvc2l0aW9uKHBhcmFtcy52aWV3cG9ydFdpZHRoLCBwYXJhbXMucGFuZWxXaWR0aClcbiAgcmV0dXJuIHBhcmFtcy5jbGFtcChkZWZhdWx0UG9zaXRpb24ueCwgZGVmYXVsdFBvc2l0aW9uLnkpXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlTmV4dERyYWdQb3NpdGlvbiA9IChcbiAgcHJldmlvdXM6IE1haWFQYW5lbERyYWdQb3NpdGlvbiB8IG51bGwsXG4gIG5leHQ6IE1haWFQYW5lbERyYWdQb3NpdGlvblxuKTogTWFpYVBhbmVsRHJhZ1Bvc2l0aW9uID0+IHtcbiAgaWYgKHByZXZpb3VzICYmIHByZXZpb3VzLnggPT09IG5leHQueCAmJiBwcmV2aW91cy55ID09PSBuZXh0LnkpIHtcbiAgICByZXR1cm4gcHJldmlvdXNcbiAgfVxuICByZXR1cm4gbmV4dFxufVxuXG5leHBvcnQgdHlwZSBNYWlhUGFuZWxTZXNzaW9uSG9zdENvbnRleHQgPSB7XG4gIHNlY3Rpb246IFNlY3Rpb25cbiAgcHJvamVjdDogUHJvamVjdCB8IG51bGxcbiAgY2xpZW50OiBDbGllbnQgfCBudWxsXG4gIHRhc2s6IFRhc2sgfCBudWxsXG4gIGNoaXBzUHJvamVjdDogdW5rbm93blxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRNYWlhUGFuZWxTZXNzaW9uUGF0Y2ggPSAocGFyYW1zOiB7XG4gIGlzTWluaW1pemVkOiBib29sZWFuXG4gIGN1cnJlbnRPcHRpb246IG9wdGlvbnNcbiAgYWdlbnRzTmF2QWN0aXZlOiBNYWlhQWdlbnRzTmF2QWN0aXZlIHwgbnVsbFxuICBhY3RpdmVDaGF0SWQ6IHN0cmluZyB8IG51bGxcbiAgYWdlbnRJZDogc3RyaW5nIHwgbnVsbFxuICBzaWRlYmFyT3BlbjogYm9vbGVhblxuICBsYXlvdXRNb2RlOiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnXG4gIGRyYWdQb3NpdGlvbjogTWFpYVBhbmVsRHJhZ1Bvc2l0aW9uIHwgbnVsbFxuICBob3N0Q29udGV4dDogTWFpYVBhbmVsU2Vzc2lvbkhvc3RDb250ZXh0XG59KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsID0+IHtcbiAgaWYgKHBhcmFtcy5pc01pbmltaXplZCkgcmV0dXJuIG51bGxcblxuICByZXR1cm4ge1xuICAgIGlzRXhwYW5kZWQ6IHRydWUsXG4gICAgY3VycmVudE9wdGlvbjogcGFyYW1zLmN1cnJlbnRPcHRpb24sXG4gICAgYWdlbnRzTmF2QWN0aXZlOiBwYXJhbXMuYWdlbnRzTmF2QWN0aXZlLFxuICAgIGFjdGl2ZUNoYXRJZDogcGFyYW1zLmFjdGl2ZUNoYXRJZCxcbiAgICBhZ2VudElkOiBwYXJhbXMuYWdlbnRJZCxcbiAgICBzaWRlYmFyT3BlbjogcGFyYW1zLnNpZGViYXJPcGVuLFxuICAgIGRyYWdQb3NpdGlvbjogcGFyYW1zLmxheW91dE1vZGUgPT09ICdmbG9hdGluZycgPyBwYXJhbXMuZHJhZ1Bvc2l0aW9uIDogbnVsbCxcbiAgICBob3N0Q29udGV4dDogcGFyYW1zLmhvc3RDb250ZXh0LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlSGFzUGlubmVkQ29udGV4dCA9IChwYXJhbXM6IHtcbiAgdGFza0lkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBjaGlwc1Byb2plY3RJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgY2xpZW50SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIHByb2plY3RJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbn0pOiBib29sZWFuID0+IEJvb2xlYW4ocGFyYW1zLnRhc2tJZCB8fCBwYXJhbXMuY2hpcHNQcm9qZWN0SWQgfHwgcGFyYW1zLmNsaWVudElkIHx8IHBhcmFtcy5wcm9qZWN0SWQpXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlT3JjaGVzdHJhdG9ySG9tZU5hdkZsYWdzID0gKHBhcmFtczoge1xuICBjb21wdXRlZEN1cnJlbnRPcHRpb246IG9wdGlvbnNcbiAgaG9tZU9wdGlvbjogb3B0aW9uc1xuICBjaGF0T3B0aW9uOiBvcHRpb25zXG4gIGhhc1Bpbm5lZENvbnRleHQ6IGJvb2xlYW5cbiAgc2VjdGlvbjogU2VjdGlvblxuICBkaWRSZXNldENvbnRleHRJblNlY3Rpb246IGJvb2xlYW5cbn0pOiB7XG4gIGlzQ2hhdFZpZXc6IGJvb2xlYW5cbiAgaXNIb21lU3RlcDI6IGJvb2xlYW5cbiAgaXNIZWFkZXJIb21lU3RlcDI6IGJvb2xlYW5cbiAgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDI6IGJvb2xlYW5cbn0gPT4ge1xuICBjb25zdCBpc0NoYXRWaWV3ID0gcGFyYW1zLmNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gcGFyYW1zLmNoYXRPcHRpb25cbiAgY29uc3QgaXNIb21lU3RlcDIgPSBwYXJhbXMuY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBwYXJhbXMuaG9tZU9wdGlvbiAmJiBwYXJhbXMuaGFzUGlubmVkQ29udGV4dFxuICByZXR1cm4ge1xuICAgIGlzQ2hhdFZpZXcsXG4gICAgaXNIb21lU3RlcDIsXG4gICAgaXNIZWFkZXJIb21lU3RlcDI6IGlzR2xvYmFsTWFpYVNlY3Rpb24ocGFyYW1zLnNlY3Rpb24pICYmIGlzSG9tZVN0ZXAyLFxuICAgIGlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyOiAhaXNHbG9iYWxNYWlhU2VjdGlvbihwYXJhbXMuc2VjdGlvbikgJiYgaXNIb21lU3RlcDIgJiYgcGFyYW1zLmRpZFJlc2V0Q29udGV4dEluU2VjdGlvbixcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2hvd09yY2hlc3RyYXRvckJhY2tCdXR0b24gPSAocGFyYW1zOiB7XG4gIGFnZW50VHlwZT86IHN0cmluZ1xuICBoYXNFcnJvcjogYm9vbGVhblxuICBsb2FkaW5nOiBib29sZWFuXG4gIGlzQ2hhdFZpZXc6IGJvb2xlYW5cbiAgaXNIZWFkZXJIb21lU3RlcDI6IGJvb2xlYW5cbiAgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDI6IGJvb2xlYW5cbn0pOiBib29sZWFuID0+XG4gIHBhcmFtcy5hZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmXG4gICFwYXJhbXMuaGFzRXJyb3IgJiZcbiAgIXBhcmFtcy5sb2FkaW5nICYmXG4gIChwYXJhbXMuaXNDaGF0VmlldyB8fCBwYXJhbXMuaXNIZWFkZXJIb21lU3RlcDIgfHwgcGFyYW1zLmlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkQ2xlYXJDbGllbnRPbkdvSG9tZUZyb21DaGF0ID0gKGFnZW50RW50aXR5Pzogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4gPT4gYWdlbnRFbnRpdHkgIT09ICdjbGllbnQnXG5cbmV4cG9ydCBjb25zdCBzaG91bGRDbGVhclRhc2tPbkdvSG9tZUZyb21DaGF0ID0gKHNlY3Rpb246IFNlY3Rpb24pOiBib29sZWFuID0+IHNlY3Rpb24gIT09ICd0YXNrJ1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkUmVzZXRBZ2VudFRvRmlyc3RPbkdvSG9tZSA9IChhZ2VudDogQWdlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBhZ2VudHNDb3VudDogbnVtYmVyKTogYm9vbGVhbiA9PlxuICBCb29sZWFuKFxuICAgICghYWdlbnQgfHwgYWdlbnQuaXNfZGVsZXRlZCB8fCBhZ2VudC5oYXNfbm90X3Blcm1pc3Npb25zIHx8IGFnZW50Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50LnByb2plY3RfZGVsZXRlZCkgJiZcbiAgICBhZ2VudHNDb3VudCA+IDBcbiAgKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkQ2xlYXJPcmNoZXN0cmF0b3JHbG9iYWxDb250ZXh0T25Hb0hvbWUgPSAoc2VjdGlvbjogU2VjdGlvbiwgYWdlbnRUeXBlPzogc3RyaW5nKTogYm9vbGVhbiA9PlxuICBpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcblxuZXhwb3J0IGNvbnN0IHNob3VsZFVzZUFjdGl2ZUNoYXRTZW5kSGFuZGxlciA9IChcbiAgY29tcHV0ZWRDdXJyZW50T3B0aW9uOiBvcHRpb25zLFxuICBjaGF0T3B0aW9uOiBvcHRpb25zLFxuICBoYXNTZW5kTWVzc2FnZUZ1bmN0aW9uOiBib29sZWFuXG4pOiBib29sZWFuID0+IEJvb2xlYW4oaGFzU2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IGNoYXRPcHRpb24pXG5cbmV4cG9ydCBjb25zdCBzaG91bGRQcmVmZXRjaEFnZW50c0ZvckNhdGFsb2dOZXdDaGF0ID0gKFxuICBjb21wdXRlZEN1cnJlbnRPcHRpb246IG9wdGlvbnMsXG4gIG15QWdlbnRzT3B0aW9uOiBvcHRpb25zLFxuICBteVNraWxsc09wdGlvbjogb3B0aW9uc1xuKTogYm9vbGVhbiA9PiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG15QWdlbnRzT3B0aW9uIHx8IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gbXlTa2lsbHNPcHRpb25cblxuZXhwb3J0IGNvbnN0IGNhbk9wZW5NYWlhTWFya2V0cGxhY2UgPSAobXVsdGlBZ2VudHNBY2Nlc3M6IGJvb2xlYW4pOiBib29sZWFuID0+IG11bHRpQWdlbnRzQWNjZXNzXG5cbmV4cG9ydCBjb25zdCBzaG91bGRNYXJrQWdlbnRBc0xlZ2FjeUNvbnRleHQgPSAoXG4gIGxlZ2FjeUNvbnRleHRTZXNzaW9uOiB1bmtub3duLFxuICBhZ2VudDogQWdlbnQgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBhZ2VudCBpcyBBZ2VudCA9PiBCb29sZWFuKGxlZ2FjeUNvbnRleHRTZXNzaW9uICYmIGFnZW50ICYmICFhZ2VudC5pc19sZWdhY3lfY29udGV4dClcblxuZXhwb3J0IGNvbnN0IGJ1aWxkTGVnYWN5Q29udGV4dEFnZW50ID0gKGFnZW50OiBBZ2VudCk6IEFnZW50ID0+ICh7IC4uLmFnZW50LCBpc19sZWdhY3lfY29udGV4dDogdHJ1ZSB9KVxuXG5leHBvcnQgdHlwZSBMZWdhY3lDb250ZXh0TWlncmF0aW9uTWV0YSA9IHtcbiAgYWdlbnRFbnRpdHk/OiBzdHJpbmdcbiAgcHJvamVjdElkPzogbnVtYmVyXG4gIHByb2plY3ROYW1lPzogc3RyaW5nXG4gIGNsaWVudElkPzogbnVtYmVyXG4gIGNsaWVudE5hbWU/OiBzdHJpbmdcbiAgdGFza0lkPzogbnVtYmVyXG4gIHRhc2tOYW1lPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIExlZ2FjeUNvbnRleHRDaGlwc1Byb2plY3QgPSB7XG4gIHByb2plY3RJZDogc3RyaW5nXG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgY2xpZW50TmFtZTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIExlZ2FjeUNvbnRleHRNaWdyYXRpb25QYXRjaCA9IHtcbiAgdGFzazogVGFzayB8IG51bGxcbiAgcHJvamVjdDogUHJvamVjdCB8IG51bGxcbiAgY2xpZW50OiBDbGllbnQgfCBudWxsXG4gIGNoaXBzUHJvamVjdDogTGVnYWN5Q29udGV4dENoaXBzUHJvamVjdCB8IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkTGVnYWN5Q29udGV4dE1pZ3JhdGlvblBhdGNoID0gKFxuICBzZXNzaW9uTWV0YTogTGVnYWN5Q29udGV4dE1pZ3JhdGlvbk1ldGEgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBMZWdhY3lDb250ZXh0TWlncmF0aW9uUGF0Y2ggfCBudWxsID0+IHtcbiAgaWYgKCFzZXNzaW9uTWV0YT8uYWdlbnRFbnRpdHkpIHJldHVybiBudWxsXG5cbiAgY29uc3Qge1xuICAgIGFnZW50RW50aXR5LFxuICAgIHByb2plY3RJZDogcElkLFxuICAgIHByb2plY3ROYW1lOiBwTmFtZSxcbiAgICBjbGllbnRJZDogY0lkLFxuICAgIGNsaWVudE5hbWU6IGNOYW1lLFxuICAgIHRhc2tJZDogdElkLFxuICAgIHRhc2tOYW1lOiB0TmFtZSxcbiAgfSA9IHNlc3Npb25NZXRhXG5cbiAgY29uc3QgY2xlYXJlZDogTGVnYWN5Q29udGV4dE1pZ3JhdGlvblBhdGNoID0ge1xuICAgIHRhc2s6IG51bGwsXG4gICAgcHJvamVjdDogbnVsbCxcbiAgICBjbGllbnQ6IG51bGwsXG4gICAgY2hpcHNQcm9qZWN0OiBudWxsLFxuICB9XG5cbiAgaWYgKGFnZW50RW50aXR5ID09PSAnY2xpZW50JyAmJiBjSWQgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IC4uLmNsZWFyZWQsIGNsaWVudDogeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9IH1cbiAgfVxuXG4gIGlmIChhZ2VudEVudGl0eSA9PT0gJ3Byb2plY3QnICYmIHBJZCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNsZWFyZWQsXG4gICAgICBwcm9qZWN0OiB7XG4gICAgICAgIGlkOiBwSWQsXG4gICAgICAgIG5hbWU6IHBOYW1lIHx8ICcnLFxuICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQsIGNsaWVudDogeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9IH0gOiB7fSksXG4gICAgICB9LFxuICAgICAgY2hpcHNQcm9qZWN0OiB7IHByb2plY3RJZDogU3RyaW5nKHBJZCksIHByb2plY3ROYW1lOiBwTmFtZSB8fCAnJywgY2xpZW50TmFtZTogY05hbWUgfHwgJycgfSxcbiAgICB9XG4gIH1cblxuICBpZiAoYWdlbnRFbnRpdHkgPT09ICd0YXNrJyAmJiB0SWQgIT0gbnVsbCkge1xuICAgIGNvbnN0IHRhc2s6IFRhc2sgPSB7XG4gICAgICBpZDogdElkLFxuICAgICAgbmFtZTogdE5hbWUgfHwgJycsXG4gICAgICAuLi4ocElkICE9IG51bGwgPyB7IHByb2plY3RJZDogcElkIH0gOiB7fSksXG4gICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQgfSA6IHt9KSxcbiAgICB9XG4gICAgbGV0IHBhdGNoOiBMZWdhY3lDb250ZXh0TWlncmF0aW9uUGF0Y2ggPSB7IC4uLmNsZWFyZWQsIHRhc2sgfVxuICAgIGlmIChjSWQgIT0gbnVsbCkge1xuICAgICAgcGF0Y2ggPSB7IC4uLnBhdGNoLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9XG4gICAgfVxuICAgIGlmIChwSWQgIT0gbnVsbCkge1xuICAgICAgcGF0Y2ggPSB7XG4gICAgICAgIC4uLnBhdGNoLFxuICAgICAgICBwcm9qZWN0OiB7XG4gICAgICAgICAgaWQ6IHBJZCxcbiAgICAgICAgICBuYW1lOiBwTmFtZSB8fCAnJyxcbiAgICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQsIGNsaWVudDogeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9IH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGNoaXBzUHJvamVjdDogeyBwcm9qZWN0SWQ6IFN0cmluZyhwSWQpLCBwcm9qZWN0TmFtZTogcE5hbWUgfHwgJycsIGNsaWVudE5hbWU6IGNOYW1lIHx8ICcnIH0sXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXRjaFxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGZpbmRPcmNoZXN0cmF0b3JBZ2VudCA9IChhZ2VudHM6IEFnZW50W10pOiBBZ2VudCB8IHVuZGVmaW5lZCA9PlxuICBhZ2VudHMuZmluZChjYW5kaWRhdGUgPT4gY2FuZGlkYXRlLnR5cGUgPT09ICdvcmNoZXN0cmF0b3InKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2V0Q2hhdFZpZXdIaWRkZW5Pbk1vdW50ID0gKGhhc1BlbmRpbmdTZXNzaW9uUmVzdG9yZTogYm9vbGVhbik6IGJvb2xlYW4gPT4gIWhhc1BlbmRpbmdTZXNzaW9uUmVzdG9yZVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkUGVyc2lzdExhc3RBY3RpdmVDaGF0SWQgPSAoYWN0aXZlQ2hhdElkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiBCb29sZWFuKGFjdGl2ZUNoYXRJZClcblxuZXhwb3J0IGNvbnN0IGhhc0Jhbm5lckZhcVRpdGxlID0gKGZhcVRpdGxlPzogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4gPT4gQm9vbGVhbihmYXFUaXRsZT8udHJpbSgpKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU3luY1BhbmVsU2Vzc2lvbk9uUGFnZUhpZGUgPSAoaXNNaW5pbWl6ZWQ6IGJvb2xlYW4pOiBib29sZWFuID0+ICFpc01pbmltaXplZFxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUNhY2hlZEFnZW50c0lmQXZhaWxhYmxlID0gKGFnZW50czogQWdlbnRbXSk6IEFnZW50W10gfCBudWxsID0+IChhZ2VudHMubGVuZ3RoID4gMCA/IGFnZW50cyA6IG51bGwpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRBdHRlbXB0SW5pdGlhbEFnZW50c0ZldGNoID0gKGNhY2hlZEFnZW50c0xlbmd0aDogbnVtYmVyLCBhbHJlYWR5RmV0Y2hlZDogYm9vbGVhbik6IGJvb2xlYW4gPT5cbiAgY2FjaGVkQWdlbnRzTGVuZ3RoID09PSAwICYmICFhbHJlYWR5RmV0Y2hlZFxuXG5leHBvcnQgY29uc3QgZmluZEFnZW50Rm9yQ2hhdEl0ZW0gPSAoYWdlbnRzOiBBZ2VudFtdLCBjaGF0QWdlbnRJZDogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogQWdlbnQgfCB1bmRlZmluZWQgPT5cbiAgYWdlbnRzLmZpbmQoYWdlbnRJdGVtID0+IE51bWJlcihhZ2VudEl0ZW0uaWQpID09PSBOdW1iZXIoY2hhdEFnZW50SWQpKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkQXBwbHlDbGllbnRPbkhvc3RUYWtlb3ZlciA9IChjbGllbnQ6IENsaWVudCB8IG51bGwgfCB1bmRlZmluZWQpOiBjbGllbnQgaXMgQ2xpZW50IHwgbnVsbCA9PlxuICBjbGllbnQgIT09IHVuZGVmaW5lZFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2VsZWN0Rmlyc3RBZ2VudE9uSG9zdFRha2VvdmVyID0gKFxuICBjbGVhckdsb2JhbFBpbm5lZENvbnRleHQ6IGJvb2xlYW4sXG4gIGZpcnN0QWdlbnQ6IEFnZW50IHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IGNsZWFyR2xvYmFsUGlubmVkQ29udGV4dCAmJiBCb29sZWFuKGZpcnN0QWdlbnQpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRSZXNldENoYXRTdGF0ZU9uR29Ib21lID0gKGN1cnJlbnRPcHRpb246IG9wdGlvbnMsIGNoYXRPcHRpb246IG9wdGlvbnMpOiBib29sZWFuID0+XG4gIGN1cnJlbnRPcHRpb24gPT09IGNoYXRPcHRpb25cblxuZXhwb3J0IGNvbnN0IHNob3VsZENsZWFyQ29udGV4dEZvckNhdGFsb2dPclNraWxsQWdlbnQgPSAoYWdlbnQ6IEFnZW50IHwgdW5kZWZpbmVkKTogYWdlbnQgaXMgQWdlbnQgPT4gQm9vbGVhbihhZ2VudClcblxuZXhwb3J0IHR5cGUgT3Blbk5ld0NoYXRXaXRoQWdlbnRDb250ZXh0UGF0Y2ggPSB7XG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIGNsaWVudDogQ2xpZW50IHwgbnVsbFxuICBzaG91bGRTZXRUYXNrOiBib29sZWFuXG4gIHRhc2s6IFRhc2sgfCBudWxsIHwgdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlT3Blbk5ld0NoYXRXaXRoQWdlbnRDb250ZXh0ID0gKGRldGFpbDoge1xuICBwcm9qZWN0PzogUHJvamVjdCB8IG51bGxcbiAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICB0YXNrPzogVGFzayB8IG51bGxcbn0pOiBPcGVuTmV3Q2hhdFdpdGhBZ2VudENvbnRleHRQYXRjaCA9PiAoe1xuICBwcm9qZWN0OiBkZXRhaWwucHJvamVjdCA/PyBudWxsLFxuICBjbGllbnQ6IGRldGFpbC5jbGllbnQgPz8gbnVsbCxcbiAgc2hvdWxkU2V0VGFzazogZGV0YWlsLnRhc2sgIT09IHVuZGVmaW5lZCxcbiAgdGFzazogZGV0YWlsLnRhc2ssXG59KVxuXG5leHBvcnQgY29uc3QgY2FuQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0ID0gKFxuICBzZXNzaW9uTWV0YTogTGVnYWN5U2Vzc2lvbk1ldGEgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBvcmNoZXN0cmF0b3I6IEFnZW50IHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IEJvb2xlYW4oc2Vzc2lvbk1ldGEgJiYgb3JjaGVzdHJhdG9yKVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uUmVzdG9yZU5hdlJvdXRlID0gJ215QWdlbnRzJyB8ICdteVNraWxscycgfCAnbWFpYWtlcicgfCAnY2hhdCcgfCAnc2F2ZWRPcHRpb24nIHwgJ25vbmUnXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU2Vzc2lvblJlc3RvcmVOYXZSb3V0ZSA9IChzbmFwc2hvdDoge1xuICBhZ2VudHNOYXZBY3RpdmU/OiBNYWlhQWdlbnRzTmF2QWN0aXZlIHwgbnVsbFxuICBjdXJyZW50T3B0aW9uPzogc3RyaW5nIHwgbnVsbFxuICBhY3RpdmVDaGF0SWQ/OiBzdHJpbmcgfCBudWxsXG59KTogU2Vzc2lvblJlc3RvcmVOYXZSb3V0ZSA9PiB7XG4gIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cycpIHJldHVybiAnbXlBZ2VudHMnXG4gIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscycpIHJldHVybiAnbXlTa2lsbHMnXG4gIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJykgcmV0dXJuICdtYWlha2VyJ1xuICBpZiAoc25hcHNob3QuY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0ICYmIHNuYXBzaG90LmFjdGl2ZUNoYXRJZCkgcmV0dXJuICdjaGF0J1xuICBpZiAoc25hcHNob3QuY3VycmVudE9wdGlvbiAmJiBpc1ZhbGlkTWFpYVBhbmVsT3B0aW9uKHNuYXBzaG90LmN1cnJlbnRPcHRpb24pKSByZXR1cm4gJ3NhdmVkT3B0aW9uJ1xuICByZXR1cm4gJ25vbmUnXG59XG5cbmV4cG9ydCBjb25zdCBzaG91bGRTa2lwQWdlbnRzTG9hZE9uU2Vzc2lvblJlc3RvcmUgPSAoXG4gIGFnZW50c05hdkFjdGl2ZTogTWFpYUFnZW50c05hdkFjdGl2ZSB8IG51bGwgfCB1bmRlZmluZWRcbik6IGJvb2xlYW4gPT4gYWdlbnRzTmF2QWN0aXZlID09PSAnbXlTa2lsbHMnXG5cbmV4cG9ydCBjb25zdCBzaG91bGRGZXRjaEFnZW50RGV0YWlsT25TZXNzaW9uUmVzdG9yZSA9IChcbiAgYWdlbnRJZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgYWdlbnRzTmF2QWN0aXZlOiBNYWlhQWdlbnRzTmF2QWN0aXZlIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiA9PiBCb29sZWFuKGFnZW50SWQgJiYgYWdlbnRzTmF2QWN0aXZlICE9PSAnbXlBZ2VudHMnKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkUGFzc0FnZW50VG9HZXRBZ2VudHNPblJlc3RvcmUgPSAoYWdlbnRzTmF2QWN0aXZlOiBNYWlhQWdlbnRzTmF2QWN0aXZlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgYWdlbnRzTmF2QWN0aXZlICE9PSAnbXlBZ2VudHMnXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTZWxlY3RGZXRjaGVkQWdlbnRBZnRlclJlc3RvcmUgPSAoXG4gIGFnZW50VG9TZWxlY3Q6IEFnZW50IHwgdW5kZWZpbmVkLFxuICBhZ2VudHNOYXZBY3RpdmU6IE1haWFBZ2VudHNOYXZBY3RpdmUgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IEJvb2xlYW4oYWdlbnRUb1NlbGVjdCAmJiBhZ2VudHNOYXZBY3RpdmUgIT09ICdteUFnZW50cycpXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU25hcHNob3RDaGlwc1Byb2plY3QgPSAoXG4gIGhvc3RDb250ZXh0PzogeyBjaGlwc1Byb2plY3Q/OiBMZWdhY3lDb250ZXh0Q2hpcHNQcm9qZWN0IHwgbnVsbCB9IHwgbnVsbFxuKTogTGVnYWN5Q29udGV4dENoaXBzUHJvamVjdCB8IG51bGwgPT4gaG9zdENvbnRleHQ/LmNoaXBzUHJvamVjdCA/PyBudWxsXG5cbmV4cG9ydCB0eXBlIENoYXRNb2RhbFNlY3Rpb25GbGFncyA9IHtcbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgaXNNeUFnZW50c1NlY3Rpb246IGJvb2xlYW5cbiAgaXNNeVNraWxsc1NlY3Rpb246IGJvb2xlYW5cbiAgaXNNYWlha2VyQ3JlYXRvckhvbWU6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVDaGF0TW9kYWxTZWN0aW9uRmxhZ3MgPSAoXG4gIGNvbXB1dGVkQ3VycmVudE9wdGlvbjogb3B0aW9ucyxcbiAgaXNNYWlha2VyQWdlbnRTZWxlY3RlZDogYm9vbGVhblxuKTogQ2hhdE1vZGFsU2VjdGlvbkZsYWdzID0+ICh7XG4gIHNob3dOZXdDaGF0OiBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCxcbiAgaXNNeUFnZW50c1NlY3Rpb246IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyxcbiAgaXNNeVNraWxsc1NlY3Rpb246IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxscyxcbiAgaXNNYWlha2VyQ3JlYXRvckhvbWU6IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWQsXG59KVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkUmVuZGVyQ2hhdFNpZGViYXIgPSAoaGFzQWNjZXNzOiBib29sZWFuLCBpc0Zsb2F0aW5nOiBib29sZWFuKTogYm9vbGVhbiA9PiBoYXNBY2Nlc3MgJiYgIWlzRmxvYXRpbmdcblxuZXhwb3J0IHR5cGUgQ2hhdE1vZGFsTWFpbkNvbnRlbnRWaWV3ID0gJ2Vycm9yJyB8ICdjaGF0JyB8ICdwcm9qZWN0U3VtbWFyeSdcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVDaGF0TW9kYWxNYWluQ29udGVudFZpZXcgPSAoaGFzRXJyb3I6IGJvb2xlYW4sIGhhc0FjY2VzczogYm9vbGVhbik6IENoYXRNb2RhbE1haW5Db250ZW50VmlldyA9PiB7XG4gIGlmIChoYXNFcnJvcikgcmV0dXJuICdlcnJvcidcbiAgaWYgKGhhc0FjY2VzcykgcmV0dXJuICdjaGF0J1xuICByZXR1cm4gJ3Byb2plY3RTdW1tYXJ5J1xufVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2hvd0NoYXRNb2RhbEZvb3RlciA9IChwYXJhbXM6IHtcbiAgY29tcHV0ZWRDdXJyZW50T3B0aW9uOiBvcHRpb25zXG4gIGhvbWVPcHRpb246IG9wdGlvbnNcbiAgY2hhdE9wdGlvbjogb3B0aW9uc1xuICBhZ2VudHNDb3VudDogbnVtYmVyXG4gIGlzTWFpYWtlckNyZWF0b3JIb21lOiBib29sZWFuXG4gIGhhc0Vycm9yOiBib29sZWFuXG4gIGxvYWRpbmc6IGJvb2xlYW5cbiAgaGFzQWNjZXNzOiBib29sZWFuXG59KTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IG9uSG9tZVdpdGhBZ2VudHMgPSBwYXJhbXMuY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBwYXJhbXMuaG9tZU9wdGlvbiAmJiBwYXJhbXMuYWdlbnRzQ291bnQgPiAwXG4gIGNvbnN0IG9uQ2hhdCA9IHBhcmFtcy5jb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IHBhcmFtcy5jaGF0T3B0aW9uXG4gIHJldHVybiAoXG4gICAgKG9uSG9tZVdpdGhBZ2VudHMgfHwgb25DaGF0KSAmJlxuICAgICFwYXJhbXMuaXNNYWlha2VyQ3JlYXRvckhvbWUgJiZcbiAgICAhcGFyYW1zLmhhc0Vycm9yICYmXG4gICAgIXBhcmFtcy5sb2FkaW5nICYmXG4gICAgcGFyYW1zLmhhc0FjY2Vzc1xuICApXG59XG5cbmV4cG9ydCBjb25zdCBzaG91bGRVc2VFbGV2YXRlZE1haWFQYW5lbCA9IChzZWN0aW9uOiBTZWN0aW9uKTogYm9vbGVhbiA9PiBzZWN0aW9uID09PSAndGFzaydcblxuZXhwb3J0IGNvbnN0IHNob3VsZFJlc2VsZWN0QWdlbnRBZnRlckRlbGV0ZSA9IChjdXJyZW50QWdlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBkZWxldGVkQWdlbnRJZDogc3RyaW5nKTogYm9vbGVhbiA9PlxuICBjdXJyZW50QWdlbnRJZCA9PT0gZGVsZXRlZEFnZW50SWRcblxuZXhwb3J0IGNvbnN0IHNob3VsZENsZWFyRHJhZ1Bvc2l0aW9uT25MYXlvdXRDaGFuZ2UgPSAobGF5b3V0TW9kZTogJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJyk6IGJvb2xlYW4gPT5cbiAgbGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJ1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkUGVyc2lzdERyYWdQb3NpdGlvbk9uRHJhZ0VuZCA9IChsYXlvdXRNb2RlOiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnKTogYm9vbGVhbiA9PlxuICBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTdGFydEZsb2F0aW5nUGFuZWxEcmFnID0gKGlzRmxvYXRpbmc6IGJvb2xlYW4sIHBvaW50ZXJCdXR0b246IG51bWJlcik6IGJvb2xlYW4gPT5cbiAgaXNGbG9hdGluZyAmJiBwb2ludGVyQnV0dG9uID09PSAwXG5cbmV4cG9ydCBjb25zdCBpc0FjdGl2ZUZsb2F0aW5nRHJhZ1BvaW50ZXIgPSAoZHJhZ1BvaW50ZXJJZDogbnVtYmVyIHwgdW5kZWZpbmVkLCBldmVudFBvaW50ZXJJZDogbnVtYmVyKTogYm9vbGVhbiA9PlxuICBkcmFnUG9pbnRlcklkID09PSBldmVudFBvaW50ZXJJZFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkT3BlblNraWxsc0NhdGFsb2cgPSAodXNlckhhc1NraWxsc0FjY2VzczogYm9vbGVhbik6IGJvb2xlYW4gPT4gdXNlckhhc1NraWxsc0FjY2Vzc1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkVXNlRHJhZ0NsYW1wRmFsbGJhY2sgPSAoY29udGVudFdyYXBwZXI6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4gIWNvbnRlbnRXcmFwcGVyXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlTGF5b3V0RHJhZ1Bvc2l0aW9uVXBkYXRlID0gKFxuICBsYXlvdXRNb2RlOiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnLFxuICBwcmV2OiBNYWlhUGFuZWxEcmFnUG9zaXRpb24gfCBudWxsLFxuICBjbGFtcDogKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiBNYWlhUGFuZWxEcmFnUG9zaXRpb24sXG4gIGRlZmF1bHRzOiB7IGlubmVyV2lkdGg6IG51bWJlcjsgcGFuZWxXaWR0aDogbnVtYmVyOyBwYWQ6IG51bWJlciB9XG4pOiBNYWlhUGFuZWxEcmFnUG9zaXRpb24gfCBudWxsID0+IHtcbiAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHJldHVybiBudWxsXG4gIGlmIChwcmV2KSByZXR1cm4gY2xhbXAocHJldi54LCBwcmV2LnkpXG4gIGNvbnN0IHggPSBkZWZhdWx0cy5pbm5lcldpZHRoIC0gZGVmYXVsdHMucGFuZWxXaWR0aCAtIGRlZmF1bHRzLnBhZFxuICByZXR1cm4gY2xhbXAoeCwgZGVmYXVsdHMucGFkKVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVBlcnNpc3RlZERyYWdQb3NpdGlvbk9uRW5kID0gKFxuICBsYXlvdXRNb2RlOiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnLFxuICBjb250ZW50V3JhcHBlcjogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IHNob3VsZFBlcnNpc3REcmFnUG9zaXRpb25PbkRyYWdFbmQobGF5b3V0TW9kZSkgJiYgQm9vbGVhbihjb250ZW50V3JhcHBlcilcblxuZXhwb3J0IHR5cGUgU3RhcnRDaGF0SW5pdGlhbE1lc3NhZ2VJbnB1dCA9IHtcbiAgbWVzc2FnZT86IHN0cmluZ1xuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgZmFxSWQ/OiBzdHJpbmdcbiAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdXG4gIGZ1YUlkPzogc3RyaW5nXG4gIHNjSWQ/OiBzdHJpbmdcbiAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRVc2VySW5pdGlhbE1lc3NhZ2VGcm9tU3RhcnRDaGF0ID0gKGlucHV0OiBTdGFydENoYXRJbml0aWFsTWVzc2FnZUlucHV0KSA9PiAoe1xuICBtZXNzYWdlOiBpbnB1dC5tZXNzYWdlIHx8ICcnLFxuICBhdHRhY2htZW50czogaW5wdXQuYXR0YWNobWVudHMgfHwgW10sXG4gIC4uLihpbnB1dC5mYXFJZCA/IHsgZmFxSWQ6IGlucHV0LmZhcUlkIH0gOiB7fSksXG4gIC4uLihpbnB1dC5hZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IGlucHV0LmFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gIC4uLihpbnB1dC5tZW50aW9ucyAmJiBpbnB1dC5tZW50aW9ucy5sZW5ndGggPiAwID8geyBtZW50aW9uczogaW5wdXQubWVudGlvbnMgfSA6IHt9KSxcbiAgLi4uKGlucHV0LmZ1YUlkID8geyBmdWFJZDogaW5wdXQuZnVhSWQgfSA6IHt9KSxcbiAgLi4uKGlucHV0LnNjSWQgPyB7IHNjSWQ6IGlucHV0LnNjSWQgfSA6IHt9KSxcbiAgLi4uKGlucHV0LmNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YTogaW5wdXQuY29udGV4dERhdGEgfSA6IHt9KSxcbn0pXG5cbmV4cG9ydCBjb25zdCBzaG91bGRSZXNldFNpZGViYXJFcnJvck9uU3RhcnRDaGF0ID0gKHNpZGViYXJIYXNFcnJvcjogYm9vbGVhbik6IGJvb2xlYW4gPT4gc2lkZWJhckhhc0Vycm9yXG4iXSwibWFw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QUFPbkgsS0FBSyxDQUFDbEcsQ0FBQyxFQUFFbU4sUUFBUSxDQUFDRSxHQUFHLENBQUM7QUFDL0IsQ0FBQztBQUVELE9BQU8sSUFBTUMsaUNBQWlDLEdBQUcsU0FBcENBLGlDQUFpQ0EsQ0FDNUN2SCxVQUFpRCxFQUNqRGtILGNBQThDO0VBQUEsT0FDbENULGtDQUFrQyxDQUFDekcsVUFBVSxDQUFDLElBQUlqSyxPQUFPLENBQUNtUixjQUFjLENBQUM7QUFBQTtBQWF2RixPQUFPLElBQU1NLG9DQUFvQyxHQUFHLFNBQXZDQSxvQ0FBb0NBLENBQUlDLEtBQW1DO0VBQUEsT0FBQS9FLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBO0lBQ3RGZ0YsT0FBTyxFQUFFRCxLQUFLLENBQUNDLE9BQU8sSUFBSSxFQUFFO0lBQzVCQyxXQUFXLEVBQUVGLEtBQUssQ0FBQ0UsV0FBVyxJQUFJO0VBQUUsR0FDaENGLEtBQUssQ0FBQ0csS0FBSyxHQUFHO0lBQUVBLEtBQUssRUFBRUgsS0FBSyxDQUFDRztFQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDekNILEtBQUssQ0FBQ0ksaUJBQWlCLEdBQUc7SUFBRUEsaUJBQWlCLEVBQUVKLEtBQUssQ0FBQ0k7RUFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUM3RUosS0FBSyxDQUFDSyxRQUFRLElBQUlMLEtBQUssQ0FBQ0ssUUFBUSxDQUFDL04sTUFBTSxHQUFHLENBQUMsR0FBRztJQUFFK04sUUFBUSxFQUFFTCxLQUFLLENBQUNLO0VBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUMvRUwsS0FBSyxDQUFDTSxLQUFLLEdBQUc7SUFBRUEsS0FBSyxFQUFFTixLQUFLLENBQUNNO0VBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUN6Q04sS0FBSyxDQUFDTyxJQUFJLEdBQUc7SUFBRUEsSUFBSSxFQUFFUCxLQUFLLENBQUNPO0VBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUN0Q1AsS0FBSyxDQUFDUSxXQUFXLEdBQUc7SUFBRUEsV0FBVyxFQUFFUixLQUFLLENBQUNRO0VBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUFBLENBQy9EO0FBRUYsT0FBTyxJQUFNQyxrQ0FBa0MsR0FBRyxTQUFyQ0Esa0NBQWtDQSxDQUFJQyxlQUF3QjtFQUFBLE9BQWNBLGVBQWU7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==