@codecademy/brand 4.0.0-alpha.fdfb3ba880.0 → 4.0.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 (1061) hide show
  1. package/dist/AbbreviatedCommunityEventCard/index.d.ts +7 -10
  2. package/dist/AbbreviatedCommunityEventCard/index.js +98 -86
  3. package/dist/AppBar/AppBarSection.d.ts +10 -15
  4. package/dist/AppBar/AppBarSection.js +39 -35
  5. package/dist/AppBar/index.d.ts +8 -12
  6. package/dist/AppBar/index.js +20 -20
  7. package/dist/AppBarDeprecated/AppBarSectionDeprecated.d.ts +9 -13
  8. package/dist/AppBarDeprecated/AppBarSectionDeprecated.js +23 -21
  9. package/dist/AppBarDeprecated/index.d.ts +9 -13
  10. package/dist/AppBarDeprecated/index.js +24 -22
  11. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.d.ts +13 -0
  12. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.js +111 -132
  13. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.d.ts +8 -0
  14. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.js +334 -288
  15. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.d.ts +17 -0
  16. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.js +226 -270
  17. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.d.ts +5 -9
  18. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.js +122 -107
  19. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.d.ts +11 -0
  20. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.js +124 -112
  21. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.d.ts +11 -16
  22. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.js +113 -94
  23. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.d.ts +13 -0
  24. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.js +27 -29
  25. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.d.ts +4 -0
  26. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.js +56 -59
  27. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.d.ts +44 -53
  28. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.js +70 -56
  29. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.d.ts +42 -0
  30. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.js +36 -32
  31. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.d.ts +8 -0
  32. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.js +59 -41
  33. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.d.ts +14 -0
  34. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.js +32 -23
  35. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.d.ts +5 -10
  36. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.js +55 -49
  37. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.d.ts +14 -0
  38. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.js +86 -80
  39. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.d.ts +12 -0
  40. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.js +101 -76
  41. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.d.ts +10 -0
  42. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.js +17 -20
  43. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.d.ts +10 -0
  44. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.js +107 -110
  45. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.d.ts +18 -0
  46. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.js +291 -335
  47. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.d.ts +5 -9
  48. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.js +120 -102
  49. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.d.ts +7 -0
  50. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.js +9 -15
  51. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.d.ts +6 -0
  52. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.js +89 -83
  53. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.d.ts +11 -0
  54. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.js +61 -49
  55. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.d.ts +20 -0
  56. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.js +125 -98
  57. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.d.ts +9 -0
  58. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.js +81 -83
  59. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.d.ts +88 -0
  60. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.js +118 -168
  61. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.d.ts +24 -0
  62. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.js +144 -117
  63. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.d.ts +6 -0
  64. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.js +65 -53
  65. package/dist/AppHeader/Search/DefaultResults.d.ts +10 -0
  66. package/dist/AppHeader/Search/DefaultResults.js +111 -101
  67. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.d.ts +7 -0
  68. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.js +79 -68
  69. package/dist/AppHeader/Search/SearchButton.d.ts +2 -0
  70. package/dist/AppHeader/Search/SearchButton.js +71 -46
  71. package/dist/AppHeader/Search/SearchPane.d.ts +6 -0
  72. package/dist/AppHeader/Search/SearchPane.js +622 -472
  73. package/dist/AppHeader/Search/SearchTrackingProvider/index.d.ts +17 -0
  74. package/dist/AppHeader/Search/SearchTrackingProvider/index.js +23 -26
  75. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.d.ts +18 -0
  76. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.js +35 -43
  77. package/dist/AppHeader/Search/SearchWorker/index.d.ts +4 -9
  78. package/dist/AppHeader/Search/SearchWorker/index.js +23 -23
  79. package/dist/AppHeader/Search/SearchWorker/src.d.ts +1 -0
  80. package/dist/AppHeader/Search/SearchWorker/src.js +305 -153
  81. package/dist/AppHeader/Search/SearchWorker/types.d.ts +30 -23
  82. package/dist/AppHeader/Search/SearchWorker/types.js +5 -9
  83. package/dist/AppHeader/Search/SearchWorker/worker.d.ts +2 -0
  84. package/dist/AppHeader/Search/SearchWorker/worker.js +29 -24
  85. package/dist/AppHeader/Search/consts.d.ts +20 -23
  86. package/dist/AppHeader/Search/consts.js +39 -62
  87. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.d.ts +5 -0
  88. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.js +14 -16
  89. package/dist/AppHeader/Search/safelyRedirect.d.ts +5 -0
  90. package/dist/AppHeader/Search/safelyRedirect.js +42 -32
  91. package/dist/AppHeader/Search/types.d.ts +19 -11
  92. package/dist/AppHeader/Search/types.js +1 -0
  93. package/dist/AppHeader/Search/useHeaderSearch.d.ts +6 -0
  94. package/dist/AppHeader/Search/useHeaderSearch.js +40 -38
  95. package/dist/AppHeader/index.d.ts +22 -28
  96. package/dist/AppHeader/index.js +98 -90
  97. package/dist/AppHeader/shared/elements.d.ts +90 -9
  98. package/dist/AppHeader/shared/elements.js +243 -152
  99. package/dist/AppHeader/shared/index.d.ts +4 -4
  100. package/dist/AppHeader/shared/index.js +4 -0
  101. package/dist/AppHeader/shared/keyboardNav.d.ts +23 -1
  102. package/dist/AppHeader/shared/keyboardNav.js +65 -63
  103. package/dist/AppHeader/shared/mockAppHeaderItems.d.ts +2 -1
  104. package/dist/AppHeader/shared/mockAppHeaderItems.js +10 -0
  105. package/dist/AppHeader/shared/types.d.ts +104 -108
  106. package/dist/AppHeader/shared/types.js +1 -5
  107. package/dist/AppHeader/shared/utils.d.ts +14 -0
  108. package/dist/AppHeader/shared/utils.js +100 -84
  109. package/dist/AppHeader/utils/types.d.ts +8 -0
  110. package/dist/AppHeader/utils/types.js +1 -0
  111. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.d.ts +7 -12
  112. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.js +140 -121
  113. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.d.ts +13 -0
  114. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.js +30 -26
  115. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.d.ts +7 -11
  116. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.js +122 -105
  117. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.d.ts +7 -0
  118. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.js +60 -58
  119. package/dist/AppHeaderMobile/index.d.ts +19 -26
  120. package/dist/AppHeaderMobile/index.js +214 -191
  121. package/dist/Avatar/Avatar.stories.js +15 -0
  122. package/dist/Avatar/index.d.ts +33 -37
  123. package/dist/Avatar/index.js +45 -49
  124. package/dist/AvatarChooser/index.d.ts +10 -13
  125. package/dist/AvatarChooser/index.js +102 -93
  126. package/dist/BackToTopAnchor/index.d.ts +11 -13
  127. package/dist/BackToTopAnchor/index.js +37 -31
  128. package/dist/Banner/CountdownTimer.d.ts +5 -8
  129. package/dist/Banner/CountdownTimer.js +104 -103
  130. package/dist/Banner/EnhancedBanner.d.ts +16 -19
  131. package/dist/Banner/EnhancedBanner.js +169 -136
  132. package/dist/Banner/index.d.ts +18 -21
  133. package/dist/Banner/index.js +95 -73
  134. package/dist/BetaSticker/index.d.ts +4 -7
  135. package/dist/BetaSticker/index.js +57 -60
  136. package/dist/CareerPathCard/index.d.ts +20 -24
  137. package/dist/CareerPathCard/index.js +49 -33
  138. package/dist/Carousel/elements.d.ts +27 -0
  139. package/dist/Carousel/elements.js +14 -10
  140. package/dist/Carousel/index.d.ts +21 -24
  141. package/dist/Carousel/index.js +247 -185
  142. package/dist/CertificationPathCard/__tests__/__fixtures__/index.d.ts +2 -0
  143. package/dist/CertificationPathCard/index.d.ts +20 -24
  144. package/dist/CertificationPathCard/index.js +52 -40
  145. package/dist/CoachingSessionCard/index.d.ts +20 -23
  146. package/dist/CoachingSessionCard/index.js +73 -84
  147. package/dist/CommunityEventCard/EventTypeIcon.d.ts +11 -0
  148. package/dist/CommunityEventCard/EventTypeIcon.js +58 -59
  149. package/dist/CommunityEventCard/index.d.ts +27 -30
  150. package/dist/CommunityEventCard/index.js +302 -253
  151. package/dist/CommunityEventToast/index.d.ts +4 -7
  152. package/dist/CommunityEventToast/index.js +32 -33
  153. package/dist/ContentGroupBaseCard/helpers.d.ts +4 -8
  154. package/dist/ContentGroupBaseCard/helpers.js +11 -12
  155. package/dist/ContentGroupBaseCard/index.d.ts +31 -38
  156. package/dist/ContentGroupBaseCard/index.js +236 -209
  157. package/dist/ContentGroupBaseCard/shared.d.ts +7 -0
  158. package/dist/ContentGroupBaseCard/shared.js +67 -73
  159. package/dist/ContentGroupBaseCard/types.d.ts +8 -11
  160. package/dist/ContentGroupBaseCard/types.js +11 -15
  161. package/dist/CourseCard/__tests__/__fixtures__/index.d.ts +3 -0
  162. package/dist/CourseCard/index.d.ts +19 -24
  163. package/dist/CourseCard/index.js +45 -31
  164. package/dist/CurriculumCard/BottomTag/index.d.ts +7 -6
  165. package/dist/CurriculumCard/BottomTag/index.js +24 -26
  166. package/dist/CurriculumCard/Difficulty/helpers.d.ts +2 -7
  167. package/dist/CurriculumCard/Difficulty/helpers.js +11 -15
  168. package/dist/CurriculumCard/Difficulty/index.d.ts +3 -7
  169. package/dist/CurriculumCard/Difficulty/index.js +47 -40
  170. package/dist/CurriculumCard/Difficulty/types.d.ts +13 -16
  171. package/dist/CurriculumCard/Difficulty/types.js +17 -16
  172. package/dist/CurriculumCard/Footer/index.d.ts +10 -0
  173. package/dist/CurriculumCard/Footer/index.js +54 -47
  174. package/dist/CurriculumCard/Image/index.d.ts +9 -0
  175. package/dist/CurriculumCard/Image/index.js +52 -43
  176. package/dist/CurriculumCard/Subtitle/helpers.d.ts +1 -0
  177. package/dist/CurriculumCard/Subtitle/helpers.js +8 -8
  178. package/dist/CurriculumCard/Subtitle/index.d.ts +7 -10
  179. package/dist/CurriculumCard/Subtitle/index.js +34 -37
  180. package/dist/CurriculumCard/index.d.ts +52 -56
  181. package/dist/CurriculumCard/index.js +124 -114
  182. package/dist/DropdownButton/DropdownList.d.ts +14 -16
  183. package/dist/DropdownButton/DropdownList.js +73 -55
  184. package/dist/DropdownButton/index.d.ts +69 -75
  185. package/dist/DropdownButton/index.js +169 -137
  186. package/dist/DropdownButton/useDynamicPopoverPosition.d.ts +14 -0
  187. package/dist/DropdownButton/useDynamicPopoverPosition.js +49 -34
  188. package/dist/DropdownButton/useDynamicPopoverPosition.test.js +85 -0
  189. package/dist/EmptySection/index.d.ts +27 -32
  190. package/dist/EmptySection/index.js +181 -154
  191. package/dist/ErrorContents/index.d.ts +7 -11
  192. package/dist/ErrorContents/index.js +48 -62
  193. package/dist/FeatureList/index.d.ts +9 -16
  194. package/dist/FeatureList/index.js +41 -39
  195. package/dist/GlobalFooter/FooterHeading.d.ts +9 -0
  196. package/dist/GlobalFooter/FooterHeading.js +29 -25
  197. package/dist/GlobalFooter/FooterLegal/LegalLinks.d.ts +6 -0
  198. package/dist/GlobalFooter/FooterLegal/LegalLinks.js +43 -74
  199. package/dist/GlobalFooter/FooterLegal/MadeIn.d.ts +5 -0
  200. package/dist/GlobalFooter/FooterLegal/MadeIn.js +63 -75
  201. package/dist/GlobalFooter/FooterLegal/index.d.ts +7 -0
  202. package/dist/GlobalFooter/FooterLegal/index.js +22 -26
  203. package/dist/GlobalFooter/FooterLinks.d.ts +18 -0
  204. package/dist/GlobalFooter/FooterLinks.js +52 -45
  205. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.d.ts +7 -0
  206. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.js +292 -288
  207. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.d.ts +11 -0
  208. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.js +286 -251
  209. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.d.ts +7 -0
  210. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.js +271 -242
  211. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.d.ts +2 -0
  212. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.js +29 -25
  213. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.d.ts +4 -0
  214. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.js +75 -67
  215. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.d.ts +3 -0
  216. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.js +86 -69
  217. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.d.ts +3 -6
  218. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.js +1 -0
  219. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.d.ts +2 -0
  220. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.js +50 -57
  221. package/dist/GlobalFooter/FooterNavLinks/index.d.ts +4 -0
  222. package/dist/GlobalFooter/FooterNavLinks/index.js +43 -41
  223. package/dist/GlobalFooter/FooterSubHeading.d.ts +9 -0
  224. package/dist/GlobalFooter/FooterSubHeading.js +22 -0
  225. package/dist/GlobalFooter/index.d.ts +21 -25
  226. package/dist/GlobalFooter/index.js +37 -35
  227. package/dist/GlobalFooter/types.d.ts +11 -14
  228. package/dist/GlobalFooter/types.js +1 -0
  229. package/dist/GlobalHeader/GlobalHeaderItems.d.ts +28 -0
  230. package/dist/GlobalHeader/GlobalHeaderItems.js +378 -376
  231. package/dist/GlobalHeader/GlobalHeaderVariants.d.ts +83 -0
  232. package/dist/GlobalHeader/GlobalHeaderVariants.js +325 -304
  233. package/dist/GlobalHeader/context.d.ts +34 -0
  234. package/dist/GlobalHeader/context.js +72 -69
  235. package/dist/GlobalHeader/index.d.ts +7 -10
  236. package/dist/GlobalHeader/index.js +180 -165
  237. package/dist/GlobalHeader/types.d.ts +99 -104
  238. package/dist/GlobalHeader/types.js +1 -0
  239. package/dist/GlobalHeader/urlHelpers.d.ts +2 -0
  240. package/dist/GlobalHeader/urlHelpers.js +20 -19
  241. package/dist/GlobalPage/index.d.ts +43 -46
  242. package/dist/GlobalPage/index.js +59 -42
  243. package/dist/Grid/GridCollapse.d.ts +39 -47
  244. package/dist/Grid/GridCollapse.js +194 -152
  245. package/dist/Grid/GridCollapse.test.js +96 -0
  246. package/dist/Grid/Subgrid.d.ts +5 -11
  247. package/dist/Grid/Subgrid.js +35 -37
  248. package/dist/Grid/getCSSFromColumnCount.d.ts +6 -10
  249. package/dist/Grid/getCSSFromColumnCount.js +7 -9
  250. package/dist/Grid/index.d.ts +3 -4
  251. package/dist/Grid/index.js +3 -5
  252. package/dist/HeaderHeightArea/index.d.ts +8 -12
  253. package/dist/HeaderHeightArea/index.js +40 -35
  254. package/dist/HeaderHeightArea/useIsInHeaderRegion.d.ts +1 -0
  255. package/dist/HeaderHeightArea/useIsInHeaderRegion.js +14 -15
  256. package/dist/HorizontalScrollMenu/index.d.ts +6 -10
  257. package/dist/HorizontalScrollMenu/index.js +75 -65
  258. package/dist/HubCard/index.d.ts +7 -11
  259. package/dist/HubCard/index.js +38 -38
  260. package/dist/InfoCard/index.d.ts +18 -22
  261. package/dist/InfoCard/index.js +147 -109
  262. package/dist/InstructorCard/__tests__/__fixtures__/index.d.ts +2 -0
  263. package/dist/InstructorCard/index.d.ts +18 -0
  264. package/dist/InstructorCard/index.js +175 -0
  265. package/dist/Konamimojisplosion/Konamimojisplosion.d.ts +4 -8
  266. package/dist/Konamimojisplosion/Konamimojisplosion.js +7 -10
  267. package/dist/Konamimojisplosion/index.d.ts +2 -3
  268. package/dist/Konamimojisplosion/index.js +2 -4
  269. package/dist/Konamimojisplosion/useKonamimojisplosion.d.ts +1 -4
  270. package/dist/Konamimojisplosion/useKonamimojisplosion.js +32 -44
  271. package/dist/LandingPage/Description.d.ts +5 -9
  272. package/dist/LandingPage/Description.js +14 -16
  273. package/dist/LandingPage/PageFAQs.d.ts +10 -11
  274. package/dist/LandingPage/PageFAQs.js +44 -46
  275. package/dist/LandingPage/Title.d.ts +19 -23
  276. package/dist/LandingPage/Title.js +27 -29
  277. package/dist/LandingPage/TitleWithEyebrow.d.ts +10 -14
  278. package/dist/LandingPage/TitleWithEyebrow.js +40 -37
  279. package/dist/LandingPage/index.d.ts +6 -15
  280. package/dist/LandingPage/index.js +6 -15
  281. package/dist/LandingPage/types.d.ts +30 -29
  282. package/dist/LandingPage/types.js +1 -0
  283. package/dist/LayoutMenu/AccordionMenu.d.ts +24 -16
  284. package/dist/LayoutMenu/AccordionMenu.js +70 -59
  285. package/dist/LayoutMenu/LayoutMenu.d.ts +43 -47
  286. package/dist/LayoutMenu/LayoutMenu.js +119 -105
  287. package/dist/LayoutMenu/LayoutMenuSection.d.ts +16 -0
  288. package/dist/LayoutMenu/LayoutMenuSection.js +39 -36
  289. package/dist/LayoutMenu/SectionItemLink.d.ts +6 -10
  290. package/dist/LayoutMenu/SectionItemLink.js +16 -17
  291. package/dist/LayoutMenu/SelectedSectionItem.d.ts +3 -7
  292. package/dist/LayoutMenu/SelectedSectionItem.js +17 -20
  293. package/dist/LayoutMenu/index.d.ts +3 -4
  294. package/dist/LayoutMenu/index.js +3 -5
  295. package/dist/LayoutMenuVariant/AccordionMenu.d.ts +19 -17
  296. package/dist/LayoutMenuVariant/AccordionMenu.js +86 -72
  297. package/dist/LayoutMenuVariant/LayoutMenu.d.ts +38 -42
  298. package/dist/LayoutMenuVariant/LayoutMenu.js +93 -85
  299. package/dist/LayoutMenuVariant/LayoutMenuSection.d.ts +10 -0
  300. package/dist/LayoutMenuVariant/LayoutMenuSection.js +41 -33
  301. package/dist/LayoutMenuVariant/SectionItemLink.d.ts +7 -11
  302. package/dist/LayoutMenuVariant/SectionItemLink.js +17 -17
  303. package/dist/LayoutMenuVariant/index.d.ts +2 -9
  304. package/dist/LayoutMenuVariant/index.js +2 -12
  305. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.d.ts +8 -0
  306. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.js +55 -50
  307. package/dist/LearningOutcomeAssessmentScores/index.d.ts +6 -8
  308. package/dist/LearningOutcomeAssessmentScores/index.js +24 -24
  309. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.d.ts +14 -17
  310. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.js +55 -44
  311. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.d.ts +8 -16
  312. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.js +34 -34
  313. package/dist/LearningOutcomeBadges/index.d.ts +2 -3
  314. package/dist/LearningOutcomeBadges/index.js +2 -4
  315. package/dist/LearningOutcomeCard/index.d.ts +23 -27
  316. package/dist/LearningOutcomeCard/index.js +197 -159
  317. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.d.ts +7 -0
  318. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.js +42 -40
  319. package/dist/LearningOutcomeFlyout/index.d.ts +7 -12
  320. package/dist/LearningOutcomeFlyout/index.js +349 -306
  321. package/dist/LearningOutcomeFlyout/types.d.ts +54 -58
  322. package/dist/LearningOutcomeFlyout/types.js +5 -9
  323. package/dist/LearningOutcomePopover/index.d.ts +8 -11
  324. package/dist/LearningOutcomePopover/index.js +121 -112
  325. package/dist/LearningOutcomeTile/Tile.d.ts +7 -0
  326. package/dist/LearningOutcomeTile/Tile.js +75 -62
  327. package/dist/LearningOutcomeTile/index.d.ts +3 -7
  328. package/dist/LearningOutcomeTile/index.js +114 -92
  329. package/dist/LearningOutcomeTile/types.d.ts +36 -35
  330. package/dist/LearningOutcomeTile/types.js +9 -8
  331. package/dist/ListSection/index.d.ts +20 -25
  332. package/dist/ListSection/index.js +64 -53
  333. package/dist/Loading/index.d.ts +4 -8
  334. package/dist/Loading/index.js +81 -87
  335. package/dist/LoadingCurriculumCard/index.d.ts +5 -8
  336. package/dist/LoadingCurriculumCard/index.js +82 -83
  337. package/dist/Logos/LogoCodecademy/index.d.ts +2 -6
  338. package/dist/Logos/LogoCodecademy/index.js +22 -22
  339. package/dist/Logos/LogoCodecademyMini/index.d.ts +2 -6
  340. package/dist/Logos/LogoCodecademyMini/index.js +18 -18
  341. package/dist/Logos/LogoCodecademyPro/index.d.ts +2 -6
  342. package/dist/Logos/LogoCodecademyPro/index.js +25 -25
  343. package/dist/Logos/LogoCodecademyTeams/index.d.ts +2 -6
  344. package/dist/Logos/LogoCodecademyTeams/index.js +46 -52
  345. package/dist/Logos/LogoFromSkillsoft/index.d.ts +3 -7
  346. package/dist/Logos/LogoFromSkillsoft/index.js +48 -47
  347. package/dist/Logos/LogoLXStudio/index.d.ts +3 -7
  348. package/dist/Logos/LogoLXStudio/index.js +40 -36
  349. package/dist/Logos/ProLabel/ProLabelCutout/index.d.ts +8 -0
  350. package/dist/Logos/ProLabel/ProLabelCutout/index.js +31 -36
  351. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.d.ts +7 -0
  352. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.js +31 -37
  353. package/dist/Logos/ProLabel/index.d.ts +11 -14
  354. package/dist/Logos/ProLabel/index.js +27 -25
  355. package/dist/Logos/index.d.ts +7 -8
  356. package/dist/Logos/index.js +7 -9
  357. package/dist/Logos/shared.d.ts +989 -235
  358. package/dist/Logos/shared.js +14 -10
  359. package/dist/MarketingToaster/index.d.ts +6 -9
  360. package/dist/MarketingToaster/index.js +66 -46
  361. package/dist/NotFoundContent/index.d.ts +6 -9
  362. package/dist/NotFoundContent/index.js +55 -46
  363. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.d.ts +7 -0
  364. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.js +23 -33
  365. package/dist/NotificationList/EmptyNotification/index.d.ts +1 -0
  366. package/dist/NotificationList/EmptyNotification/index.js +38 -42
  367. package/dist/NotificationList/NotificationItem.d.ts +7 -11
  368. package/dist/NotificationList/NotificationItem.js +149 -157
  369. package/dist/NotificationList/index.d.ts +8 -12
  370. package/dist/NotificationList/index.js +46 -41
  371. package/dist/NotificationList/typings.d.ts +14 -17
  372. package/dist/NotificationList/typings.js +1 -0
  373. package/dist/Notifications/NotificationBell.d.ts +10 -0
  374. package/dist/Notifications/NotificationBell.js +72 -60
  375. package/dist/Notifications/NotificationsContents.d.ts +3 -0
  376. package/dist/Notifications/NotificationsContents.js +85 -78
  377. package/dist/Notifications/NotificationsDropdown.d.ts +2 -0
  378. package/dist/Notifications/NotificationsDropdown.js +25 -23
  379. package/dist/Notifications/__fixtures__/NotificationTestComponent.d.ts +2 -0
  380. package/dist/Notifications/__fixtures__/NotificationTestComponent.js +12 -0
  381. package/dist/Notifications/__fixtures__/stubs.d.ts +2 -0
  382. package/dist/Notifications/__fixtures__/stubs.js +8 -0
  383. package/dist/Notifications/constants.d.ts +4 -0
  384. package/dist/Notifications/constants.js +3 -7
  385. package/dist/Notifications/elements.d.ts +12 -0
  386. package/dist/Notifications/elements.js +20 -19
  387. package/dist/Notifications/types.d.ts +22 -16
  388. package/dist/Notifications/types.js +1 -0
  389. package/dist/Notifications/useHeaderNotifications.d.ts +10 -0
  390. package/dist/Notifications/useHeaderNotifications.js +37 -37
  391. package/dist/Notifications/useNotificationButtons.d.ts +9 -0
  392. package/dist/Notifications/useNotificationButtons.js +56 -52
  393. package/dist/PageAlerts/PageAlerts.d.ts +9 -15
  394. package/dist/PageAlerts/PageAlerts.js +74 -64
  395. package/dist/PageAlerts/PageAlertsProvider.d.ts +10 -14
  396. package/dist/PageAlerts/PageAlertsProvider.js +33 -36
  397. package/dist/PageAlerts/index.d.ts +3 -4
  398. package/dist/PageAlerts/index.js +3 -4
  399. package/dist/PageAlerts/types.d.ts +14 -15
  400. package/dist/PageAlerts/types.js +1 -0
  401. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.d.ts +17 -20
  402. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.js +53 -48
  403. package/dist/PageLayoutWithSidebarMenu/index.d.ts +1 -2
  404. package/dist/PageLayoutWithSidebarMenu/index.js +1 -3
  405. package/dist/PageSection/index.d.ts +14 -17
  406. package/dist/PageSection/index.js +65 -61
  407. package/dist/PastDue/PastDueModalContents/index.d.ts +7 -11
  408. package/dist/PastDue/PastDueModalContents/index.js +30 -26
  409. package/dist/PastDue/index.d.ts +2 -3
  410. package/dist/PastDue/index.js +2 -4
  411. package/dist/PastDue/pastDueMessages.d.ts +4 -6
  412. package/dist/PastDue/pastDueMessages.js +48 -53
  413. package/dist/PausableImage/BaseImage/index.d.ts +15 -0
  414. package/dist/PausableImage/BaseImage/index.js +53 -69
  415. package/dist/PausableImage/index.d.ts +9 -14
  416. package/dist/PausableImage/index.js +35 -26
  417. package/dist/PlanCard/PlanCardBanner.d.ts +5 -8
  418. package/dist/PlanCard/PlanCardBanner.js +28 -27
  419. package/dist/PlanCard/PlanFeature.d.ts +10 -0
  420. package/dist/PlanCard/PlanFeature.js +105 -88
  421. package/dist/PlanCard/PopularBadge.d.ts +3 -0
  422. package/dist/PlanCard/PopularBadge.js +13 -18
  423. package/dist/PlanCard/PricingAmount.d.ts +14 -0
  424. package/dist/PlanCard/PricingAmount.js +116 -118
  425. package/dist/PlanCard/RecommendedBadge.d.ts +3 -0
  426. package/dist/PlanCard/RecommendedBadge.js +24 -29
  427. package/dist/PlanCard/consts.d.ts +15 -0
  428. package/dist/PlanCard/consts.js +167 -219
  429. package/dist/PlanCard/index.d.ts +17 -21
  430. package/dist/PlanCard/index.js +373 -336
  431. package/dist/PlanCard/types.d.ts +38 -41
  432. package/dist/PlanCard/types.js +69 -66
  433. package/dist/PlanCardTeams/consts.d.ts +9 -0
  434. package/dist/PlanCardTeams/consts.js +8 -21
  435. package/dist/PlanCardTeams/index.d.ts +7 -11
  436. package/dist/PlanCardTeams/index.js +165 -135
  437. package/dist/PricingSection/ConditionalColorMode.d.ts +4 -0
  438. package/dist/PricingSection/ConditionalColorMode.js +13 -13
  439. package/dist/PricingSection/PricingCard/PricingAmount.d.ts +14 -0
  440. package/dist/PricingSection/PricingCard/PricingAmount.js +114 -118
  441. package/dist/PricingSection/PricingCard/RecommendedBadge.d.ts +3 -0
  442. package/dist/PricingSection/PricingCard/RecommendedBadge.js +24 -29
  443. package/dist/PricingSection/PricingCard/consts.d.ts +14 -0
  444. package/dist/PricingSection/PricingCard/consts.js +96 -0
  445. package/dist/PricingSection/PricingCard/index.d.ts +16 -0
  446. package/dist/PricingSection/PricingCard/index.js +198 -170
  447. package/dist/PricingSection/PricingCard/types.d.ts +38 -24
  448. package/dist/PricingSection/PricingCard/types.js +58 -61
  449. package/dist/PricingSection/ProductCTA.d.ts +12 -0
  450. package/dist/PricingSection/ProductCTA.js +133 -103
  451. package/dist/PricingSection/Products.d.ts +15 -0
  452. package/dist/PricingSection/Products.js +92 -85
  453. package/dist/PricingSection/config.d.ts +8 -0
  454. package/dist/PricingSection/config.js +36 -29
  455. package/dist/PricingSection/index.d.ts +14 -20
  456. package/dist/PricingSection/index.js +41 -35
  457. package/dist/PricingSection/types.d.ts +29 -16
  458. package/dist/PricingSection/types.js +9 -13
  459. package/dist/ProLogoAlt/index.d.ts +8 -12
  460. package/dist/ProLogoAlt/index.js +26 -26
  461. package/dist/ProductFeatureShowcase/index.d.ts +15 -18
  462. package/dist/ProductFeatureShowcase/index.js +119 -105
  463. package/dist/QuizScore/index.d.ts +10 -13
  464. package/dist/QuizScore/index.js +84 -91
  465. package/dist/RatingsBar/index.d.ts +11 -15
  466. package/dist/RatingsBar/index.js +34 -41
  467. package/dist/Recurly/context/NoProvider.d.ts +8 -0
  468. package/dist/Recurly/context/NoProvider.js +6 -10
  469. package/dist/Recurly/context/elements/index.d.ts +21 -10
  470. package/dist/Recurly/context/elements/index.js +42 -39
  471. package/dist/Recurly/context/index.d.ts +2 -2
  472. package/dist/Recurly/context/index.js +2 -0
  473. package/dist/Recurly/context/recurly/index.d.ts +7 -15
  474. package/dist/Recurly/context/recurly/index.js +47 -44
  475. package/dist/Recurly/context/recurly/loadRecurly.d.ts +5 -8
  476. package/dist/Recurly/context/recurly/loadRecurly.js +22 -21
  477. package/dist/Recurly/context/recurly/w.d.ts +14 -0
  478. package/dist/Recurly/context/recurly/w.js +3 -4
  479. package/dist/Recurly/fields/RecurlyField.d.ts +4 -13
  480. package/dist/Recurly/fields/RecurlyField.js +55 -65
  481. package/dist/Recurly/fields/elements.d.ts +15 -20
  482. package/dist/Recurly/fields/elements.js +95 -48
  483. package/dist/Recurly/fields/elements.test.js +79 -0
  484. package/dist/Recurly/fields/index.d.ts +2 -2
  485. package/dist/Recurly/fields/index.js +2 -0
  486. package/dist/Recurly/index.d.ts +2 -7
  487. package/dist/Recurly/index.js +2 -6
  488. package/dist/ResourceCard/index.d.ts +13 -17
  489. package/dist/ResourceCard/index.js +58 -56
  490. package/dist/ScoreSummary/SubScores.d.ts +26 -38
  491. package/dist/ScoreSummary/SubScores.js +163 -132
  492. package/dist/ScoreSummary/helpers.d.ts +11 -0
  493. package/dist/ScoreSummary/helpers.js +19 -17
  494. package/dist/ScoreSummary/index.d.ts +20 -24
  495. package/dist/ScoreSummary/index.js +108 -96
  496. package/dist/ScoreSummary/types.d.ts +305 -308
  497. package/dist/ScoreSummary/types.js +1 -0
  498. package/dist/SkillPathCard/__tests__/__fixtures__/index.d.ts +2 -0
  499. package/dist/SkillPathCard/index.d.ts +19 -24
  500. package/dist/SkillPathCard/index.js +46 -33
  501. package/dist/SocialMediaSharing/SocialShareIconLink.d.ts +12 -9
  502. package/dist/SocialMediaSharing/SocialShareIconLink.js +48 -39
  503. package/dist/SocialMediaSharing/index.d.ts +44 -59
  504. package/dist/SocialMediaSharing/index.js +114 -80
  505. package/dist/SocialMediaSharingDropdown/__tests__/SocialMediaSharingDropdown-test.d.ts +1 -0
  506. package/dist/SocialMediaSharingDropdown/index.d.ts +14 -18
  507. package/dist/SocialMediaSharingDropdown/index.js +110 -95
  508. package/dist/Testimonial/index.d.ts +42 -50
  509. package/dist/Testimonial/index.js +153 -128
  510. package/dist/assets/darkQuotes.svg +1 -0
  511. package/dist/assets/lightQuotes.svg +1 -0
  512. package/dist/assets/orange_squiggle.svg +1 -0
  513. package/dist/index.d.ts +89 -132
  514. package/dist/index.js +86 -116
  515. package/dist/lib/breakpointHooks/index.d.ts +7 -10
  516. package/dist/lib/breakpointHooks/index.js +53 -51
  517. package/dist/lib/catalogList/index.d.ts +3 -0
  518. package/dist/lib/catalogList/index.js +61 -52
  519. package/dist/lib/resourcesList/index.d.ts +5 -0
  520. package/dist/lib/resourcesList/index.js +236 -65
  521. package/dist/png.d.ts +4 -0
  522. package/dist/react-freezeframe.d.ts +1 -0
  523. package/dist/remoteAssets/components.d.ts +1 -0
  524. package/dist/remoteAssets/components.js +1 -5
  525. package/dist/stories/Atoms/Avatar.stories.js +16 -0
  526. package/dist/stories/Atoms/BetaSticker.stories.js +21 -0
  527. package/dist/stories/Atoms/Logos/LogoCodecademy.stories.js +8 -0
  528. package/dist/stories/Atoms/Logos/LogoCodecademyMini.stories.js +8 -0
  529. package/dist/stories/Atoms/Logos/LogoCodecademyPro.stories.js +8 -0
  530. package/dist/stories/Atoms/Logos/LogoCodecademyTeams.stories.js +8 -0
  531. package/dist/stories/Atoms/Logos/LogoFromSkillsoft.stories.js +9 -0
  532. package/dist/stories/Atoms/Logos/LogoLXStudio.stories.js +11 -0
  533. package/dist/stories/Atoms/Logos/ProLabel.stories.js +29 -0
  534. package/dist/stories/Atoms/RatingsBar.stories.js +16 -0
  535. package/dist/stories/Atoms/Subgrid.stories.js +87 -0
  536. package/dist/stories/Molecules/AppBar.stories.js +31 -0
  537. package/dist/stories/Molecules/AppHeader/AppHeader.stories.js +84 -0
  538. package/dist/stories/Molecules/AppHeader/AppHeaderDropdown.stories.js +67 -0
  539. package/dist/stories/Molecules/AppHeader/AppHeaderLink.stories.js +50 -0
  540. package/dist/stories/Molecules/AppHeader/AppHeaderLogo.stories.js +43 -0
  541. package/dist/stories/Molecules/AppHeader/AppHeaderMainMenuMobile.stories.js +34 -0
  542. package/dist/stories/Molecules/AppHeader/AppHeaderMobile.stories.js +40 -0
  543. package/dist/stories/Molecules/AppHeader/AppHeaderSubMenuMobile.stories.js +25 -0
  544. package/dist/stories/Molecules/AppHeader/LXStudioHeader.stories.js +176 -0
  545. package/dist/stories/Molecules/AppHeader/LXStudioMobileHeader.stories.js +84 -0
  546. package/dist/stories/Molecules/AppHeader/MockAppHeaderElements.d.ts +5 -0
  547. package/dist/stories/Molecules/AppHeader/MockAppHeaderElements.js +90 -0
  548. package/dist/stories/Molecules/AvatarChooser.stories.js +22 -0
  549. package/dist/stories/Molecules/BackToTopAnchor.stories.js +51 -0
  550. package/dist/stories/Molecules/Banner.stories.js +112 -0
  551. package/dist/stories/Molecules/Carousel.stories.js +47 -0
  552. package/dist/stories/Molecules/ContentGroupBaseCard.stories.js +175 -0
  553. package/dist/stories/Molecules/CurriculumCard.stories.js +201 -0
  554. package/dist/stories/Molecules/CurriculumCards/CareerPathCard.stories.js +94 -0
  555. package/dist/stories/Molecules/CurriculumCards/CertificationPathCard.stories.js +67 -0
  556. package/dist/stories/Molecules/CurriculumCards/CourseCard.stories.js +85 -0
  557. package/dist/stories/Molecules/CurriculumCards/LoadingCurriculumCard.stories.js +20 -0
  558. package/dist/stories/Molecules/CurriculumCards/SkillPathCard.stories.js +92 -0
  559. package/dist/stories/Molecules/DropdownButton.stories.js +207 -0
  560. package/dist/stories/Molecules/EmptySection.stories.js +167 -0
  561. package/dist/stories/Molecules/EnhancedBanner.stories.js +104 -0
  562. package/dist/stories/Molecules/ErrorContents.stories.js +19 -0
  563. package/dist/stories/Molecules/GridCollapse.stories.js +42 -0
  564. package/dist/stories/Molecules/HorizontalScrollMenu.examples.d.ts +1 -0
  565. package/dist/stories/Molecules/HorizontalScrollMenu.examples.js +67 -0
  566. package/dist/stories/Molecules/HorizontalScrollMenu.stories.js +11 -0
  567. package/dist/stories/Molecules/HubCard.stories.js +27 -0
  568. package/dist/stories/Molecules/InfoCard.stories.js +30 -0
  569. package/dist/stories/Molecules/InstructorCard.stories.js +125 -0
  570. package/dist/stories/Molecules/LearningOutcomeAssessmentScores.stories.js +23 -0
  571. package/dist/stories/Molecules/LearningOutcomeCard.stories.js +189 -0
  572. package/dist/stories/Molecules/LearningOutcomeFlyout.stories.js +62 -0
  573. package/dist/stories/Molecules/LearningOutcomeLevelBadge.stories.js +20 -0
  574. package/dist/stories/Molecules/LearningOutcomeLowAssessmentBadge.stories.js +10 -0
  575. package/dist/stories/Molecules/LearningOutcomePopover.stories.js +39 -0
  576. package/dist/stories/Molecules/LearningOutcomeTile.stories.js +276 -0
  577. package/dist/stories/Molecules/ListSection.stories.js +97 -0
  578. package/dist/stories/Molecules/Loading.stories.js +10 -0
  579. package/dist/stories/Molecules/NotificationList.stories.js +99 -0
  580. package/dist/stories/Molecules/PageSection.stories.js +67 -0
  581. package/dist/stories/Molecules/PastDueModalContents.stories.js +62 -0
  582. package/dist/stories/Molecules/PausableImage.stories.js +16 -0
  583. package/dist/stories/Molecules/Recurly.stories.js +56 -0
  584. package/dist/stories/Molecules/ResourceCard.stories.js +18 -0
  585. package/dist/stories/Molecules/SocialMediaSharing.stories.js +20 -0
  586. package/dist/stories/Molecules/SocialMediaSharingDropdown.stories.js +20 -0
  587. package/dist/stories/Molecules/Testimonial.stories.js +59 -0
  588. package/dist/stories/Organisms/GlobalFooter.stories.js +28 -0
  589. package/dist/stories/Organisms/GlobalHeader/About.stories.js +133 -0
  590. package/dist/stories/Organisms/GlobalHeader/Anon.stories.js +71 -0
  591. package/dist/stories/Organisms/GlobalHeader/Bootcamp.stories.js +29 -0
  592. package/dist/stories/Organisms/GlobalHeader/Enterprise.stories.js +105 -0
  593. package/dist/stories/Organisms/GlobalHeader/Free.stories.js +131 -0
  594. package/dist/stories/Organisms/GlobalHeader/Pro.stories.js +197 -0
  595. package/dist/stories/Organisms/GlobalHeader/Simple.stories.js +28 -0
  596. package/dist/stories/Organisms/GlobalPage.stories.js +138 -0
  597. package/dist/stories/Organisms/LayoutMenu.stories.js +239 -0
  598. package/dist/stories/Organisms/LayoutMenuVariant.stories.js +222 -0
  599. package/dist/stories/Organisms/PageAlerts.example.d.ts +2 -0
  600. package/dist/stories/Organisms/PageAlerts.example.js +42 -0
  601. package/dist/stories/Organisms/PageAlerts.stories.js +15 -0
  602. package/dist/stories/Organisms/PageLayoutWithSidebarMenu.stories.js +34 -0
  603. package/dist/stories/Organisms/PlanCard.stories.js +98 -0
  604. package/dist/stories/Organisms/PlanCardTeams.stories.js +27 -0
  605. package/dist/stories/Organisms/ScoreSummary.stories.js +295 -0
  606. package/dist/svg.d.ts +7 -0
  607. package/dist/theme.d.ts +5 -0
  608. package/package.json +5 -359
  609. package/dist/AbbreviatedCommunityEventCard/index.cjs +0 -89
  610. package/dist/AbbreviatedCommunityEventCard/index.d.cts +0 -11
  611. package/dist/AppBar/AppBarSection.cjs +0 -40
  612. package/dist/AppBar/AppBarSection.d.cts +0 -15
  613. package/dist/AppBar/index.cjs +0 -22
  614. package/dist/AppBar/index.d.cts +0 -13
  615. package/dist/AppBarDeprecated/AppBarSectionDeprecated.cjs +0 -26
  616. package/dist/AppBarDeprecated/AppBarSectionDeprecated.d.cts +0 -18
  617. package/dist/AppBarDeprecated/index.cjs +0 -27
  618. package/dist/AppBarDeprecated/index.d.cts +0 -18
  619. package/dist/AppBarDeprecated/styles/index.module.cjs +0 -5
  620. package/dist/AppBarDeprecated/styles/index.module.js +0 -5
  621. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.cjs +0 -134
  622. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.cjs +0 -300
  623. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.cjs +0 -274
  624. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.cjs +0 -110
  625. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.d.cts +0 -8
  626. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.cjs +0 -114
  627. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.cjs +0 -97
  628. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.d.cts +0 -16
  629. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.cjs +0 -36
  630. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.cjs +0 -61
  631. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.cjs +0 -59
  632. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.d.cts +0 -56
  633. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.cjs +0 -34
  634. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.cjs +0 -44
  635. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.cjs +0 -26
  636. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.cjs +0 -53
  637. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.d.cts +0 -10
  638. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.cjs +0 -85
  639. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.cjs +0 -80
  640. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.cjs +0 -25
  641. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.cjs +0 -118
  642. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.cjs +0 -341
  643. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.cjs +0 -105
  644. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.d.cts +0 -8
  645. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.cjs +0 -18
  646. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.cjs +0 -85
  647. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.cjs +0 -51
  648. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.cjs +0 -105
  649. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.cjs +0 -84
  650. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.cjs +0 -179
  651. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.cjs +0 -119
  652. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.cjs +0 -55
  653. package/dist/AppHeader/Search/DefaultResults.cjs +0 -105
  654. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.cjs +0 -70
  655. package/dist/AppHeader/Search/SearchButton.cjs +0 -50
  656. package/dist/AppHeader/Search/SearchPane.cjs +0 -482
  657. package/dist/AppHeader/Search/SearchTrackingProvider/index.cjs +0 -32
  658. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.cjs +0 -43
  659. package/dist/AppHeader/Search/SearchWorker/index.cjs +0 -24
  660. package/dist/AppHeader/Search/SearchWorker/index.d.cts +0 -10
  661. package/dist/AppHeader/Search/SearchWorker/src.cjs +0 -159
  662. package/dist/AppHeader/Search/SearchWorker/types.cjs +0 -10
  663. package/dist/AppHeader/Search/SearchWorker/types.d.cts +0 -30
  664. package/dist/AppHeader/Search/SearchWorker/worker.cjs +0 -26
  665. package/dist/AppHeader/Search/consts.cjs +0 -68
  666. package/dist/AppHeader/Search/consts.d.cts +0 -26
  667. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.cjs +0 -17
  668. package/dist/AppHeader/Search/safelyRedirect.cjs +0 -39
  669. package/dist/AppHeader/Search/types.d.cts +0 -14
  670. package/dist/AppHeader/Search/useHeaderSearch.cjs +0 -39
  671. package/dist/AppHeader/index.cjs +0 -97
  672. package/dist/AppHeader/index.d.cts +0 -28
  673. package/dist/AppHeader/shared/elements.cjs +0 -172
  674. package/dist/AppHeader/shared/keyboardNav.cjs +0 -67
  675. package/dist/AppHeader/shared/types.cjs +0 -6
  676. package/dist/AppHeader/shared/types.d.cts +0 -111
  677. package/dist/AppHeader/shared/utils.cjs +0 -85
  678. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.cjs +0 -126
  679. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.d.cts +0 -12
  680. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.cjs +0 -29
  681. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.cjs +0 -110
  682. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.d.cts +0 -12
  683. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.cjs +0 -61
  684. package/dist/AppHeaderMobile/index.cjs +0 -194
  685. package/dist/AppHeaderMobile/index.d.cts +0 -24
  686. package/dist/Avatar/index.cjs +0 -52
  687. package/dist/Avatar/index.d.cts +0 -40
  688. package/dist/AvatarChooser/index.cjs +0 -99
  689. package/dist/AvatarChooser/index.d.cts +0 -15
  690. package/dist/BackToTopAnchor/index.cjs +0 -33
  691. package/dist/BackToTopAnchor/index.d.cts +0 -15
  692. package/dist/Banner/CountdownTimer.cjs +0 -111
  693. package/dist/Banner/CountdownTimer.d.cts +0 -10
  694. package/dist/Banner/EnhancedBanner.cjs +0 -142
  695. package/dist/Banner/EnhancedBanner.d.cts +0 -20
  696. package/dist/Banner/index.cjs +0 -83
  697. package/dist/Banner/index.d.cts +0 -24
  698. package/dist/BetaSticker/index.cjs +0 -63
  699. package/dist/BetaSticker/index.d.cts +0 -9
  700. package/dist/CareerPathCard/index.cjs +0 -34
  701. package/dist/CareerPathCard/index.d.cts +0 -26
  702. package/dist/Carousel/elements.cjs +0 -12
  703. package/dist/Carousel/index.cjs +0 -194
  704. package/dist/Carousel/index.d.cts +0 -27
  705. package/dist/CertificationPathCard/index.cjs +0 -41
  706. package/dist/CertificationPathCard/index.d.cts +0 -27
  707. package/dist/CoachingSessionCard/index.cjs +0 -87
  708. package/dist/CoachingSessionCard/index.d.cts +0 -24
  709. package/dist/CommunityEventCard/EventTypeIcon.cjs +0 -61
  710. package/dist/CommunityEventCard/index.cjs +0 -260
  711. package/dist/CommunityEventCard/index.d.cts +0 -31
  712. package/dist/CommunityEventToast/index.cjs +0 -35
  713. package/dist/CommunityEventToast/index.d.cts +0 -9
  714. package/dist/ContentGroupBaseCard/helpers.cjs +0 -15
  715. package/dist/ContentGroupBaseCard/helpers.d.cts +0 -8
  716. package/dist/ContentGroupBaseCard/index.cjs +0 -215
  717. package/dist/ContentGroupBaseCard/index.d.cts +0 -40
  718. package/dist/ContentGroupBaseCard/shared.cjs +0 -80
  719. package/dist/ContentGroupBaseCard/types.cjs +0 -18
  720. package/dist/ContentGroupBaseCard/types.d.cts +0 -13
  721. package/dist/CourseCard/index.cjs +0 -32
  722. package/dist/CourseCard/index.d.cts +0 -25
  723. package/dist/CurriculumCard/BottomTag/index.cjs +0 -30
  724. package/dist/CurriculumCard/BottomTag/index.d.cts +0 -4
  725. package/dist/CurriculumCard/Difficulty/helpers.cjs +0 -17
  726. package/dist/CurriculumCard/Difficulty/helpers.d.cts +0 -13
  727. package/dist/CurriculumCard/Difficulty/index.cjs +0 -45
  728. package/dist/CurriculumCard/Difficulty/index.d.cts +0 -7
  729. package/dist/CurriculumCard/Difficulty/types.cjs +0 -21
  730. package/dist/CurriculumCard/Difficulty/types.d.cts +0 -25
  731. package/dist/CurriculumCard/Footer/index.cjs +0 -49
  732. package/dist/CurriculumCard/Image/index.cjs +0 -50
  733. package/dist/CurriculumCard/Subtitle/helpers.cjs +0 -9
  734. package/dist/CurriculumCard/Subtitle/index.cjs +0 -40
  735. package/dist/CurriculumCard/Subtitle/index.d.cts +0 -10
  736. package/dist/CurriculumCard/index.cjs +0 -122
  737. package/dist/CurriculumCard/index.d.cts +0 -63
  738. package/dist/DropdownButton/DropdownList.cjs +0 -57
  739. package/dist/DropdownButton/DropdownList.d.cts +0 -19
  740. package/dist/DropdownButton/index.cjs +0 -140
  741. package/dist/DropdownButton/index.d.cts +0 -80
  742. package/dist/DropdownButton/useDynamicPopoverPosition.cjs +0 -41
  743. package/dist/EditorialImage/index.cjs +0 -21
  744. package/dist/EditorialImage/index.d.cts +0 -14
  745. package/dist/EditorialImage/index.d.ts +0 -14
  746. package/dist/EditorialImage/index.js +0 -19
  747. package/dist/EditorialImage/styles.module.cjs +0 -5
  748. package/dist/EditorialImage/styles.module.js +0 -5
  749. package/dist/EmptySection/index.cjs +0 -159
  750. package/dist/EmptySection/index.d.cts +0 -32
  751. package/dist/ErrorContents/index.cjs +0 -64
  752. package/dist/ErrorContents/index.d.cts +0 -12
  753. package/dist/FeatureList/index.cjs +0 -41
  754. package/dist/FeatureList/index.d.cts +0 -18
  755. package/dist/GlobalFooter/FooterHeading.cjs +0 -28
  756. package/dist/GlobalFooter/FooterLegal/LegalLinks.cjs +0 -77
  757. package/dist/GlobalFooter/FooterLegal/MadeIn.cjs +0 -79
  758. package/dist/GlobalFooter/FooterLegal/index.cjs +0 -29
  759. package/dist/GlobalFooter/FooterLinks.cjs +0 -51
  760. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.cjs +0 -297
  761. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.cjs +0 -254
  762. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.cjs +0 -246
  763. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.cjs +0 -27
  764. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.cjs +0 -72
  765. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.cjs +0 -70
  766. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.d.cts +0 -7
  767. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.cjs +0 -59
  768. package/dist/GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.cjs +0 -5
  769. package/dist/GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.js +0 -5
  770. package/dist/GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.cjs +0 -5
  771. package/dist/GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.js +0 -5
  772. package/dist/GlobalFooter/FooterNavLinks/index.cjs +0 -44
  773. package/dist/GlobalFooter/index.cjs +0 -38
  774. package/dist/GlobalFooter/index.d.cts +0 -26
  775. package/dist/GlobalFooter/types.d.cts +0 -16
  776. package/dist/GlobalHeader/GlobalHeaderItems.cjs +0 -443
  777. package/dist/GlobalHeader/GlobalHeaderVariants.cjs +0 -351
  778. package/dist/GlobalHeader/context.cjs +0 -82
  779. package/dist/GlobalHeader/index.cjs +0 -171
  780. package/dist/GlobalHeader/index.d.cts +0 -10
  781. package/dist/GlobalHeader/types.d.cts +0 -124
  782. package/dist/GlobalHeader/urlHelpers.cjs +0 -22
  783. package/dist/GlobalPage/index.cjs +0 -45
  784. package/dist/GlobalPage/index.d.cts +0 -51
  785. package/dist/Grid/GridCollapse.cjs +0 -161
  786. package/dist/Grid/GridCollapse.d.cts +0 -49
  787. package/dist/Grid/Subgrid.cjs +0 -41
  788. package/dist/Grid/Subgrid.d.cts +0 -29
  789. package/dist/Grid/getCSSFromColumnCount.cjs +0 -10
  790. package/dist/Grid/getCSSFromColumnCount.d.cts +0 -10
  791. package/dist/Grid/index.cjs +0 -9
  792. package/dist/Grid/index.d.cts +0 -4
  793. package/dist/HeaderHeightArea/index.cjs +0 -38
  794. package/dist/HeaderHeightArea/index.d.cts +0 -13
  795. package/dist/HeaderHeightArea/useIsInHeaderRegion.cjs +0 -17
  796. package/dist/HorizontalScrollMenu/index.cjs +0 -68
  797. package/dist/HorizontalScrollMenu/index.d.cts +0 -10
  798. package/dist/HubCard/index.cjs +0 -40
  799. package/dist/HubCard/index.d.cts +0 -12
  800. package/dist/InfoCard/index.cjs +0 -121
  801. package/dist/InfoCard/index.d.cts +0 -23
  802. package/dist/Konamimojisplosion/Konamimojisplosion.cjs +0 -10
  803. package/dist/Konamimojisplosion/Konamimojisplosion.d.cts +0 -9
  804. package/dist/Konamimojisplosion/index.cjs +0 -5
  805. package/dist/Konamimojisplosion/index.d.cts +0 -3
  806. package/dist/Konamimojisplosion/useKonamimojisplosion.cjs +0 -47
  807. package/dist/Konamimojisplosion/useKonamimojisplosion.d.cts +0 -4
  808. package/dist/LandingPage/CTA.cjs +0 -11
  809. package/dist/LandingPage/CTA.js +0 -9
  810. package/dist/LandingPage/Description.cjs +0 -18
  811. package/dist/LandingPage/Description.d.cts +0 -10
  812. package/dist/LandingPage/Feature.cjs +0 -89
  813. package/dist/LandingPage/Feature.js +0 -81
  814. package/dist/LandingPage/PageFAQs.cjs +0 -49
  815. package/dist/LandingPage/PageFAQs.d.cts +0 -14
  816. package/dist/LandingPage/PageFeatures.cjs +0 -99
  817. package/dist/LandingPage/PageFeatures.d.cts +0 -20
  818. package/dist/LandingPage/PageFeatures.d.ts +0 -20
  819. package/dist/LandingPage/PageFeatures.js +0 -97
  820. package/dist/LandingPage/PageFeaturesEnhanced.cjs +0 -152
  821. package/dist/LandingPage/PageFeaturesEnhanced.d.cts +0 -11
  822. package/dist/LandingPage/PageFeaturesEnhanced.d.ts +0 -11
  823. package/dist/LandingPage/PageFeaturesEnhanced.js +0 -150
  824. package/dist/LandingPage/PageFeaturesWithReferences.cjs +0 -128
  825. package/dist/LandingPage/PageFeaturesWithReferences.d.cts +0 -23
  826. package/dist/LandingPage/PageFeaturesWithReferences.d.ts +0 -23
  827. package/dist/LandingPage/PageFeaturesWithReferences.js +0 -126
  828. package/dist/LandingPage/PageHero.cjs +0 -20
  829. package/dist/LandingPage/PageHero.d.cts +0 -11
  830. package/dist/LandingPage/PageHero.d.ts +0 -11
  831. package/dist/LandingPage/PageHero.js +0 -18
  832. package/dist/LandingPage/PagePrefooter.cjs +0 -66
  833. package/dist/LandingPage/PagePrefooter.d.cts +0 -9
  834. package/dist/LandingPage/PagePrefooter.d.ts +0 -9
  835. package/dist/LandingPage/PagePrefooter.js +0 -64
  836. package/dist/LandingPage/PageSingleFeature.cjs +0 -108
  837. package/dist/LandingPage/PageSingleFeature.d.cts +0 -60
  838. package/dist/LandingPage/PageSingleFeature.d.ts +0 -60
  839. package/dist/LandingPage/PageSingleFeature.js +0 -105
  840. package/dist/LandingPage/PageTestimonials.cjs +0 -108
  841. package/dist/LandingPage/PageTestimonials.d.cts +0 -25
  842. package/dist/LandingPage/PageTestimonials.d.ts +0 -25
  843. package/dist/LandingPage/PageTestimonials.js +0 -105
  844. package/dist/LandingPage/PageVideoGallery.cjs +0 -70
  845. package/dist/LandingPage/PageVideoGallery.d.cts +0 -15
  846. package/dist/LandingPage/PageVideoGallery.d.ts +0 -15
  847. package/dist/LandingPage/PageVideoGallery.js +0 -67
  848. package/dist/LandingPage/Title.cjs +0 -33
  849. package/dist/LandingPage/Title.d.cts +0 -27
  850. package/dist/LandingPage/TitleWithEyebrow.cjs +0 -39
  851. package/dist/LandingPage/TitleWithEyebrow.d.cts +0 -15
  852. package/dist/LandingPage/index.cjs +0 -29
  853. package/dist/LandingPage/index.d.cts +0 -15
  854. package/dist/LandingPage/types.d.cts +0 -31
  855. package/dist/LayoutMenu/AccordionMenu.cjs +0 -64
  856. package/dist/LayoutMenu/AccordionMenu.d.cts +0 -18
  857. package/dist/LayoutMenu/LayoutMenu.cjs +0 -107
  858. package/dist/LayoutMenu/LayoutMenu.d.cts +0 -48
  859. package/dist/LayoutMenu/LayoutMenuSection.cjs +0 -38
  860. package/dist/LayoutMenu/SectionItemLink.cjs +0 -19
  861. package/dist/LayoutMenu/SectionItemLink.d.cts +0 -11
  862. package/dist/LayoutMenu/SelectedSectionItem.cjs +0 -22
  863. package/dist/LayoutMenu/SelectedSectionItem.d.cts +0 -7
  864. package/dist/LayoutMenu/index.cjs +0 -7
  865. package/dist/LayoutMenu/index.d.cts +0 -4
  866. package/dist/LayoutMenuVariant/AccordionMenu.cjs +0 -76
  867. package/dist/LayoutMenuVariant/AccordionMenu.d.cts +0 -19
  868. package/dist/LayoutMenuVariant/LayoutMenu.cjs +0 -88
  869. package/dist/LayoutMenuVariant/LayoutMenu.d.cts +0 -43
  870. package/dist/LayoutMenuVariant/LayoutMenuSection.cjs +0 -37
  871. package/dist/LayoutMenuVariant/SectionItemLink.cjs +0 -19
  872. package/dist/LayoutMenuVariant/SectionItemLink.d.cts +0 -12
  873. package/dist/LayoutMenuVariant/index.cjs +0 -19
  874. package/dist/LayoutMenuVariant/index.d.cts +0 -9
  875. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.cjs +0 -52
  876. package/dist/LearningOutcomeAssessmentScores/index.cjs +0 -25
  877. package/dist/LearningOutcomeAssessmentScores/index.d.cts +0 -10
  878. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.cjs +0 -50
  879. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.d.cts +0 -21
  880. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.cjs +0 -38
  881. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.d.cts +0 -18
  882. package/dist/LearningOutcomeBadges/index.cjs +0 -8
  883. package/dist/LearningOutcomeBadges/index.d.cts +0 -3
  884. package/dist/LearningOutcomeCard/index.cjs +0 -167
  885. package/dist/LearningOutcomeCard/index.d.cts +0 -30
  886. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.cjs +0 -41
  887. package/dist/LearningOutcomeFlyout/index.cjs +0 -316
  888. package/dist/LearningOutcomeFlyout/index.d.cts +0 -12
  889. package/dist/LearningOutcomeFlyout/types.cjs +0 -10
  890. package/dist/LearningOutcomeFlyout/types.d.cts +0 -66
  891. package/dist/LearningOutcomePopover/index.cjs +0 -117
  892. package/dist/LearningOutcomePopover/index.d.cts +0 -13
  893. package/dist/LearningOutcomeTile/Tile.cjs +0 -68
  894. package/dist/LearningOutcomeTile/index.cjs +0 -96
  895. package/dist/LearningOutcomeTile/index.d.cts +0 -7
  896. package/dist/LearningOutcomeTile/types.cjs +0 -11
  897. package/dist/LearningOutcomeTile/types.d.cts +0 -45
  898. package/dist/ListSection/index.cjs +0 -56
  899. package/dist/ListSection/index.d.cts +0 -25
  900. package/dist/Loading/index.cjs +0 -91
  901. package/dist/Loading/index.d.cts +0 -9
  902. package/dist/Loading/styles.module.cjs +0 -5
  903. package/dist/Loading/styles.module.js +0 -5
  904. package/dist/LoadingCurriculumCard/index.cjs +0 -85
  905. package/dist/LoadingCurriculumCard/index.d.cts +0 -10
  906. package/dist/Logos/LogoCodecademy/index.cjs +0 -23
  907. package/dist/Logos/LogoCodecademy/index.d.cts +0 -6
  908. package/dist/Logos/LogoCodecademyMini/index.cjs +0 -19
  909. package/dist/Logos/LogoCodecademyMini/index.d.cts +0 -6
  910. package/dist/Logos/LogoCodecademyPro/index.cjs +0 -26
  911. package/dist/Logos/LogoCodecademyPro/index.d.cts +0 -6
  912. package/dist/Logos/LogoCodecademyTeams/index.cjs +0 -53
  913. package/dist/Logos/LogoCodecademyTeams/index.d.cts +0 -6
  914. package/dist/Logos/LogoFromSkillsoft/index.cjs +0 -49
  915. package/dist/Logos/LogoFromSkillsoft/index.d.cts +0 -7
  916. package/dist/Logos/LogoLXStudio/index.cjs +0 -38
  917. package/dist/Logos/LogoLXStudio/index.d.cts +0 -7
  918. package/dist/Logos/ProLabel/ProLabelCutout/index.cjs +0 -38
  919. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.cjs +0 -39
  920. package/dist/Logos/ProLabel/index.cjs +0 -27
  921. package/dist/Logos/ProLabel/index.d.cts +0 -18
  922. package/dist/Logos/index.cjs +0 -15
  923. package/dist/Logos/index.d.cts +0 -8
  924. package/dist/Logos/shared.cjs +0 -14
  925. package/dist/Logos/shared.d.cts +0 -232
  926. package/dist/MarketingToaster/index.cjs +0 -50
  927. package/dist/MarketingToaster/index.d.cts +0 -11
  928. package/dist/NotFoundContent/404.cjs +0 -5
  929. package/dist/NotFoundContent/404.js +0 -5
  930. package/dist/NotFoundContent/index.cjs +0 -49
  931. package/dist/NotFoundContent/index.d.cts +0 -11
  932. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.cjs +0 -34
  933. package/dist/NotificationList/EmptyNotification/index.cjs +0 -44
  934. package/dist/NotificationList/NotificationItem.cjs +0 -162
  935. package/dist/NotificationList/NotificationItem.d.cts +0 -12
  936. package/dist/NotificationList/index.cjs +0 -45
  937. package/dist/NotificationList/index.d.cts +0 -13
  938. package/dist/NotificationList/typings.d.cts +0 -19
  939. package/dist/Notifications/NotificationBell.cjs +0 -61
  940. package/dist/Notifications/NotificationsContents.cjs +0 -80
  941. package/dist/Notifications/NotificationsDropdown.cjs +0 -24
  942. package/dist/Notifications/constants.cjs +0 -9
  943. package/dist/Notifications/elements.cjs +0 -23
  944. package/dist/Notifications/types.d.cts +0 -17
  945. package/dist/Notifications/useHeaderNotifications.cjs +0 -38
  946. package/dist/Notifications/useNotificationButtons.cjs +0 -53
  947. package/dist/PageAlerts/PageAlerts.cjs +0 -69
  948. package/dist/PageAlerts/PageAlerts.d.cts +0 -16
  949. package/dist/PageAlerts/PageAlertsProvider.cjs +0 -41
  950. package/dist/PageAlerts/PageAlertsProvider.d.cts +0 -15
  951. package/dist/PageAlerts/index.cjs +0 -8
  952. package/dist/PageAlerts/index.d.cts +0 -4
  953. package/dist/PageAlerts/types.d.cts +0 -18
  954. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.cjs +0 -50
  955. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.d.cts +0 -22
  956. package/dist/PageLayoutWithSidebarMenu/index.cjs +0 -3
  957. package/dist/PageLayoutWithSidebarMenu/index.d.cts +0 -2
  958. package/dist/PageSection/index.cjs +0 -65
  959. package/dist/PageSection/index.d.cts +0 -20
  960. package/dist/PastDue/PastDueModalContents/index.cjs +0 -28
  961. package/dist/PastDue/PastDueModalContents/index.d.cts +0 -12
  962. package/dist/PastDue/index.cjs +0 -5
  963. package/dist/PastDue/index.d.cts +0 -3
  964. package/dist/PastDue/pastDueMessages.cjs +0 -55
  965. package/dist/PastDue/pastDueMessages.d.cts +0 -8
  966. package/dist/PausableImage/BaseImage/index.cjs +0 -77
  967. package/dist/PausableImage/index.cjs +0 -32
  968. package/dist/PausableImage/index.d.cts +0 -16
  969. package/dist/PlanCard/PlanCardBanner.cjs +0 -30
  970. package/dist/PlanCard/PlanCardBanner.d.cts +0 -10
  971. package/dist/PlanCard/PlanFeature.cjs +0 -91
  972. package/dist/PlanCard/PopularBadge.cjs +0 -20
  973. package/dist/PlanCard/PricingAmount.cjs +0 -122
  974. package/dist/PlanCard/RecommendedBadge.cjs +0 -31
  975. package/dist/PlanCard/consts.cjs +0 -220
  976. package/dist/PlanCard/index.cjs +0 -341
  977. package/dist/PlanCard/index.d.cts +0 -22
  978. package/dist/PlanCard/types.cjs +0 -75
  979. package/dist/PlanCard/types.d.cts +0 -43
  980. package/dist/PlanCardTeams/consts.cjs +0 -22
  981. package/dist/PlanCardTeams/index.cjs +0 -140
  982. package/dist/PlanCardTeams/index.d.cts +0 -12
  983. package/dist/PricingSection/ConditionalColorMode.cjs +0 -14
  984. package/dist/PricingSection/PricingCard/PricingAmount.cjs +0 -122
  985. package/dist/PricingSection/PricingCard/RecommendedBadge.cjs +0 -30
  986. package/dist/PricingSection/PricingCard/index.cjs +0 -176
  987. package/dist/PricingSection/PricingCard/types.cjs +0 -67
  988. package/dist/PricingSection/PricingCard/types.d.cts +0 -26
  989. package/dist/PricingSection/ProductCTA.cjs +0 -106
  990. package/dist/PricingSection/Products.cjs +0 -86
  991. package/dist/PricingSection/config.cjs +0 -33
  992. package/dist/PricingSection/index.cjs +0 -36
  993. package/dist/PricingSection/index.d.cts +0 -22
  994. package/dist/PricingSection/types.cjs +0 -14
  995. package/dist/PricingSection/types.d.cts +0 -18
  996. package/dist/ProLogoAlt/index.cjs +0 -28
  997. package/dist/ProLogoAlt/index.d.cts +0 -13
  998. package/dist/ProductFeatureShowcase/index.cjs +0 -108
  999. package/dist/ProductFeatureShowcase/index.d.cts +0 -19
  1000. package/dist/QuizScore/index.cjs +0 -93
  1001. package/dist/QuizScore/index.d.cts +0 -15
  1002. package/dist/RatingsBar/index.cjs +0 -44
  1003. package/dist/RatingsBar/index.d.cts +0 -16
  1004. package/dist/Recurly/context/NoProvider.cjs +0 -12
  1005. package/dist/Recurly/context/elements/index.cjs +0 -45
  1006. package/dist/Recurly/context/elements/index.d.cts +0 -15
  1007. package/dist/Recurly/context/recurly/index.cjs +0 -49
  1008. package/dist/Recurly/context/recurly/index.d.cts +0 -38
  1009. package/dist/Recurly/context/recurly/loadRecurly.cjs +0 -21
  1010. package/dist/Recurly/context/recurly/loadRecurly.d.cts +0 -9
  1011. package/dist/Recurly/context/recurly/w.cjs +0 -6
  1012. package/dist/Recurly/fields/RecurlyField.cjs +0 -69
  1013. package/dist/Recurly/fields/RecurlyField.d.cts +0 -18
  1014. package/dist/Recurly/fields/elements.cjs +0 -63
  1015. package/dist/Recurly/fields/elements.d.cts +0 -22
  1016. package/dist/Recurly/index.cjs +0 -13
  1017. package/dist/Recurly/index.d.cts +0 -5
  1018. package/dist/ResourceCard/index.cjs +0 -59
  1019. package/dist/ResourceCard/index.d.cts +0 -19
  1020. package/dist/ScoreSummary/SubScores.cjs +0 -136
  1021. package/dist/ScoreSummary/SubScores.d.cts +0 -40
  1022. package/dist/ScoreSummary/helpers.cjs +0 -20
  1023. package/dist/ScoreSummary/index.cjs +0 -98
  1024. package/dist/ScoreSummary/index.d.cts +0 -25
  1025. package/dist/ScoreSummary/types.d.cts +0 -313
  1026. package/dist/SkillPathCard/index.cjs +0 -34
  1027. package/dist/SkillPathCard/index.d.cts +0 -25
  1028. package/dist/SocialMediaSharing/SocialShareIconLink.cjs +0 -43
  1029. package/dist/SocialMediaSharing/SocialShareIconLink.d.cts +0 -9
  1030. package/dist/SocialMediaSharing/index.cjs +0 -86
  1031. package/dist/SocialMediaSharing/index.d.cts +0 -64
  1032. package/dist/SocialMediaSharingDropdown/index.cjs +0 -98
  1033. package/dist/SocialMediaSharingDropdown/index.d.cts +0 -19
  1034. package/dist/Testimonial/index.cjs +0 -141
  1035. package/dist/Testimonial/index.d.cts +0 -53
  1036. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.cjs +0 -14
  1037. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.js +0 -14
  1038. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.cjs +0 -16
  1039. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.js +0 -16
  1040. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.cjs +0 -11
  1041. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.js +0 -11
  1042. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.cjs +0 -18
  1043. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.js +0 -12
  1044. package/dist/_virtual/rolldown_runtime.cjs +0 -43
  1045. package/dist/_virtual/rolldown_runtime.js +0 -18
  1046. package/dist/assets/navyQuotes.cjs +0 -5
  1047. package/dist/assets/navyQuotes.js +0 -5
  1048. package/dist/assets/styles.module-CAlrRbjX.scss +0 -36
  1049. package/dist/index.cjs +0 -279
  1050. package/dist/index.d.cts +0 -122
  1051. package/dist/lib/breakpointHooks/index.cjs +0 -64
  1052. package/dist/lib/breakpointHooks/index.d.cts +0 -46
  1053. package/dist/lib/catalogList/index.cjs +0 -52
  1054. package/dist/lib/resourcesList/index.cjs +0 -68
  1055. package/dist/remoteAssets/components.cjs +0 -6
  1056. /package/dist/{assets/index.module-Dz0I2VL5.scss → AppBarDeprecated/styles/index.module.scss} +0 -0
  1057. /package/dist/{assets/download-on-the-app-store-BbQ68gT5.svg → GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.svg} +0 -0
  1058. /package/dist/{assets/get-it-on-google-play-CnA-UUOj.png → GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.png} +0 -0
  1059. /package/dist/{assets/styles.module-DbrbHmEX.scss → Loading/styles.module.scss} +0 -0
  1060. /package/dist/{assets/404-BM2-wvJv.svg → NotFoundContent/404.svg} +0 -0
  1061. /package/dist/assets/{navyQuotes-C0ZxClwi.svg → navyQuotes.svg} +0 -0
@@ -1,479 +1,629 @@
1
- import { useOnEscHandler } from "../shared/keyboardNav.js";
2
- import { useSearchTrackingContext } from "./SearchTrackingProvider/index.js";
3
- import { searchPlaceholder } from "./consts.js";
4
- import { PopularContent, PopularSearches } from "./DefaultResults.js";
5
- import { useUrlChangeDetection } from "./hooks/useUrlChangeDetection.js";
6
- import { QuizAndHelpCenterLinks } from "./QuizAndHelpCenterLinks.js";
7
- import { safelyRedirect } from "./safelyRedirect.js";
8
- import { searchWorker } from "./SearchWorker/index.js";
9
- import { Badge, Box, ContentContainer, FlexBox, FocusTrap, IconButton, Menu, MenuItem, Shimmer, StrokeButton, Text } from "@codecademy/gamut";
10
- import { css, theme, useCurrentMode } from "@codecademy/gamut-styles";
11
- import styled from "@emotion/styled";
12
- import * as React$1 from "react";
13
- import { useEffect, useRef, useState } from "react";
14
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
- import { MiniDeleteIcon, SearchIcon } from "@codecademy/gamut-icons";
16
- import { useTheme } from "@emotion/react";
17
-
18
- //#region src/AppHeader/Search/SearchPane.tsx
19
- const Form = Box.withComponent("form");
20
- const Input$1 = Box.withComponent("input");
21
- const QueryContainer = styled(ContentContainer)(css({
22
- display: "flex",
23
- width: "100%",
24
- pt: 16,
25
- pb: {
26
- _: 0,
27
- md: 24
28
- },
29
- px: { _: 24 }
30
- }));
31
- const SuggestionContainer = styled(ContentContainer)(css({
32
- pt: 16,
33
- pb: {
34
- _: 0,
35
- md: 24
36
- },
37
- px: { _: 24 }
38
- }));
39
- const StyledInput = styled(Input$1)(css({
40
- outline: `none`,
41
- "&::placeholder": { textColor: theme.colors["text-secondary"] }
42
- }));
43
- const InlineResultLi = styled(MenuItem)(css({
44
- pl: 0,
45
- py: 8,
46
- fontSize: 16,
47
- "&:focus-visible:after": { left: -4 }
48
- }));
49
- const InlineLoaderLi = styled.li(css({
50
- listStyleType: "none",
51
- display: "flex",
52
- gap: 12,
53
- alignItems: "center"
54
- }));
55
- const SemiboldSearchIcon = styled(SearchIcon)`
56
- overflow: visible !important;
57
- circle,
58
- path {
59
- stroke-width: 2px;
1
+ import _styled from "@emotion/styled/base";
2
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
3
+ import { Badge, Box, ContentContainer, FlexBox, FocusTrap, IconButton, Menu, MenuItem, Shimmer, StrokeButton, Text } from '@codecademy/gamut';
4
+ import { MiniDeleteIcon, SearchIcon } from '@codecademy/gamut-icons';
5
+ import { css, theme, useCurrentMode } from '@codecademy/gamut-styles';
6
+ import { useTheme } from '@emotion/react';
7
+ import * as React from 'react';
8
+ import { useEffect, useRef, useState } from 'react';
9
+ import { useGlobalHeaderDynamicDataContext } from '../../GlobalHeader/context';
10
+ import { MarketingBanner } from '../AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner';
11
+ import { useOnEscHandler } from '../shared';
12
+ import { searchPlaceholder } from './consts';
13
+ import { PopularContent, PopularSearches } from './DefaultResults';
14
+ import { useUrlChangeDetection } from './hooks/useUrlChangeDetection';
15
+ import { QuizAndHelpCenterLinks } from './QuizAndHelpCenterLinks';
16
+ import { safelyRedirect } from './safelyRedirect';
17
+ import { useSearchTrackingContext } from './SearchTrackingProvider';
18
+ import { searchWorker } from './SearchWorker';
19
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
20
+ const Form = Box.withComponent('form', {
21
+ target: "e1e5b20r7",
22
+ label: "Form"
23
+ });
24
+ const Input = Box.withComponent('input', {
25
+ target: "e1e5b20r8",
26
+ label: "Input"
27
+ });
28
+ const QueryContainer = /*#__PURE__*/_styled(ContentContainer, {
29
+ target: "e1e5b20r6",
30
+ label: "QueryContainer"
31
+ })(({
32
+ $compact
33
+ }) => css({
34
+ display: 'flex',
35
+ width: '100%',
36
+ pt: 16,
37
+ pb: $compact ? {
38
+ _: 0,
39
+ md: 4
40
+ } : {
41
+ _: 0,
42
+ md: 24
43
+ },
44
+ px: {
45
+ _: 24
46
+ }
47
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVDdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL0dsb2JhbEhlYWRlci9jb250ZXh0JztcbmltcG9ydCB7IE1hcmtldGluZ0Jhbm5lciB9IGZyb20gJy4uL0FwcEhlYWRlckVsZW1lbnRzL0FwcEhlYWRlckNhdGFsb2dEcm9wZG93bi9NYXJrZXRpbmdCYW5uZXInO1xuaW1wb3J0IHsgdXNlT25Fc2NIYW5kbGVyIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IHNlYXJjaFBsYWNlaG9sZGVyIH0gZnJvbSAnLi9jb25zdHMnO1xuaW1wb3J0IHsgUG9wdWxhckNvbnRlbnQsIFBvcHVsYXJTZWFyY2hlcyB9IGZyb20gJy4vRGVmYXVsdFJlc3VsdHMnO1xuaW1wb3J0IHsgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uIH0gZnJvbSAnLi9ob29rcy91c2VVcmxDaGFuZ2VEZXRlY3Rpb24nO1xuaW1wb3J0IHsgUXVpekFuZEhlbHBDZW50ZXJMaW5rcyB9IGZyb20gJy4vUXVpekFuZEhlbHBDZW50ZXJMaW5rcyc7XG5pbXBvcnQgeyBzYWZlbHlSZWRpcmVjdCB9IGZyb20gJy4vc2FmZWx5UmVkaXJlY3QnO1xuaW1wb3J0IHsgdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0IH0gZnJvbSAnLi9TZWFyY2hUcmFja2luZ1Byb3ZpZGVyJztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcik8eyAkY29tcGFjdD86IGJvb2xlYW4gfT4oXG4gICh7ICRjb21wYWN0IH0pID0+XG4gICAgY3NzKHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBwdDogMTYsXG4gICAgICBwYjogJGNvbXBhY3QgPyB7IF86IDAsIG1kOiA0IH0gOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgICAgcHg6IHsgXzogMjQgfSxcbiAgICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgcHQ6ICRjb21wYWN0ID8gNCA6IDE2LFxuICAgICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBbc2VhcmNoUmVzdWx0Q2xpY2tlZCwgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyB9ID0gdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0KCk7XG4gIGNvbnN0IHsgZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGEgfSA9IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCgpO1xuXG4gIGNvbnN0IGJhbm5lciA9IGdsb2JhbEhlYWRlckR5bmFtaWNEYXRhPy5jYXRhbG9nRHJvcGRvd24/LmJhbm5lcjtcbiAgY29uc3Qgc2hvd01hcmtldGluZ0Jhbm5lciA9IGJhbm5lcj8udGV4dCAmJiBiYW5uZXI/LmhyZWYgJiYgTWFya2V0aW5nQmFubmVyO1xuXG4gIGNvbnN0IHNlYXJjaEFzWW91VHlwZUxvYWRlciA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gKHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgPyBybmRMb2FkZXIoKSA6IG51bGwpLFxuICAgIFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzXVxuICApO1xuXG4gIGNvbnN0IHZhbHVlVHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcblxuICBjb25zdCBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgPVxuICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgJiYgIXNlYXJjaFJlc3VsdENsaWNrZWQ7XG5cbiAgY29uc3QgY2xvc2VTZWFyY2ggPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdXNlciBtYWRlIGEgc2VhcmNoIGFuZCB0aGVuIGNsb3NlZCBzZWFyY2ggcGFuZVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdG9nZ2xlU2VhcmNoKCk7XG4gICAgLy8gYWRkcyBhIGxpdHRsZSBkZWxheSBiZXR3ZWVuIGNsb3NpbmcgdGhlIHNlYXJjaCBwYW5lIGFuZCBmb2N1c2luZyBvbiB0aGUgYnV0dG9uXG4gICAgLy8gdG8gcHJldmVudCB0aGUgc2VhcmNoIHBhbmUgZnJvbSBpbW1lZGlhdGVseSBvcGVuaW5nIGFnYWluXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoQnV0dG9uUmVmICYmIHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudCkge1xuICAgICAgICBzZWFyY2hCdXR0b25SZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAxMCk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlT25Fc2NIYW5kbGVyKGNsb3NlU2VhcmNoKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICAgIC8vIHJlc2V0IHRvIGZhbHNlIHdoZW4gdGhlIHNlYXJjaCBxdWVyeSBjaGFuZ2VzXG4gICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZChmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHRoZSB1c2VyIHN1Ym1pdHMgdGhlIGZvcm0gdG8gY2FwdHVyZSBjb21wbGV0ZSBxdWVyeVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2spIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFySW5wdXQgPSAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IGJlZm9yZSB1c2VyIGNsZWFycyBpbnB1dFxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUoJycpO1xuICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAvLyByZXNldCB0aGUgY29udGV4dCB3aXRoIGVtcHR5IHZhbHVlc1xuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gd2hlbiB0aGUgY3VycmVudCBVUkwgY2hhbmdlcywgd2Ugd2FudCB0byBjbG9zZSB0aGUgc2VhcmNoIHBhbmUgaWYgaXQncyBvcGVuXG4gIC8vIGFuZCB0cmFjayBzZWFyY2ggZXZlbnQgaWYgdXNlciBtYWRlIGEgc2VhcmNoXG4gIHVzZVVybENoYW5nZURldGVjdGlvbih7XG4gICAgb25VcmxDaGFuZ2U6ICgpID0+IHtcbiAgICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICB9XG5cbiAgICAgIHRvZ2dsZVNlYXJjaCgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gZG9uJ3QgdHJhY2sgaWYgYSByZXN1bHQgd2FzIGNsaWNrZWQgb3IgaWYgd2UgZG9uJ3QgaGF2ZSBzZWFyY2ggcmVzdWx0c1xuICAgIGlmIChcbiAgICAgIHNlYXJjaFJlc3VsdENsaWNrZWQgfHxcbiAgICAgICFvblNlYXJjaEFzWW91VHlwZSB8fFxuICAgICAgIXNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfHxcbiAgICAgICF2YWx1ZVRyaW1tZWQubGVuZ3RoXG4gICAgKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXG4gICAgICByZXR1cm47XG4gIH0sIFtcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGxldCBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXk6IE5vZGVKUy5UaW1lb3V0O1xuXG4gICAgY29uc3QgbG9hZGVyRGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIG1pbGxpc2Vjb25kcyB0byBnZXQgYSByZXNwb25zZSBmb3Igd29ya2VyIGJlZm9yZSBzaG93aW5nIGxvYWRlcnMuXG4gICAgICAgKiBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgbG9hZGVycyBvbiBxdWljayBvciBjYWNoZWQgcmVzdWx0cy5cbiAgICAgICAqL1xuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgaWYgKGNsZWFyQXV0b2NvbXBsZXRlKSBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBpZiAoY2xlYXJTZWFyY2hBc1lvdVR5cGUpIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgfSwgMTApO1xuXG4gICAgc2VhcmNoV29ya2VyLmF1dG9jb21wbGV0ZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICBjbGVhckF1dG9jb21wbGV0ZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKHN1Z2dlc3Rpb25zKTtcbiAgICB9KTtcblxuICAgIHNlYXJjaFdvcmtlci5zZWFyY2hBc1lvdVR5cGUodmFsdWVUcmltbWVkKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICBjbGVhclNlYXJjaEFzWW91VHlwZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMocmVzdWx0cyk7XG5cbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6IHJlc3VsdHMucXVlcnksXG4gICAgICAgIHNlYXJjaElkOiByZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICByZXN1bHRzQ291bnQ6IHJlc3VsdHMudG9wLmxlbmd0aCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogcmVzdWx0cy5xdWVyeUxvYWRUaW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aXRoIGEgc21hbGwgZGVsYXkgd2hlbiB0aGVyZSBhcmUgbm8gcmVzdWx0c1xuICAgICAgaWYgKFxuICAgICAgICBvblNlYXJjaEFzWW91VHlwZSAmJlxuICAgICAgICByZXN1bHRzLnRvcC5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgIXNlYXJjaFJlc3VsdENsaWNrZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcXVlcnlMb2FkVGltZSB9ID0gcmVzdWx0cztcbiAgICAgICAgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFjYW5jZWwpIHtcbiAgICAgICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgMCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgICBjbGVhclRpbWVvdXQobG9hZGVyRGVsYXkpO1xuICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSk7XG4gICAgfTtcbiAgfSwgW1xuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA2cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNnJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDZyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7c2hvd01hcmtldGluZ0Jhbm5lciAmJiAoXG4gICAgICAgICAgICA8Q29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPE1hcmtldGluZ0Jhbm5lclxuICAgICAgICAgICAgICAgIHNvdXJjZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgdGV4dD17YmFubmVyPy50ZXh0fVxuICAgICAgICAgICAgICAgIGhyZWY9e2Jhbm5lcj8uaHJlZn1cbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICBweT17eyBfOiAxNiwgbGc6IDI0IH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbnRlbnRDb250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */");
48
+ const SuggestionContainer = /*#__PURE__*/_styled(ContentContainer, {
49
+ target: "e1e5b20r5",
50
+ label: "SuggestionContainer"
51
+ })(({
52
+ $compact
53
+ }) => css({
54
+ pt: $compact ? 4 : 16,
55
+ pb: {
56
+ _: 0,
57
+ md: 24
58
+ },
59
+ px: {
60
+ _: 24
61
+ }
62
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtENEIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL0dsb2JhbEhlYWRlci9jb250ZXh0JztcbmltcG9ydCB7IE1hcmtldGluZ0Jhbm5lciB9IGZyb20gJy4uL0FwcEhlYWRlckVsZW1lbnRzL0FwcEhlYWRlckNhdGFsb2dEcm9wZG93bi9NYXJrZXRpbmdCYW5uZXInO1xuaW1wb3J0IHsgdXNlT25Fc2NIYW5kbGVyIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IHNlYXJjaFBsYWNlaG9sZGVyIH0gZnJvbSAnLi9jb25zdHMnO1xuaW1wb3J0IHsgUG9wdWxhckNvbnRlbnQsIFBvcHVsYXJTZWFyY2hlcyB9IGZyb20gJy4vRGVmYXVsdFJlc3VsdHMnO1xuaW1wb3J0IHsgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uIH0gZnJvbSAnLi9ob29rcy91c2VVcmxDaGFuZ2VEZXRlY3Rpb24nO1xuaW1wb3J0IHsgUXVpekFuZEhlbHBDZW50ZXJMaW5rcyB9IGZyb20gJy4vUXVpekFuZEhlbHBDZW50ZXJMaW5rcyc7XG5pbXBvcnQgeyBzYWZlbHlSZWRpcmVjdCB9IGZyb20gJy4vc2FmZWx5UmVkaXJlY3QnO1xuaW1wb3J0IHsgdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0IH0gZnJvbSAnLi9TZWFyY2hUcmFja2luZ1Byb3ZpZGVyJztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcik8eyAkY29tcGFjdD86IGJvb2xlYW4gfT4oXG4gICh7ICRjb21wYWN0IH0pID0+XG4gICAgY3NzKHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBwdDogMTYsXG4gICAgICBwYjogJGNvbXBhY3QgPyB7IF86IDAsIG1kOiA0IH0gOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgICAgcHg6IHsgXzogMjQgfSxcbiAgICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgcHQ6ICRjb21wYWN0ID8gNCA6IDE2LFxuICAgICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBbc2VhcmNoUmVzdWx0Q2xpY2tlZCwgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyB9ID0gdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0KCk7XG4gIGNvbnN0IHsgZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGEgfSA9IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCgpO1xuXG4gIGNvbnN0IGJhbm5lciA9IGdsb2JhbEhlYWRlckR5bmFtaWNEYXRhPy5jYXRhbG9nRHJvcGRvd24/LmJhbm5lcjtcbiAgY29uc3Qgc2hvd01hcmtldGluZ0Jhbm5lciA9IGJhbm5lcj8udGV4dCAmJiBiYW5uZXI/LmhyZWYgJiYgTWFya2V0aW5nQmFubmVyO1xuXG4gIGNvbnN0IHNlYXJjaEFzWW91VHlwZUxvYWRlciA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gKHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgPyBybmRMb2FkZXIoKSA6IG51bGwpLFxuICAgIFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzXVxuICApO1xuXG4gIGNvbnN0IHZhbHVlVHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcblxuICBjb25zdCBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgPVxuICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgJiYgIXNlYXJjaFJlc3VsdENsaWNrZWQ7XG5cbiAgY29uc3QgY2xvc2VTZWFyY2ggPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdXNlciBtYWRlIGEgc2VhcmNoIGFuZCB0aGVuIGNsb3NlZCBzZWFyY2ggcGFuZVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdG9nZ2xlU2VhcmNoKCk7XG4gICAgLy8gYWRkcyBhIGxpdHRsZSBkZWxheSBiZXR3ZWVuIGNsb3NpbmcgdGhlIHNlYXJjaCBwYW5lIGFuZCBmb2N1c2luZyBvbiB0aGUgYnV0dG9uXG4gICAgLy8gdG8gcHJldmVudCB0aGUgc2VhcmNoIHBhbmUgZnJvbSBpbW1lZGlhdGVseSBvcGVuaW5nIGFnYWluXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoQnV0dG9uUmVmICYmIHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudCkge1xuICAgICAgICBzZWFyY2hCdXR0b25SZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAxMCk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlT25Fc2NIYW5kbGVyKGNsb3NlU2VhcmNoKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICAgIC8vIHJlc2V0IHRvIGZhbHNlIHdoZW4gdGhlIHNlYXJjaCBxdWVyeSBjaGFuZ2VzXG4gICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZChmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHRoZSB1c2VyIHN1Ym1pdHMgdGhlIGZvcm0gdG8gY2FwdHVyZSBjb21wbGV0ZSBxdWVyeVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2spIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFySW5wdXQgPSAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IGJlZm9yZSB1c2VyIGNsZWFycyBpbnB1dFxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUoJycpO1xuICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAvLyByZXNldCB0aGUgY29udGV4dCB3aXRoIGVtcHR5IHZhbHVlc1xuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gd2hlbiB0aGUgY3VycmVudCBVUkwgY2hhbmdlcywgd2Ugd2FudCB0byBjbG9zZSB0aGUgc2VhcmNoIHBhbmUgaWYgaXQncyBvcGVuXG4gIC8vIGFuZCB0cmFjayBzZWFyY2ggZXZlbnQgaWYgdXNlciBtYWRlIGEgc2VhcmNoXG4gIHVzZVVybENoYW5nZURldGVjdGlvbih7XG4gICAgb25VcmxDaGFuZ2U6ICgpID0+IHtcbiAgICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICB9XG5cbiAgICAgIHRvZ2dsZVNlYXJjaCgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gZG9uJ3QgdHJhY2sgaWYgYSByZXN1bHQgd2FzIGNsaWNrZWQgb3IgaWYgd2UgZG9uJ3QgaGF2ZSBzZWFyY2ggcmVzdWx0c1xuICAgIGlmIChcbiAgICAgIHNlYXJjaFJlc3VsdENsaWNrZWQgfHxcbiAgICAgICFvblNlYXJjaEFzWW91VHlwZSB8fFxuICAgICAgIXNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfHxcbiAgICAgICF2YWx1ZVRyaW1tZWQubGVuZ3RoXG4gICAgKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXG4gICAgICByZXR1cm47XG4gIH0sIFtcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGxldCBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXk6IE5vZGVKUy5UaW1lb3V0O1xuXG4gICAgY29uc3QgbG9hZGVyRGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIG1pbGxpc2Vjb25kcyB0byBnZXQgYSByZXNwb25zZSBmb3Igd29ya2VyIGJlZm9yZSBzaG93aW5nIGxvYWRlcnMuXG4gICAgICAgKiBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgbG9hZGVycyBvbiBxdWljayBvciBjYWNoZWQgcmVzdWx0cy5cbiAgICAgICAqL1xuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgaWYgKGNsZWFyQXV0b2NvbXBsZXRlKSBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBpZiAoY2xlYXJTZWFyY2hBc1lvdVR5cGUpIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgfSwgMTApO1xuXG4gICAgc2VhcmNoV29ya2VyLmF1dG9jb21wbGV0ZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICBjbGVhckF1dG9jb21wbGV0ZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKHN1Z2dlc3Rpb25zKTtcbiAgICB9KTtcblxuICAgIHNlYXJjaFdvcmtlci5zZWFyY2hBc1lvdVR5cGUodmFsdWVUcmltbWVkKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICBjbGVhclNlYXJjaEFzWW91VHlwZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMocmVzdWx0cyk7XG5cbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6IHJlc3VsdHMucXVlcnksXG4gICAgICAgIHNlYXJjaElkOiByZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICByZXN1bHRzQ291bnQ6IHJlc3VsdHMudG9wLmxlbmd0aCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogcmVzdWx0cy5xdWVyeUxvYWRUaW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aXRoIGEgc21hbGwgZGVsYXkgd2hlbiB0aGVyZSBhcmUgbm8gcmVzdWx0c1xuICAgICAgaWYgKFxuICAgICAgICBvblNlYXJjaEFzWW91VHlwZSAmJlxuICAgICAgICByZXN1bHRzLnRvcC5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgIXNlYXJjaFJlc3VsdENsaWNrZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcXVlcnlMb2FkVGltZSB9ID0gcmVzdWx0cztcbiAgICAgICAgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFjYW5jZWwpIHtcbiAgICAgICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgMCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgICBjbGVhclRpbWVvdXQobG9hZGVyRGVsYXkpO1xuICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSk7XG4gICAgfTtcbiAgfSwgW1xuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA2cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNnJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDZyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7c2hvd01hcmtldGluZ0Jhbm5lciAmJiAoXG4gICAgICAgICAgICA8Q29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPE1hcmtldGluZ0Jhbm5lclxuICAgICAgICAgICAgICAgIHNvdXJjZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgdGV4dD17YmFubmVyPy50ZXh0fVxuICAgICAgICAgICAgICAgIGhyZWY9e2Jhbm5lcj8uaHJlZn1cbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICBweT17eyBfOiAxNiwgbGc6IDI0IH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbnRlbnRDb250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */");
63
+ const StyledInput = /*#__PURE__*/_styled(Input, {
64
+ target: "e1e5b20r4",
65
+ label: "StyledInput"
66
+ })(css({
67
+ outline: `none`,
68
+ '&::placeholder': {
69
+ textColor: theme.colors['text-secondary']
60
70
  }
61
- rect {
62
- transform: translate(-2px, -2px);
63
- height: calc(100% + 4px);
64
- width: calc(100% + 4px);
71
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJEb0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL0dsb2JhbEhlYWRlci9jb250ZXh0JztcbmltcG9ydCB7IE1hcmtldGluZ0Jhbm5lciB9IGZyb20gJy4uL0FwcEhlYWRlckVsZW1lbnRzL0FwcEhlYWRlckNhdGFsb2dEcm9wZG93bi9NYXJrZXRpbmdCYW5uZXInO1xuaW1wb3J0IHsgdXNlT25Fc2NIYW5kbGVyIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IHNlYXJjaFBsYWNlaG9sZGVyIH0gZnJvbSAnLi9jb25zdHMnO1xuaW1wb3J0IHsgUG9wdWxhckNvbnRlbnQsIFBvcHVsYXJTZWFyY2hlcyB9IGZyb20gJy4vRGVmYXVsdFJlc3VsdHMnO1xuaW1wb3J0IHsgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uIH0gZnJvbSAnLi9ob29rcy91c2VVcmxDaGFuZ2VEZXRlY3Rpb24nO1xuaW1wb3J0IHsgUXVpekFuZEhlbHBDZW50ZXJMaW5rcyB9IGZyb20gJy4vUXVpekFuZEhlbHBDZW50ZXJMaW5rcyc7XG5pbXBvcnQgeyBzYWZlbHlSZWRpcmVjdCB9IGZyb20gJy4vc2FmZWx5UmVkaXJlY3QnO1xuaW1wb3J0IHsgdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0IH0gZnJvbSAnLi9TZWFyY2hUcmFja2luZ1Byb3ZpZGVyJztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcik8eyAkY29tcGFjdD86IGJvb2xlYW4gfT4oXG4gICh7ICRjb21wYWN0IH0pID0+XG4gICAgY3NzKHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBwdDogMTYsXG4gICAgICBwYjogJGNvbXBhY3QgPyB7IF86IDAsIG1kOiA0IH0gOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgICAgcHg6IHsgXzogMjQgfSxcbiAgICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgcHQ6ICRjb21wYWN0ID8gNCA6IDE2LFxuICAgICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBbc2VhcmNoUmVzdWx0Q2xpY2tlZCwgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyB9ID0gdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0KCk7XG4gIGNvbnN0IHsgZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGEgfSA9IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCgpO1xuXG4gIGNvbnN0IGJhbm5lciA9IGdsb2JhbEhlYWRlckR5bmFtaWNEYXRhPy5jYXRhbG9nRHJvcGRvd24/LmJhbm5lcjtcbiAgY29uc3Qgc2hvd01hcmtldGluZ0Jhbm5lciA9IGJhbm5lcj8udGV4dCAmJiBiYW5uZXI/LmhyZWYgJiYgTWFya2V0aW5nQmFubmVyO1xuXG4gIGNvbnN0IHNlYXJjaEFzWW91VHlwZUxvYWRlciA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gKHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgPyBybmRMb2FkZXIoKSA6IG51bGwpLFxuICAgIFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzXVxuICApO1xuXG4gIGNvbnN0IHZhbHVlVHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcblxuICBjb25zdCBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgPVxuICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgJiYgIXNlYXJjaFJlc3VsdENsaWNrZWQ7XG5cbiAgY29uc3QgY2xvc2VTZWFyY2ggPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdXNlciBtYWRlIGEgc2VhcmNoIGFuZCB0aGVuIGNsb3NlZCBzZWFyY2ggcGFuZVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdG9nZ2xlU2VhcmNoKCk7XG4gICAgLy8gYWRkcyBhIGxpdHRsZSBkZWxheSBiZXR3ZWVuIGNsb3NpbmcgdGhlIHNlYXJjaCBwYW5lIGFuZCBmb2N1c2luZyBvbiB0aGUgYnV0dG9uXG4gICAgLy8gdG8gcHJldmVudCB0aGUgc2VhcmNoIHBhbmUgZnJvbSBpbW1lZGlhdGVseSBvcGVuaW5nIGFnYWluXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoQnV0dG9uUmVmICYmIHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudCkge1xuICAgICAgICBzZWFyY2hCdXR0b25SZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAxMCk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlT25Fc2NIYW5kbGVyKGNsb3NlU2VhcmNoKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICAgIC8vIHJlc2V0IHRvIGZhbHNlIHdoZW4gdGhlIHNlYXJjaCBxdWVyeSBjaGFuZ2VzXG4gICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZChmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHRoZSB1c2VyIHN1Ym1pdHMgdGhlIGZvcm0gdG8gY2FwdHVyZSBjb21wbGV0ZSBxdWVyeVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2spIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFySW5wdXQgPSAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IGJlZm9yZSB1c2VyIGNsZWFycyBpbnB1dFxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUoJycpO1xuICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAvLyByZXNldCB0aGUgY29udGV4dCB3aXRoIGVtcHR5IHZhbHVlc1xuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gd2hlbiB0aGUgY3VycmVudCBVUkwgY2hhbmdlcywgd2Ugd2FudCB0byBjbG9zZSB0aGUgc2VhcmNoIHBhbmUgaWYgaXQncyBvcGVuXG4gIC8vIGFuZCB0cmFjayBzZWFyY2ggZXZlbnQgaWYgdXNlciBtYWRlIGEgc2VhcmNoXG4gIHVzZVVybENoYW5nZURldGVjdGlvbih7XG4gICAgb25VcmxDaGFuZ2U6ICgpID0+IHtcbiAgICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICB9XG5cbiAgICAgIHRvZ2dsZVNlYXJjaCgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gZG9uJ3QgdHJhY2sgaWYgYSByZXN1bHQgd2FzIGNsaWNrZWQgb3IgaWYgd2UgZG9uJ3QgaGF2ZSBzZWFyY2ggcmVzdWx0c1xuICAgIGlmIChcbiAgICAgIHNlYXJjaFJlc3VsdENsaWNrZWQgfHxcbiAgICAgICFvblNlYXJjaEFzWW91VHlwZSB8fFxuICAgICAgIXNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfHxcbiAgICAgICF2YWx1ZVRyaW1tZWQubGVuZ3RoXG4gICAgKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXG4gICAgICByZXR1cm47XG4gIH0sIFtcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGxldCBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXk6IE5vZGVKUy5UaW1lb3V0O1xuXG4gICAgY29uc3QgbG9hZGVyRGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIG1pbGxpc2Vjb25kcyB0byBnZXQgYSByZXNwb25zZSBmb3Igd29ya2VyIGJlZm9yZSBzaG93aW5nIGxvYWRlcnMuXG4gICAgICAgKiBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgbG9hZGVycyBvbiBxdWljayBvciBjYWNoZWQgcmVzdWx0cy5cbiAgICAgICAqL1xuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgaWYgKGNsZWFyQXV0b2NvbXBsZXRlKSBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBpZiAoY2xlYXJTZWFyY2hBc1lvdVR5cGUpIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgfSwgMTApO1xuXG4gICAgc2VhcmNoV29ya2VyLmF1dG9jb21wbGV0ZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICBjbGVhckF1dG9jb21wbGV0ZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKHN1Z2dlc3Rpb25zKTtcbiAgICB9KTtcblxuICAgIHNlYXJjaFdvcmtlci5zZWFyY2hBc1lvdVR5cGUodmFsdWVUcmltbWVkKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICBjbGVhclNlYXJjaEFzWW91VHlwZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMocmVzdWx0cyk7XG5cbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6IHJlc3VsdHMucXVlcnksXG4gICAgICAgIHNlYXJjaElkOiByZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICByZXN1bHRzQ291bnQ6IHJlc3VsdHMudG9wLmxlbmd0aCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogcmVzdWx0cy5xdWVyeUxvYWRUaW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aXRoIGEgc21hbGwgZGVsYXkgd2hlbiB0aGVyZSBhcmUgbm8gcmVzdWx0c1xuICAgICAgaWYgKFxuICAgICAgICBvblNlYXJjaEFzWW91VHlwZSAmJlxuICAgICAgICByZXN1bHRzLnRvcC5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgIXNlYXJjaFJlc3VsdENsaWNrZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcXVlcnlMb2FkVGltZSB9ID0gcmVzdWx0cztcbiAgICAgICAgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFjYW5jZWwpIHtcbiAgICAgICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgMCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgICBjbGVhclRpbWVvdXQobG9hZGVyRGVsYXkpO1xuICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSk7XG4gICAgfTtcbiAgfSwgW1xuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA2cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNnJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDZyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7c2hvd01hcmtldGluZ0Jhbm5lciAmJiAoXG4gICAgICAgICAgICA8Q29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPE1hcmtldGluZ0Jhbm5lclxuICAgICAgICAgICAgICAgIHNvdXJjZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgdGV4dD17YmFubmVyPy50ZXh0fVxuICAgICAgICAgICAgICAgIGhyZWY9e2Jhbm5lcj8uaHJlZn1cbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICBweT17eyBfOiAxNiwgbGc6IDI0IH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbnRlbnRDb250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */");
72
+ const InlineResultLi = /*#__PURE__*/_styled(MenuItem, {
73
+ target: "e1e5b20r3",
74
+ label: "InlineResultLi"
75
+ })(css({
76
+ pl: 0,
77
+ py: 8,
78
+ fontSize: 16,
79
+ '&:focus-visible:after': {
80
+ left: -4
65
81
  }
66
- `;
67
- const EllipsisBox = styled(Box)`
68
- text-overflow: ellipsis;
69
- `;
70
- const HighlightedText = ({ suggestion: { title, segments } }) => {
71
- const highlightColor = useCurrentMode() === "dark" ? "hyper" : "yellow";
72
- return /* @__PURE__ */ jsxs(FlexBox, { children: [/* @__PURE__ */ jsx(EllipsisBox, {
73
- maxWidth: "calc(100vw - 128px)",
74
- whiteSpace: "pre",
75
- "aria-hidden": true,
76
- overflow: "hidden",
77
- children: segments.map((segment, i) => /* @__PURE__ */ jsx(Text, {
78
- lineHeight: "title",
79
- ...segment.highlight ? {
80
- bg: highlightColor,
81
- fontWeight: "bold"
82
- } : {},
83
- children: segment.value
84
- }, `${title}:${i.toString()}`))
85
- }), /* @__PURE__ */ jsx(Text, {
86
- screenreader: true,
87
- children: title
88
- })] });
82
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9FdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL0dsb2JhbEhlYWRlci9jb250ZXh0JztcbmltcG9ydCB7IE1hcmtldGluZ0Jhbm5lciB9IGZyb20gJy4uL0FwcEhlYWRlckVsZW1lbnRzL0FwcEhlYWRlckNhdGFsb2dEcm9wZG93bi9NYXJrZXRpbmdCYW5uZXInO1xuaW1wb3J0IHsgdXNlT25Fc2NIYW5kbGVyIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IHNlYXJjaFBsYWNlaG9sZGVyIH0gZnJvbSAnLi9jb25zdHMnO1xuaW1wb3J0IHsgUG9wdWxhckNvbnRlbnQsIFBvcHVsYXJTZWFyY2hlcyB9IGZyb20gJy4vRGVmYXVsdFJlc3VsdHMnO1xuaW1wb3J0IHsgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uIH0gZnJvbSAnLi9ob29rcy91c2VVcmxDaGFuZ2VEZXRlY3Rpb24nO1xuaW1wb3J0IHsgUXVpekFuZEhlbHBDZW50ZXJMaW5rcyB9IGZyb20gJy4vUXVpekFuZEhlbHBDZW50ZXJMaW5rcyc7XG5pbXBvcnQgeyBzYWZlbHlSZWRpcmVjdCB9IGZyb20gJy4vc2FmZWx5UmVkaXJlY3QnO1xuaW1wb3J0IHsgdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0IH0gZnJvbSAnLi9TZWFyY2hUcmFja2luZ1Byb3ZpZGVyJztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcik8eyAkY29tcGFjdD86IGJvb2xlYW4gfT4oXG4gICh7ICRjb21wYWN0IH0pID0+XG4gICAgY3NzKHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBwdDogMTYsXG4gICAgICBwYjogJGNvbXBhY3QgPyB7IF86IDAsIG1kOiA0IH0gOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgICAgcHg6IHsgXzogMjQgfSxcbiAgICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgcHQ6ICRjb21wYWN0ID8gNCA6IDE2LFxuICAgICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBbc2VhcmNoUmVzdWx0Q2xpY2tlZCwgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyB9ID0gdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0KCk7XG4gIGNvbnN0IHsgZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGEgfSA9IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCgpO1xuXG4gIGNvbnN0IGJhbm5lciA9IGdsb2JhbEhlYWRlckR5bmFtaWNEYXRhPy5jYXRhbG9nRHJvcGRvd24/LmJhbm5lcjtcbiAgY29uc3Qgc2hvd01hcmtldGluZ0Jhbm5lciA9IGJhbm5lcj8udGV4dCAmJiBiYW5uZXI/LmhyZWYgJiYgTWFya2V0aW5nQmFubmVyO1xuXG4gIGNvbnN0IHNlYXJjaEFzWW91VHlwZUxvYWRlciA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gKHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgPyBybmRMb2FkZXIoKSA6IG51bGwpLFxuICAgIFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzXVxuICApO1xuXG4gIGNvbnN0IHZhbHVlVHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcblxuICBjb25zdCBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgPVxuICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgJiYgIXNlYXJjaFJlc3VsdENsaWNrZWQ7XG5cbiAgY29uc3QgY2xvc2VTZWFyY2ggPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdXNlciBtYWRlIGEgc2VhcmNoIGFuZCB0aGVuIGNsb3NlZCBzZWFyY2ggcGFuZVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdG9nZ2xlU2VhcmNoKCk7XG4gICAgLy8gYWRkcyBhIGxpdHRsZSBkZWxheSBiZXR3ZWVuIGNsb3NpbmcgdGhlIHNlYXJjaCBwYW5lIGFuZCBmb2N1c2luZyBvbiB0aGUgYnV0dG9uXG4gICAgLy8gdG8gcHJldmVudCB0aGUgc2VhcmNoIHBhbmUgZnJvbSBpbW1lZGlhdGVseSBvcGVuaW5nIGFnYWluXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoQnV0dG9uUmVmICYmIHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudCkge1xuICAgICAgICBzZWFyY2hCdXR0b25SZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAxMCk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlT25Fc2NIYW5kbGVyKGNsb3NlU2VhcmNoKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICAgIC8vIHJlc2V0IHRvIGZhbHNlIHdoZW4gdGhlIHNlYXJjaCBxdWVyeSBjaGFuZ2VzXG4gICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZChmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHRoZSB1c2VyIHN1Ym1pdHMgdGhlIGZvcm0gdG8gY2FwdHVyZSBjb21wbGV0ZSBxdWVyeVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2spIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFySW5wdXQgPSAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IGJlZm9yZSB1c2VyIGNsZWFycyBpbnB1dFxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUoJycpO1xuICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAvLyByZXNldCB0aGUgY29udGV4dCB3aXRoIGVtcHR5IHZhbHVlc1xuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gd2hlbiB0aGUgY3VycmVudCBVUkwgY2hhbmdlcywgd2Ugd2FudCB0byBjbG9zZSB0aGUgc2VhcmNoIHBhbmUgaWYgaXQncyBvcGVuXG4gIC8vIGFuZCB0cmFjayBzZWFyY2ggZXZlbnQgaWYgdXNlciBtYWRlIGEgc2VhcmNoXG4gIHVzZVVybENoYW5nZURldGVjdGlvbih7XG4gICAgb25VcmxDaGFuZ2U6ICgpID0+IHtcbiAgICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICB9XG5cbiAgICAgIHRvZ2dsZVNlYXJjaCgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gZG9uJ3QgdHJhY2sgaWYgYSByZXN1bHQgd2FzIGNsaWNrZWQgb3IgaWYgd2UgZG9uJ3QgaGF2ZSBzZWFyY2ggcmVzdWx0c1xuICAgIGlmIChcbiAgICAgIHNlYXJjaFJlc3VsdENsaWNrZWQgfHxcbiAgICAgICFvblNlYXJjaEFzWW91VHlwZSB8fFxuICAgICAgIXNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfHxcbiAgICAgICF2YWx1ZVRyaW1tZWQubGVuZ3RoXG4gICAgKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXG4gICAgICByZXR1cm47XG4gIH0sIFtcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGxldCBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXk6IE5vZGVKUy5UaW1lb3V0O1xuXG4gICAgY29uc3QgbG9hZGVyRGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIG1pbGxpc2Vjb25kcyB0byBnZXQgYSByZXNwb25zZSBmb3Igd29ya2VyIGJlZm9yZSBzaG93aW5nIGxvYWRlcnMuXG4gICAgICAgKiBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgbG9hZGVycyBvbiBxdWljayBvciBjYWNoZWQgcmVzdWx0cy5cbiAgICAgICAqL1xuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgaWYgKGNsZWFyQXV0b2NvbXBsZXRlKSBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBpZiAoY2xlYXJTZWFyY2hBc1lvdVR5cGUpIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgfSwgMTApO1xuXG4gICAgc2VhcmNoV29ya2VyLmF1dG9jb21wbGV0ZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICBjbGVhckF1dG9jb21wbGV0ZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKHN1Z2dlc3Rpb25zKTtcbiAgICB9KTtcblxuICAgIHNlYXJjaFdvcmtlci5zZWFyY2hBc1lvdVR5cGUodmFsdWVUcmltbWVkKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICBjbGVhclNlYXJjaEFzWW91VHlwZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMocmVzdWx0cyk7XG5cbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6IHJlc3VsdHMucXVlcnksXG4gICAgICAgIHNlYXJjaElkOiByZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICByZXN1bHRzQ291bnQ6IHJlc3VsdHMudG9wLmxlbmd0aCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogcmVzdWx0cy5xdWVyeUxvYWRUaW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aXRoIGEgc21hbGwgZGVsYXkgd2hlbiB0aGVyZSBhcmUgbm8gcmVzdWx0c1xuICAgICAgaWYgKFxuICAgICAgICBvblNlYXJjaEFzWW91VHlwZSAmJlxuICAgICAgICByZXN1bHRzLnRvcC5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgIXNlYXJjaFJlc3VsdENsaWNrZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcXVlcnlMb2FkVGltZSB9ID0gcmVzdWx0cztcbiAgICAgICAgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFjYW5jZWwpIHtcbiAgICAgICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgMCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgICBjbGVhclRpbWVvdXQobG9hZGVyRGVsYXkpO1xuICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSk7XG4gICAgfTtcbiAgfSwgW1xuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA2cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNnJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDZyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7c2hvd01hcmtldGluZ0Jhbm5lciAmJiAoXG4gICAgICAgICAgICA8Q29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPE1hcmtldGluZ0Jhbm5lclxuICAgICAgICAgICAgICAgIHNvdXJjZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgdGV4dD17YmFubmVyPy50ZXh0fVxuICAgICAgICAgICAgICAgIGhyZWY9e2Jhbm5lcj8uaHJlZn1cbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICBweT17eyBfOiAxNiwgbGc6IDI0IH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbnRlbnRDb250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */");
83
+ const InlineLoaderLi = /*#__PURE__*/_styled("li", {
84
+ target: "e1e5b20r2",
85
+ label: "InlineLoaderLi"
86
+ })(css({
87
+ listStyleType: 'none',
88
+ display: 'flex',
89
+ gap: 12,
90
+ alignItems: 'center'
91
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStFdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL0dsb2JhbEhlYWRlci9jb250ZXh0JztcbmltcG9ydCB7IE1hcmtldGluZ0Jhbm5lciB9IGZyb20gJy4uL0FwcEhlYWRlckVsZW1lbnRzL0FwcEhlYWRlckNhdGFsb2dEcm9wZG93bi9NYXJrZXRpbmdCYW5uZXInO1xuaW1wb3J0IHsgdXNlT25Fc2NIYW5kbGVyIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IHNlYXJjaFBsYWNlaG9sZGVyIH0gZnJvbSAnLi9jb25zdHMnO1xuaW1wb3J0IHsgUG9wdWxhckNvbnRlbnQsIFBvcHVsYXJTZWFyY2hlcyB9IGZyb20gJy4vRGVmYXVsdFJlc3VsdHMnO1xuaW1wb3J0IHsgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uIH0gZnJvbSAnLi9ob29rcy91c2VVcmxDaGFuZ2VEZXRlY3Rpb24nO1xuaW1wb3J0IHsgUXVpekFuZEhlbHBDZW50ZXJMaW5rcyB9IGZyb20gJy4vUXVpekFuZEhlbHBDZW50ZXJMaW5rcyc7XG5pbXBvcnQgeyBzYWZlbHlSZWRpcmVjdCB9IGZyb20gJy4vc2FmZWx5UmVkaXJlY3QnO1xuaW1wb3J0IHsgdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0IH0gZnJvbSAnLi9TZWFyY2hUcmFja2luZ1Byb3ZpZGVyJztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcik8eyAkY29tcGFjdD86IGJvb2xlYW4gfT4oXG4gICh7ICRjb21wYWN0IH0pID0+XG4gICAgY3NzKHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBwdDogMTYsXG4gICAgICBwYjogJGNvbXBhY3QgPyB7IF86IDAsIG1kOiA0IH0gOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgICAgcHg6IHsgXzogMjQgfSxcbiAgICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgcHQ6ICRjb21wYWN0ID8gNCA6IDE2LFxuICAgICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBbc2VhcmNoUmVzdWx0Q2xpY2tlZCwgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyB9ID0gdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0KCk7XG4gIGNvbnN0IHsgZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGEgfSA9IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCgpO1xuXG4gIGNvbnN0IGJhbm5lciA9IGdsb2JhbEhlYWRlckR5bmFtaWNEYXRhPy5jYXRhbG9nRHJvcGRvd24/LmJhbm5lcjtcbiAgY29uc3Qgc2hvd01hcmtldGluZ0Jhbm5lciA9IGJhbm5lcj8udGV4dCAmJiBiYW5uZXI/LmhyZWYgJiYgTWFya2V0aW5nQmFubmVyO1xuXG4gIGNvbnN0IHNlYXJjaEFzWW91VHlwZUxvYWRlciA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gKHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgPyBybmRMb2FkZXIoKSA6IG51bGwpLFxuICAgIFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzXVxuICApO1xuXG4gIGNvbnN0IHZhbHVlVHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcblxuICBjb25zdCBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgPVxuICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgJiYgIXNlYXJjaFJlc3VsdENsaWNrZWQ7XG5cbiAgY29uc3QgY2xvc2VTZWFyY2ggPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdXNlciBtYWRlIGEgc2VhcmNoIGFuZCB0aGVuIGNsb3NlZCBzZWFyY2ggcGFuZVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdG9nZ2xlU2VhcmNoKCk7XG4gICAgLy8gYWRkcyBhIGxpdHRsZSBkZWxheSBiZXR3ZWVuIGNsb3NpbmcgdGhlIHNlYXJjaCBwYW5lIGFuZCBmb2N1c2luZyBvbiB0aGUgYnV0dG9uXG4gICAgLy8gdG8gcHJldmVudCB0aGUgc2VhcmNoIHBhbmUgZnJvbSBpbW1lZGlhdGVseSBvcGVuaW5nIGFnYWluXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoQnV0dG9uUmVmICYmIHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudCkge1xuICAgICAgICBzZWFyY2hCdXR0b25SZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAxMCk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlT25Fc2NIYW5kbGVyKGNsb3NlU2VhcmNoKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICAgIC8vIHJlc2V0IHRvIGZhbHNlIHdoZW4gdGhlIHNlYXJjaCBxdWVyeSBjaGFuZ2VzXG4gICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZChmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHRoZSB1c2VyIHN1Ym1pdHMgdGhlIGZvcm0gdG8gY2FwdHVyZSBjb21wbGV0ZSBxdWVyeVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2spIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFySW5wdXQgPSAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IGJlZm9yZSB1c2VyIGNsZWFycyBpbnB1dFxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUoJycpO1xuICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAvLyByZXNldCB0aGUgY29udGV4dCB3aXRoIGVtcHR5IHZhbHVlc1xuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gd2hlbiB0aGUgY3VycmVudCBVUkwgY2hhbmdlcywgd2Ugd2FudCB0byBjbG9zZSB0aGUgc2VhcmNoIHBhbmUgaWYgaXQncyBvcGVuXG4gIC8vIGFuZCB0cmFjayBzZWFyY2ggZXZlbnQgaWYgdXNlciBtYWRlIGEgc2VhcmNoXG4gIHVzZVVybENoYW5nZURldGVjdGlvbih7XG4gICAgb25VcmxDaGFuZ2U6ICgpID0+IHtcbiAgICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICB9XG5cbiAgICAgIHRvZ2dsZVNlYXJjaCgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gZG9uJ3QgdHJhY2sgaWYgYSByZXN1bHQgd2FzIGNsaWNrZWQgb3IgaWYgd2UgZG9uJ3QgaGF2ZSBzZWFyY2ggcmVzdWx0c1xuICAgIGlmIChcbiAgICAgIHNlYXJjaFJlc3VsdENsaWNrZWQgfHxcbiAgICAgICFvblNlYXJjaEFzWW91VHlwZSB8fFxuICAgICAgIXNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfHxcbiAgICAgICF2YWx1ZVRyaW1tZWQubGVuZ3RoXG4gICAgKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXG4gICAgICByZXR1cm47XG4gIH0sIFtcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGxldCBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXk6IE5vZGVKUy5UaW1lb3V0O1xuXG4gICAgY29uc3QgbG9hZGVyRGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIG1pbGxpc2Vjb25kcyB0byBnZXQgYSByZXNwb25zZSBmb3Igd29ya2VyIGJlZm9yZSBzaG93aW5nIGxvYWRlcnMuXG4gICAgICAgKiBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgbG9hZGVycyBvbiBxdWljayBvciBjYWNoZWQgcmVzdWx0cy5cbiAgICAgICAqL1xuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgaWYgKGNsZWFyQXV0b2NvbXBsZXRlKSBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBpZiAoY2xlYXJTZWFyY2hBc1lvdVR5cGUpIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgfSwgMTApO1xuXG4gICAgc2VhcmNoV29ya2VyLmF1dG9jb21wbGV0ZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICBjbGVhckF1dG9jb21wbGV0ZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKHN1Z2dlc3Rpb25zKTtcbiAgICB9KTtcblxuICAgIHNlYXJjaFdvcmtlci5zZWFyY2hBc1lvdVR5cGUodmFsdWVUcmltbWVkKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICBjbGVhclNlYXJjaEFzWW91VHlwZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMocmVzdWx0cyk7XG5cbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6IHJlc3VsdHMucXVlcnksXG4gICAgICAgIHNlYXJjaElkOiByZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICByZXN1bHRzQ291bnQ6IHJlc3VsdHMudG9wLmxlbmd0aCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogcmVzdWx0cy5xdWVyeUxvYWRUaW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aXRoIGEgc21hbGwgZGVsYXkgd2hlbiB0aGVyZSBhcmUgbm8gcmVzdWx0c1xuICAgICAgaWYgKFxuICAgICAgICBvblNlYXJjaEFzWW91VHlwZSAmJlxuICAgICAgICByZXN1bHRzLnRvcC5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgIXNlYXJjaFJlc3VsdENsaWNrZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcXVlcnlMb2FkVGltZSB9ID0gcmVzdWx0cztcbiAgICAgICAgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFjYW5jZWwpIHtcbiAgICAgICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgMCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgICBjbGVhclRpbWVvdXQobG9hZGVyRGVsYXkpO1xuICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSk7XG4gICAgfTtcbiAgfSwgW1xuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA2cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNnJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDZyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7c2hvd01hcmtldGluZ0Jhbm5lciAmJiAoXG4gICAgICAgICAgICA8Q29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPE1hcmtldGluZ0Jhbm5lclxuICAgICAgICAgICAgICAgIHNvdXJjZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgdGV4dD17YmFubmVyPy50ZXh0fVxuICAgICAgICAgICAgICAgIGhyZWY9e2Jhbm5lcj8uaHJlZn1cbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICBweT17eyBfOiAxNiwgbGc6IDI0IH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbnRlbnRDb250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */");
92
+ export const SemiboldSearchIcon = /*#__PURE__*/_styled(SearchIcon, {
93
+ target: "e1e5b20r1",
94
+ label: "SemiboldSearchIcon"
95
+ })(process.env.NODE_ENV === "production" ? {
96
+ name: "138xhwl",
97
+ styles: "overflow:visible!important;circle,path{stroke-width:2px;}rect{transform:translate(-2px, -2px);height:calc(100% + 4px);width:calc(100% + 4px);}"
98
+ } : {
99
+ name: "138xhwl",
100
+ styles: "overflow:visible!important;circle,path{stroke-width:2px;}rect{transform:translate(-2px, -2px);height:calc(100% + 4px);width:calc(100% + 4px);}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdGb0QiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL0dsb2JhbEhlYWRlci9jb250ZXh0JztcbmltcG9ydCB7IE1hcmtldGluZ0Jhbm5lciB9IGZyb20gJy4uL0FwcEhlYWRlckVsZW1lbnRzL0FwcEhlYWRlckNhdGFsb2dEcm9wZG93bi9NYXJrZXRpbmdCYW5uZXInO1xuaW1wb3J0IHsgdXNlT25Fc2NIYW5kbGVyIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IHNlYXJjaFBsYWNlaG9sZGVyIH0gZnJvbSAnLi9jb25zdHMnO1xuaW1wb3J0IHsgUG9wdWxhckNvbnRlbnQsIFBvcHVsYXJTZWFyY2hlcyB9IGZyb20gJy4vRGVmYXVsdFJlc3VsdHMnO1xuaW1wb3J0IHsgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uIH0gZnJvbSAnLi9ob29rcy91c2VVcmxDaGFuZ2VEZXRlY3Rpb24nO1xuaW1wb3J0IHsgUXVpekFuZEhlbHBDZW50ZXJMaW5rcyB9IGZyb20gJy4vUXVpekFuZEhlbHBDZW50ZXJMaW5rcyc7XG5pbXBvcnQgeyBzYWZlbHlSZWRpcmVjdCB9IGZyb20gJy4vc2FmZWx5UmVkaXJlY3QnO1xuaW1wb3J0IHsgdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0IH0gZnJvbSAnLi9TZWFyY2hUcmFja2luZ1Byb3ZpZGVyJztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcik8eyAkY29tcGFjdD86IGJvb2xlYW4gfT4oXG4gICh7ICRjb21wYWN0IH0pID0+XG4gICAgY3NzKHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBwdDogMTYsXG4gICAgICBwYjogJGNvbXBhY3QgPyB7IF86IDAsIG1kOiA0IH0gOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgICAgcHg6IHsgXzogMjQgfSxcbiAgICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgcHQ6ICRjb21wYWN0ID8gNCA6IDE2LFxuICAgICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBbc2VhcmNoUmVzdWx0Q2xpY2tlZCwgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyB9ID0gdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0KCk7XG4gIGNvbnN0IHsgZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGEgfSA9IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCgpO1xuXG4gIGNvbnN0IGJhbm5lciA9IGdsb2JhbEhlYWRlckR5bmFtaWNEYXRhPy5jYXRhbG9nRHJvcGRvd24/LmJhbm5lcjtcbiAgY29uc3Qgc2hvd01hcmtldGluZ0Jhbm5lciA9IGJhbm5lcj8udGV4dCAmJiBiYW5uZXI/LmhyZWYgJiYgTWFya2V0aW5nQmFubmVyO1xuXG4gIGNvbnN0IHNlYXJjaEFzWW91VHlwZUxvYWRlciA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gKHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgPyBybmRMb2FkZXIoKSA6IG51bGwpLFxuICAgIFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzXVxuICApO1xuXG4gIGNvbnN0IHZhbHVlVHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcblxuICBjb25zdCBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgPVxuICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgJiYgIXNlYXJjaFJlc3VsdENsaWNrZWQ7XG5cbiAgY29uc3QgY2xvc2VTZWFyY2ggPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdXNlciBtYWRlIGEgc2VhcmNoIGFuZCB0aGVuIGNsb3NlZCBzZWFyY2ggcGFuZVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdG9nZ2xlU2VhcmNoKCk7XG4gICAgLy8gYWRkcyBhIGxpdHRsZSBkZWxheSBiZXR3ZWVuIGNsb3NpbmcgdGhlIHNlYXJjaCBwYW5lIGFuZCBmb2N1c2luZyBvbiB0aGUgYnV0dG9uXG4gICAgLy8gdG8gcHJldmVudCB0aGUgc2VhcmNoIHBhbmUgZnJvbSBpbW1lZGlhdGVseSBvcGVuaW5nIGFnYWluXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoQnV0dG9uUmVmICYmIHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudCkge1xuICAgICAgICBzZWFyY2hCdXR0b25SZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAxMCk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlT25Fc2NIYW5kbGVyKGNsb3NlU2VhcmNoKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICAgIC8vIHJlc2V0IHRvIGZhbHNlIHdoZW4gdGhlIHNlYXJjaCBxdWVyeSBjaGFuZ2VzXG4gICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZChmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHRoZSB1c2VyIHN1Ym1pdHMgdGhlIGZvcm0gdG8gY2FwdHVyZSBjb21wbGV0ZSBxdWVyeVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2spIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFySW5wdXQgPSAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IGJlZm9yZSB1c2VyIGNsZWFycyBpbnB1dFxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUoJycpO1xuICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAvLyByZXNldCB0aGUgY29udGV4dCB3aXRoIGVtcHR5IHZhbHVlc1xuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gd2hlbiB0aGUgY3VycmVudCBVUkwgY2hhbmdlcywgd2Ugd2FudCB0byBjbG9zZSB0aGUgc2VhcmNoIHBhbmUgaWYgaXQncyBvcGVuXG4gIC8vIGFuZCB0cmFjayBzZWFyY2ggZXZlbnQgaWYgdXNlciBtYWRlIGEgc2VhcmNoXG4gIHVzZVVybENoYW5nZURldGVjdGlvbih7XG4gICAgb25VcmxDaGFuZ2U6ICgpID0+IHtcbiAgICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICB9XG5cbiAgICAgIHRvZ2dsZVNlYXJjaCgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gZG9uJ3QgdHJhY2sgaWYgYSByZXN1bHQgd2FzIGNsaWNrZWQgb3IgaWYgd2UgZG9uJ3QgaGF2ZSBzZWFyY2ggcmVzdWx0c1xuICAgIGlmIChcbiAgICAgIHNlYXJjaFJlc3VsdENsaWNrZWQgfHxcbiAgICAgICFvblNlYXJjaEFzWW91VHlwZSB8fFxuICAgICAgIXNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfHxcbiAgICAgICF2YWx1ZVRyaW1tZWQubGVuZ3RoXG4gICAgKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXG4gICAgICByZXR1cm47XG4gIH0sIFtcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGxldCBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXk6IE5vZGVKUy5UaW1lb3V0O1xuXG4gICAgY29uc3QgbG9hZGVyRGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIG1pbGxpc2Vjb25kcyB0byBnZXQgYSByZXNwb25zZSBmb3Igd29ya2VyIGJlZm9yZSBzaG93aW5nIGxvYWRlcnMuXG4gICAgICAgKiBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgbG9hZGVycyBvbiBxdWljayBvciBjYWNoZWQgcmVzdWx0cy5cbiAgICAgICAqL1xuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgaWYgKGNsZWFyQXV0b2NvbXBsZXRlKSBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBpZiAoY2xlYXJTZWFyY2hBc1lvdVR5cGUpIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgfSwgMTApO1xuXG4gICAgc2VhcmNoV29ya2VyLmF1dG9jb21wbGV0ZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICBjbGVhckF1dG9jb21wbGV0ZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKHN1Z2dlc3Rpb25zKTtcbiAgICB9KTtcblxuICAgIHNlYXJjaFdvcmtlci5zZWFyY2hBc1lvdVR5cGUodmFsdWVUcmltbWVkKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICBjbGVhclNlYXJjaEFzWW91VHlwZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMocmVzdWx0cyk7XG5cbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6IHJlc3VsdHMucXVlcnksXG4gICAgICAgIHNlYXJjaElkOiByZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICByZXN1bHRzQ291bnQ6IHJlc3VsdHMudG9wLmxlbmd0aCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogcmVzdWx0cy5xdWVyeUxvYWRUaW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aXRoIGEgc21hbGwgZGVsYXkgd2hlbiB0aGVyZSBhcmUgbm8gcmVzdWx0c1xuICAgICAgaWYgKFxuICAgICAgICBvblNlYXJjaEFzWW91VHlwZSAmJlxuICAgICAgICByZXN1bHRzLnRvcC5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgIXNlYXJjaFJlc3VsdENsaWNrZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcXVlcnlMb2FkVGltZSB9ID0gcmVzdWx0cztcbiAgICAgICAgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFjYW5jZWwpIHtcbiAgICAgICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgMCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgICBjbGVhclRpbWVvdXQobG9hZGVyRGVsYXkpO1xuICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSk7XG4gICAgfTtcbiAgfSwgW1xuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA2cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNnJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDZyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7c2hvd01hcmtldGluZ0Jhbm5lciAmJiAoXG4gICAgICAgICAgICA8Q29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPE1hcmtldGluZ0Jhbm5lclxuICAgICAgICAgICAgICAgIHNvdXJjZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgdGV4dD17YmFubmVyPy50ZXh0fVxuICAgICAgICAgICAgICAgIGhyZWY9e2Jhbm5lcj8uaHJlZn1cbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICBweT17eyBfOiAxNiwgbGc6IDI0IH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbnRlbnRDb250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */",
101
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
102
+ });
103
+ const EllipsisBox = /*#__PURE__*/_styled(Box, {
104
+ target: "e1e5b20r0",
105
+ label: "EllipsisBox"
106
+ })(process.env.NODE_ENV === "production" ? {
107
+ name: "rkw162",
108
+ styles: "text-overflow:ellipsis"
109
+ } : {
110
+ name: "rkw162",
111
+ styles: "text-overflow:ellipsis/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFHK0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL0dsb2JhbEhlYWRlci9jb250ZXh0JztcbmltcG9ydCB7IE1hcmtldGluZ0Jhbm5lciB9IGZyb20gJy4uL0FwcEhlYWRlckVsZW1lbnRzL0FwcEhlYWRlckNhdGFsb2dEcm9wZG93bi9NYXJrZXRpbmdCYW5uZXInO1xuaW1wb3J0IHsgdXNlT25Fc2NIYW5kbGVyIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IHNlYXJjaFBsYWNlaG9sZGVyIH0gZnJvbSAnLi9jb25zdHMnO1xuaW1wb3J0IHsgUG9wdWxhckNvbnRlbnQsIFBvcHVsYXJTZWFyY2hlcyB9IGZyb20gJy4vRGVmYXVsdFJlc3VsdHMnO1xuaW1wb3J0IHsgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uIH0gZnJvbSAnLi9ob29rcy91c2VVcmxDaGFuZ2VEZXRlY3Rpb24nO1xuaW1wb3J0IHsgUXVpekFuZEhlbHBDZW50ZXJMaW5rcyB9IGZyb20gJy4vUXVpekFuZEhlbHBDZW50ZXJMaW5rcyc7XG5pbXBvcnQgeyBzYWZlbHlSZWRpcmVjdCB9IGZyb20gJy4vc2FmZWx5UmVkaXJlY3QnO1xuaW1wb3J0IHsgdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0IH0gZnJvbSAnLi9TZWFyY2hUcmFja2luZ1Byb3ZpZGVyJztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcik8eyAkY29tcGFjdD86IGJvb2xlYW4gfT4oXG4gICh7ICRjb21wYWN0IH0pID0+XG4gICAgY3NzKHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBwdDogMTYsXG4gICAgICBwYjogJGNvbXBhY3QgPyB7IF86IDAsIG1kOiA0IH0gOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgICAgcHg6IHsgXzogMjQgfSxcbiAgICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgcHQ6ICRjb21wYWN0ID8gNCA6IDE2LFxuICAgICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBbc2VhcmNoUmVzdWx0Q2xpY2tlZCwgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyB9ID0gdXNlU2VhcmNoVHJhY2tpbmdDb250ZXh0KCk7XG4gIGNvbnN0IHsgZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGEgfSA9IHVzZUdsb2JhbEhlYWRlckR5bmFtaWNEYXRhQ29udGV4dCgpO1xuXG4gIGNvbnN0IGJhbm5lciA9IGdsb2JhbEhlYWRlckR5bmFtaWNEYXRhPy5jYXRhbG9nRHJvcGRvd24/LmJhbm5lcjtcbiAgY29uc3Qgc2hvd01hcmtldGluZ0Jhbm5lciA9IGJhbm5lcj8udGV4dCAmJiBiYW5uZXI/LmhyZWYgJiYgTWFya2V0aW5nQmFubmVyO1xuXG4gIGNvbnN0IHNlYXJjaEFzWW91VHlwZUxvYWRlciA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gKHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgPyBybmRMb2FkZXIoKSA6IG51bGwpLFxuICAgIFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzXVxuICApO1xuXG4gIGNvbnN0IHZhbHVlVHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcblxuICBjb25zdCBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgPVxuICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgJiYgIXNlYXJjaFJlc3VsdENsaWNrZWQ7XG5cbiAgY29uc3QgY2xvc2VTZWFyY2ggPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdXNlciBtYWRlIGEgc2VhcmNoIGFuZCB0aGVuIGNsb3NlZCBzZWFyY2ggcGFuZVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdG9nZ2xlU2VhcmNoKCk7XG4gICAgLy8gYWRkcyBhIGxpdHRsZSBkZWxheSBiZXR3ZWVuIGNsb3NpbmcgdGhlIHNlYXJjaCBwYW5lIGFuZCBmb2N1c2luZyBvbiB0aGUgYnV0dG9uXG4gICAgLy8gdG8gcHJldmVudCB0aGUgc2VhcmNoIHBhbmUgZnJvbSBpbW1lZGlhdGVseSBvcGVuaW5nIGFnYWluXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoQnV0dG9uUmVmICYmIHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudCkge1xuICAgICAgICBzZWFyY2hCdXR0b25SZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAxMCk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlT25Fc2NIYW5kbGVyKGNsb3NlU2VhcmNoKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICAgIC8vIHJlc2V0IHRvIGZhbHNlIHdoZW4gdGhlIHNlYXJjaCBxdWVyeSBjaGFuZ2VzXG4gICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZChmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHRoZSB1c2VyIHN1Ym1pdHMgdGhlIGZvcm0gdG8gY2FwdHVyZSBjb21wbGV0ZSBxdWVyeVxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2spIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICB9O1xuXG4gIGNvbnN0IGNsZWFySW5wdXQgPSAoKSA9PiB7XG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IGJlZm9yZSB1c2VyIGNsZWFycyBpbnB1dFxuICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUoJycpO1xuICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAvLyByZXNldCB0aGUgY29udGV4dCB3aXRoIGVtcHR5IHZhbHVlc1xuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gd2hlbiB0aGUgY3VycmVudCBVUkwgY2hhbmdlcywgd2Ugd2FudCB0byBjbG9zZSB0aGUgc2VhcmNoIHBhbmUgaWYgaXQncyBvcGVuXG4gIC8vIGFuZCB0cmFjayBzZWFyY2ggZXZlbnQgaWYgdXNlciBtYWRlIGEgc2VhcmNoXG4gIHVzZVVybENoYW5nZURldGVjdGlvbih7XG4gICAgb25VcmxDaGFuZ2U6ICgpID0+IHtcbiAgICAgIGlmIChoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHNXaXRob3V0Q2xpY2sgJiYgdmFsdWVUcmltbWVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICB9XG5cbiAgICAgIHRvZ2dsZVNlYXJjaCgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gZG9uJ3QgdHJhY2sgaWYgYSByZXN1bHQgd2FzIGNsaWNrZWQgb3IgaWYgd2UgZG9uJ3QgaGF2ZSBzZWFyY2ggcmVzdWx0c1xuICAgIGlmIChcbiAgICAgIHNlYXJjaFJlc3VsdENsaWNrZWQgfHxcbiAgICAgICFvblNlYXJjaEFzWW91VHlwZSB8fFxuICAgICAgIXNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfHxcbiAgICAgICF2YWx1ZVRyaW1tZWQubGVuZ3RoXG4gICAgKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXG4gICAgICByZXR1cm47XG4gIH0sIFtcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGxldCBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXk6IE5vZGVKUy5UaW1lb3V0O1xuXG4gICAgY29uc3QgbG9hZGVyRGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIG1pbGxpc2Vjb25kcyB0byBnZXQgYSByZXNwb25zZSBmb3Igd29ya2VyIGJlZm9yZSBzaG93aW5nIGxvYWRlcnMuXG4gICAgICAgKiBUaGlzIHByZXZlbnRzIGZsaWNrZXJpbmcgbG9hZGVycyBvbiBxdWljayBvciBjYWNoZWQgcmVzdWx0cy5cbiAgICAgICAqL1xuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgaWYgKGNsZWFyQXV0b2NvbXBsZXRlKSBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBpZiAoY2xlYXJTZWFyY2hBc1lvdVR5cGUpIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgfSwgMTApO1xuXG4gICAgc2VhcmNoV29ya2VyLmF1dG9jb21wbGV0ZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICBjbGVhckF1dG9jb21wbGV0ZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKHN1Z2dlc3Rpb25zKTtcbiAgICB9KTtcblxuICAgIHNlYXJjaFdvcmtlci5zZWFyY2hBc1lvdVR5cGUodmFsdWVUcmltbWVkKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICBjbGVhclNlYXJjaEFzWW91VHlwZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47IC8vIHRleHQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyByZXF1ZXN0IHdhcyBtYWRlXG5cbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMocmVzdWx0cyk7XG5cbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6IHJlc3VsdHMucXVlcnksXG4gICAgICAgIHNlYXJjaElkOiByZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICByZXN1bHRzQ291bnQ6IHJlc3VsdHMudG9wLmxlbmd0aCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogcmVzdWx0cy5xdWVyeUxvYWRUaW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aXRoIGEgc21hbGwgZGVsYXkgd2hlbiB0aGVyZSBhcmUgbm8gcmVzdWx0c1xuICAgICAgaWYgKFxuICAgICAgICBvblNlYXJjaEFzWW91VHlwZSAmJlxuICAgICAgICByZXN1bHRzLnRvcC5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgIXNlYXJjaFJlc3VsdENsaWNrZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcXVlcnlMb2FkVGltZSB9ID0gcmVzdWx0cztcbiAgICAgICAgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFjYW5jZWwpIHtcbiAgICAgICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgMCwgcXVlcnlMb2FkVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgICBjbGVhclRpbWVvdXQobG9hZGVyRGVsYXkpO1xuICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSk7XG4gICAgfTtcbiAgfSwgW1xuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgICBzZWFyY2hSZXN1bHRDbGlja2VkLFxuICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA2cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNnJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDZyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7c2hvd01hcmtldGluZ0Jhbm5lciAmJiAoXG4gICAgICAgICAgICA8Q29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPE1hcmtldGluZ0Jhbm5lclxuICAgICAgICAgICAgICAgIHNvdXJjZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgdGV4dD17YmFubmVyPy50ZXh0fVxuICAgICAgICAgICAgICAgIGhyZWY9e2Jhbm5lcj8uaHJlZn1cbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICBweT17eyBfOiAxNiwgbGc6IDI0IH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbnRlbnRDb250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lciAkY29tcGFjdD17ISFzaG93TWFya2V0aW5nQmFubmVyfT5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */",
112
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
113
+ });
114
+ const HighlightedText = ({
115
+ suggestion: {
116
+ title,
117
+ segments
118
+ }
119
+ }) => {
120
+ const mode = useCurrentMode();
121
+ const highlightColor = mode === 'dark' ? 'hyper' : 'yellow';
122
+ return /*#__PURE__*/_jsxs(FlexBox, {
123
+ children: [/*#__PURE__*/_jsx(EllipsisBox, {
124
+ maxWidth: "calc(100vw - 128px)",
125
+ whiteSpace: "pre",
126
+ "aria-hidden": true,
127
+ overflow: "hidden",
128
+ children: segments.map((segment, i) => /*#__PURE__*/_jsx(Text, {
129
+ lineHeight: "title",
130
+ ...(segment.highlight ? {
131
+ bg: highlightColor,
132
+ fontWeight: 'bold'
133
+ } : {}),
134
+ children: segment.value
135
+ }, `${title}:${i.toString()}`))
136
+ }), /*#__PURE__*/_jsx(Text, {
137
+ screenreader: true,
138
+ children: title
139
+ })]
140
+ });
89
141
  };
90
142
  let loaderKey = 0;
91
143
  function rndLoader() {
92
- const key = loaderKey++;
93
- const loader = { shimmerRows: [] };
94
- for (let i = 0; i < 5; i++) {
95
- const row = {
96
- key: `${key}:${i}`,
97
- shimmers: []
98
- };
99
- const words = Math.ceil(Math.random() * 3);
100
- for (let j = 0; j < words; j++) {
101
- const width = 12 + Math.round(Math.random() * 96);
102
- row.shimmers.push({
103
- key: `${key}:${j}`,
104
- width
105
- });
106
- }
107
- loader.shimmerRows.push(row);
108
- }
109
- return loader;
144
+ // eslint-disable-next-line no-plusplus
145
+ const key = loaderKey++;
146
+ const loader = {
147
+ shimmerRows: []
148
+ };
149
+ for (let i = 0; i < 5; i++) {
150
+ const row = {
151
+ key: `${key}:${i}`,
152
+ shimmers: []
153
+ };
154
+ const words = Math.ceil(Math.random() * 3);
155
+ for (let j = 0; j < words; j++) {
156
+ const width = 12 + Math.round(Math.random() * 96);
157
+ row.shimmers.push({
158
+ key: `${key}:${j}`,
159
+ width
160
+ });
161
+ }
162
+ loader.shimmerRows.push(row);
163
+ }
164
+ return loader;
110
165
  }
111
- const SearchPane = ({ onSearch, onTrackingClick, searchButtonRef, toggleSearch, onSearchAsYouType }) => {
112
- const theme$1 = useTheme();
113
- const [value, setValue] = useState("");
114
- const inputRef = useRef(null);
115
- const [autoCompleteSuggestions, setAutoCompleteSuggestions] = useState([]);
116
- const [searchAsYouTypeResults, setSearchAsYouTypeResults] = useState(null);
117
- const [searchResultClicked, setSearchResultClicked] = useState(false);
118
- const { setOnSearchAsYouTypeParams } = useSearchTrackingContext();
119
- const searchAsYouTypeLoader = React$1.useMemo(() => searchAsYouTypeResults === null ? rndLoader() : null, [searchAsYouTypeResults]);
120
- const valueTrimmed = value.trim();
121
- const hasSearchEventAndResultsWithoutClick = onSearchAsYouType && searchAsYouTypeResults && !searchResultClicked;
122
- const closeSearch = async () => {
123
- if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
124
- const { query, searchId, resultsCount, queryLoadTime } = searchAsYouTypeResults;
125
- onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
126
- }
127
- await toggleSearch();
128
- setTimeout(() => {
129
- if (searchButtonRef && searchButtonRef?.current) searchButtonRef.current?.focus();
130
- }, 10);
131
- };
132
- const onKeyDown = useOnEscHandler(closeSearch);
133
- const onMouseDownOutside = ({ target }) => {
134
- const handleOutsideClick = () => {
135
- if (!document.querySelector("[data-testid=\"header-search-dropdown\"]")?.contains(target) && target !== searchButtonRef?.current) closeSearch();
136
- target?.removeEventListener("mouseup", handleOutsideClick);
137
- };
138
- target?.addEventListener("mouseup", handleOutsideClick);
139
- };
140
- const navigateToSearch = (searchTerm, fromPrevSearch) => {
141
- onSearch(searchTerm, fromPrevSearch);
142
- };
143
- const handleChange = (evt) => {
144
- setValue(evt.target.value);
145
- setSearchResultClicked(false);
146
- };
147
- const handleSubmit = (event) => {
148
- event.preventDefault();
149
- if (hasSearchEventAndResultsWithoutClick) {
150
- const { query, searchId, resultsCount, queryLoadTime } = searchAsYouTypeResults;
151
- onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
152
- }
153
- navigateToSearch(value, searchAsYouTypeResults?.searchId);
154
- };
155
- const clearInput = () => {
156
- if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
157
- const { query, searchId, resultsCount, queryLoadTime } = searchAsYouTypeResults;
158
- onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
159
- }
160
- setValue("");
161
- setAutoCompleteSuggestions([]);
162
- setOnSearchAsYouTypeParams({
163
- query: "",
164
- searchId: "",
165
- resultsCount: 0,
166
- queryLoadTime: 0
167
- });
168
- };
169
- useUrlChangeDetection({ onUrlChange: () => {
170
- if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
171
- const { query, searchId, resultsCount, queryLoadTime } = searchAsYouTypeResults;
172
- onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
173
- }
174
- toggleSearch();
175
- } });
176
- useEffect(() => {
177
- if (searchResultClicked || !onSearchAsYouType || !searchAsYouTypeResults || !valueTrimmed.length) return;
178
- }, [
179
- searchResultClicked,
180
- searchAsYouTypeResults,
181
- valueTrimmed,
182
- onSearchAsYouType
183
- ]);
184
- useEffect(() => {
185
- inputRef.current?.focus();
186
- searchWorker.init();
187
- }, []);
188
- useEffect(() => {
189
- if (!valueTrimmed.length) {
190
- setSearchAsYouTypeResults(null);
191
- setAutoCompleteSuggestions([]);
192
- setOnSearchAsYouTypeParams({
193
- query: "",
194
- searchId: "",
195
- resultsCount: 0,
196
- queryLoadTime: 0
197
- });
198
- return;
199
- }
200
- let cancel = false;
201
- let clearAutocomplete = true;
202
- let clearSearchAsYouType = true;
203
- let searchEventNoResultDelay;
204
- const loaderDelay = setTimeout(() => {
205
- if (cancel) return;
206
- if (clearAutocomplete) setAutoCompleteSuggestions([]);
207
- if (clearSearchAsYouType) setSearchAsYouTypeResults(null);
208
- }, 10);
209
- searchWorker.autocomplete(valueTrimmed).then((suggestions) => {
210
- clearAutocomplete = false;
211
- if (cancel) return;
212
- setAutoCompleteSuggestions(suggestions);
213
- });
214
- searchWorker.searchAsYouType(valueTrimmed).then((results) => {
215
- clearSearchAsYouType = false;
216
- if (cancel) return;
217
- setSearchAsYouTypeResults(results);
218
- setOnSearchAsYouTypeParams({
219
- query: results.query,
220
- searchId: results.searchId,
221
- resultsCount: results.top.length,
222
- queryLoadTime: results.queryLoadTime
223
- });
224
- if (onSearchAsYouType && results.top.length === 0 && !searchResultClicked) {
225
- const { query, searchId, queryLoadTime } = results;
226
- searchEventNoResultDelay = setTimeout(() => {
227
- if (!cancel) onSearchAsYouType(query, searchId, 0, queryLoadTime);
228
- }, 300);
229
- }
230
- });
231
- return () => {
232
- cancel = true;
233
- clearTimeout(loaderDelay);
234
- clearTimeout(searchEventNoResultDelay);
235
- };
236
- }, [
237
- valueTrimmed,
238
- onSearchAsYouType,
239
- searchResultClicked,
240
- setOnSearchAsYouTypeParams
241
- ]);
242
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Box, {
243
- "aria-hidden": true,
244
- bg: "shadow-secondary",
245
- height: "100vh",
246
- position: "fixed",
247
- top: `calc(${theme$1.elements.headerHeight} + 6rem)`,
248
- width: 1
249
- }), /* @__PURE__ */ jsx(FocusTrap, {
250
- onEscapeKey: closeSearch,
251
- onClickOutside: onMouseDownOutside,
252
- allowPageInteraction: true,
253
- children: /* @__PURE__ */ jsxs(Box, {
254
- bg: "background",
255
- borderColorBottom: "border-primary",
256
- borderColorTop: "border-tertiary",
257
- borderStyle: "solid",
258
- borderWidth: "2px 0 1px",
259
- "data-testid": "header-search-dropdown",
260
- position: {
261
- _: "fixed",
262
- md: "absolute"
263
- },
264
- width: "100%",
265
- maxHeight: {
266
- _: "calc(100vh - 63px)",
267
- md: "calc(100vh - 80px)"
268
- },
269
- overflow: "auto",
270
- zIndex: 10,
271
- children: [/* @__PURE__ */ jsx(Box, {
272
- border: "none",
273
- width: "auto",
274
- children: /* @__PURE__ */ jsx(QueryContainer, { children: /* @__PURE__ */ jsxs(FlexBox, {
275
- alignItems: "baseline",
276
- borderColor: "gray-600",
277
- borderStyleBottom: "solid",
278
- borderWidthBottom: "1px",
279
- width: "100%",
280
- children: [
281
- /* @__PURE__ */ jsx(SearchIcon, {
282
- height: {
283
- _: 20,
284
- md: 24
285
- },
286
- width: {
287
- _: 20,
288
- md: 24
289
- }
290
- }),
291
- /* @__PURE__ */ jsx(Form, {
292
- action: "/search",
293
- id: "search-form",
294
- ml: 8,
295
- onSubmit: handleSubmit,
296
- width: "100%",
297
- children: /* @__PURE__ */ jsx(StyledInput, {
298
- autoFocus: true,
299
- background: "none",
300
- border: "none",
301
- color: "text",
302
- fontSize: {
303
- _: 20,
304
- md: 26
305
- },
306
- fontWeight: "bold",
307
- id: "header-search-bar",
308
- name: "query",
309
- onChange: handleChange,
310
- onKeyDown: (e) => onKeyDown(e),
311
- placeholder: searchPlaceholder,
312
- ref: inputRef,
313
- type: "search",
314
- value,
315
- width: "100%",
316
- autoComplete: "off"
317
- })
318
- }),
319
- /* @__PURE__ */ jsx(IconButton, {
320
- icon: MiniDeleteIcon,
321
- "aria-label": "Clear search",
322
- tip: "Clear search",
323
- tipProps: {
324
- alignment: "bottom-center",
325
- placement: "floating",
326
- narrow: true,
327
- zIndex: 2
328
- },
329
- onClick: clearInput,
330
- size: "small"
331
- })
332
- ]
333
- }) })
334
- }), /* @__PURE__ */ jsxs(SuggestionContainer, { children: [
335
- valueTrimmed.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
336
- /* @__PURE__ */ jsx(FlexBox, {
337
- flexDirection: "column",
338
- as: "ul",
339
- listStyle: "none",
340
- p: 0,
341
- children: autoCompleteSuggestions.map((s, i) => /* @__PURE__ */ jsxs(InlineResultLi, {
342
- tabIndex: 0,
343
- onKeyDown: (evt) => {
344
- if (evt.key === "Enter") {
345
- setSearchResultClicked(true);
346
- onTrackingClick("autocomplete_result", {
347
- search_id: searchAsYouTypeResults?.searchId ?? "",
348
- misc: JSON.stringify({ position: i })
349
- });
350
- navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
351
- closeSearch();
352
- }
353
- },
354
- onClick: () => {
355
- setSearchResultClicked(true);
356
- onTrackingClick("autocomplete_result", {
357
- search_id: searchAsYouTypeResults?.searchId ?? "",
358
- misc: JSON.stringify({ position: i })
359
- });
360
- navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
361
- closeSearch();
362
- },
363
- children: [/* @__PURE__ */ jsx(SemiboldSearchIcon, {
364
- mb: 2,
365
- size: 14,
366
- strokeWidth: 8,
367
- "aria-hidden": true,
368
- mr: 12
369
- }), /* @__PURE__ */ jsx(HighlightedText, { suggestion: s })]
370
- }, s.title))
371
- }),
372
- (searchAsYouTypeResults === null || searchAsYouTypeResults.top.length > 0) && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Text, {
373
- as: "h2",
374
- fontSize: 20,
375
- mb: 16,
376
- mt: 24,
377
- children: "Top results"
378
- }), /* @__PURE__ */ jsx(FlexBox, {
379
- flexDirection: "column",
380
- as: "ul",
381
- listStyle: "none",
382
- p: 0,
383
- children: searchAsYouTypeResults === null ? searchAsYouTypeLoader?.shimmerRows.map((r) => /* @__PURE__ */ jsxs(InlineLoaderLi, { children: [r.shimmers.map((word) => /* @__PURE__ */ jsx(Shimmer, {
384
- height: 30,
385
- py: 8,
386
- width: word.width
387
- }, word.key)), /* @__PURE__ */ jsx(Box, {
388
- fontFamily: "accent",
389
- textColor: "text-secondary",
390
- fontSize: { _: 10 },
391
- borderColor: "border-secondary",
392
- border: 1,
393
- borderRadius: "xl",
394
- px: 16,
395
- opacity: .1,
396
- children: "\xA0"
397
- })] }, r.key)) : searchAsYouTypeResults.top.map((s, i) => /* @__PURE__ */ jsxs(InlineResultLi, {
398
- tabIndex: 0,
399
- role: "link",
400
- onKeyDown: (evt) => {
401
- if (evt.key === "Enter") {
402
- setSearchResultClicked(true);
403
- onTrackingClick("search_as_you_type_result", {
404
- search_id: searchAsYouTypeResults.searchId,
405
- slug: s.slug,
406
- ...s.contentId ? { content_id: s.contentId } : {},
407
- misc: JSON.stringify({ position: i })
408
- });
409
- closeSearch();
410
- safelyRedirect(s.urlPath);
411
- }
412
- },
413
- onClick: () => {
414
- setSearchResultClicked(true);
415
- onTrackingClick("search_as_you_type_result", {
416
- search_id: searchAsYouTypeResults.searchId,
417
- slug: s.slug,
418
- ...s.contentId ? { content_id: s.contentId } : {},
419
- misc: JSON.stringify({ position: i })
420
- });
421
- closeSearch();
422
- safelyRedirect(s.urlPath);
423
- },
424
- children: [/* @__PURE__ */ jsx(HighlightedText, { suggestion: s }), /* @__PURE__ */ jsx(Badge, {
425
- size: "sm",
426
- variant: "tertiary",
427
- ml: 12,
428
- children: s.type
429
- })]
430
- }, `${searchAsYouTypeResults.query}:${i.toString()}`))
431
- })] }),
432
- searchAsYouTypeResults?.top.length === 0 && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Box, {
433
- fontSize: {
434
- _: 20,
435
- sm: 26
436
- },
437
- mt: 0,
438
- mb: 48,
439
- children: [
440
- `We couldn't find a match for `,
441
- /* @__PURE__ */ jsx(Text, {
442
- fontWeight: "bold",
443
- children: `"${valueTrimmed}."`
444
- }),
445
- " Try another keyword, or see what our members are learning."
446
- ]
447
- }), /* @__PURE__ */ jsx(Menu, {
448
- border: "none",
449
- variant: "popover",
450
- children: /* @__PURE__ */ jsx(PopularContent, { onTrackingClick })
451
- })] })
452
- ] }) : /* @__PURE__ */ jsxs(Menu, {
453
- border: "none",
454
- variant: "popover",
455
- children: [/* @__PURE__ */ jsx(PopularSearches, {
456
- navigateToSearch,
457
- onTrackingClick
458
- }), /* @__PURE__ */ jsx(PopularContent, { onTrackingClick })]
459
- }),
460
- !!searchAsYouTypeResults?.top.length && /* @__PURE__ */ jsx(StrokeButton, {
461
- my: 16,
462
- onClick: () => {
463
- onTrackingClick("view_all_results", { search_id: searchAsYouTypeResults.searchId });
464
- navigateToSearch(value, searchAsYouTypeResults?.searchId);
465
- closeSearch();
466
- },
467
- children: "View all results"
468
- }),
469
- /* @__PURE__ */ jsx(QuizAndHelpCenterLinks, {
470
- onTrackingClick,
471
- handleCloseDropdown: closeSearch
472
- })
473
- ] })]
474
- })
475
- })] });
476
- };
166
+ export const SearchPane = ({
167
+ onSearch,
168
+ onTrackingClick,
169
+ searchButtonRef,
170
+ toggleSearch,
171
+ onSearchAsYouType
172
+ }) => {
173
+ const theme = useTheme();
174
+ const [value, setValue] = useState('');
175
+ const inputRef = useRef(null);
176
+ const [autoCompleteSuggestions, setAutoCompleteSuggestions] = useState([]);
177
+ const [searchAsYouTypeResults, setSearchAsYouTypeResults] = useState(null);
178
+ const [searchResultClicked, setSearchResultClicked] = useState(false);
179
+ const {
180
+ setOnSearchAsYouTypeParams
181
+ } = useSearchTrackingContext();
182
+ const {
183
+ globalHeaderDynamicData
184
+ } = useGlobalHeaderDynamicDataContext();
185
+ const banner = globalHeaderDynamicData?.catalogDropdown?.banner;
186
+ const showMarketingBanner = banner?.text && banner?.href && MarketingBanner;
187
+ const searchAsYouTypeLoader = React.useMemo(() => searchAsYouTypeResults === null ? rndLoader() : null, [searchAsYouTypeResults]);
188
+ const valueTrimmed = value.trim();
189
+ const hasSearchEventAndResultsWithoutClick = onSearchAsYouType && searchAsYouTypeResults && !searchResultClicked;
190
+ const closeSearch = async () => {
191
+ // track search event when user made a search and then closed search pane
192
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
193
+ const {
194
+ query,
195
+ searchId,
196
+ resultsCount,
197
+ queryLoadTime
198
+ } = searchAsYouTypeResults;
199
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
200
+ }
201
+ await toggleSearch();
202
+ // adds a little delay between closing the search pane and focusing on the button
203
+ // to prevent the search pane from immediately opening again
204
+ setTimeout(() => {
205
+ if (searchButtonRef && searchButtonRef?.current) {
206
+ searchButtonRef.current?.focus();
207
+ }
208
+ }, 10);
209
+ };
210
+ const onKeyDown = useOnEscHandler(closeSearch);
211
+ const onMouseDownOutside = ({
212
+ target
213
+ }) => {
214
+ const handleOutsideClick = () => {
215
+ if (!document.querySelector('[data-testid="header-search-dropdown"]')?.contains(target) && target !== searchButtonRef?.current) {
216
+ closeSearch();
217
+ }
218
+ target?.removeEventListener('mouseup', handleOutsideClick);
219
+ };
220
+ target?.addEventListener('mouseup', handleOutsideClick);
221
+ };
222
+ const navigateToSearch = (searchTerm, fromPrevSearch) => {
223
+ onSearch(searchTerm, fromPrevSearch);
224
+ };
225
+ const handleChange = evt => {
226
+ setValue(evt.target.value);
227
+ // reset to false when the search query changes
228
+ setSearchResultClicked(false);
229
+ };
230
+ const handleSubmit = event => {
231
+ event.preventDefault();
232
+
233
+ // track search event when the user submits the form to capture complete query
234
+ if (hasSearchEventAndResultsWithoutClick) {
235
+ const {
236
+ query,
237
+ searchId,
238
+ resultsCount,
239
+ queryLoadTime
240
+ } = searchAsYouTypeResults;
241
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
242
+ }
243
+ navigateToSearch(value, searchAsYouTypeResults?.searchId);
244
+ };
245
+ const clearInput = () => {
246
+ // track search event before user clears input
247
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
248
+ const {
249
+ query,
250
+ searchId,
251
+ resultsCount,
252
+ queryLoadTime
253
+ } = searchAsYouTypeResults;
254
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
255
+ }
256
+ setValue('');
257
+ setAutoCompleteSuggestions([]);
258
+ // reset the context with empty values
259
+ setOnSearchAsYouTypeParams({
260
+ query: '',
261
+ searchId: '',
262
+ resultsCount: 0,
263
+ queryLoadTime: 0
264
+ });
265
+ };
266
+
267
+ // when the current URL changes, we want to close the search pane if it's open
268
+ // and track search event if user made a search
269
+ useUrlChangeDetection({
270
+ onUrlChange: () => {
271
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
272
+ const {
273
+ query,
274
+ searchId,
275
+ resultsCount,
276
+ queryLoadTime
277
+ } = searchAsYouTypeResults;
278
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
279
+ }
280
+ toggleSearch();
281
+ }
282
+ });
283
+ useEffect(() => {
284
+ // don't track if a result was clicked or if we don't have search results
285
+ if (searchResultClicked || !onSearchAsYouType || !searchAsYouTypeResults || !valueTrimmed.length)
286
+ // eslint-disable-next-line no-useless-return
287
+ return;
288
+ }, [searchResultClicked, searchAsYouTypeResults, valueTrimmed, onSearchAsYouType]);
289
+ useEffect(() => {
290
+ inputRef.current?.focus();
291
+ searchWorker.init();
292
+ }, []);
293
+ useEffect(() => {
294
+ if (!valueTrimmed.length) {
295
+ setSearchAsYouTypeResults(null);
296
+ setAutoCompleteSuggestions([]);
297
+ setOnSearchAsYouTypeParams({
298
+ query: '',
299
+ searchId: '',
300
+ resultsCount: 0,
301
+ queryLoadTime: 0
302
+ });
303
+ return;
304
+ }
305
+ let cancel = false;
306
+ let clearAutocomplete = true;
307
+ let clearSearchAsYouType = true;
308
+ let searchEventNoResultDelay;
309
+ const loaderDelay = setTimeout(() => {
310
+ /*
311
+ * Wait 10 milliseconds to get a response for worker before showing loaders.
312
+ * This prevents flickering loaders on quick or cached results.
313
+ */
314
+ if (cancel) return;
315
+ if (clearAutocomplete) setAutoCompleteSuggestions([]);
316
+ if (clearSearchAsYouType) setSearchAsYouTypeResults(null);
317
+ }, 10);
318
+ searchWorker.autocomplete(valueTrimmed).then(suggestions => {
319
+ clearAutocomplete = false;
320
+ if (cancel) return; // text has changed since this request was made
321
+
322
+ setAutoCompleteSuggestions(suggestions);
323
+ });
324
+ searchWorker.searchAsYouType(valueTrimmed).then(results => {
325
+ clearSearchAsYouType = false;
326
+ if (cancel) return; // text has changed since this request was made
327
+
328
+ setSearchAsYouTypeResults(results);
329
+ setOnSearchAsYouTypeParams({
330
+ query: results.query,
331
+ searchId: results.searchId,
332
+ resultsCount: results.top.length,
333
+ queryLoadTime: results.queryLoadTime
334
+ });
477
335
 
478
- //#endregion
479
- export { SearchPane, SemiboldSearchIcon };
336
+ // track search event with a small delay when there are no results
337
+ if (onSearchAsYouType && results.top.length === 0 && !searchResultClicked) {
338
+ const {
339
+ query,
340
+ searchId,
341
+ queryLoadTime
342
+ } = results;
343
+ searchEventNoResultDelay = setTimeout(() => {
344
+ if (!cancel) {
345
+ onSearchAsYouType(query, searchId, 0, queryLoadTime);
346
+ }
347
+ }, 300);
348
+ }
349
+ });
350
+ return () => {
351
+ cancel = true;
352
+ clearTimeout(loaderDelay);
353
+ clearTimeout(searchEventNoResultDelay);
354
+ };
355
+ }, [valueTrimmed, onSearchAsYouType, searchResultClicked, setOnSearchAsYouTypeParams]);
356
+ return /*#__PURE__*/_jsxs(_Fragment, {
357
+ children: [/*#__PURE__*/_jsx(Box, {
358
+ "aria-hidden": true,
359
+ bg: "shadow-secondary",
360
+ height: "100vh",
361
+ position: "fixed"
362
+ // We add 6rem here in case there's some sort of branded banner above search
363
+ // The search area is much taller than 6rem so this is a safe amount of padding
364
+ ,
365
+ top: `calc(${theme.elements.headerHeight} + 6rem)`,
366
+ width: 1
367
+ }), /*#__PURE__*/_jsx(FocusTrap, {
368
+ onEscapeKey: closeSearch,
369
+ onClickOutside: onMouseDownOutside,
370
+ allowPageInteraction: true,
371
+ children: /*#__PURE__*/_jsxs(Box, {
372
+ bg: "background",
373
+ borderColorBottom: "border-primary",
374
+ borderColorTop: "border-tertiary",
375
+ borderStyle: "solid",
376
+ borderWidth: "2px 0 1px",
377
+ "data-testid": "header-search-dropdown",
378
+ position: {
379
+ _: 'fixed',
380
+ md: 'absolute'
381
+ },
382
+ width: "100%",
383
+ maxHeight: {
384
+ _: 'calc(100vh - 63px)',
385
+ md: 'calc(100vh - 80px)'
386
+ },
387
+ overflow: "auto",
388
+ zIndex: 10 // ensure dropdown is above the page content
389
+ ,
390
+ children: [/*#__PURE__*/_jsx(Box, {
391
+ border: "none",
392
+ width: "auto",
393
+ children: /*#__PURE__*/_jsx(QueryContainer, {
394
+ $compact: !!showMarketingBanner,
395
+ children: /*#__PURE__*/_jsxs(FlexBox, {
396
+ alignItems: "baseline",
397
+ borderColor: "gray-600",
398
+ borderStyleBottom: "solid",
399
+ borderWidthBottom: "1px",
400
+ width: "100%",
401
+ children: [/*#__PURE__*/_jsx(SearchIcon, {
402
+ height: {
403
+ _: 20,
404
+ md: 24
405
+ },
406
+ width: {
407
+ _: 20,
408
+ md: 24
409
+ }
410
+ }), /*#__PURE__*/_jsx(Form, {
411
+ action: "/search",
412
+ id: "search-form",
413
+ ml: 8,
414
+ onSubmit: handleSubmit,
415
+ width: "100%",
416
+ children: /*#__PURE__*/_jsx(StyledInput, {
417
+ autoFocus: true,
418
+ background: "none",
419
+ border: "none",
420
+ color: "text",
421
+ fontSize: {
422
+ _: 20,
423
+ md: 26
424
+ },
425
+ fontWeight: "bold",
426
+ id: "header-search-bar",
427
+ name: "query",
428
+ onChange: handleChange,
429
+ onKeyDown: e => onKeyDown(e),
430
+ placeholder: searchPlaceholder,
431
+ ref: inputRef,
432
+ type: "search",
433
+ value: value,
434
+ width: "100%",
435
+ autoComplete: "off"
436
+ })
437
+ }), /*#__PURE__*/_jsx(IconButton, {
438
+ icon: MiniDeleteIcon,
439
+ "aria-label": "Clear search",
440
+ tip: "Clear search",
441
+ tipProps: {
442
+ alignment: 'bottom-center',
443
+ placement: 'floating',
444
+ narrow: true,
445
+ zIndex: 2
446
+ },
447
+ onClick: clearInput,
448
+ size: "small"
449
+ })]
450
+ })
451
+ })
452
+ }), showMarketingBanner && /*#__PURE__*/_jsx(ContentContainer, {
453
+ children: /*#__PURE__*/_jsx(MarketingBanner, {
454
+ source: "search",
455
+ text: banner?.text,
456
+ href: banner?.href,
457
+ tabIndex: 0,
458
+ py: {
459
+ _: 16,
460
+ lg: 24
461
+ }
462
+ })
463
+ }), /*#__PURE__*/_jsxs(SuggestionContainer, {
464
+ $compact: !!showMarketingBanner,
465
+ children: [valueTrimmed.length > 0 ? /*#__PURE__*/_jsxs(_Fragment, {
466
+ children: [/*#__PURE__*/_jsx(FlexBox, {
467
+ flexDirection: "column",
468
+ as: "ul",
469
+ listStyle: "none",
470
+ p: 0,
471
+ children: autoCompleteSuggestions.map((s, i) => /*#__PURE__*/_jsxs(InlineResultLi, {
472
+ tabIndex: 0,
473
+ onKeyDown: evt => {
474
+ if (evt.key === 'Enter') {
475
+ setSearchResultClicked(true);
476
+ onTrackingClick('autocomplete_result', {
477
+ search_id: searchAsYouTypeResults?.searchId ?? '',
478
+ misc: JSON.stringify({
479
+ position: i
480
+ })
481
+ });
482
+ navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
483
+ closeSearch();
484
+ }
485
+ },
486
+ onClick: () => {
487
+ setSearchResultClicked(true);
488
+ onTrackingClick('autocomplete_result', {
489
+ search_id: searchAsYouTypeResults?.searchId ?? '',
490
+ misc: JSON.stringify({
491
+ position: i
492
+ })
493
+ });
494
+ navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
495
+ closeSearch();
496
+ },
497
+ children: [/*#__PURE__*/_jsx(SemiboldSearchIcon, {
498
+ mb: 2,
499
+ size: 14,
500
+ strokeWidth: 8,
501
+ "aria-hidden": true,
502
+ mr: 12
503
+ }), /*#__PURE__*/_jsx(HighlightedText, {
504
+ suggestion: s
505
+ })]
506
+ }, s.title))
507
+ }), (searchAsYouTypeResults === null || searchAsYouTypeResults.top.length > 0) && /*#__PURE__*/_jsxs(_Fragment, {
508
+ children: [/*#__PURE__*/_jsx(Text, {
509
+ as: "h2",
510
+ fontSize: 20,
511
+ mb: 16,
512
+ mt: 24,
513
+ children: "Top results"
514
+ }), /*#__PURE__*/_jsx(FlexBox, {
515
+ flexDirection: "column",
516
+ as: "ul",
517
+ listStyle: "none",
518
+ p: 0,
519
+ children: searchAsYouTypeResults === null ? searchAsYouTypeLoader?.shimmerRows.map(r => /*#__PURE__*/_jsxs(InlineLoaderLi, {
520
+ children: [r.shimmers.map(word => /*#__PURE__*/_jsx(Shimmer, {
521
+ height: 30,
522
+ py: 8,
523
+ width: word.width
524
+ }, word.key)), /*#__PURE__*/_jsx(Box, {
525
+ fontFamily: "accent",
526
+ textColor: "text-secondary",
527
+ fontSize: {
528
+ _: 10
529
+ },
530
+ borderColor: "border-secondary",
531
+ border: 1,
532
+ borderRadius: "xl",
533
+ px: 16,
534
+ opacity: 0.1,
535
+ children: "\xA0"
536
+ })]
537
+ }, r.key)) : searchAsYouTypeResults.top.map((s, i) => /*#__PURE__*/_jsxs(InlineResultLi, {
538
+ tabIndex: 0,
539
+ role: "link",
540
+ onKeyDown: evt => {
541
+ if (evt.key === 'Enter') {
542
+ setSearchResultClicked(true);
543
+ onTrackingClick('search_as_you_type_result', {
544
+ search_id: searchAsYouTypeResults.searchId,
545
+ slug: s.slug,
546
+ ...(s.contentId ? {
547
+ content_id: s.contentId
548
+ } : {}),
549
+ misc: JSON.stringify({
550
+ position: i
551
+ })
552
+ });
553
+ closeSearch();
554
+ safelyRedirect(s.urlPath);
555
+ }
556
+ },
557
+ onClick: () => {
558
+ setSearchResultClicked(true);
559
+ onTrackingClick('search_as_you_type_result', {
560
+ search_id: searchAsYouTypeResults.searchId,
561
+ slug: s.slug,
562
+ ...(s.contentId ? {
563
+ content_id: s.contentId
564
+ } : {}),
565
+ misc: JSON.stringify({
566
+ position: i
567
+ })
568
+ });
569
+ closeSearch();
570
+ safelyRedirect(s.urlPath);
571
+ },
572
+ children: [/*#__PURE__*/_jsx(HighlightedText, {
573
+ suggestion: s
574
+ }), /*#__PURE__*/_jsx(Badge, {
575
+ size: "sm",
576
+ variant: "tertiary",
577
+ ml: 12,
578
+ children: s.type
579
+ })]
580
+ }, `${searchAsYouTypeResults.query}:${i.toString()}`))
581
+ })]
582
+ }), searchAsYouTypeResults?.top.length === 0 && /*#__PURE__*/_jsxs(_Fragment, {
583
+ children: [/*#__PURE__*/_jsxs(Box, {
584
+ fontSize: {
585
+ _: 20,
586
+ sm: 26
587
+ },
588
+ mt: 0,
589
+ mb: 48,
590
+ children: [`We couldn't find a match for `, /*#__PURE__*/_jsx(Text, {
591
+ fontWeight: "bold",
592
+ children: `"${valueTrimmed}."`
593
+ }), ' Try another keyword, or see what our members are learning.']
594
+ }), /*#__PURE__*/_jsx(Menu, {
595
+ border: "none",
596
+ variant: "popover",
597
+ children: /*#__PURE__*/_jsx(PopularContent, {
598
+ onTrackingClick: onTrackingClick
599
+ })
600
+ })]
601
+ })]
602
+ }) : /*#__PURE__*/_jsxs(Menu, {
603
+ border: "none",
604
+ variant: "popover",
605
+ children: [/*#__PURE__*/_jsx(PopularSearches, {
606
+ navigateToSearch: navigateToSearch,
607
+ onTrackingClick: onTrackingClick
608
+ }), /*#__PURE__*/_jsx(PopularContent, {
609
+ onTrackingClick: onTrackingClick
610
+ })]
611
+ }), !!searchAsYouTypeResults?.top.length && /*#__PURE__*/_jsx(StrokeButton, {
612
+ my: 16,
613
+ onClick: () => {
614
+ onTrackingClick('view_all_results', {
615
+ search_id: searchAsYouTypeResults.searchId
616
+ });
617
+ navigateToSearch(value, searchAsYouTypeResults?.searchId);
618
+ closeSearch();
619
+ },
620
+ children: "View all results"
621
+ }), /*#__PURE__*/_jsx(QuizAndHelpCenterLinks, {
622
+ onTrackingClick: onTrackingClick,
623
+ handleCloseDropdown: closeSearch
624
+ })]
625
+ })]
626
+ })
627
+ })]
628
+ });
629
+ };