tide-design-system 2.0.21 → 2.0.23

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 (379) hide show
  1. package/.eslintrc.cjs +90 -0
  2. package/.storybook/main.ts +60 -0
  3. package/.storybook/preview.ts +252 -0
  4. package/dist/IconAccountBalance-ad4f4a95.js +16 -0
  5. package/dist/IconAdd-917e055b.js +16 -0
  6. package/dist/IconAiDescription-e6f8ed46.js +20 -0
  7. package/dist/IconAlignSpace-5d64a8e4.js +16 -0
  8. package/dist/IconApplePay-7742e162.js +16 -0
  9. package/dist/IconArrowBack-1810092d.js +16 -0
  10. package/dist/IconArrowForward-ddabefc9.js +16 -0
  11. package/dist/IconArrowRight-d93347c3.js +16 -0
  12. package/dist/IconAssignment-1983e555.js +16 -0
  13. package/dist/IconAwardStar-8128aca1.js +16 -0
  14. package/dist/IconBookmark-7d88d664.js +16 -0
  15. package/dist/IconCalendarMonth-2fd1e713.js +16 -0
  16. package/dist/IconCall-8aa582d9.js +16 -0
  17. package/dist/IconCheck-cf7470ee.js +16 -0
  18. package/dist/IconChevronLeft-558206bb.js +16 -0
  19. package/dist/IconChevronRight-28930a0b.js +16 -0
  20. package/dist/IconClear-9419bf17.js +16 -0
  21. package/dist/IconClose-abfb6177.js +16 -0
  22. package/dist/IconCycle-2affec71.js +16 -0
  23. package/dist/IconDelete-67b69553.js +16 -0
  24. package/dist/IconDiamond-93af488a.js +16 -0
  25. package/dist/IconDraft-6e70e48f.js +16 -0
  26. package/dist/IconEdit-16d34325.js +16 -0
  27. package/dist/IconError-a2922b95.js +16 -0
  28. package/dist/IconExpandContent-7e144d1c.js +16 -0
  29. package/dist/IconExpandLess-3a8a0552.js +16 -0
  30. package/dist/IconExpandMore-c600148e.js +16 -0
  31. package/dist/IconFacebook-4658b533.js +16 -0
  32. package/dist/IconFavorite-d23faefe.js +16 -0
  33. package/dist/IconFavoriteFilled-aa0d6d5e.js +16 -0
  34. package/dist/IconFormatBold-70a5cacf.js +16 -0
  35. package/dist/IconFormatItalic-c06504d7.js +16 -0
  36. package/dist/IconFormatListBulleted-9493858a.js +16 -0
  37. package/dist/IconForum-ae4ad63f.js +16 -0
  38. package/dist/IconGavel-44c29036.js +16 -0
  39. package/dist/IconGoogle-febad0d8.js +31 -0
  40. package/dist/IconGooglePay-8cf0286e.js +16 -0
  41. package/dist/IconGrid-25f665e0.js +16 -0
  42. package/dist/IconHeight-4fae7545.js +16 -0
  43. package/dist/IconHelp-340ee4fb.js +16 -0
  44. package/dist/IconInfo-efead10b.js +16 -0
  45. package/dist/IconInsertText-00236a65.js +16 -0
  46. package/dist/IconInstagram-57188d29.js +16 -0
  47. package/dist/IconIosShare-167aa8c4.js +16 -0
  48. package/dist/IconLayout-2865e0eb.js +16 -0
  49. package/dist/IconLinkedIn-f29c217d.js +16 -0
  50. package/dist/IconLocalShipping-901a3e4c.js +16 -0
  51. package/dist/IconLock-47669e20.js +16 -0
  52. package/dist/IconMail-9b85058a.js +16 -0
  53. package/dist/IconMenu-4bed57f3.js +16 -0
  54. package/dist/IconMoreHoriz-2aabe29f.js +16 -0
  55. package/dist/IconNotifications-bcbf1d8c.js +16 -0
  56. package/dist/IconOpenInNew-78fffcfe.js +16 -0
  57. package/dist/IconPalette-22865300.js +16 -0
  58. package/dist/IconPaypal-c28e6dbe.js +16 -0
  59. package/dist/IconPerson-7ada8b07.js +16 -0
  60. package/dist/IconPhotoCamera-31a58b85.js +16 -0
  61. package/dist/IconPinterest-fe5cc414.js +16 -0
  62. package/dist/IconPlayArrow-1ed5d884.js +16 -0
  63. package/dist/IconRemove-bab221ba.js +16 -0
  64. package/dist/IconRoundedCorners-e21c4321.js +16 -0
  65. package/dist/IconRuler-0ceea80a.js +16 -0
  66. package/dist/IconSearch-f8faefb4.js +16 -0
  67. package/dist/IconSeating-2ca8921d.js +16 -0
  68. package/dist/IconSell-b011ac2d.js +16 -0
  69. package/dist/IconShare-57f28ce3.js +16 -0
  70. package/dist/IconShoppingCart-b532dab0.js +16 -0
  71. package/dist/IconSms-378f373a.js +16 -0
  72. package/dist/IconStar-1b8ad0f9.js +16 -0
  73. package/dist/IconSwapVert-8085e942.js +16 -0
  74. package/dist/IconThreeDRotation-33f086a7.js +29 -0
  75. package/dist/IconTrophy-f4be8b54.js +16 -0
  76. package/dist/IconTune-0913ba01.js +16 -0
  77. package/dist/IconTwitter-9acefb07.js +16 -0
  78. package/dist/IconVideocam-33650e6f.js +16 -0
  79. package/dist/IconViewInAr-d1534ef2.js +16 -0
  80. package/dist/IconVisibility-a1c21dd0.js +16 -0
  81. package/dist/IconVolumeOff-8e121ef3.js +16 -0
  82. package/dist/IconVolumeOn-992e16dd.js +16 -0
  83. package/dist/IconWarning-6f490acf.js +16 -0
  84. package/dist/IconWeight-e3b3daa6.js +16 -0
  85. package/dist/IconWidth-023f69f2.js +16 -0
  86. package/dist/IconYoutube-a6224033.js +16 -0
  87. package/dist/css/grid-layout.css +7 -3
  88. package/dist/style.css +1 -1
  89. package/dist/tide-design-system.js +2172 -46
  90. package/dist/types/Icon.ts +6 -0
  91. package/index.ts +122 -0
  92. package/package.json +9 -12
  93. package/src/assets/css/animation.css +14 -0
  94. package/src/assets/css/dynamic-buttons.css +79 -0
  95. package/src/assets/css/dynamic-utilities.css +39 -0
  96. package/src/assets/css/grid-layout.css +71 -0
  97. package/src/assets/css/main.css +5 -0
  98. package/src/assets/css/realm/aero.css +42 -0
  99. package/src/assets/css/realm/atv.css +43 -0
  100. package/src/assets/css/realm/boatmart.css +42 -0
  101. package/src/assets/css/realm/cycle.css +42 -0
  102. package/src/assets/css/realm/equip.css +42 -0
  103. package/src/assets/css/realm/pwc.css +42 -0
  104. package/src/assets/css/realm/rv.css +50 -0
  105. package/src/assets/css/realm/snow.css +42 -0
  106. package/src/assets/css/realm/truck.css +42 -0
  107. package/src/assets/css/reset.css +79 -0
  108. package/src/assets/css/storybook.css +9 -0
  109. package/src/assets/css/utilities.css +1602 -0
  110. package/src/assets/css/variables.css +118 -0
  111. package/src/assets/svg/icons/IconAccountBalance.svg +5 -0
  112. package/src/assets/svg/icons/IconAdd.svg +3 -0
  113. package/src/assets/svg/icons/IconAiDescription.svg +7 -0
  114. package/src/assets/svg/icons/IconAlignSpace.svg +3 -0
  115. package/src/assets/svg/icons/IconApplePay.svg +5 -0
  116. package/src/assets/svg/icons/IconArrowBack.svg +3 -0
  117. package/src/assets/svg/icons/IconArrowForward.svg +3 -0
  118. package/src/assets/svg/icons/IconArrowRight.svg +3 -0
  119. package/src/assets/svg/icons/IconAssignment.svg +5 -0
  120. package/src/assets/svg/icons/IconAwardStar.svg +5 -0
  121. package/src/assets/svg/icons/IconBookmark.svg +5 -0
  122. package/src/assets/svg/icons/IconCalendarMonth.svg +5 -0
  123. package/src/assets/svg/icons/IconCall.svg +5 -0
  124. package/src/assets/svg/icons/IconCheck.svg +3 -0
  125. package/src/assets/svg/icons/IconChevronLeft.svg +3 -0
  126. package/src/assets/svg/icons/IconChevronRight.svg +3 -0
  127. package/src/assets/svg/icons/IconClear.svg +5 -0
  128. package/src/assets/svg/icons/IconClose.svg +3 -0
  129. package/src/assets/svg/icons/IconCycle.svg +5 -0
  130. package/src/assets/svg/icons/IconDelete.svg +5 -0
  131. package/src/assets/svg/icons/IconDiamond.svg +5 -0
  132. package/src/assets/svg/icons/IconDraft.svg +3 -0
  133. package/src/assets/svg/icons/IconEdit.svg +5 -0
  134. package/src/assets/svg/icons/IconError.svg +5 -0
  135. package/src/assets/svg/icons/IconExpandContent.svg +3 -0
  136. package/src/assets/svg/icons/IconExpandLess.svg +3 -0
  137. package/src/assets/svg/icons/IconExpandMore.svg +3 -0
  138. package/src/assets/svg/icons/IconFacebook.svg +5 -0
  139. package/src/assets/svg/icons/IconFavorite.svg +5 -0
  140. package/src/assets/svg/icons/IconFavoriteFilled.svg +5 -0
  141. package/src/assets/svg/icons/IconFormatBold.svg +5 -0
  142. package/src/assets/svg/icons/IconFormatItalic.svg +3 -0
  143. package/src/assets/svg/icons/IconFormatListBulleted.svg +5 -0
  144. package/src/assets/svg/icons/IconForum.svg +5 -0
  145. package/src/assets/svg/icons/IconGavel.svg +5 -0
  146. package/src/assets/svg/icons/IconGoogle.svg +18 -0
  147. package/src/assets/svg/icons/IconGooglePay.svg +5 -0
  148. package/src/assets/svg/icons/IconGrid.svg +3 -0
  149. package/src/assets/svg/icons/IconHeight.svg +3 -0
  150. package/src/assets/svg/icons/IconHelp.svg +5 -0
  151. package/src/assets/svg/icons/IconInfo.svg +5 -0
  152. package/src/assets/svg/icons/IconInsertText.svg +5 -0
  153. package/src/assets/svg/icons/IconInstagram.svg +5 -0
  154. package/src/assets/svg/icons/IconIosShare.svg +5 -0
  155. package/src/assets/svg/icons/IconLayout.svg +5 -0
  156. package/src/assets/svg/icons/IconLinkedIn.svg +5 -0
  157. package/src/assets/svg/icons/IconLocalShipping.svg +5 -0
  158. package/src/assets/svg/icons/IconLock.svg +5 -0
  159. package/src/assets/svg/icons/IconMail.svg +5 -0
  160. package/src/assets/svg/icons/IconMenu.svg +3 -0
  161. package/src/assets/svg/icons/IconMoreHoriz.svg +5 -0
  162. package/src/assets/svg/icons/IconNotifications.svg +5 -0
  163. package/src/assets/svg/icons/IconOpenInNew.svg +5 -0
  164. package/src/assets/svg/icons/IconPalette.svg +5 -0
  165. package/src/assets/svg/icons/IconPaypal.svg +5 -0
  166. package/src/assets/svg/icons/IconPerson.svg +5 -0
  167. package/src/assets/svg/icons/IconPhotoCamera.svg +5 -0
  168. package/src/assets/svg/icons/IconPinterest.svg +5 -0
  169. package/src/assets/svg/icons/IconPlayArrow.svg +3 -0
  170. package/src/assets/svg/icons/IconRemove.svg +3 -0
  171. package/src/assets/svg/icons/IconRoundedCorners.svg +5 -0
  172. package/src/assets/svg/icons/IconRuler.svg +3 -0
  173. package/src/assets/svg/icons/IconSearch.svg +5 -0
  174. package/src/assets/svg/icons/IconSeating.svg +3 -0
  175. package/src/assets/svg/icons/IconSell.svg +5 -0
  176. package/src/assets/svg/icons/IconShare.svg +5 -0
  177. package/src/assets/svg/icons/IconShoppingCart.svg +5 -0
  178. package/src/assets/svg/icons/IconSms.svg +5 -0
  179. package/src/assets/svg/icons/IconStar.svg +5 -0
  180. package/src/assets/svg/icons/IconSwapVert.svg +5 -0
  181. package/src/assets/svg/icons/IconThreeDRotation.svg +18 -0
  182. package/src/assets/svg/icons/IconTrophy.svg +5 -0
  183. package/src/assets/svg/icons/IconTune.svg +5 -0
  184. package/src/assets/svg/icons/IconTwitter.svg +5 -0
  185. package/src/assets/svg/icons/IconVideocam.svg +5 -0
  186. package/src/assets/svg/icons/IconViewInAr.svg +5 -0
  187. package/src/assets/svg/icons/IconVisibility.svg +5 -0
  188. package/src/assets/svg/icons/IconVolumeOff.svg +5 -0
  189. package/src/assets/svg/icons/IconVolumeOn.svg +5 -0
  190. package/src/assets/svg/icons/IconWarning.svg +5 -0
  191. package/src/assets/svg/icons/IconWeight.svg +3 -0
  192. package/src/assets/svg/icons/IconWidth.svg +3 -0
  193. package/src/assets/svg/icons/IconYoutube.svg +5 -0
  194. package/src/components/TideAccordionItem.vue +105 -0
  195. package/src/components/TideAlert.vue +124 -0
  196. package/src/components/TideBackgroundImage.vue +44 -0
  197. package/src/components/TideBadge.vue +30 -0
  198. package/src/components/TideBadgePremium.vue +31 -0
  199. package/src/components/TideBadgeTrustedPartner.vue +38 -0
  200. package/src/components/TideBreadCrumbs.vue +53 -0
  201. package/src/components/TideButton.vue +67 -0
  202. package/src/components/TideButtonIcon.vue +52 -0
  203. package/src/components/TideButtonPagination.vue +71 -0
  204. package/src/components/TideCard.vue +19 -0
  205. package/src/components/TideCarousel.vue +188 -0
  206. package/src/components/TideChipAction.vue +48 -0
  207. package/src/components/TideChipFilter.vue +55 -0
  208. package/src/components/TideChipInput.vue +44 -0
  209. package/src/components/TideColumns.vue +53 -0
  210. package/src/components/TideDivider.vue +24 -0
  211. package/src/components/TideIcon.vue +58 -0
  212. package/src/components/TideImage.vue +44 -0
  213. package/src/components/TideIndicator.vue +57 -0
  214. package/src/components/TideInputCheckbox.vue +145 -0
  215. package/src/components/TideInputRadio.vue +87 -0
  216. package/src/components/TideInputSelect.vue +204 -0
  217. package/src/components/TideInputText.vue +292 -0
  218. package/src/components/TideInputTextarea.vue +196 -0
  219. package/src/components/TideLink.vue +66 -0
  220. package/src/components/TideModal.vue +187 -0
  221. package/src/components/TidePagination.vue +67 -0
  222. package/src/components/TideSeoLinks.vue +58 -0
  223. package/src/components/TideTabs.vue +89 -0
  224. package/src/components/TideToggle.vue +95 -0
  225. package/src/docs/development.md +51 -0
  226. package/src/docs/integration.md +79 -0
  227. package/src/docs/storybook.md +39 -0
  228. package/src/stories/DemoCssUtilities.stories.ts +154 -0
  229. package/src/stories/DemoCssUtilitiesByTextInput.stories.ts +61 -0
  230. package/src/stories/FoundationsBorder.stories.ts +230 -0
  231. package/src/stories/FoundationsGap.stories.ts +180 -0
  232. package/src/stories/FoundationsMargin.stories.ts +155 -0
  233. package/src/stories/FoundationsPadding.stories.ts +108 -0
  234. package/src/stories/FoundationsShadow.stories.ts +84 -0
  235. package/src/stories/FoundationsTypography.stories.ts +172 -0
  236. package/src/stories/Template.stories.ts +71 -0
  237. package/src/stories/TideAccordionItem.stories.ts +68 -0
  238. package/src/stories/TideAlert.stories.ts +58 -0
  239. package/src/stories/TideBackgroundImage.stories.ts +53 -0
  240. package/src/stories/TideBadge.stories.ts +31 -0
  241. package/src/stories/TideBadgePremium.stories.ts +31 -0
  242. package/src/stories/TideBadgeTrustedPartner.stories.ts +33 -0
  243. package/src/stories/TideBreadCrumbs.stories.ts +43 -0
  244. package/src/stories/TideButton.stories.ts +118 -0
  245. package/src/stories/TideButtonIcon.stories.ts +103 -0
  246. package/src/stories/TideButtonPagination.stories.ts +99 -0
  247. package/src/stories/TideCard.stories.ts +38 -0
  248. package/src/stories/TideCarousel.stories.ts +130 -0
  249. package/src/stories/TideChipAction.stories.ts +46 -0
  250. package/src/stories/TideChipFilter.stories.ts +59 -0
  251. package/src/stories/TideChipInput.stories.ts +42 -0
  252. package/src/stories/TideColumns.stories.ts +90 -0
  253. package/src/stories/TideDivider.stories.ts +46 -0
  254. package/src/stories/TideIcon.stories.ts +29 -0
  255. package/src/stories/TideIndicator.stories.ts +31 -0
  256. package/src/stories/TideInputCheckbox.stories.ts +86 -0
  257. package/src/stories/TideInputRadio.stories.ts +71 -0
  258. package/src/stories/TideInputSelect.stories.ts +145 -0
  259. package/src/stories/TideInputText.stories.ts +181 -0
  260. package/src/stories/TideInputTextarea.stories.ts +116 -0
  261. package/src/stories/TideLink.stories.ts +137 -0
  262. package/src/stories/TideModal.stories.ts +122 -0
  263. package/src/stories/TidePagination.stories.ts +83 -0
  264. package/src/stories/TideSeoLinks.stories.ts +67 -0
  265. package/src/stories/TideTabs.stories.ts +100 -0
  266. package/src/stories/TideToggle.stories.ts +69 -0
  267. package/src/stories/Welcome.mdx +17 -0
  268. package/src/types/Alert.ts +8 -0
  269. package/src/types/Badge.ts +21 -0
  270. package/src/types/BreadCrumb.ts +5 -0
  271. package/src/types/Detail.ts +4 -0
  272. package/src/types/Element.ts +13 -0
  273. package/src/types/FacetRange.ts +84 -0
  274. package/src/types/Field.ts +54 -0
  275. package/src/types/Form.ts +58 -0
  276. package/src/types/Formatted.ts +22 -0
  277. package/src/types/Icon.ts +87 -0
  278. package/src/types/Link.ts +5 -0
  279. package/src/types/ListingMedia.ts +43 -0
  280. package/src/types/Orientation.ts +6 -0
  281. package/src/types/Priority.ts +11 -0
  282. package/src/types/Raw.ts +5 -0
  283. package/src/types/Realm.ts +13 -0
  284. package/src/types/RealmConfig.ts +14 -0
  285. package/src/types/Select.ts +10 -0
  286. package/src/types/Size.ts +6 -0
  287. package/src/types/Storybook.ts +219 -0
  288. package/src/types/Styles.ts +590 -0
  289. package/src/types/Tab.ts +5 -0
  290. package/src/types/Target.ts +6 -0
  291. package/src/types/TextInput.ts +16 -0
  292. package/src/types/Validation.ts +24 -0
  293. package/src/utilities/format.ts +184 -0
  294. package/src/utilities/storybook.ts +295 -0
  295. package/src/utilities/validation.ts +197 -0
  296. package/tests/utilities-format.spec.ts +430 -0
  297. package/tsconfig.app.json +14 -0
  298. package/tsconfig.config.json +12 -0
  299. package/tsconfig.json +22 -0
  300. package/tsconfig.vitest.json +10 -0
  301. package/vite.config.ts +43 -0
  302. package/dist/IconAccountBalance-e434dc83.js +0 -11
  303. package/dist/IconAdd-137c81ee.js +0 -11
  304. package/dist/IconAiDescription-b61fdf89.js +0 -15
  305. package/dist/IconAlignSpace-7fbe46b4.js +0 -11
  306. package/dist/IconApplePay-64062dcc.js +0 -11
  307. package/dist/IconArrowBack-e6928100.js +0 -11
  308. package/dist/IconArrowForward-d6ab6d3a.js +0 -11
  309. package/dist/IconArrowRight-c6a11581.js +0 -11
  310. package/dist/IconAssignment-e2763562.js +0 -11
  311. package/dist/IconAwardStar-17cf905a.js +0 -11
  312. package/dist/IconBookmark-82addaac.js +0 -11
  313. package/dist/IconCalendarMonth-1a83d5d5.js +0 -11
  314. package/dist/IconCall-ba5b39c1.js +0 -11
  315. package/dist/IconCheck-cf09e735.js +0 -11
  316. package/dist/IconChevronLeft-8f71380a.js +0 -11
  317. package/dist/IconChevronRight-68656c61.js +0 -11
  318. package/dist/IconClear-785206de.js +0 -11
  319. package/dist/IconClose-44cd3416.js +0 -11
  320. package/dist/IconCycle-7920badb.js +0 -11
  321. package/dist/IconDelete-6392fe21.js +0 -11
  322. package/dist/IconDiamond-87eabf00.js +0 -11
  323. package/dist/IconEdit-8e98e4d6.js +0 -11
  324. package/dist/IconError-744d1a2c.js +0 -11
  325. package/dist/IconExpandContent-b7b8cde3.js +0 -11
  326. package/dist/IconExpandLess-210cd748.js +0 -11
  327. package/dist/IconExpandMore-42efdc9f.js +0 -11
  328. package/dist/IconFacebook-fb220a44.js +0 -11
  329. package/dist/IconFavorite-f59e02f9.js +0 -11
  330. package/dist/IconFavoriteFilled-e8d07819.js +0 -11
  331. package/dist/IconFormatBold-0029544d.js +0 -11
  332. package/dist/IconFormatItalic-3a6bf7c0.js +0 -11
  333. package/dist/IconFormatListBulleted-aa928706.js +0 -11
  334. package/dist/IconForum-eb80ff50.js +0 -11
  335. package/dist/IconGavel-e89cca44.js +0 -11
  336. package/dist/IconGoogle-7a073b42.js +0 -28
  337. package/dist/IconGooglePay-ee54db4a.js +0 -11
  338. package/dist/IconGrid-bf797b90.js +0 -11
  339. package/dist/IconHelp-19e606c6.js +0 -11
  340. package/dist/IconInfo-559b7d0f.js +0 -11
  341. package/dist/IconInsertText-c915a8a6.js +0 -11
  342. package/dist/IconInstagram-0575acd4.js +0 -11
  343. package/dist/IconIosShare-93c68705.js +0 -11
  344. package/dist/IconLayout-85066093.js +0 -11
  345. package/dist/IconLinkedIn-75fb43e2.js +0 -11
  346. package/dist/IconLocalShipping-abceb11a.js +0 -11
  347. package/dist/IconLock-1341dc44.js +0 -11
  348. package/dist/IconMail-925571bb.js +0 -11
  349. package/dist/IconMenu-6c017324.js +0 -11
  350. package/dist/IconMoreHoriz-cd236be0.js +0 -11
  351. package/dist/IconNotifications-74251294.js +0 -11
  352. package/dist/IconOpenInNew-e350684e.js +0 -11
  353. package/dist/IconPalette-0741adc0.js +0 -11
  354. package/dist/IconPaypal-9267d4dd.js +0 -11
  355. package/dist/IconPerson-02596ee6.js +0 -11
  356. package/dist/IconPhotoCamera-04e406ff.js +0 -11
  357. package/dist/IconPinterest-9e6e2f1f.js +0 -11
  358. package/dist/IconPlayArrow-aa6e204b.js +0 -11
  359. package/dist/IconRemove-8f57304c.js +0 -11
  360. package/dist/IconRoundedCorners-673a1198.js +0 -11
  361. package/dist/IconSearch-a0ebf9b5.js +0 -11
  362. package/dist/IconSell-b20a15c2.js +0 -11
  363. package/dist/IconShare-fa702e5c.js +0 -11
  364. package/dist/IconShoppingCart-81bd675f.js +0 -11
  365. package/dist/IconSms-71c3667d.js +0 -11
  366. package/dist/IconStar-8ef71a6b.js +0 -11
  367. package/dist/IconSwapVert-e1a856cc.js +0 -11
  368. package/dist/IconThreeDRotation-8ba20beb.js +0 -26
  369. package/dist/IconTrophy-3a84843d.js +0 -11
  370. package/dist/IconTune-8d1f5475.js +0 -11
  371. package/dist/IconTwitter-bff7aa81.js +0 -11
  372. package/dist/IconVideocam-c90004a7.js +0 -11
  373. package/dist/IconViewInAr-9c1793fa.js +0 -11
  374. package/dist/IconVisibility-7eecd864.js +0 -11
  375. package/dist/IconVolumeOff-aebdfc74.js +0 -11
  376. package/dist/IconVolumeOn-023c1853.js +0 -11
  377. package/dist/IconWarning-5719af6f.js +0 -11
  378. package/dist/IconYoutube-554684e4.js +0 -11
  379. package/dist/index-b7b97ebf.js +0 -2165
@@ -1,48 +1,2174 @@
1
- import { A as i, B as T, a as d, b as t, c as n, C as o, E as r, d as I, I as E, P as u, R as B, S as A, T as g, e as p, f as C, g as m, h as R, i as c, j as l, k as P, l as S, m as L, n as M, o as D, p as G, q as N, r as _, s as h, t as k, u as x, v as O, w as b, x as f, y as v, z as F, D as K, F as U, G as j, H as q, J as w, K as y, L as z, M as H } from "./index-b7b97ebf.js";
2
- import "vue";
1
+ import { defineComponent as p, openBlock as l, createElementBlock as r, normalizeClass as a, unref as t, ref as u, watch as Q, defineAsyncComponent as Re, markRaw as ue, createBlock as D, resolveDynamicComponent as z, createCommentVNode as A, toDisplayString as N, onMounted as ie, createElementVNode as E, createVNode as P, renderSlot as B, withCtx as J, computed as F, Fragment as $, renderList as q, createTextVNode as ce, onUnmounted as Ae, onUpdated as Ne, normalizeStyle as se, getCurrentInstance as j, withDirectives as ae, vModelSelect as Le, withModifiers as Te, vModelDynamic as pe, vModelText as Fe, Teleport as ve } from "vue";
2
+ const _t = {
3
+ SM: "sm",
4
+ MD: "md",
5
+ LG: "lg",
6
+ XL: "xl"
7
+ }, e = {
8
+ withBreakpoint: (o, s) => o.map((i) => `${s}-${i}`),
9
+ ALIGN: {
10
+ X: {
11
+ CENTER: "tide-text-center",
12
+ LEFT: "tide-text-left",
13
+ RIGHT: "tide-text-right"
14
+ },
15
+ Y: {
16
+ MIDDLE: "tide-align-middle"
17
+ }
18
+ },
19
+ AXIS1: {
20
+ AROUND: "tide-axis1-around",
21
+ BETWEEN: "tide-axis1-between",
22
+ CENTER: "tide-axis1-center",
23
+ END: "tide-axis1-end",
24
+ START: "tide-axis1-start"
25
+ },
26
+ AXIS2: {
27
+ AROUND: "tide-axis2-around",
28
+ CENTER: "tide-axis2-center",
29
+ END: "tide-axis2-end",
30
+ START: "tide-axis2-start"
31
+ },
32
+ BG: {
33
+ BLUR: "tide-bg-blur",
34
+ ERROR: "tide-bg-error",
35
+ INFO: "tide-bg-info",
36
+ PRIMARY: "tide-bg-primary",
37
+ SECONDARY: "tide-bg-secondary",
38
+ SUCCESS: "tide-bg-success",
39
+ SURFACE: {
40
+ ACCENT: "tide-bg-surface-accent",
41
+ ACCENT_VARIANT: "tide-bg-surface-accent-variant",
42
+ BRAND: "tide-bg-surface-brand",
43
+ DEFAULT: "tide-bg-surface",
44
+ ERROR: "tide-bg-surface-error",
45
+ FLOATING: "tide-bg-surface-floating",
46
+ GRADIENT: "tide-bg-surface-gradient",
47
+ INFO: "tide-bg-surface-info",
48
+ SUCCESS: "tide-bg-surface-success",
49
+ VARIANT: "tide-bg-surface-variant",
50
+ WARNING: "tide-bg-surface-warning"
51
+ },
52
+ WARNING: "tide-bg-warning"
53
+ },
54
+ BORDER: {
55
+ COLOR: {
56
+ DEFAULT: "tide-border",
57
+ FLOATING: "tide-border-floating",
58
+ HIGH: "tide-border-high",
59
+ LOW: "tide-border-low",
60
+ PRIMARY: "tide-border-primary"
61
+ },
62
+ RADIUS: {
63
+ QUARTER: "tide-radius-1/4",
64
+ HALF: "tide-radius-1/2",
65
+ ONE: "tide-radius-1",
66
+ FULL: "tide-radius-full"
67
+ },
68
+ BOTTOM: {
69
+ ONE: "tide-border-bottom-1",
70
+ TWO: "tide-border-bottom-2"
71
+ },
72
+ FULL: {
73
+ ONE: "tide-border-1",
74
+ TWO: "tide-border-2"
75
+ },
76
+ LEFT: {
77
+ ONE: "tide-border-left-1",
78
+ TWO: "tide-border-left-2"
79
+ },
80
+ RIGHT: {
81
+ ONE: "tide-border-right-1",
82
+ TWO: "tide-border-right-2"
83
+ },
84
+ TOP: {
85
+ ONE: "tide-border-top-1",
86
+ TWO: "tide-border-top-2"
87
+ }
88
+ },
89
+ BOX_SIZING: {
90
+ BORDER_BOX: "tide-box-border",
91
+ CONTENT_BOX: "tide-box-content"
92
+ },
93
+ BREAK_WORD: {
94
+ ON: "tide-break-word"
95
+ },
96
+ COLUMNS: {
97
+ ONE: "tide-columns-1",
98
+ TWO: "tide-columns-2",
99
+ THREE: "tide-columns-3",
100
+ FOUR: "tide-columns-4"
101
+ },
102
+ CURSOR: {
103
+ NOT_ALLOWED: "tide-cursor-not-allowed",
104
+ POINTER: "tide-cursor-pointer",
105
+ TEXT: "tide-cursor-text"
106
+ },
107
+ DISPLAY: {
108
+ BLOCK: "tide-display-block",
109
+ CONTENTS: "tide-contents",
110
+ FLEX: "tide-display-flex",
111
+ GRID: "tide-display-grid",
112
+ INITIAL: "initial",
113
+ INLINE: "tide-display-inline",
114
+ INLINE_BLOCK: "tide-display-inline-block",
115
+ INLINE_FLEX: "tide-display-inline-flex",
116
+ NONE: "tide-display-none"
117
+ },
118
+ FLEX: {
119
+ BASIS: {
120
+ ZERO: "tide-flex-basis-0"
121
+ },
122
+ DIRECTION: {
123
+ COLUMN: "tide-flex-column",
124
+ COLUMN_REVERSE: "tide-flex-column-reverse",
125
+ ROW: "tide-flex-row",
126
+ ROW_REVERSE: "tide-flex-row-reverse"
127
+ },
128
+ GROW: {
129
+ OFF: "tide-grow-none",
130
+ ON: "tide-grow"
131
+ },
132
+ SHRINK: {
133
+ OFF: "tide-shrink-none",
134
+ ON: "tide-shrink"
135
+ },
136
+ WRAP: "tide-flex-wrap"
137
+ },
138
+ FONT: {
139
+ COLOR: {
140
+ PRIMARY: "tide-font-on-primary",
141
+ SECONDARY: "tide-font-on-secondary",
142
+ SURFACE: {
143
+ BRAND: "tide-font-on-surface-brand",
144
+ DEFAULT: "tide-font-on-surface",
145
+ INVERSE: "tide-font-on-surface-inverse",
146
+ VARIANT: "tide-font-on-surface-variant",
147
+ VARIANT_INVERSE: "tide-font-on-surface-variant-inverse"
148
+ }
149
+ },
150
+ SIZE: {
151
+ TWELVE: "tide-font-12",
152
+ FOURTEEN: "tide-font-14",
153
+ SIXTEEN: "tide-font-16",
154
+ TWENTY: "tide-font-20",
155
+ TWENTY_FOUR: "tide-font-24",
156
+ THIRTY_TWO: "tide-font-32"
157
+ },
158
+ WEIGHT: {
159
+ FOUR_HUNDRED: "tide-font-400",
160
+ FIVE_HUNDRED: "tide-font-500",
161
+ SIX_HUNDRED: "tide-font-600",
162
+ SEVEN_HUNDRED: "tide-font-700"
163
+ }
164
+ },
165
+ GAP: {
166
+ QUARTER: "tide-gap-1/4",
167
+ HALF: "tide-gap-1/2",
168
+ ONE: "tide-gap-1",
169
+ TWO: "tide-gap-2",
170
+ FOUR: "tide-gap-4"
171
+ },
172
+ GRID: {
173
+ END: {
174
+ ONE: "tide-end-1",
175
+ TWO: "tide-end-2",
176
+ THREE: "tide-end-3",
177
+ FOUR: "tide-end-4",
178
+ FIVE: "tide-end-5",
179
+ SIX: "tide-end-6",
180
+ SEVEN: "tide-end-7",
181
+ EIGHT: "tide-end-8",
182
+ NINE: "tide-end-9",
183
+ TEN: "tide-end-10",
184
+ ELEVEN: "tide-end-11",
185
+ TWELVE: "tide-end-12",
186
+ THIRTEEN: "tide-end-13"
187
+ },
188
+ FLUID: "tide-fluid",
189
+ LAYOUT: "tide-grid-layout",
190
+ START: {
191
+ ZERO: "tide-start-0",
192
+ ONE: "tide-start-1",
193
+ TWO: "tide-start-2",
194
+ THREE: "tide-start-3",
195
+ FOUR: "tide-start-4",
196
+ FIVE: "tide-start-5",
197
+ SIX: "tide-start-6",
198
+ SEVEN: "tide-start-7",
199
+ EIGHT: "tide-start-8",
200
+ NINE: "tide-start-9",
201
+ TEN: "tide-start-10",
202
+ ELEVEN: "tide-start-11",
203
+ TWELVE: "tide-start-12"
204
+ },
205
+ XL: "tide-grid-xl"
206
+ },
207
+ HEIGHT: {
208
+ ZERO: "tide-width-0",
209
+ FULL: "tide-height-full"
210
+ },
211
+ ISOLATION: {
212
+ ISOLATE: "tide-isolate"
213
+ },
214
+ LIST_BULLETS: {
215
+ OFF: "tide-list-none"
216
+ },
217
+ MARGIN: {
218
+ BOTTOM: {
219
+ QUARTER: "tide-margin-bottom-1/4",
220
+ HALF: "tide-margin-bottom-1/2",
221
+ ONE: "tide-margin-bottom-1",
222
+ TWO: "tide-margin-bottom-2",
223
+ FOUR: "tide-margin-bottom-4"
224
+ },
225
+ FULL: {
226
+ QUARTER: "tide-margin-1/4",
227
+ HALF: "tide-margin-1/2",
228
+ ONE: "tide-margin-1",
229
+ TWO: "tide-margin-2",
230
+ FOUR: "tide-margin-4"
231
+ },
232
+ LEFT: {
233
+ AUTO: "tide-margin-left-auto",
234
+ QUARTER: "tide-margin-left-1/4",
235
+ HALF: "tide-margin-left-1/2",
236
+ ONE: "tide-margin-left-1",
237
+ TWO: "tide-margin-left-2",
238
+ FOUR: "tide-margin-left-4"
239
+ },
240
+ RIGHT: {
241
+ AUTO: "tide-margin-right-auto",
242
+ QUARTER: "tide-margin-right-1/4",
243
+ HALF: "tide-margin-right-1/2",
244
+ ONE: "tide-margin-right-1",
245
+ TWO: "tide-margin-right-2",
246
+ FOUR: "tide-margin-right-4"
247
+ },
248
+ TOP: {
249
+ QUARTER: "tide-margin-top-1/4",
250
+ HALF: "tide-margin-top-1/2",
251
+ ONE: "tide-margin-top-1",
252
+ TWO: "tide-margin-top-2",
253
+ FOUR: "tide-margin-top-4"
254
+ },
255
+ X: {
256
+ AUTO: "tide-margin-x-auto",
257
+ QUARTER: "tide-margin-x-1/4",
258
+ HALF: "tide-margin-x-1/2",
259
+ ONE: "tide-margin-x-1",
260
+ TWO: "tide-margin-x-2",
261
+ FOUR: "tide-margin-x-4"
262
+ },
263
+ Y: {
264
+ QUARTER: "tide-margin-y-1/4",
265
+ HALF: "tide-margin-y-1/2",
266
+ ONE: "tide-margin-y-1",
267
+ TWO: "tide-margin-y-2",
268
+ FOUR: "tide-margin-y-4"
269
+ }
270
+ },
271
+ OBJECT: {
272
+ CENTER: "tide-object-center",
273
+ CONTAIN: "tide-object-contain",
274
+ COVER: "tide-object-cover",
275
+ SCALE_DOWN: "tide-object-scale-down"
276
+ },
277
+ OPACITY: {
278
+ OFF: "tide-opacity-none",
279
+ ON: "tide-opacity"
280
+ },
281
+ OVERFLOW: {
282
+ X: {
283
+ AUTO: "tide-x-auto",
284
+ HIDDEN: "tide-x-hidden",
285
+ SCROLL: "tide-x-scroll"
286
+ },
287
+ XY: {
288
+ AUTO: "tide-xy-auto",
289
+ HIDDEN: "tide-xy-hidden"
290
+ },
291
+ Y: {
292
+ AUTO: "tide-y-auto",
293
+ HIDDEN: "tide-y-hidden"
294
+ }
295
+ },
296
+ PADDING: {
297
+ BOTTOM: {
298
+ QUARTER: "tide-padding-bottom-1/4",
299
+ HALF: "tide-padding-bottom-1/2",
300
+ ONE: "tide-padding-bottom-1",
301
+ TWO: "tide-padding-bottom-2",
302
+ FOUR: "tide-padding-bottom-4"
303
+ },
304
+ FULL: {
305
+ QUARTER: "tide-padding-1/4",
306
+ HALF: "tide-padding-1/2",
307
+ ONE: "tide-padding-1",
308
+ TWO: "tide-padding-2",
309
+ FOUR: "tide-padding-4"
310
+ },
311
+ LEFT: {
312
+ QUARTER: "tide-padding-left-1/4",
313
+ HALF: "tide-padding-left-1/2",
314
+ ONE: "tide-padding-left-1",
315
+ TWO: "tide-padding-left-2",
316
+ FOUR: "tide-padding-left-4"
317
+ },
318
+ RIGHT: {
319
+ QUARTER: "tide-padding-right-1/4",
320
+ HALF: "tide-padding-right-1/2",
321
+ ONE: "tide-padding-right-1",
322
+ TWO: "tide-padding-right-2",
323
+ FOUR: "tide-padding-right-4"
324
+ },
325
+ TOP: {
326
+ QUARTER: "tide-padding-top-1/4",
327
+ HALF: "tide-padding-top-1/2",
328
+ ONE: "tide-padding-top-1",
329
+ TWO: "tide-padding-top-2",
330
+ FOUR: "tide-padding-top-4"
331
+ },
332
+ X: {
333
+ QUARTER: "tide-padding-x-1/4",
334
+ HALF: "tide-padding-x-1/2",
335
+ ONE: "tide-padding-x-1",
336
+ TWO: "tide-padding-x-2",
337
+ FOUR: "tide-padding-x-4"
338
+ },
339
+ Y: {
340
+ QUARTER: "tide-padding-y-1/4",
341
+ HALF: "tide-padding-y-1/2",
342
+ ONE: "tide-padding-y-1",
343
+ TWO: "tide-padding-y-2",
344
+ FOUR: "tide-padding-y-4"
345
+ }
346
+ },
347
+ POINTER_EVENTS: {
348
+ OFF: "tide-pointer-events-none",
349
+ ON: "tide-pointer-events"
350
+ },
351
+ POSITION: {
352
+ ABSOLUTE: "tide-position-absolute",
353
+ FIXED: "tide-position-fixed",
354
+ RELATIVE: "tide-position-relative",
355
+ STICKY: "tide-sticky"
356
+ },
357
+ POSITIONING: {
358
+ BOTTOM: "tide-bottom-0",
359
+ LEFT: "tide-left-0",
360
+ RIGHT: "tide-right-0",
361
+ TOP: "tide-top-0"
362
+ },
363
+ SCROLLBAR: {
364
+ OFF: "tide-scrollbar-none"
365
+ },
366
+ SHADOW: {
367
+ BOTTOM: "tide-shadow-bottom",
368
+ TOP: "tide-shadow-top"
369
+ },
370
+ SNAP: {
371
+ ON: "tide-snap"
372
+ },
373
+ SNAP_ALIGN: {
374
+ START: "tide-snap-start"
375
+ },
376
+ TEXT_TRANSFORM: {
377
+ LOWER: "tide-text-transform-lower",
378
+ NONE: "tide-text-transform-none",
379
+ UPPER: "tide-text-transform-upper"
380
+ },
381
+ UNDERLINE: {
382
+ HOVER: "tide-underline-hover",
383
+ OFF: "tide-underline-none",
384
+ ON: "tide-underline"
385
+ },
386
+ VISIBILITY: {
387
+ OFF: "tide-visible-none",
388
+ ON: "tide-visible"
389
+ },
390
+ WHITESPACE_WRAP: {
391
+ OFF: "tide-whitespace-nowrap"
392
+ },
393
+ WIDTH: {
394
+ ZERO: "tide-width-0",
395
+ FULL: "tide-width-full",
396
+ MAX_FULL: "tide-max-width-full"
397
+ }
398
+ };
399
+ e.DISPLAY.BLOCK, e.DISPLAY.CONTENTS, e.DISPLAY.FLEX, e.DISPLAY.GRID, e.DISPLAY.NONE, e.DISPLAY.INITIAL, e.DISPLAY.INLINE, e.DISPLAY.INLINE_BLOCK, e.DISPLAY.INLINE_FLEX, e.AXIS1.AROUND, e.AXIS1.BETWEEN, e.AXIS1.CENTER, e.AXIS1.END, e.AXIS1.START, e.AXIS2.AROUND, e.AXIS2.CENTER, e.AXIS2.END, e.AXIS2.START, e.FLEX.DIRECTION.COLUMN, e.FLEX.DIRECTION.COLUMN_REVERSE, e.FLEX.DIRECTION.ROW, e.FLEX.DIRECTION.ROW_REVERSE, e.GAP.ONE, e.GAP.HALF, e.GAP.QUARTER, e.GAP.TWO, e.GAP.FOUR, e.FLEX.BASIS.ZERO, e.FLEX.GROW.ON, e.FLEX.GROW.OFF, e.FLEX.SHRINK.ON, e.FLEX.SHRINK.OFF, e.FLEX.WRAP, e.POSITION.ABSOLUTE, e.POSITION.FIXED, e.POSITION.RELATIVE, e.POSITION.STICKY, e.POSITIONING.TOP, e.POSITIONING.RIGHT, e.POSITIONING.BOTTOM, e.POSITIONING.LEFT, e.BOX_SIZING.BORDER_BOX, e.BOX_SIZING.CONTENT_BOX, e.MARGIN.FULL.ONE, e.MARGIN.FULL.HALF, e.MARGIN.FULL.QUARTER, e.MARGIN.FULL.TWO, e.MARGIN.FULL.FOUR, e.MARGIN.Y.ONE, e.MARGIN.Y.HALF, e.MARGIN.Y.QUARTER, e.MARGIN.Y.TWO, e.MARGIN.Y.FOUR, e.MARGIN.TOP.ONE, e.MARGIN.TOP.HALF, e.MARGIN.TOP.QUARTER, e.MARGIN.TOP.TWO, e.MARGIN.TOP.FOUR, e.MARGIN.X.ONE, e.MARGIN.X.HALF, e.MARGIN.X.QUARTER, e.MARGIN.X.TWO, e.MARGIN.X.FOUR, e.MARGIN.X.AUTO, e.MARGIN.RIGHT.ONE, e.MARGIN.RIGHT.HALF, e.MARGIN.RIGHT.QUARTER, e.MARGIN.RIGHT.TWO, e.MARGIN.RIGHT.FOUR, e.MARGIN.RIGHT.AUTO, e.MARGIN.BOTTOM.ONE, e.MARGIN.BOTTOM.HALF, e.MARGIN.BOTTOM.QUARTER, e.MARGIN.BOTTOM.TWO, e.MARGIN.BOTTOM.FOUR, e.MARGIN.LEFT.ONE, e.MARGIN.LEFT.HALF, e.MARGIN.LEFT.QUARTER, e.MARGIN.LEFT.TWO, e.MARGIN.LEFT.FOUR, e.MARGIN.LEFT.AUTO, e.BORDER.FULL.ONE, e.BORDER.FULL.TWO, e.BORDER.TOP.ONE, e.BORDER.TOP.TWO, e.BORDER.RIGHT.ONE, e.BORDER.RIGHT.TWO, e.BORDER.BOTTOM.ONE, e.BORDER.BOTTOM.TWO, e.BORDER.LEFT.ONE, e.BORDER.LEFT.TWO, e.BORDER.RADIUS.ONE, e.BORDER.RADIUS.HALF, e.BORDER.RADIUS.QUARTER, e.BORDER.RADIUS.FULL, e.PADDING.FULL.ONE, e.PADDING.FULL.HALF, e.PADDING.FULL.QUARTER, e.PADDING.FULL.TWO, e.PADDING.FULL.FOUR, e.PADDING.Y.ONE, e.PADDING.Y.HALF, e.PADDING.Y.QUARTER, e.PADDING.Y.TWO, e.PADDING.Y.FOUR, e.PADDING.TOP.ONE, e.PADDING.TOP.HALF, e.PADDING.TOP.QUARTER, e.PADDING.TOP.TWO, e.PADDING.TOP.FOUR, e.PADDING.X.ONE, e.PADDING.X.HALF, e.PADDING.X.QUARTER, e.PADDING.X.TWO, e.PADDING.X.FOUR, e.PADDING.RIGHT.ONE, e.PADDING.RIGHT.HALF, e.PADDING.RIGHT.QUARTER, e.PADDING.RIGHT.TWO, e.PADDING.RIGHT.FOUR, e.PADDING.BOTTOM.ONE, e.PADDING.BOTTOM.HALF, e.PADDING.BOTTOM.QUARTER, e.PADDING.BOTTOM.TWO, e.PADDING.BOTTOM.FOUR, e.PADDING.LEFT.ONE, e.PADDING.LEFT.HALF, e.PADDING.LEFT.QUARTER, e.PADDING.LEFT.TWO, e.PADDING.LEFT.FOUR, e.WIDTH.MAX_FULL, e.WIDTH.ZERO, e.WIDTH.FULL, e.HEIGHT.ZERO, e.HEIGHT.FULL, e.ALIGN.Y.MIDDLE, e.BREAK_WORD, e.CURSOR.NOT_ALLOWED, e.CURSOR.POINTER, e.FONT.SIZE.TWELVE, e.FONT.SIZE.FOURTEEN, e.FONT.SIZE.SIXTEEN, e.FONT.SIZE.TWENTY, e.FONT.SIZE.TWENTY_FOUR, e.FONT.SIZE.THIRTY_TWO, e.FONT.WEIGHT.FOUR_HUNDRED, e.FONT.WEIGHT.FIVE_HUNDRED, e.FONT.WEIGHT.SIX_HUNDRED, e.FONT.WEIGHT.SEVEN_HUNDRED, e.LIST_BULLETS.OFF, e.OBJECT.CENTER, e.OBJECT.CONTAIN, e.OBJECT.COVER, e.OBJECT.SCALE_DOWN, e.POINTER_EVENTS.ON, e.POINTER_EVENTS.OFF, e.SCROLLBAR.OFF, e.SHADOW.BOTTOM, e.SHADOW.TOP, e.SNAP.ON, e.SNAP_ALIGN.START, e.ALIGN.X.LEFT, e.ALIGN.X.CENTER, e.ALIGN.X.RIGHT, e.TEXT_TRANSFORM.LOWER, e.TEXT_TRANSFORM.NONE, e.TEXT_TRANSFORM.UPPER, e.UNDERLINE, e.UNDERLINE.HOVER, e.UNDERLINE.OFF, e.VISIBILITY.ON, e.VISIBILITY.OFF, e.WHITESPACE_WRAP.OFF, e.OVERFLOW.XY.AUTO, e.OVERFLOW.XY.HIDDEN, e.OVERFLOW.X.AUTO, e.OVERFLOW.X.HIDDEN, e.OVERFLOW.X.SCROLL, e.OVERFLOW.Y.AUTO, e.OVERFLOW.Y.HIDDEN;
400
+ const de = {
401
+ HORIZONTAL: "horizontal",
402
+ VERTICAL: "vertical"
403
+ }, re = /* @__PURE__ */ p({
404
+ __name: "TideDivider",
405
+ props: {
406
+ orientation: { default: de.HORIZONTAL }
407
+ },
408
+ setup(o) {
409
+ const s = o;
410
+ return (i, n) => (l(), r("div", {
411
+ class: a([
412
+ t(e).BORDER.COLOR.LOW,
413
+ s.orientation === t(de).HORIZONTAL ? [t(e).MARGIN.Y.HALF, t(e).BORDER.BOTTOM.ONE] : [t(e).MARGIN.X.HALF, t(e).BORDER.RIGHT.ONE]
414
+ ])
415
+ }, null, 2));
416
+ }
417
+ }), _e = (o, s) => {
418
+ const i = o[s];
419
+ return i ? typeof i == "function" ? i() : Promise.resolve(i) : new Promise((n, d) => {
420
+ (typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(d.bind(null, new Error("Unknown variable dynamic import: " + s)));
421
+ });
422
+ }, y = {
423
+ LARGE: "large",
424
+ SMALL: "small"
425
+ }, De = (o) => o && typeof o == "string" ? o.replace(/([a-z]{1})([A-Z]{1})/g, "$1 $2").replace(/[\s_-]/g, " ").toLowerCase().split(" ").map((s) => s.slice(0, 1).toUpperCase() + s.slice(1)).join("") : o, Se = /* @__PURE__ */ p({
426
+ __name: "TideIcon",
427
+ props: {
428
+ icon: {},
429
+ size: { default: y.SMALL }
430
+ },
431
+ setup(o) {
432
+ const s = o, i = u();
433
+ return Q(
434
+ () => s.icon,
435
+ () => {
436
+ const n = s.icon, d = De(n), T = Re(() => _e(/* @__PURE__ */ Object.assign({ "../assets/svg/icons/IconAccountBalance.svg": () => import("./IconAccountBalance-ad4f4a95.js"), "../assets/svg/icons/IconAdd.svg": () => import("./IconAdd-917e055b.js"), "../assets/svg/icons/IconAiDescription.svg": () => import("./IconAiDescription-e6f8ed46.js"), "../assets/svg/icons/IconAlignSpace.svg": () => import("./IconAlignSpace-5d64a8e4.js"), "../assets/svg/icons/IconApplePay.svg": () => import("./IconApplePay-7742e162.js"), "../assets/svg/icons/IconArrowBack.svg": () => import("./IconArrowBack-1810092d.js"), "../assets/svg/icons/IconArrowForward.svg": () => import("./IconArrowForward-ddabefc9.js"), "../assets/svg/icons/IconArrowRight.svg": () => import("./IconArrowRight-d93347c3.js"), "../assets/svg/icons/IconAssignment.svg": () => import("./IconAssignment-1983e555.js"), "../assets/svg/icons/IconAwardStar.svg": () => import("./IconAwardStar-8128aca1.js"), "../assets/svg/icons/IconBookmark.svg": () => import("./IconBookmark-7d88d664.js"), "../assets/svg/icons/IconCalendarMonth.svg": () => import("./IconCalendarMonth-2fd1e713.js"), "../assets/svg/icons/IconCall.svg": () => import("./IconCall-8aa582d9.js"), "../assets/svg/icons/IconCheck.svg": () => import("./IconCheck-cf7470ee.js"), "../assets/svg/icons/IconChevronLeft.svg": () => import("./IconChevronLeft-558206bb.js"), "../assets/svg/icons/IconChevronRight.svg": () => import("./IconChevronRight-28930a0b.js"), "../assets/svg/icons/IconClear.svg": () => import("./IconClear-9419bf17.js"), "../assets/svg/icons/IconClose.svg": () => import("./IconClose-abfb6177.js"), "../assets/svg/icons/IconCycle.svg": () => import("./IconCycle-2affec71.js"), "../assets/svg/icons/IconDelete.svg": () => import("./IconDelete-67b69553.js"), "../assets/svg/icons/IconDiamond.svg": () => import("./IconDiamond-93af488a.js"), "../assets/svg/icons/IconDraft.svg": () => import("./IconDraft-6e70e48f.js"), "../assets/svg/icons/IconEdit.svg": () => import("./IconEdit-16d34325.js"), "../assets/svg/icons/IconError.svg": () => import("./IconError-a2922b95.js"), "../assets/svg/icons/IconExpandContent.svg": () => import("./IconExpandContent-7e144d1c.js"), "../assets/svg/icons/IconExpandLess.svg": () => import("./IconExpandLess-3a8a0552.js"), "../assets/svg/icons/IconExpandMore.svg": () => import("./IconExpandMore-c600148e.js"), "../assets/svg/icons/IconFacebook.svg": () => import("./IconFacebook-4658b533.js"), "../assets/svg/icons/IconFavorite.svg": () => import("./IconFavorite-d23faefe.js"), "../assets/svg/icons/IconFavoriteFilled.svg": () => import("./IconFavoriteFilled-aa0d6d5e.js"), "../assets/svg/icons/IconFormatBold.svg": () => import("./IconFormatBold-70a5cacf.js"), "../assets/svg/icons/IconFormatItalic.svg": () => import("./IconFormatItalic-c06504d7.js"), "../assets/svg/icons/IconFormatListBulleted.svg": () => import("./IconFormatListBulleted-9493858a.js"), "../assets/svg/icons/IconForum.svg": () => import("./IconForum-ae4ad63f.js"), "../assets/svg/icons/IconGavel.svg": () => import("./IconGavel-44c29036.js"), "../assets/svg/icons/IconGoogle.svg": () => import("./IconGoogle-febad0d8.js"), "../assets/svg/icons/IconGooglePay.svg": () => import("./IconGooglePay-8cf0286e.js"), "../assets/svg/icons/IconGrid.svg": () => import("./IconGrid-25f665e0.js"), "../assets/svg/icons/IconHeight.svg": () => import("./IconHeight-4fae7545.js"), "../assets/svg/icons/IconHelp.svg": () => import("./IconHelp-340ee4fb.js"), "../assets/svg/icons/IconInfo.svg": () => import("./IconInfo-efead10b.js"), "../assets/svg/icons/IconInsertText.svg": () => import("./IconInsertText-00236a65.js"), "../assets/svg/icons/IconInstagram.svg": () => import("./IconInstagram-57188d29.js"), "../assets/svg/icons/IconIosShare.svg": () => import("./IconIosShare-167aa8c4.js"), "../assets/svg/icons/IconLayout.svg": () => import("./IconLayout-2865e0eb.js"), "../assets/svg/icons/IconLinkedIn.svg": () => import("./IconLinkedIn-f29c217d.js"), "../assets/svg/icons/IconLocalShipping.svg": () => import("./IconLocalShipping-901a3e4c.js"), "../assets/svg/icons/IconLock.svg": () => import("./IconLock-47669e20.js"), "../assets/svg/icons/IconMail.svg": () => import("./IconMail-9b85058a.js"), "../assets/svg/icons/IconMenu.svg": () => import("./IconMenu-4bed57f3.js"), "../assets/svg/icons/IconMoreHoriz.svg": () => import("./IconMoreHoriz-2aabe29f.js"), "../assets/svg/icons/IconNotifications.svg": () => import("./IconNotifications-bcbf1d8c.js"), "../assets/svg/icons/IconOpenInNew.svg": () => import("./IconOpenInNew-78fffcfe.js"), "../assets/svg/icons/IconPalette.svg": () => import("./IconPalette-22865300.js"), "../assets/svg/icons/IconPaypal.svg": () => import("./IconPaypal-c28e6dbe.js"), "../assets/svg/icons/IconPerson.svg": () => import("./IconPerson-7ada8b07.js"), "../assets/svg/icons/IconPhotoCamera.svg": () => import("./IconPhotoCamera-31a58b85.js"), "../assets/svg/icons/IconPinterest.svg": () => import("./IconPinterest-fe5cc414.js"), "../assets/svg/icons/IconPlayArrow.svg": () => import("./IconPlayArrow-1ed5d884.js"), "../assets/svg/icons/IconRemove.svg": () => import("./IconRemove-bab221ba.js"), "../assets/svg/icons/IconRoundedCorners.svg": () => import("./IconRoundedCorners-e21c4321.js"), "../assets/svg/icons/IconRuler.svg": () => import("./IconRuler-0ceea80a.js"), "../assets/svg/icons/IconSearch.svg": () => import("./IconSearch-f8faefb4.js"), "../assets/svg/icons/IconSeating.svg": () => import("./IconSeating-2ca8921d.js"), "../assets/svg/icons/IconSell.svg": () => import("./IconSell-b011ac2d.js"), "../assets/svg/icons/IconShare.svg": () => import("./IconShare-57f28ce3.js"), "../assets/svg/icons/IconShoppingCart.svg": () => import("./IconShoppingCart-b532dab0.js"), "../assets/svg/icons/IconSms.svg": () => import("./IconSms-378f373a.js"), "../assets/svg/icons/IconStar.svg": () => import("./IconStar-1b8ad0f9.js"), "../assets/svg/icons/IconSwapVert.svg": () => import("./IconSwapVert-8085e942.js"), "../assets/svg/icons/IconThreeDRotation.svg": () => import("./IconThreeDRotation-33f086a7.js"), "../assets/svg/icons/IconTrophy.svg": () => import("./IconTrophy-f4be8b54.js"), "../assets/svg/icons/IconTune.svg": () => import("./IconTune-0913ba01.js"), "../assets/svg/icons/IconTwitter.svg": () => import("./IconTwitter-9acefb07.js"), "../assets/svg/icons/IconVideocam.svg": () => import("./IconVideocam-33650e6f.js"), "../assets/svg/icons/IconViewInAr.svg": () => import("./IconViewInAr-d1534ef2.js"), "../assets/svg/icons/IconVisibility.svg": () => import("./IconVisibility-a1c21dd0.js"), "../assets/svg/icons/IconVolumeOff.svg": () => import("./IconVolumeOff-8e121ef3.js"), "../assets/svg/icons/IconVolumeOn.svg": () => import("./IconVolumeOn-992e16dd.js"), "../assets/svg/icons/IconWarning.svg": () => import("./IconWarning-6f490acf.js"), "../assets/svg/icons/IconWeight.svg": () => import("./IconWeight-e3b3daa6.js"), "../assets/svg/icons/IconWidth.svg": () => import("./IconWidth-023f69f2.js"), "../assets/svg/icons/IconYoutube.svg": () => import("./IconYoutube-a6224033.js") }), `../assets/svg/icons/Icon${d}.svg`));
437
+ i.value = ue(T);
438
+ },
439
+ { immediate: !0 }
440
+ ), (n, d) => (l(), r("div", {
441
+ class: a(["tide-icon", s.size])
442
+ }, [
443
+ i.value ? (l(), D(z(i.value), {
444
+ key: 0,
445
+ class: a([t(e).DISPLAY.BLOCK]),
446
+ "data-icon": n.icon,
447
+ fill: "currentColor"
448
+ }, null, 8, ["class", "data-icon"])) : A("", !0)
449
+ ], 2));
450
+ }
451
+ });
452
+ const U = (o, s) => {
453
+ const i = o.__vccOpts || o;
454
+ for (const [n, d] of s)
455
+ i[n] = d;
456
+ return i;
457
+ }, S = /* @__PURE__ */ U(Se, [["__scopeId", "data-v-52bbe8b5"]]), ge = /* @__PURE__ */ p({
458
+ __name: "TideIndicator",
459
+ props: {
460
+ label: { default: void 0 }
461
+ },
462
+ setup(o) {
463
+ const s = o;
464
+ return (i, n) => (l(), r("div", {
465
+ class: a([
466
+ s.label ? "tide-indicator-label" : "tide-indicator",
467
+ "border-white",
468
+ t(e).BG.SURFACE.ACCENT,
469
+ t(e).BORDER.FULL.ONE,
470
+ t(e).BORDER.RADIUS.FULL,
471
+ s.label ? [t(e).POSITION.RELATIVE, t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT] : []
472
+ ])
473
+ }, [
474
+ s.label ? (l(), r("div", {
475
+ key: 0,
476
+ class: a([
477
+ t(e).POSITION.ABSOLUTE,
478
+ t(e).POSITIONING.TOP,
479
+ t(e).DISPLAY.FLEX,
480
+ t(e).AXIS1.CENTER,
481
+ t(e).AXIS2.CENTER,
482
+ t(e).WIDTH.FULL,
483
+ t(e).HEIGHT.FULL
484
+ ])
485
+ }, N(s.label), 3)) : A("", !0)
486
+ ], 2));
487
+ }
488
+ });
489
+ const fe = /* @__PURE__ */ U(ge, [["__scopeId", "data-v-9786ee82"]]), v = {
490
+ ACCOUNT_BALANCE: "account-balance",
491
+ ADD: "add",
492
+ AI_DESCRIPTION: "ai-description",
493
+ ALIGN_SPACE: "align-space",
494
+ APPLE_PAY: "apple-pay",
495
+ ARROW_BACK: "arrow-back",
496
+ ARROW_FORWARD: "arrow-forward",
497
+ ARROW_RIGHT: "arrow-right",
498
+ ASSIGNMENT: "assignment",
499
+ AWARD_STAR: "award-star",
500
+ BOOKMARK: "bookmark",
501
+ CALENDAR_MONTH: "calendar-month",
502
+ CALL: "call",
503
+ CHECK: "check",
504
+ CHEVRON_LEFT: "chevron-left",
505
+ CHEVRON_RIGHT: "chevron-right",
506
+ CLEAR: "clear",
507
+ CLOSE: "close",
508
+ CYCLE: "cycle",
509
+ DELETE: "delete",
510
+ DIAMOND: "diamond",
511
+ DRAFT: "draft",
512
+ EDIT: "edit",
513
+ ERROR: "error",
514
+ EXPAND_CONTENT: "expand-content",
515
+ EXPAND_LESS: "expand-less",
516
+ EXPAND_MORE: "expand-more",
517
+ FACEBOOK: "facebook",
518
+ FAVORITE: "favorite",
519
+ FAVORITE_FILLED: "favorite-filled",
520
+ FORMAT_BOLD: "format-bold",
521
+ FORMAT_ITALIC: "format-italic",
522
+ FORMAT_LIST_BULLETED: "format-list-bulleted",
523
+ FORUM: "forum",
524
+ GAVEL: "gavel",
525
+ GOOGLE: "google",
526
+ GOOGLE_PAY: "google-pay",
527
+ GRID: "grid",
528
+ HEIGHT: "height",
529
+ HELP: "help",
530
+ INFO: "info",
531
+ INSERT_TEXT: "insert-text",
532
+ INSTAGRAM: "instagram",
533
+ IOS_SHARE: "ios-share",
534
+ LAYOUT: "layout",
535
+ LINKED_IN: "linked in",
536
+ LOCAL_SHIPPING: "local-shipping",
537
+ LOCK: "lock",
538
+ MAIL: "mail",
539
+ MENU: "menu",
540
+ MORE_HORIZ: "more-horiz",
541
+ NOTIFICATIONS: "notifications",
542
+ OPEN_IN_NEW: "open-in-new",
543
+ PALETTE: "palette",
544
+ PAYPAL: "paypal",
545
+ PERSON: "person",
546
+ PHOTO_CAMERA: "photo-camera",
547
+ PINTEREST: "pinterest",
548
+ PLAY_ARROW: "play-arrow",
549
+ REMOVE: "remove",
550
+ ROUNDED_CORNERS: "rounded-corners",
551
+ RULER: "ruler",
552
+ SEARCH: "search",
553
+ SEATING: "seating",
554
+ SELL: "sell",
555
+ SHARE: "share",
556
+ SHOPPING_CART: "shopping-cart",
557
+ SMS: "sms",
558
+ STAR: "star",
559
+ SWAP_VERT: "swap-vert",
560
+ THREE_D_ROTATION: "three-d-rotation",
561
+ TROPHY: "trophy",
562
+ TUNE: "tune",
563
+ TWITTER: "twitter",
564
+ VIDEOCAM: "videocam",
565
+ VIEW_IN_AR: "view-in-ar",
566
+ VISIBILITY: "visibility",
567
+ VOLUME_OFF: "volume-off",
568
+ VOLUME_ON: "volume-on",
569
+ WARNING: "warning",
570
+ WEIGHT: "weight",
571
+ WIDTH: "width",
572
+ YOUTUBE: "youtube"
573
+ }, me = { class: "tide-accordion-item" }, Ue = /* @__PURE__ */ p({
574
+ __name: "TideAccordionItem",
575
+ props: {
576
+ hasBottomDivider: {
577
+ default: !1,
578
+ required: !1,
579
+ type: Boolean
580
+ },
581
+ hasTopDivider: {
582
+ default: !1,
583
+ required: !1,
584
+ type: Boolean
585
+ },
586
+ isActive: {
587
+ default: !1,
588
+ required: !1,
589
+ type: Boolean
590
+ },
591
+ isExpandedInitial: {
592
+ default: !1,
593
+ required: !1,
594
+ type: Boolean
595
+ },
596
+ isOptional: {
597
+ default: !1,
598
+ required: !1,
599
+ type: Boolean
600
+ },
601
+ label: {
602
+ default: "",
603
+ required: !0,
604
+ type: String
605
+ }
606
+ },
607
+ setup(o) {
608
+ const s = o, i = u(s.isExpandedInitial);
609
+ let n = u();
610
+ const d = () => {
611
+ const T = n.value;
612
+ i.value = !i.value, T.style.gridTemplateRows = i.value ? "1fr" : "0fr";
613
+ };
614
+ return ie(() => {
615
+ const T = n.value;
616
+ T.style.gridTemplateRows = i.value ? "1fr" : "0fr";
617
+ }), (T, I) => (l(), r("div", me, [
618
+ s.hasTopDivider ? (l(), D(re, { key: 0 })) : A("", !0),
619
+ E("div", {
620
+ class: a(["tide-accordion-head", t(e).DISPLAY.FLEX, t(e).AXIS1.BETWEEN, t(e).PADDING.Y.HALF, t(e).CURSOR.POINTER]),
621
+ onClick: d
622
+ }, [
623
+ E("div", {
624
+ class: a([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
625
+ }, [
626
+ E("span", null, N(s.label), 1),
627
+ s.isOptional ? (l(), r("span", {
628
+ key: 0,
629
+ class: a([t(e).FONT.COLOR.SURFACE.VARIANT])
630
+ }, " (optional) ", 2)) : A("", !0),
631
+ s.isActive ? (l(), D(fe, { key: 1 })) : A("", !0)
632
+ ], 2),
633
+ P(S, {
634
+ icon: i.value ? t(v).EXPAND_LESS : t(v).EXPAND_MORE
635
+ }, null, 8, ["icon"])
636
+ ], 2),
637
+ E("div", {
638
+ class: a(["tide-accordion-body", t(e).DISPLAY.GRID]),
639
+ ref_key: "accordionBody",
640
+ ref: n
641
+ }, [
642
+ E("div", {
643
+ class: a([t(e).OVERFLOW.Y.HIDDEN])
644
+ }, [
645
+ E("div", {
646
+ class: a([t(e).MARGIN.Y.ONE, t(e).FONT.WEIGHT.FOUR_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
647
+ }, [
648
+ B(T.$slots, "default", {}, void 0, !0)
649
+ ], 2)
650
+ ], 2)
651
+ ], 2),
652
+ s.hasBottomDivider ? (l(), D(re, { key: 1 })) : A("", !0)
653
+ ]));
654
+ }
655
+ });
656
+ const Dt = /* @__PURE__ */ U(Ue, [["__scopeId", "data-v-ad283103"]]), _ = {
657
+ BUTTON: "button",
658
+ LINK: "a"
659
+ }, x = {
660
+ BUTTON: "button",
661
+ DIV: "div",
662
+ LINK: "a"
663
+ }, w = {
664
+ PRIMARY: "primary",
665
+ SECONDARY: "secondary",
666
+ TERTIARY: "tertiary",
667
+ QUATERNARY: "quaternary",
668
+ FLOATING: "floating"
669
+ }, X = {
670
+ BLANK: "_blank",
671
+ SELF: void 0
672
+ }, Z = /* @__PURE__ */ p({
673
+ __name: "TideButtonIcon",
674
+ props: {
675
+ disabled: { type: Boolean, default: !1 },
676
+ element: { default: _.BUTTON },
677
+ href: { default: void 0 },
678
+ icon: { default: void 0 },
679
+ isNewTab: { type: Boolean, default: !1 },
680
+ priority: { default: w.PRIMARY }
681
+ },
682
+ setup(o) {
683
+ const s = o;
684
+ return (i, n) => (l(), D(z(s.element === t(_).LINK ? "a" : "button"), {
685
+ "aria-label": s.icon,
686
+ class: a([
687
+ s.element === t(_).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
688
+ s.priority && `tide-button-${s.priority}`,
689
+ [t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
690
+ s.element === t(_).LINK ? [t(e).UNDERLINE.OFF] : ""
691
+ ]),
692
+ disabled: s.element === t(_).BUTTON && s.disabled,
693
+ href: s.element === t(_).LINK && s.href ? s.href : void 0,
694
+ target: s.element === t(_).LINK && s.isNewTab ? t(X).BLANK : t(X).SELF
695
+ }, {
696
+ default: J(() => [
697
+ s.icon ? (l(), D(S, {
698
+ key: 0,
699
+ icon: s.icon,
700
+ size: t(y).LARGE
701
+ }, null, 8, ["icon", "size"])) : A("", !0)
702
+ ]),
703
+ _: 1
704
+ }, 8, ["aria-label", "class", "disabled", "href", "target"]));
705
+ }
706
+ }), b = {
707
+ ERROR: "error",
708
+ INFO: "info",
709
+ SUCCESS: "success",
710
+ WARNING: "warning"
711
+ }, Ce = /* @__PURE__ */ p({
712
+ __name: "TideAlert",
713
+ props: {
714
+ heading: { default: void 0 },
715
+ isToast: { type: Boolean, default: !1 },
716
+ type: { default: b.INFO }
717
+ },
718
+ setup(o) {
719
+ const s = o, i = F(() => {
720
+ let n = v.VIEW_IN_AR;
721
+ switch (s.type) {
722
+ case b.ERROR:
723
+ n = v.ERROR;
724
+ break;
725
+ default:
726
+ case b.INFO:
727
+ n = v.INFO;
728
+ break;
729
+ case b.SUCCESS:
730
+ n = v.CHECK;
731
+ break;
732
+ case b.WARNING:
733
+ n = v.WARNING;
734
+ break;
735
+ }
736
+ return n;
737
+ });
738
+ return (n, d) => (l(), r("div", {
739
+ class: a([
740
+ s.type,
741
+ "tide-alert",
742
+ t(e).DISPLAY.GRID,
743
+ t(e).BORDER.RADIUS.HALF,
744
+ t(e).PADDING.FULL.ONE,
745
+ s.type === t(b).ERROR && t(e).BG.SURFACE.ERROR,
746
+ s.type === t(b).INFO && t(e).BG.SURFACE.INFO,
747
+ s.type === t(b).SUCCESS && t(e).BG.SURFACE.SUCCESS,
748
+ s.type === t(b).WARNING && t(e).BG.SURFACE.WARNING,
749
+ s.isToast ? t(e).SHADOW.BOTTOM : ""
750
+ ])
751
+ }, [
752
+ E("div", {
753
+ class: a(["tide-alert-icon", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
754
+ }, [
755
+ P(S, {
756
+ class: a([
757
+ s.type,
758
+ t(e).BORDER.RADIUS.FULL,
759
+ t(e).PADDING.FULL.HALF,
760
+ t(e).FONT.COLOR.SURFACE.INVERSE,
761
+ s.type === t(b).ERROR && t(e).BG.ERROR,
762
+ s.type === t(b).INFO && t(e).BG.INFO,
763
+ s.type === t(b).SUCCESS && t(e).BG.SUCCESS,
764
+ s.type === t(b).WARNING && t(e).BG.WARNING
765
+ ]),
766
+ icon: i.value
767
+ }, null, 8, ["class", "icon"])
768
+ ], 2),
769
+ E("div", {
770
+ class: a(["tide-alert-heading", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
771
+ }, [
772
+ E("h2", {
773
+ class: a([t(e).FONT.SIZE.SIXTEEN, t(e).FONT.WEIGHT.SIX_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
774
+ }, N(s.heading), 3)
775
+ ], 2),
776
+ P(Z, {
777
+ class: a(["tide-alert-close", t(e).AXIS2.CENTER, t(e).FONT.COLOR.SURFACE.DEFAULT]),
778
+ icon: t(v).CLOSE,
779
+ priority: t(w).QUATERNARY,
780
+ "aria-label": "Close alert"
781
+ }, null, 8, ["class", "icon", "priority"]),
782
+ E("div", {
783
+ class: a(["tide-alert-body", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT])
784
+ }, [
785
+ B(n.$slots, "default", {}, void 0, !0)
786
+ ], 2)
787
+ ], 2));
788
+ }
789
+ });
790
+ const St = /* @__PURE__ */ U(Ce, [["__scopeId", "data-v-279a5605"]]), Pe = ["alt", "loading", "src"], Ge = /* @__PURE__ */ p({
791
+ __name: "TideBackgroundImage",
792
+ props: {
793
+ alt: { default: "" },
794
+ isLazy: { type: Boolean, default: !0 },
795
+ src: {}
796
+ },
797
+ setup(o) {
798
+ return (s, i) => (l(), r("div", {
799
+ class: a([t(e).POSITION.RELATIVE, t(e).OVERFLOW.XY.HIDDEN, t(e).ISOLATION.ISOLATE])
800
+ }, [
801
+ E("div", {
802
+ class: a([
803
+ t(e).POSITION.ABSOLUTE,
804
+ t(e).HEIGHT.FULL,
805
+ t(e).WIDTH.FULL,
806
+ t(e).DISPLAY.FLEX,
807
+ t(e).AXIS1.CENTER,
808
+ t(e).AXIS2.CENTER
809
+ ])
810
+ }, [
811
+ E("img", {
812
+ alt: s.alt,
813
+ class: a(["tide-background-image", t(e).OBJECT.COVER, t(e).WIDTH.FULL, t(e).HEIGHT.FULL]),
814
+ loading: s.isLazy ? "lazy" : void 0,
815
+ src: s.src
816
+ }, null, 10, Pe)
817
+ ], 2),
818
+ B(s.$slots, "default", {}, void 0, !0)
819
+ ], 2));
820
+ }
821
+ });
822
+ const gt = /* @__PURE__ */ U(Ge, [["__scopeId", "data-v-99ffd814"]]), ft = /* @__PURE__ */ p({
823
+ __name: "TideBadge",
824
+ props: {
825
+ label: {}
826
+ },
827
+ setup(o) {
828
+ const s = o;
829
+ return (i, n) => (l(), r("div", {
830
+ class: a([
831
+ "tide-badge",
832
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
833
+ t(e).BG.SURFACE.FLOATING,
834
+ t(e).DISPLAY.INLINE_FLEX,
835
+ t(e).AXIS2.CENTER,
836
+ t(e).GAP.QUARTER,
837
+ t(e).BORDER.RADIUS.QUARTER,
838
+ t(e).PADDING.Y.QUARTER,
839
+ t(e).PADDING.X.HALF,
840
+ t(e).FONT.SIZE.FOURTEEN
841
+ ])
842
+ }, N(s.label), 3));
843
+ }
844
+ }), mt = /* @__PURE__ */ p({
845
+ __name: "TideBadgePremium",
846
+ props: {
847
+ label: {}
848
+ },
849
+ setup(o) {
850
+ const s = o;
851
+ return (i, n) => (l(), r("div", {
852
+ class: a([
853
+ "tide-badge",
854
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
855
+ t(e).BG.SURFACE.VARIANT,
856
+ t(e).DISPLAY.INLINE_FLEX,
857
+ t(e).GAP.QUARTER,
858
+ t(e).BORDER.RADIUS.QUARTER,
859
+ t(e).PADDING.Y.QUARTER,
860
+ t(e).PADDING.X.HALF,
861
+ t(e).FONT.SIZE.TWELVE
862
+ ])
863
+ }, N(s.label), 3));
864
+ }
865
+ }), Ut = {
866
+ JUST_LISTED: "Just listed",
867
+ NATIONWIDE: "Nationwide",
868
+ REDUCED: "Reduced",
869
+ UPDATED: "Updated"
870
+ }, Ct = {
871
+ PREMIUM: "Premium",
872
+ PREMIUM_SELECT: "Premium SELECT"
873
+ }, he = {
874
+ YEARS_10: "10",
875
+ YEARS_15: "15",
876
+ YEARS_5: "5"
877
+ }, He = {
878
+ class: /* @__PURE__ */ a([])
879
+ }, Pt = /* @__PURE__ */ p({
880
+ __name: "TideBadgeTrustedPartner",
881
+ props: {
882
+ years: { default: he.YEARS_5 }
883
+ },
884
+ setup(o) {
885
+ const s = o;
886
+ return (i, n) => (l(), r("div", {
887
+ class: a([
888
+ "tide-badge-trusted-partner",
889
+ t(e).FONT.COLOR.SURFACE.BRAND,
890
+ t(e).DISPLAY.INLINE_FLEX,
891
+ t(e).AXIS2.CENTER,
892
+ t(e).GAP.QUARTER,
893
+ t(e).PADDING.Y.QUARTER,
894
+ t(e).PADDING.X.HALF,
895
+ t(e).FONT.SIZE.FOURTEEN
896
+ ])
897
+ }, [
898
+ P(S, {
899
+ icon: t(v).VIEW_IN_AR
900
+ }, null, 8, ["icon"]),
901
+ E("div", He, [
902
+ E("span", null, N(s.years) + " year trusted partner", 1)
903
+ ])
904
+ ], 2));
905
+ }
906
+ }), be = ["data-track", "href"], ye = ["data-track"], Be = { key: 0 }, Gt = /* @__PURE__ */ p({
907
+ __name: "TideBreadCrumbs",
908
+ props: {
909
+ breadCrumbs: {
910
+ default: void 0,
911
+ required: !0,
912
+ type: Object
913
+ }
914
+ },
915
+ setup(o) {
916
+ const s = o;
917
+ return (i, n) => (l(), r("ul", {
918
+ class: a(["tide-bread-crumbs", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
919
+ }, [
920
+ (l(!0), r($, null, q(s.breadCrumbs, (d, T) => (l(), r($, {
921
+ key: d.label
922
+ }, [
923
+ E("li", {
924
+ class: a([t(e).FONT.SIZE.FOURTEEN])
925
+ }, [
926
+ d.url ? (l(), r("a", {
927
+ key: 0,
928
+ class: a([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT]),
929
+ "data-track": d.dataTrack || void 0,
930
+ href: d.url
931
+ }, N(d.label), 11, be)) : (l(), r("span", {
932
+ key: 1,
933
+ class: a([t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT]),
934
+ "data-track": d.dataTrack || void 0
935
+ }, N(d.label), 11, ye))
936
+ ], 2),
937
+ s.breadCrumbs && T < s.breadCrumbs.length - 1 ? (l(), r("li", Be, [
938
+ P(S, {
939
+ icon: t(v).ARROW_RIGHT,
940
+ size: t(y).SMALL
941
+ }, null, 8, ["icon", "size"])
942
+ ])) : A("", !0)
943
+ ], 64))), 128))
944
+ ], 2));
945
+ }
946
+ }), ht = /* @__PURE__ */ p({
947
+ __name: "TideButton",
948
+ props: {
949
+ disabled: { type: Boolean, default: !1 },
950
+ element: { default: _.BUTTON },
951
+ href: { default: void 0 },
952
+ iconLeading: { default: void 0 },
953
+ iconTrailing: { default: void 0 },
954
+ isNewTab: { type: Boolean, default: !1 },
955
+ label: { default: void 0 },
956
+ priority: { default: w.PRIMARY }
957
+ },
958
+ setup(o) {
959
+ const s = o;
960
+ return (i, n) => (l(), D(z(s.element === t(_).LINK ? t(_).LINK : t(_).BUTTON), {
961
+ class: a([
962
+ s.element === t(_).LINK ? "tide-link-as-button" : "tide-button",
963
+ s.priority && `tide-button-${s.priority}`,
964
+ s.element === t(_).LINK ? [t(e).DISPLAY.INLINE_FLEX] : [t(e).DISPLAY.FLEX],
965
+ [t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).BORDER.RADIUS.HALF],
966
+ s.element === t(_).LINK ? t(e).UNDERLINE.OFF : "",
967
+ t(e).PADDING.Y.ONE,
968
+ t(e).PADDING.X.TWO,
969
+ t(e).FONT.WEIGHT.SIX_HUNDRED
970
+ ]),
971
+ disabled: s.element === t(_).BUTTON && s.disabled,
972
+ href: s.element === t(_).LINK && s.href ? s.href : void 0,
973
+ target: s.element === t(_).LINK && s.isNewTab ? t(X).BLANK : t(X).SELF
974
+ }, {
975
+ default: J(() => [
976
+ s.iconLeading ? (l(), D(S, {
977
+ key: 0,
978
+ icon: s.iconLeading,
979
+ size: t(y).LARGE
980
+ }, null, 8, ["icon", "size"])) : A("", !0),
981
+ ce(" " + N(s.label) + " ", 1),
982
+ s.iconTrailing ? (l(), D(S, {
983
+ key: 1,
984
+ icon: s.iconTrailing,
985
+ size: t(y).LARGE
986
+ }, null, 8, ["icon", "size"])) : A("", !0)
987
+ ]),
988
+ _: 1
989
+ }, 8, ["class", "disabled", "href", "target"]));
990
+ }
991
+ }), We = /* @__PURE__ */ p({
992
+ __name: "TideButtonPagination",
993
+ props: {
994
+ disabled: { type: Boolean, default: !1 },
995
+ element: { default: x.BUTTON },
996
+ href: { default: void 0 },
997
+ label: { default: void 0 }
998
+ },
999
+ setup(o) {
1000
+ const s = o;
1001
+ return (i, n) => (l(), D(z(
1002
+ s.element === t(x).LINK ? "a" : s.element === t(x).BUTTON ? "button" : "div"
1003
+ ), {
1004
+ class: a([
1005
+ s.element === t(x).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
1006
+ [t(e).DISPLAY.INLINE_BLOCK, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
1007
+ s.element === t(x).LINK ? [t(e).UNDERLINE.OFF] : "",
1008
+ s.element === t(x).DIV ? [t(e).CURSOR.POINTER] : "",
1009
+ [t(e).FONT.WEIGHT.SEVEN_HUNDRED]
1010
+ ]),
1011
+ disabled: s.element === t(x).BUTTON && s.disabled,
1012
+ href: s.element === t(x).LINK && s.href ? s.href : void 0
1013
+ }, {
1014
+ default: J(() => [
1015
+ E("span", {
1016
+ class: a(["label", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER])
1017
+ }, N(s.label), 3)
1018
+ ]),
1019
+ _: 1
1020
+ }, 8, ["class", "disabled", "href"]));
1021
+ }
1022
+ });
1023
+ const Xe = /* @__PURE__ */ U(We, [["__scopeId", "data-v-0710b4ab"]]), Ht = /* @__PURE__ */ p({
1024
+ __name: "TideCard",
1025
+ setup(o) {
1026
+ return (s, i) => (l(), r("div", {
1027
+ class: a([
1028
+ "tide-card",
1029
+ t(e).HEIGHT.FULL,
1030
+ t(e).BORDER.RADIUS.HALF,
1031
+ t(e).BG.SURFACE.DEFAULT,
1032
+ t(e).SHADOW.BOTTOM,
1033
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
1034
+ t(e).SNAP_ALIGN.START
1035
+ ])
1036
+ }, [
1037
+ B(s.$slots, "default")
1038
+ ], 2));
1039
+ }
1040
+ }), Ee = 16, bt = /* @__PURE__ */ p({
1041
+ __name: "TideCarousel",
1042
+ props: {
1043
+ isTouchscreen: { type: Boolean },
1044
+ offsetX: { default: 0 }
1045
+ },
1046
+ emits: ["change"],
1047
+ setup(o, { emit: s }) {
1048
+ const i = o;
1049
+ let n = u(), d = u(), T = u(), I = u();
1050
+ const c = u(), L = u(), m = u(), R = u(0), G = () => {
1051
+ const O = Array.from(c.value.children).map((C) => C.offsetLeft);
1052
+ if (O.length === 0)
1053
+ return;
1054
+ const g = O.reduce((C, V) => Math.abs(V - L.value.scrollLeft) < Math.abs(C - L.value.scrollLeft) ? V : C);
1055
+ R.value = O.indexOf(g);
1056
+ }, h = () => {
1057
+ n.value = c.value.scrollWidth, d.value = L.value.clientWidth, T.value = n.value > d.value, I.value = L.value.scrollWidth - L.value.clientWidth, m.value = T.value && !i.isTouchscreen, G();
1058
+ }, M = () => {
1059
+ h();
1060
+ }, Y = (O) => {
1061
+ L.value.scrollTo({
1062
+ behavior: "smooth",
1063
+ left: c.value.children[O].offsetLeft
1064
+ });
1065
+ }, k = () => {
1066
+ const O = c.value.scrollWidth, g = L.value.scrollLeft + L.value.clientWidth;
1067
+ if (g > O)
1068
+ L.value.scrollTo({
1069
+ behavior: "smooth",
1070
+ left: O
1071
+ });
1072
+ else {
1073
+ const C = i.offsetX && R.value === 0, ee = g === O ? 0 : C ? 2 : R.value + 1;
1074
+ Y(ee);
1075
+ }
1076
+ }, H = () => {
1077
+ const O = i.offsetX ? 1 : 0, g = R.value - 1 === O, V = R.value <= O ? c.value.children.length - 1 : g ? 0 : R.value - 1;
1078
+ Y(V);
1079
+ };
1080
+ return window.addEventListener("resize", h), ie(() => {
1081
+ h();
1082
+ }), Ae(() => {
1083
+ window.removeEventListener("resize", h);
1084
+ }), Ne(() => {
1085
+ h();
1086
+ }), Q(R, () => {
1087
+ s("change", R.value);
1088
+ }), (O, g) => (l(), r("section", {
1089
+ class: a(["tide-carousel", t(e).POSITION.RELATIVE, t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).WIDTH.FULL]),
1090
+ ref: "carouselRef"
1091
+ }, [
1092
+ E("div", {
1093
+ class: a([t(e).SCROLLBAR.OFF, t(e).SNAP.ON, t(e).OVERFLOW.X.SCROLL]),
1094
+ ref_key: "frameRef",
1095
+ ref: L,
1096
+ onScroll: M
1097
+ }, [
1098
+ E("ul", {
1099
+ class: a([i.isTouchscreen ? [t(e).OVERFLOW.X.AUTO] : "", t(e).DISPLAY.FLEX, t(e).GAP.ONE, t(e).LIST_BULLETS.OFF]),
1100
+ ref_key: "contentRef",
1101
+ ref: c
1102
+ }, [
1103
+ i.offsetX ? (l(), r("li", {
1104
+ key: 0,
1105
+ class: a([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
1106
+ style: se({ width: `${i.offsetX - Ee}px` })
1107
+ }, null, 6)) : A("", !0),
1108
+ B(O.$slots, "default"),
1109
+ i.offsetX ? (l(), r("li", {
1110
+ key: 1,
1111
+ class: a([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
1112
+ style: se({ width: `${i.offsetX - Ee}px` })
1113
+ }, null, 6)) : A("", !0)
1114
+ ], 2)
1115
+ ], 34),
1116
+ m.value ? (l(), r("div", {
1117
+ key: 0,
1118
+ class: a([
1119
+ t(e).POSITION.ABSOLUTE,
1120
+ t(e).DISPLAY.FLEX,
1121
+ t(e).AXIS1.BETWEEN,
1122
+ t(e).AXIS2.CENTER,
1123
+ t(e).WIDTH.FULL,
1124
+ t(e).HEIGHT.FULL,
1125
+ t(e).POINTER_EVENTS.OFF
1126
+ ])
1127
+ }, [
1128
+ P(Z, {
1129
+ class: a([t(e).MARGIN.LEFT.ONE, t(e).POINTER_EVENTS.ON]),
1130
+ icon: t(v).CHEVRON_LEFT,
1131
+ priority: t(w).QUATERNARY,
1132
+ onClick: H
1133
+ }, null, 8, ["class", "icon", "priority"]),
1134
+ P(Z, {
1135
+ class: a([t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.ON]),
1136
+ icon: t(v).CHEVRON_RIGHT,
1137
+ priority: t(w).QUATERNARY,
1138
+ onClick: k
1139
+ }, null, 8, ["class", "icon", "priority"])
1140
+ ], 2)) : A("", !0)
1141
+ ], 2));
1142
+ }
1143
+ }), Me = ["href", "target"], Ye = /* @__PURE__ */ p({
1144
+ __name: "TideChipAction",
1145
+ props: {
1146
+ href: {},
1147
+ isNewTab: { type: Boolean, default: !1 },
1148
+ label: {}
1149
+ },
1150
+ setup(o) {
1151
+ const s = o;
1152
+ return (i, n) => (l(), r("a", {
1153
+ class: a([
1154
+ "tide-chip-action",
1155
+ t(e).AXIS2.CENTER,
1156
+ t(e).GAP.HALF,
1157
+ t(e).BORDER.FULL.ONE,
1158
+ t(e).BORDER.RADIUS.FULL,
1159
+ t(e).PADDING.X.ONE,
1160
+ t(e).PADDING.Y.HALF,
1161
+ t(e).BG.SURFACE.DEFAULT,
1162
+ t(e).FONT.SIZE.FOURTEEN,
1163
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1164
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
1165
+ t(e).UNDERLINE.OFF
1166
+ ]),
1167
+ href: s.href,
1168
+ target: s.isNewTab ? t(X).BLANK : t(X).SELF
1169
+ }, [
1170
+ P(S, {
1171
+ icon: t(v).SEARCH
1172
+ }, null, 8, ["icon"]),
1173
+ E("span", null, N(s.label), 1)
1174
+ ], 10, Me));
1175
+ }
1176
+ });
1177
+ const yt = /* @__PURE__ */ U(Ye, [["__scopeId", "data-v-99f83e8d"]]), ke = /* @__PURE__ */ p({
1178
+ __name: "TideChipFilter",
1179
+ props: {
1180
+ isActive: { type: Boolean },
1181
+ label: {}
1182
+ },
1183
+ setup(o) {
1184
+ const s = o;
1185
+ return (i, n) => (l(), r("button", {
1186
+ class: a([
1187
+ "tide-chip-filter",
1188
+ s.isActive ? [t(e).BG.SECONDARY, t(e).FONT.COLOR.SECONDARY] : [t(e).BG.SURFACE.VARIANT, t(e).FONT.COLOR.SURFACE.DEFAULT],
1189
+ t(e).DISPLAY.FLEX,
1190
+ t(e).AXIS2.CENTER,
1191
+ t(e).GAP.HALF,
1192
+ t(e).BORDER.FULL.ONE,
1193
+ t(e).BORDER.RADIUS.FULL,
1194
+ t(e).PADDING.X.ONE,
1195
+ t(e).PADDING.Y.HALF,
1196
+ t(e).FONT.SIZE.FOURTEEN,
1197
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1198
+ s.isActive ? "active" : ""
1199
+ ])
1200
+ }, [
1201
+ B(i.$slots, "default", {}, void 0, !0),
1202
+ E("div", {
1203
+ class: a([t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF])
1204
+ }, [
1205
+ E("span", {
1206
+ class: a([s.isActive ? "" : "icon-spacing", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).WHITESPACE_WRAP.OFF])
1207
+ }, N(s.label), 3)
1208
+ ], 2)
1209
+ ], 2));
1210
+ }
1211
+ });
1212
+ const Bt = /* @__PURE__ */ U(ke, [["__scopeId", "data-v-c07faf14"]]), Ve = /* @__PURE__ */ p({
1213
+ __name: "TideChipInput",
1214
+ props: {
1215
+ label: {}
1216
+ },
1217
+ setup(o) {
1218
+ const s = o;
1219
+ return (i, n) => (l(), r("button", {
1220
+ class: a([
1221
+ "tide-chip-input",
1222
+ t(e).BG.SURFACE.VARIANT,
1223
+ t(e).FONT.COLOR.SURFACE,
1224
+ t(e).DISPLAY.FLEX,
1225
+ t(e).AXIS2.CENTER,
1226
+ t(e).GAP.HALF,
1227
+ t(e).BORDER.FULL.ONE,
1228
+ t(e).BORDER.RADIUS.FULL,
1229
+ t(e).PADDING.X.ONE,
1230
+ t(e).PADDING.Y.HALF,
1231
+ t(e).FONT.SIZE.FOURTEEN,
1232
+ t(e).FONT.WEIGHT.FIVE_HUNDRED
1233
+ ])
1234
+ }, [
1235
+ E("span", null, N(s.label), 1),
1236
+ P(S, {
1237
+ icon: t(v).CLOSE
1238
+ }, null, 8, ["icon"])
1239
+ ], 2));
1240
+ }
1241
+ });
1242
+ const Wt = /* @__PURE__ */ U(Ve, [["__scopeId", "data-v-62b9f1c0"]]), xe = { class: "tide-columns" }, we = { class: "tide-columns-column" }, $e = { class: "tide-columns-column" }, Qe = { class: "tide-columns-column" }, Ke = { class: "tide-columns-column" }, Ze = /* @__PURE__ */ p({
1243
+ __name: "TideColumns",
1244
+ props: {
1245
+ heading: { default: "" }
1246
+ },
1247
+ setup(o) {
1248
+ const s = o;
1249
+ return (i, n) => (l(), r("section", xe, [
1250
+ E("h2", {
1251
+ class: a([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
1252
+ }, N(s.heading), 3),
1253
+ E("ul", {
1254
+ class: a([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
1255
+ }, [
1256
+ E("li", we, [
1257
+ B(i.$slots, "section1", {}, void 0, !0)
1258
+ ]),
1259
+ E("li", $e, [
1260
+ B(i.$slots, "section2", {}, void 0, !0)
1261
+ ]),
1262
+ E("li", Qe, [
1263
+ B(i.$slots, "section3", {}, void 0, !0)
1264
+ ]),
1265
+ E("li", Ke, [
1266
+ B(i.$slots, "section4", {}, void 0, !0)
1267
+ ])
1268
+ ], 2)
1269
+ ]));
1270
+ }
1271
+ });
1272
+ const Xt = /* @__PURE__ */ U(Ze, [["__scopeId", "data-v-14ad0455"]]), ze = ["alt", "loading", "src"], Mt = /* @__PURE__ */ p({
1273
+ __name: "TideImage",
1274
+ props: {
1275
+ alt: { default: "" },
1276
+ cdn: { default: void 0 },
1277
+ isLazy: { type: Boolean, default: !0 },
1278
+ offset: { default: 0 },
1279
+ src: { default: void 0 }
1280
+ },
1281
+ setup(o, { expose: s }) {
1282
+ const i = o, n = u(), d = `${i.cdn}/image-coming-soon-512.png`, T = () => {
1283
+ n.value.src = d;
1284
+ };
1285
+ return s(n.value), (I, c) => (l(), r("img", {
1286
+ alt: I.alt,
1287
+ class: a(["tide-image", t(e).OBJECT.CENTER, t(e).OBJECT.COVER]),
1288
+ loading: I.isLazy ? "lazy" : "eager",
1289
+ ref_key: "tideImage",
1290
+ ref: n,
1291
+ src: I.src ?? d,
1292
+ onError: T
1293
+ }, null, 42, ze));
1294
+ }
1295
+ }), qe = ["checked", "id"], Je = ["for"], je = /* @__PURE__ */ p({
1296
+ __name: "TideInputRadio",
1297
+ props: {
1298
+ checked: { type: Boolean, default: !1 },
1299
+ dataTrack: { default: "" },
1300
+ disabled: { type: Boolean, default: !1 },
1301
+ inputId: { default: void 0 },
1302
+ label: { default: void 0 },
1303
+ name: {}
1304
+ },
1305
+ setup(o) {
1306
+ const s = o, i = u(s.checked), n = F(() => {
1307
+ var d;
1308
+ return s.inputId ? s.inputId : `text-input-${((d = j()) == null ? void 0 : d.uid) || ""}`;
1309
+ });
1310
+ return Q(
1311
+ () => s.checked,
1312
+ (d, T) => {
1313
+ (d !== T || d !== i.value) && (i.value = d);
1314
+ }
1315
+ ), (d, T) => (l(), r("div", {
1316
+ class: a(["tide-input-radio", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, s.disabled && "disabled"])
1317
+ }, [
1318
+ E("input", {
1319
+ checked: i.value,
1320
+ class: a([t(e).DISPLAY.NONE]),
1321
+ id: n.value,
1322
+ name: "",
1323
+ type: "radio",
1324
+ value: ""
1325
+ }, null, 10, qe),
1326
+ E("div", {
1327
+ class: a([
1328
+ "tide-input-radio-custom",
1329
+ t(e).POSITION.RELATIVE,
1330
+ t(e).DISPLAY.FLEX,
1331
+ t(e).AXIS1.CENTER,
1332
+ t(e).AXIS2.CENTER,
1333
+ t(e).BORDER.FULL.ONE,
1334
+ i.value ? t(e).BORDER.COLOR.HIGH : t(e).BORDER.COLOR.DEFAULT,
1335
+ t(e).BORDER.RADIUS.FULL,
1336
+ i.value && "checked"
1337
+ ])
1338
+ }, [
1339
+ E("div", {
1340
+ class: a(["tide-input-radio-check", t(e).BORDER.RADIUS.FULL, s.checked && t(e).BG.SECONDARY])
1341
+ }, null, 2)
1342
+ ], 2),
1343
+ E("label", {
1344
+ class: a(t(e).FONT.WEIGHT.FOUR_HUNDRED),
1345
+ for: n.value
1346
+ }, N(s.label), 11, Je)
1347
+ ], 2));
1348
+ }
1349
+ });
1350
+ const Yt = /* @__PURE__ */ U(je, [["__scopeId", "data-v-cc2a4e5b"]]), Ie = "Please enter a valid value.", oe = (o, s) => typeof o == "string" && o.length > 0 ? o : typeof s == "string" && s.length > 0 ? s : Ie, ne = (o, s) => o !== !1 || s !== !1, et = ({ maxlength: o, minlength: s, value: i }) => {
1351
+ const n = o && i.length > o, d = s && i.length < s;
1352
+ return !n && !d;
1353
+ }, Oe = ({
1354
+ error: o,
1355
+ errorFromProps: s,
1356
+ maxlength: i,
1357
+ minlength: n,
1358
+ validators: d,
1359
+ value: T
1360
+ }) => {
1361
+ if (o.value = s || !1, !o.value && d) {
1362
+ const I = st(T.value, d);
1363
+ I.valid || (o.value = I.message);
1364
+ }
1365
+ if (!o.value && (i || n)) {
1366
+ const I = tt({
1367
+ maxlength: i,
1368
+ minlength: n,
1369
+ value: T.value
1370
+ });
1371
+ I.valid || (o.value = I.message);
1372
+ }
1373
+ }, tt = ({ maxlength: o, minlength: s, value: i }) => {
1374
+ const n = {
1375
+ message: "",
1376
+ valid: !0
1377
+ };
1378
+ return n.valid = et({
1379
+ maxlength: o,
1380
+ minlength: s,
1381
+ value: i
1382
+ }), n.valid || (n.message = Ie, o && s ? n.message = `Please enter a value between ${s} and ${o} characters in length.` : o ? n.message = `Please enter a value no more than ${o} characters in length.` : s && (n.message = `Please enter a value no less than ${s} characters in length.`)), n;
1383
+ };
1384
+ function st(o, s) {
1385
+ for (const i of s) {
1386
+ const n = i(o);
1387
+ if (!n.valid)
1388
+ return n;
1389
+ }
1390
+ return {
1391
+ message: "",
1392
+ valid: !0
1393
+ };
1394
+ }
1395
+ const it = ["for"], at = ["disabled", "name", "required", "id"], ot = ["selected", "value"], nt = /* @__PURE__ */ p({
1396
+ __name: "TideInputSelect",
1397
+ props: {
1398
+ inputId: { default: void 0 },
1399
+ supportingText: { default: void 0 },
1400
+ options: {},
1401
+ disabled: { type: Boolean, default: !1 },
1402
+ error: { type: [String, Boolean], default: !1 },
1403
+ label: { default: void 0 },
1404
+ name: {},
1405
+ required: { type: Boolean, default: !1 },
1406
+ value: { default: "" }
1407
+ },
1408
+ setup(o, { expose: s }) {
1409
+ const i = o, n = u(i.error), d = u(!1), T = u(null), I = u(i.required), c = u(i.value), L = F(() => oe(i.error, n.value)), m = F(() => i.required ? `${i.label} *` : i.label), R = F(() => i.required && !c.value || ne(n.value, i.error)), G = F(() => d.value || !h.value), h = F(() => c.value === ""), M = F(() => {
1410
+ var O;
1411
+ return i.inputId ? i.inputId : `text-input-${((O = j()) == null ? void 0 : O.uid) || ""}`;
1412
+ }), Y = () => {
1413
+ var g;
1414
+ const O = new MouseEvent("mousedown");
1415
+ (g = T == null ? void 0 : T.value) == null || g.dispatchEvent(O);
1416
+ }, k = () => {
1417
+ d.value = !0;
1418
+ }, H = () => {
1419
+ d.value = !1;
1420
+ };
1421
+ return Q(
1422
+ () => i.value,
1423
+ (O, g) => {
1424
+ (O !== g || O !== c.value) && (c.value = O);
1425
+ }
1426
+ ), s({ error: n, value: c }), (O, g) => (l(), r("div", {
1427
+ class: a([
1428
+ "tide-input-select",
1429
+ t(e).DISPLAY.FLEX,
1430
+ t(e).FLEX.DIRECTION.COLUMN,
1431
+ t(e).GAP.QUARTER,
1432
+ O.disabled && "disabled",
1433
+ R.value && "error"
1434
+ ])
1435
+ }, [
1436
+ E("div", {
1437
+ class: a([
1438
+ "tide-input-border",
1439
+ t(e).POSITION.RELATIVE,
1440
+ t(e).DISPLAY.FLEX,
1441
+ t(e).AXIS2.CENTER,
1442
+ t(e).GAP.HALF,
1443
+ t(e).BORDER.RADIUS.HALF,
1444
+ i.disabled ? t(e).CURSOR.NOT_ALLOWED : "",
1445
+ t(e).OVERFLOW.XY.HIDDEN
1446
+ ]),
1447
+ onClick: Y
1448
+ }, [
1449
+ E("div", {
1450
+ class: a([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL])
1451
+ }, [
1452
+ O.label ? (l(), r("label", {
1453
+ key: 0,
1454
+ class: a([
1455
+ G.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1456
+ t(e).POSITION.ABSOLUTE,
1457
+ t(e).POSITIONING.LEFT,
1458
+ t(e).MARGIN.TOP.HALF,
1459
+ t(e).MARGIN.LEFT.ONE,
1460
+ !R.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1461
+ t(e).FONT.WEIGHT.FIVE_HUNDRED
1462
+ ]),
1463
+ for: M.value
1464
+ }, N(m.value), 11, it)) : A("", !0),
1465
+ ae(E("select", {
1466
+ class: a([t(e).PADDING.BOTTOM.HALF, t(e).PADDING.X.ONE, t(e).WIDTH.FULL, O.disabled && t(e).CURSOR.NOT_ALLOWED]),
1467
+ disabled: O.disabled,
1468
+ name: O.name,
1469
+ ref_key: "input",
1470
+ ref: T,
1471
+ required: I.value,
1472
+ onFocus: k,
1473
+ onFocusout: H,
1474
+ id: M.value,
1475
+ "onUpdate:modelValue": g[0] || (g[0] = (C) => c.value = C)
1476
+ }, [
1477
+ (l(!0), r($, null, q(O.options, (C) => (l(), r("option", {
1478
+ class: a([t(e).WIDTH.FULL, t(e).BG.SURFACE.DEFAULT]),
1479
+ key: C.value,
1480
+ selected: c.value === C.value ? !0 : void 0,
1481
+ value: C.value
1482
+ }, N(C.label), 11, ot))), 128))
1483
+ ], 42, at), [
1484
+ [Le, c.value]
1485
+ ])
1486
+ ], 2),
1487
+ P(S, {
1488
+ class: a([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT, t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.OFF]),
1489
+ icon: t(v).EXPAND_MORE,
1490
+ size: t(y).SMALL
1491
+ }, null, 8, ["class", "icon", "size"])
1492
+ ], 2),
1493
+ i.supportingText || R.value ? (l(), r("div", {
1494
+ key: 0,
1495
+ class: a([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1496
+ }, [
1497
+ R.value ? (l(), D(S, {
1498
+ key: 0,
1499
+ class: a([]),
1500
+ icon: t(v).ERROR,
1501
+ size: t(y).SMALL
1502
+ }, null, 8, ["icon", "size"])) : A("", !0),
1503
+ E("div", {
1504
+ class: a([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1505
+ }, N(R.value ? L.value : i.supportingText), 3)
1506
+ ], 2)) : A("", !0)
1507
+ ], 2));
1508
+ }
1509
+ });
1510
+ const kt = /* @__PURE__ */ U(nt, [["__scopeId", "data-v-3cee2c5e"]]), K = {
1511
+ DATE: "date",
1512
+ DATETIME_LOCAL: "datetime-local",
1513
+ EMAIL: "email",
1514
+ MONTH: "month",
1515
+ NUMBER: "number",
1516
+ PASSWORD: "password",
1517
+ SEARCH: "search",
1518
+ TEL: "tel",
1519
+ TEXT: "text",
1520
+ TIME: "time",
1521
+ URL: "url",
1522
+ WEEK: "week"
1523
+ }, lt = ["for"], dt = ["autocomplete", "data-track", "disabled", "maxlength", "minlength", "name", "required", "type", "id"], rt = /* @__PURE__ */ p({
1524
+ __name: "TideInputText",
1525
+ props: {
1526
+ autocomplete: { type: Boolean, default: !1 },
1527
+ dataTrack: { default: "" },
1528
+ disabled: { type: Boolean, default: !1 },
1529
+ error: { type: [String, Boolean], default: !1 },
1530
+ hasClear: { type: Boolean, default: !1 },
1531
+ iconLeading: { default: void 0 },
1532
+ inputId: { default: void 0 },
1533
+ label: { default: void 0 },
1534
+ maxlength: { default: void 0 },
1535
+ minlength: { default: void 0 },
1536
+ name: {},
1537
+ prefix: { default: void 0 },
1538
+ required: { type: Boolean, default: !1 },
1539
+ suffix: { default: void 0 },
1540
+ supportingText: { default: void 0 },
1541
+ transformValue: { type: Function, default: void 0 },
1542
+ type: { default: K.TEXT },
1543
+ validators: { default: void 0 },
1544
+ value: { default: "" }
1545
+ },
1546
+ setup(o, { expose: s }) {
1547
+ const i = o, n = u(i.error), d = u(!1), T = u(null), I = u(!1), c = u(i.value), L = F(() => oe(i.error, n.value)), m = F(() => i.required && i.label ? `${i.label} *` : i.label), R = F(() => i.hasClear && c.value), G = F(() => i.required && !c.value || ne(n.value, i.error)), h = F(() => d.value || !M.value), M = F(() => c.value === ""), Y = F(
1548
+ () => i.type === K.PASSWORD && I.value === !0 ? K.TEXT : i.type
1549
+ ), k = F(() => {
1550
+ var f;
1551
+ return i.inputId ? i.inputId : `text-input-${((f = j()) == null ? void 0 : f.uid) || ""}`;
1552
+ }), H = () => {
1553
+ var f;
1554
+ c.value = "", (f = T.value) == null || f.focus();
1555
+ }, O = () => {
1556
+ d.value = !0;
1557
+ }, g = () => {
1558
+ d.value = !1, V();
1559
+ }, C = () => {
1560
+ var f;
1561
+ if (i.transformValue) {
1562
+ const W = ((f = c.value.match(/\d/g)) == null ? void 0 : f.join("")) || void 0;
1563
+ c.value = W ? i.transformValue(W) : "";
1564
+ }
1565
+ }, V = () => {
1566
+ Oe({
1567
+ error: n,
1568
+ errorFromProps: i.error,
1569
+ maxlength: i.maxlength,
1570
+ minlength: i.minlength,
1571
+ validators: i.validators,
1572
+ value: c
1573
+ });
1574
+ }, ee = (f) => {
1575
+ c.value = f;
1576
+ };
1577
+ return Q(
1578
+ () => i.value,
1579
+ (f, W) => {
1580
+ (f !== W || f !== c.value) && (c.value = f);
1581
+ }
1582
+ ), s({ error: n, updateValue: ee, value: c }), (f, W) => (l(), r("div", {
1583
+ class: a([
1584
+ "tide-input-text",
1585
+ t(e).DISPLAY.FLEX,
1586
+ t(e).FLEX.DIRECTION.COLUMN,
1587
+ t(e).GAP.QUARTER,
1588
+ f.disabled && "disabled",
1589
+ G.value && "error"
1590
+ ])
1591
+ }, [
1592
+ E("div", {
1593
+ class: a([
1594
+ "tide-input-border",
1595
+ t(e).DISPLAY.FLEX,
1596
+ t(e).AXIS2.CENTER,
1597
+ t(e).GAP.HALF,
1598
+ t(e).POSITION.RELATIVE,
1599
+ t(e).BORDER.RADIUS.HALF,
1600
+ R.value ? [t(e).PADDING.RIGHT.HALF, t(e).PADDING.LEFT.ONE] : [t(e).PADDING.X.ONE],
1601
+ t(e).PADDING.Y.HALF,
1602
+ i.disabled ? t(e).CURSOR.NOT_ALLOWED : t(e).CURSOR.TEXT
1603
+ ])
1604
+ }, [
1605
+ i.iconLeading ? (l(), D(S, {
1606
+ key: 0,
1607
+ icon: i.iconLeading,
1608
+ size: t(y).SMALL
1609
+ }, null, 8, ["icon", "size"])) : A("", !0),
1610
+ E("div", {
1611
+ class: a([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
1612
+ }, [
1613
+ i.prefix ? (l(), r("div", {
1614
+ key: 0,
1615
+ class: a(["tide-input-text-prefix", !G.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
1616
+ }, N(i.prefix), 3)) : A("", !0),
1617
+ E("div", {
1618
+ class: a([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL]),
1619
+ onClick: W[1] || (W[1] = Te((te) => {
1620
+ var le;
1621
+ return (le = T.value) == null ? void 0 : le.focus();
1622
+ }, ["prevent"]))
1623
+ }, [
1624
+ f.label ? (l(), r("label", {
1625
+ key: 0,
1626
+ class: a([
1627
+ h.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1628
+ !G.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1629
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1630
+ t(e).CURSOR.TEXT
1631
+ ]),
1632
+ for: k.value
1633
+ }, N(m.value), 11, lt)) : A("", !0),
1634
+ ae(E("input", {
1635
+ autocomplete: f.autocomplete ? "on" : "off",
1636
+ class: a([t(e).WIDTH.FULL, f.disabled && t(e).CURSOR.NOT_ALLOWED]),
1637
+ "data-track": i.dataTrack,
1638
+ disabled: i.disabled,
1639
+ maxlength: i.maxlength,
1640
+ minlength: i.minlength,
1641
+ name: i.name,
1642
+ ref_key: "input",
1643
+ ref: T,
1644
+ required: i.required,
1645
+ type: Y.value,
1646
+ onChange: V,
1647
+ onFocus: O,
1648
+ onFocusout: g,
1649
+ onInput: C,
1650
+ id: k.value,
1651
+ "onUpdate:modelValue": W[0] || (W[0] = (te) => c.value = te)
1652
+ }, null, 42, dt), [
1653
+ [pe, c.value]
1654
+ ])
1655
+ ], 2),
1656
+ i.suffix ? (l(), r("div", {
1657
+ key: 1,
1658
+ class: a(["tide-input-text-suffix", !G.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
1659
+ }, N(i.suffix), 3)) : A("", !0)
1660
+ ], 2),
1661
+ R.value && i.type !== t(K).PASSWORD ? (l(), D(S, {
1662
+ key: 1,
1663
+ class: a([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
1664
+ icon: t(v).CLOSE,
1665
+ size: t(y).SMALL,
1666
+ onClick: H
1667
+ }, null, 8, ["class", "icon", "size"])) : A("", !0),
1668
+ i.type === t(K).PASSWORD ? (l(), D(S, {
1669
+ key: 2,
1670
+ class: a([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
1671
+ icon: t(v).VISIBILITY,
1672
+ size: t(y).SMALL,
1673
+ onClick: W[2] || (W[2] = (te) => I.value = !I.value)
1674
+ }, null, 8, ["class", "icon", "size"])) : A("", !0)
1675
+ ], 2),
1676
+ i.supportingText || G.value ? (l(), r("div", {
1677
+ key: 0,
1678
+ class: a([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1679
+ }, [
1680
+ G.value ? (l(), D(S, {
1681
+ key: 0,
1682
+ class: a([]),
1683
+ icon: t(v).ERROR,
1684
+ size: t(y).SMALL
1685
+ }, null, 8, ["icon", "size"])) : A("", !0),
1686
+ E("div", {
1687
+ class: a([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1688
+ }, N(G.value ? L.value : i.supportingText), 3)
1689
+ ], 2)) : A("", !0)
1690
+ ], 2));
1691
+ }
1692
+ });
1693
+ const Vt = /* @__PURE__ */ U(rt, [["__scopeId", "data-v-f8877c0d"]]), Et = ["for"], ct = ["data-track", "maxlength", "minlength", "name", "required", "rows", "id"], Tt = /* @__PURE__ */ p({
1694
+ __name: "TideInputTextarea",
1695
+ props: {
1696
+ dataTrack: { default: "" },
1697
+ error: { type: [String, Boolean], default: !1 },
1698
+ inputId: { default: void 0 },
1699
+ label: { default: void 0 },
1700
+ maxlength: { default: void 0 },
1701
+ minlength: { default: void 0 },
1702
+ name: { default: void 0 },
1703
+ required: { type: Boolean, default: !1 },
1704
+ rows: { default: 8 },
1705
+ supportingText: { default: void 0 },
1706
+ value: { default: "" }
1707
+ },
1708
+ setup(o, { expose: s }) {
1709
+ const i = o, n = u(i.error), d = u(!1), T = u(null), I = u(i.value), c = F(() => oe(i.error, n.value)), L = F(() => i.required ? `${i.label} *` : i.label), m = F(() => i.required && !I.value || ne(n.value, i.error)), R = F(() => d.value || !G.value), G = F(() => I.value === ""), h = F(() => {
1710
+ var H;
1711
+ return i.inputId ? i.inputId : `text-input-${((H = j()) == null ? void 0 : H.uid) || ""}`;
1712
+ }), M = () => {
1713
+ d.value = !0;
1714
+ }, Y = () => {
1715
+ d.value = !1;
1716
+ }, k = () => Oe({
1717
+ error: n,
1718
+ errorFromProps: i.error,
1719
+ maxlength: i.maxlength,
1720
+ minlength: i.minlength,
1721
+ value: I
1722
+ });
1723
+ return Q(
1724
+ () => i.value,
1725
+ (H, O) => {
1726
+ (H !== O || H !== I.value) && (I.value = H);
1727
+ }
1728
+ ), s({ error: n, value: I }), (H, O) => (l(), r("div", {
1729
+ class: a(["tide-input-textarea", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, m.value && "error"])
1730
+ }, [
1731
+ E("div", {
1732
+ class: a([
1733
+ "tide-input-textarea-field",
1734
+ t(e).GAP.HALF,
1735
+ t(e).POSITION.RELATIVE,
1736
+ t(e).BORDER.RADIUS.HALF,
1737
+ t(e).PADDING.LEFT.ONE,
1738
+ t(e).PADDING.TOP.HALF,
1739
+ t(e).OVERFLOW.XY.HIDDEN
1740
+ ])
1741
+ }, [
1742
+ H.label ? (l(), r("label", {
1743
+ key: 0,
1744
+ class: a([
1745
+ R.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1746
+ !m.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1747
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1748
+ t(e).CURSOR.TEXT
1749
+ ]),
1750
+ for: h.value,
1751
+ ref: "label"
1752
+ }, N(L.value), 11, Et)) : A("", !0),
1753
+ ae(E("textarea", {
1754
+ class: a([t(e).WIDTH.FULL]),
1755
+ "data-track": i.dataTrack,
1756
+ maxlength: i.maxlength,
1757
+ minlength: i.minlength,
1758
+ name: i.name,
1759
+ ref_key: "input",
1760
+ ref: T,
1761
+ required: i.required,
1762
+ rows: i.rows,
1763
+ onChange: k,
1764
+ onFocus: M,
1765
+ onFocusout: Y,
1766
+ id: h.value,
1767
+ "onUpdate:modelValue": O[0] || (O[0] = (g) => I.value = g)
1768
+ }, null, 42, ct), [
1769
+ [Fe, I.value]
1770
+ ])
1771
+ ], 2),
1772
+ i.supportingText || m.value ? (l(), r("div", {
1773
+ key: 0,
1774
+ class: a([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1775
+ }, [
1776
+ m.value ? (l(), D(S, {
1777
+ key: 0,
1778
+ icon: t(v).ERROR,
1779
+ size: t(y).SMALL
1780
+ }, null, 8, ["icon", "size"])) : A("", !0),
1781
+ E("div", {
1782
+ class: a([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1783
+ }, N(m.value ? c.value : i.supportingText), 3)
1784
+ ], 2)) : A("", !0)
1785
+ ], 2));
1786
+ }
1787
+ });
1788
+ const xt = /* @__PURE__ */ U(Tt, [["__scopeId", "data-v-aff67730"]]), wt = /* @__PURE__ */ p({
1789
+ __name: "TideLink",
1790
+ props: {
1791
+ element: { default: _.LINK },
1792
+ href: { default: void 0 },
1793
+ iconLeading: { default: void 0 },
1794
+ iconTrailing: { default: void 0 },
1795
+ isNewTab: { type: Boolean, default: !1 },
1796
+ label: { default: void 0 }
1797
+ },
1798
+ setup(o) {
1799
+ const s = o, i = F(() => s.iconLeading || s.iconTrailing);
1800
+ return (n, d) => (l(), D(z(s.element === t(_).LINK ? t(_).LINK : t(_).BUTTON), {
1801
+ class: a([
1802
+ s.element === t(_).LINK ? "tide-button-as-link" : "tide-link",
1803
+ i.value ? [t(e).DISPLAY.INLINE_FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF] : [t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON]
1804
+ ]),
1805
+ href: s.href,
1806
+ target: s.isNewTab ? t(X).BLANK : t(X).SELF
1807
+ }, {
1808
+ default: J(() => [
1809
+ s.iconLeading ? (l(), D(S, {
1810
+ key: 0,
1811
+ icon: s.iconLeading
1812
+ }, null, 8, ["icon"])) : A("", !0),
1813
+ i.value ? (l(), r("div", {
1814
+ key: 1,
1815
+ class: a([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON])
1816
+ }, N(s.label), 3)) : (l(), r($, { key: 2 }, [
1817
+ ce(N(s.label), 1)
1818
+ ], 64)),
1819
+ s.iconTrailing ? (l(), D(S, {
1820
+ key: 3,
1821
+ icon: s.iconTrailing
1822
+ }, null, 8, ["icon"])) : A("", !0)
1823
+ ]),
1824
+ _: 1
1825
+ }, 8, ["class", "href", "target"]));
1826
+ }
1827
+ }), It = ["onClick"], Ot = /* @__PURE__ */ p({
1828
+ __name: "TideModal",
1829
+ props: {
1830
+ isOpen: { type: Boolean },
1831
+ title: {},
1832
+ width: {}
1833
+ },
1834
+ emits: ["close"],
1835
+ setup(o, { emit: s }) {
1836
+ const i = o, n = u(i.isOpen), d = u(null), T = (R) => {
1837
+ n.value = !1, I(), s("close", R);
1838
+ }, I = () => {
1839
+ n.value ? (d.value = window.scrollY, document.body.style.overflow = "hidden", d.value && window.scrollTo(0, d.value), L()) : (document.body.style.overflow = "", m());
1840
+ }, c = (R) => {
1841
+ R.key === "Escape" && (R.stopPropagation(), T(R));
1842
+ }, L = () => {
1843
+ window.addEventListener("keydown", c);
1844
+ }, m = () => {
1845
+ window.removeEventListener("keydown", c);
1846
+ };
1847
+ return ie(() => {
1848
+ I();
1849
+ }), Q(
1850
+ () => i.isOpen,
1851
+ (R) => {
1852
+ n.value = R, I();
1853
+ }
1854
+ ), (R, G) => (l(), D(ve, { to: "body" }, [
1855
+ E("div", {
1856
+ class: a([
1857
+ "tide-modal-wrapper",
1858
+ t(e).POSITION.ABSOLUTE,
1859
+ t(e).DISPLAY.FLEX,
1860
+ t(e).AXIS1.CENTER,
1861
+ t(e).AXIS2.CENTER,
1862
+ t(e).POSITIONING.TOP,
1863
+ t(e).POSITIONING.LEFT,
1864
+ t(e).WIDTH.FULL,
1865
+ t(e).HEIGHT.FULL,
1866
+ i.isOpen ? "active" : t(e).POINTER_EVENTS.OFF,
1867
+ t(e).OVERFLOW.Y.HIDDEN
1868
+ ])
1869
+ }, [
1870
+ E("div", {
1871
+ class: a(["tide-modal-bg", t(e).POSITION.ABSOLUTE, t(e).WIDTH.FULL, t(e).HEIGHT.FULL]),
1872
+ style: se({ "--tide-modal-width": i.width }),
1873
+ onClick: Te(T, ["self"])
1874
+ }, null, 14, It),
1875
+ E("div", {
1876
+ class: a([
1877
+ "tide-modal",
1878
+ t(e).BG.SURFACE.DEFAULT,
1879
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
1880
+ t(e).POSITION.ABSOLUTE,
1881
+ t(e).DISPLAY.FLEX,
1882
+ t(e).FLEX.DIRECTION.COLUMN,
1883
+ t(e).BORDER.RADIUS.ONE,
1884
+ t(e).OVERFLOW.XY.HIDDEN,
1885
+ t(e).SHADOW.BOTTOM
1886
+ ])
1887
+ }, [
1888
+ E("header", {
1889
+ class: a([
1890
+ "tide-modal-header",
1891
+ t(e).POSITION.RELATIVE,
1892
+ t(e).DISPLAY.FLEX,
1893
+ t(e).AXIS2.CENTER,
1894
+ t(e).PADDING.Y.ONE,
1895
+ t(e).PADDING.X.TWO,
1896
+ t(e).BORDER.BOTTOM.ONE,
1897
+ t(e).BORDER.COLOR.LOW
1898
+ ])
1899
+ }, [
1900
+ R.title ? (l(), r("div", {
1901
+ key: 0,
1902
+ class: a([t(e).FLEX.GROW.ON, t(e).FONT.SIZE.TWENTY, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
1903
+ }, N(R.title), 3)) : A("", !0),
1904
+ E("button", {
1905
+ class: a([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT, t(e).MARGIN.RIGHT.TWO]),
1906
+ onClick: T,
1907
+ title: "Close"
1908
+ }, [
1909
+ P(S, {
1910
+ icon: t(v).CLOSE
1911
+ }, null, 8, ["icon"])
1912
+ ], 2)
1913
+ ], 2),
1914
+ E("div", {
1915
+ class: a(["tide-modal-content", t(e).PADDING.FULL.TWO, t(e).OVERFLOW.Y.AUTO])
1916
+ }, [
1917
+ B(R.$slots, "default", {}, void 0, !0)
1918
+ ], 2),
1919
+ R.$slots.footer ? (l(), r("footer", {
1920
+ key: 0,
1921
+ class: a([
1922
+ "tide-bg-surface",
1923
+ t(e).POSITION.STICKY,
1924
+ t(e).POSITIONING.LEFT,
1925
+ t(e).POSITIONING.BOTTOM,
1926
+ t(e).DISPLAY.FLEX,
1927
+ t(e).AXIS1.END,
1928
+ t(e).GAP.ONE,
1929
+ t(e).PADDING.X.TWO,
1930
+ t(e).PADDING.Y.ONE,
1931
+ t(e).SHADOW.TOP
1932
+ ])
1933
+ }, [
1934
+ B(R.$slots, "footer", {}, void 0, !0)
1935
+ ], 2)) : A("", !0)
1936
+ ], 2)
1937
+ ], 2)
1938
+ ]));
1939
+ }
1940
+ });
1941
+ const $t = /* @__PURE__ */ U(Ot, [["__scopeId", "data-v-5e665389"]]), Qt = /* @__PURE__ */ p({
1942
+ __name: "TidePagination",
1943
+ props: {
1944
+ pageCurrent: { default: 1 },
1945
+ pageTotal: { default: 1 }
1946
+ },
1947
+ emits: ["change"],
1948
+ setup(o, { emit: s }) {
1949
+ const i = o, n = u(i.pageCurrent), d = F(() => new Array(i.pageTotal).fill("").map((I, c) => c + 1)), T = (I, c) => {
1950
+ n.value = c, s("change", I, c);
1951
+ };
1952
+ return (I, c) => (l(), r("section", {
1953
+ class: a(["tide-pagination", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
1954
+ }, [
1955
+ P(Z, {
1956
+ disabled: n.value === 1,
1957
+ icon: t(v).CHEVRON_LEFT,
1958
+ priority: t(w).QUATERNARY,
1959
+ onClick: c[0] || (c[0] = (L) => T(L, n.value - 1))
1960
+ }, null, 8, ["disabled", "icon", "priority"]),
1961
+ E("ul", {
1962
+ class: a([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
1963
+ }, [
1964
+ (l(!0), r($, null, q(d.value, (L) => (l(), r("li", { key: L }, [
1965
+ P(Xe, {
1966
+ disabled: n.value === L,
1967
+ label: L,
1968
+ priority: t(w).QUATERNARY,
1969
+ onClick: (m) => T(m, L)
1970
+ }, null, 8, ["disabled", "label", "priority", "onClick"])
1971
+ ]))), 128))
1972
+ ], 2),
1973
+ P(Z, {
1974
+ disabled: n.value === d.value[d.value.length - 1],
1975
+ icon: t(v).CHEVRON_RIGHT,
1976
+ priority: t(w).QUATERNARY,
1977
+ onClick: c[1] || (c[1] = (L) => T(L, n.value + 1))
1978
+ }, null, 8, ["disabled", "icon", "priority"])
1979
+ ], 2));
1980
+ }
1981
+ }), Rt = { class: "tide-seo-links" }, ut = ["href", "target"], At = /* @__PURE__ */ p({
1982
+ __name: "TideSeoLinks",
1983
+ props: {
1984
+ heading: { default: "" },
1985
+ links: {}
1986
+ },
1987
+ setup(o) {
1988
+ const s = o;
1989
+ return (i, n) => (l(), r("section", Rt, [
1990
+ E("h2", {
1991
+ class: a([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
1992
+ }, N(s.heading), 3),
1993
+ E("ul", {
1994
+ class: a([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
1995
+ }, [
1996
+ (l(!0), r($, null, q(s.links, (d) => (l(), r("li", {
1997
+ class: a(["tide-seo-link", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, t(e).FONT.SIZE.FOURTEEN]),
1998
+ key: d.label
1999
+ }, [
2000
+ E("a", {
2001
+ class: a([t(e).UNDERLINE.OFF]),
2002
+ href: d.url,
2003
+ target: d.isNewTab ? t(X).BLANK : t(X).SELF
2004
+ }, N(d.label), 11, ut)
2005
+ ], 2))), 128))
2006
+ ], 2)
2007
+ ]));
2008
+ }
2009
+ });
2010
+ const Kt = /* @__PURE__ */ U(At, [["__scopeId", "data-v-d62373f1"]]), Nt = ["data-track", "onClick"], Lt = /* @__PURE__ */ p({
2011
+ __name: "TideTabs",
2012
+ props: {
2013
+ activeTabInitial: { default: 0 },
2014
+ tabs: {}
2015
+ },
2016
+ emits: ["change"],
2017
+ setup(o, { emit: s }) {
2018
+ const i = o, n = u(i.activeTabInitial), d = (T, I) => {
2019
+ n.value = I, s("change", T, I);
2020
+ };
2021
+ return (T, I) => (l(), r("div", {
2022
+ class: a([
2023
+ "tide-tabs",
2024
+ t(e).BG.SURFACE.VARIANT,
2025
+ t(e).DISPLAY.FLEX,
2026
+ t(e).GAP.QUARTER,
2027
+ t(e).BORDER.RADIUS.HALF,
2028
+ t(e).PADDING.FULL.QUARTER,
2029
+ t(e).OVERFLOW.XY.HIDDEN,
2030
+ t(e).WIDTH.FULL
2031
+ ])
2032
+ }, [
2033
+ (l(!0), r($, null, q(i.tabs, (c, L) => (l(), r("button", {
2034
+ class: a([
2035
+ "tide-tabs-tab",
2036
+ L === n.value ? [t(e).BG.SURFACE.DEFAULT, t(e).FONT.COLOR.SURFACE.DEFAULT, t(e).SHADOW.BOTTOM] : ["inactive", t(e).FONT.COLOR.SURFACE.VARIANT],
2037
+ t(e).FLEX.GROW.ON,
2038
+ t(e).BORDER.RADIUS.QUARTER,
2039
+ t(e).PADDING.Y.QUARTER,
2040
+ t(e).WIDTH.FULL,
2041
+ t(e).FONT.WEIGHT.SIX_HUNDRED,
2042
+ t(e).WHITESPACE_WRAP.OFF
2043
+ ]),
2044
+ "data-track": c.dataTrack || void 0,
2045
+ key: c.label,
2046
+ onClick: (m) => d(m, L)
2047
+ }, [
2048
+ E("span", {
2049
+ class: a([t(e).FONT.WEIGHT.SIX_HUNDRED])
2050
+ }, N(c.label), 3),
2051
+ c.count && c.count > 0 ? (l(), r("span", {
2052
+ key: 0,
2053
+ class: a([t(e).FONT.WEIGHT.SIX_HUNDRED])
2054
+ }, " (" + N(c.count) + ") ", 3)) : A("", !0)
2055
+ ], 10, Nt))), 128))
2056
+ ], 2));
2057
+ }
2058
+ });
2059
+ const Zt = /* @__PURE__ */ U(Lt, [["__scopeId", "data-v-894fc638"]]), pt = ["disabled"], Ft = /* @__PURE__ */ p({
2060
+ __name: "TideToggle",
2061
+ props: {
2062
+ disabled: {
2063
+ default: !1,
2064
+ required: !1,
2065
+ type: Boolean
2066
+ },
2067
+ isActive: {
2068
+ required: !0,
2069
+ type: Boolean
2070
+ }
2071
+ },
2072
+ emits: ["change"],
2073
+ setup(o, { emit: s }) {
2074
+ const i = o, n = u(i.isActive), d = (T) => {
2075
+ i.disabled || (n.value = !n.value, s("change", T, n.value));
2076
+ };
2077
+ return (T, I) => (l(), r("button", {
2078
+ class: a([
2079
+ "tide-toggle",
2080
+ i.isActive ? "active" : "",
2081
+ t(e).DISPLAY.FLEX,
2082
+ t(e).AXIS2.CENTER,
2083
+ t(e).BORDER.FULL.ONE,
2084
+ t(e).BORDER.RADIUS.FULL,
2085
+ i.isActive ? "" : t(e).BORDER.COLOR.DEFAULT,
2086
+ t(e).OVERFLOW.XY.HIDDEN,
2087
+ i.isActive ? t(e).BG.SECONDARY : t(e).BG.SURFACE.DEFAULT
2088
+ ]),
2089
+ disabled: i.disabled,
2090
+ onClick: d,
2091
+ "aria-label": "Toggle"
2092
+ }, [
2093
+ E("div", {
2094
+ class: a([
2095
+ "tide-toggle-indicator",
2096
+ t(e).POSITION.RELATIVE,
2097
+ t(e).DISPLAY.FLEX,
2098
+ t(e).AXIS1.CENTER,
2099
+ t(e).AXIS2.CENTER,
2100
+ t(e).BORDER.RADIUS.FULL,
2101
+ i.isActive ? t(e).BG.SURFACE.DEFAULT : t(e).BG.SECONDARY
2102
+ ])
2103
+ }, [
2104
+ P(S, {
2105
+ icon: t(v).CHECK,
2106
+ size: t(y).LARGE
2107
+ }, null, 8, ["icon", "size"])
2108
+ ], 2)
2109
+ ], 10, pt));
2110
+ }
2111
+ });
2112
+ const zt = /* @__PURE__ */ U(Ft, [["__scopeId", "data-v-59d06131"]]), qt = {
2113
+ AERO: "aero",
2114
+ ATV: "atv",
2115
+ BOATMART: "boatmart",
2116
+ CYCLE: "cycle",
2117
+ EQUIP: "equip",
2118
+ PWC: "pwc",
2119
+ RV: "rv",
2120
+ SNOW: "snow",
2121
+ TRUCK: "truck"
2122
+ };
2123
+ const Jt = {
2124
+ DICK: "Dick",
2125
+ HARRY: "Harry",
2126
+ TOM: "Tom"
2127
+ };
3
2128
  export {
4
- i as ALERT,
5
- T as BADGE,
6
- d as BADGE_PREMIUM,
7
- t as BADGE_TRUSTED,
8
- n as BREAKPOINT,
9
- o as CSS,
10
- r as ELEMENT,
11
- I as ELEMENT_TEXT_AS_ICON,
12
- E as ICON,
13
- u as PRIORITY,
14
- B as REALM,
15
- A as SIZE,
16
- g as TARGET,
17
- p as TideAccordionItem,
18
- C as TideAlert,
19
- m as TideBackgroundImage,
20
- R as TideBadge,
21
- c as TideBadgePremium,
22
- l as TideBadgeTrustedPartner,
23
- P as TideBreadCrumbs,
24
- S as TideButton,
25
- L as TideButtonIcon,
26
- M as TideButtonPagination,
27
- D as TideCard,
28
- G as TideCarousel,
29
- N as TideChipAction,
30
- _ as TideChipFilter,
31
- h as TideChipInput,
32
- k as TideColumns,
33
- x as TideDivider,
34
- O as TideIcon,
35
- b as TideImage,
36
- f as TideIndicator,
37
- v as TideInputRadio,
38
- F as TideInputSelect,
39
- K as TideInputText,
40
- U as TideInputTextarea,
41
- j as TideLink,
42
- q as TideModal,
43
- w as TidePagination,
44
- y as TideSeoLinks,
45
- z as TideTabs,
46
- H as TideToggle
2129
+ b as ALERT,
2130
+ Ut as BADGE,
2131
+ Ct as BADGE_PREMIUM,
2132
+ he as BADGE_TRUSTED,
2133
+ _t as BREAKPOINT,
2134
+ e as CSS,
2135
+ _ as ELEMENT,
2136
+ x as ELEMENT_TEXT_AS_ICON,
2137
+ Jt as FNAME,
2138
+ v as ICON,
2139
+ w as PRIORITY,
2140
+ qt as REALM,
2141
+ y as SIZE,
2142
+ X as TARGET,
2143
+ Dt as TideAccordionItem,
2144
+ St as TideAlert,
2145
+ gt as TideBackgroundImage,
2146
+ ft as TideBadge,
2147
+ mt as TideBadgePremium,
2148
+ Pt as TideBadgeTrustedPartner,
2149
+ Gt as TideBreadCrumbs,
2150
+ ht as TideButton,
2151
+ Z as TideButtonIcon,
2152
+ Xe as TideButtonPagination,
2153
+ Ht as TideCard,
2154
+ bt as TideCarousel,
2155
+ yt as TideChipAction,
2156
+ Bt as TideChipFilter,
2157
+ Wt as TideChipInput,
2158
+ Xt as TideColumns,
2159
+ re as TideDivider,
2160
+ S as TideIcon,
2161
+ Mt as TideImage,
2162
+ fe as TideIndicator,
2163
+ Yt as TideInputRadio,
2164
+ kt as TideInputSelect,
2165
+ Vt as TideInputText,
2166
+ xt as TideInputTextarea,
2167
+ wt as TideLink,
2168
+ $t as TideModal,
2169
+ Qt as TidePagination,
2170
+ Kt as TideSeoLinks,
2171
+ Zt as TideTabs,
2172
+ zt as TideToggle
47
2173
  };
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmpzIiwic291cmNlcyI6W10sInNvdXJjZXNDb250ZW50IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7In0=
2174
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMvU3R5bGVzLnRzIiwiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1NpemUudHMiLCIuLi9zcmMvdXRpbGl0aWVzL2Zvcm1hdC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSIsIi4uL3NyYy90eXBlcy9JY29uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUFjY29yZGlvbkl0ZW0udnVlIiwiLi4vc3JjL3R5cGVzL0VsZW1lbnQudHMiLCIuLi9zcmMvdHlwZXMvUHJpb3JpdHkudHMiLCIuLi9zcmMvdHlwZXMvVGFyZ2V0LnRzIiwiLi4vc3JjL3R5cGVzL0FsZXJ0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUFsZXJ0LnZ1ZSIsIi4uL3NyYy90eXBlcy9CYWRnZS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDYXJvdXNlbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0UmFkaW8udnVlIiwiLi4vc3JjL3V0aWxpdGllcy92YWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSIsIi4uL3NyYy90eXBlcy9UZXh0SW5wdXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHRhcmVhLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNb2RhbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUGFnaW5hdGlvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlVGFicy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlVG9nZ2xlLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL2luZGV4LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50ID0gKHR5cGVvZiBCUkVBS1BPSU5UKVtrZXlvZiB0eXBlb2YgQlJFQUtQT0lOVF07XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIE1JRERMRTogJ3RpZGUtYWxpZ24tbWlkZGxlJyxcbiAgICB9LFxuICB9LFxuICBBWElTMToge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczEtYXJvdW5kJyxcbiAgICBCRVRXRUVOOiAndGlkZS1heGlzMS1iZXR3ZWVuJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMxLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMS1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMS1zdGFydCcsXG4gIH0sXG4gIEFYSVMyOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMi1hcm91bmQnLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczItY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMyLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMyLXN0YXJ0JyxcbiAgfSxcbiAgQkc6IHtcbiAgICBCTFVSOiAndGlkZS1iZy1ibHVyJyxcbiAgICBFUlJPUjogJ3RpZGUtYmctZXJyb3InLFxuICAgIElORk86ICd0aWRlLWJnLWluZm8nLFxuICAgIFBSSU1BUlk6ICd0aWRlLWJnLXByaW1hcnknLFxuICAgIFNFQ09OREFSWTogJ3RpZGUtYmctc2Vjb25kYXJ5JyxcbiAgICBTVUNDRVNTOiAndGlkZS1iZy1zdWNjZXNzJyxcbiAgICBTVVJGQUNFOiB7XG4gICAgICBBQ0NFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50JyxcbiAgICAgIEFDQ0VOVF9WQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLWFjY2VudC12YXJpYW50JyxcbiAgICAgIEJSQU5EOiAndGlkZS1iZy1zdXJmYWNlLWJyYW5kJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgRVJST1I6ICd0aWRlLWJnLXN1cmZhY2UtZXJyb3InLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJnLXN1cmZhY2UtZmxvYXRpbmcnLFxuICAgICAgR1JBRElFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtZ3JhZGllbnQnLFxuICAgICAgSU5GTzogJ3RpZGUtYmctc3VyZmFjZS1pbmZvJyxcbiAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgV0FSTklORzogJ3RpZGUtYmctc3VyZmFjZS13YXJuaW5nJyxcbiAgICB9LFxuICAgIFdBUk5JTkc6ICd0aWRlLWJnLXdhcm5pbmcnLFxuICB9LFxuICBCT1JERVI6IHtcbiAgICBDT0xPUjoge1xuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1ib3R0b20tMicsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItdG9wLTInLFxuICAgIH0sXG4gIH0sXG4gIEJPWF9TSVpJTkc6IHtcbiAgICBCT1JERVJfQk9YOiAndGlkZS1ib3gtYm9yZGVyJyxcbiAgICBDT05URU5UX0JPWDogJ3RpZGUtYm94LWNvbnRlbnQnLFxuICB9LFxuICBCUkVBS19XT1JEOiB7XG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1jb250ZW50cycsXG4gICAgRkxFWDogJ3RpZGUtZGlzcGxheS1mbGV4JyxcbiAgICBHUklEOiAndGlkZS1kaXNwbGF5LWdyaWQnLFxuICAgIElOSVRJQUw6ICdpbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBQUklNQVJZOiAndGlkZS1mb250LW9uLXByaW1hcnknLFxuICAgICAgU0VDT05EQVJZOiAndGlkZS1mb250LW9uLXNlY29uZGFyeScsXG4gICAgICBTVVJGQUNFOiB7XG4gICAgICAgIEJSQU5EOiAndGlkZS1mb250LW9uLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgICBERUZBVUxUOiAndGlkZS1mb250LW9uLXN1cmZhY2UnLFxuICAgICAgICBJTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtaW52ZXJzZScsXG4gICAgICAgIFZBUklBTlQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50JyxcbiAgICAgICAgVkFSSUFOVF9JTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudC1pbnZlcnNlJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFFVQVJURVI6ICd0aWRlLWdhcC0xLzQnLFxuICAgIEhBTEY6ICd0aWRlLWdhcC0xLzInLFxuICAgIE9ORTogJ3RpZGUtZ2FwLTEnLFxuICAgIFRXTzogJ3RpZGUtZ2FwLTInLFxuICAgIEZPVVI6ICd0aWRlLWdhcC00JyxcbiAgfSxcbiAgR1JJRDoge1xuICAgIEVORDoge1xuICAgICAgT05FOiAndGlkZS1lbmQtMScsXG4gICAgICBUV086ICd0aWRlLWVuZC0yJyxcbiAgICAgIFRIUkVFOiAndGlkZS1lbmQtMycsXG4gICAgICBGT1VSOiAndGlkZS1lbmQtNCcsXG4gICAgICBGSVZFOiAndGlkZS1lbmQtNScsXG4gICAgICBTSVg6ICd0aWRlLWVuZC02JyxcbiAgICAgIFNFVkVOOiAndGlkZS1lbmQtNycsXG4gICAgICBFSUdIVDogJ3RpZGUtZW5kLTgnLFxuICAgICAgTklORTogJ3RpZGUtZW5kLTknLFxuICAgICAgVEVOOiAndGlkZS1lbmQtMTAnLFxuICAgICAgRUxFVkVOOiAndGlkZS1lbmQtMTEnLFxuICAgICAgVFdFTFZFOiAndGlkZS1lbmQtMTInLFxuICAgICAgVEhJUlRFRU46ICd0aWRlLWVuZC0xMycsXG4gICAgfSxcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIExBWU9VVDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFNUQVJUOiB7XG4gICAgICBaRVJPOiAndGlkZS1zdGFydC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtc3RhcnQtMScsXG4gICAgICBUV086ICd0aWRlLXN0YXJ0LTInLFxuICAgICAgVEhSRUU6ICd0aWRlLXN0YXJ0LTMnLFxuICAgICAgRk9VUjogJ3RpZGUtc3RhcnQtNCcsXG4gICAgICBGSVZFOiAndGlkZS1zdGFydC01JyxcbiAgICAgIFNJWDogJ3RpZGUtc3RhcnQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtc3RhcnQtNycsXG4gICAgICBFSUdIVDogJ3RpZGUtc3RhcnQtOCcsXG4gICAgICBOSU5FOiAndGlkZS1zdGFydC05JyxcbiAgICAgIFRFTjogJ3RpZGUtc3RhcnQtMTAnLFxuICAgICAgRUxFVkVOOiAndGlkZS1zdGFydC0xMScsXG4gICAgICBUV0VMVkU6ICd0aWRlLXN0YXJ0LTEyJyxcbiAgICB9LFxuICAgIFhMOiAndGlkZS1ncmlkLXhsJyxcbiAgfSxcbiAgSEVJR0hUOiB7XG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gICAgRlVMTDogJ3RpZGUtaGVpZ2h0LWZ1bGwnLFxuICB9LFxuICBJU09MQVRJT046IHtcbiAgICBJU09MQVRFOiAndGlkZS1pc29sYXRlJyxcbiAgfSxcbiAgTElTVF9CVUxMRVRTOiB7XG4gICAgT0ZGOiAndGlkZS1saXN0LW5vbmUnLFxuICB9LFxuICBNQVJHSU46IHtcbiAgICBCT1RUT006IHtcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi10b3AtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXgtYXV0bycsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXktMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVElDS1k6ICd0aWRlLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gIH0sXG4gIFNOQVA6IHtcbiAgICBPTjogJ3RpZGUtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc25hcC1zdGFydCcsXG4gIH0sXG4gIFRFWFRfVFJBTlNGT1JNOiB7XG4gICAgTE9XRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLWxvd2VyJyxcbiAgICBOT05FOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1ub25lJyxcbiAgICBVUFBFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tdXBwZXInLFxuICB9LFxuICBVTkRFUkxJTkU6IHtcbiAgICBIT1ZFUjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyJyxcbiAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdW5kZXJsaW5lJyxcbiAgfSxcbiAgVklTSUJJTElUWToge1xuICAgIE9GRjogJ3RpZGUtdmlzaWJsZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdmlzaWJsZScsXG4gIH0sXG4gIFdISVRFU1BBQ0VfV1JBUDoge1xuICAgIE9GRjogJ3RpZGUtd2hpdGVzcGFjZS1ub3dyYXAnLFxuICB9LFxuICBXSURUSDoge1xuICAgIFpFUk86ICd0aWRlLXdpZHRoLTAnLFxuICAgIEZVTEw6ICd0aWRlLXdpZHRoLWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtd2lkdGgtZnVsbCcsXG4gIH0sXG59O1xuXG5leHBvcnQgdHlwZSBDc3NVdGlsaXR5ID0gKHR5cGVvZiBDU1MpW2tleW9mIHR5cGVvZiBDU1NdO1xuXG5leHBvcnQgY29uc3QgY3NzU29ydE9yZGVyID0gW1xuICBDU1MuRElTUExBWS5CTE9DSyxcbiAgQ1NTLkRJU1BMQVkuQ09OVEVOVFMsXG4gIENTUy5ESVNQTEFZLkZMRVgsXG4gIENTUy5ESVNQTEFZLkdSSUQsXG4gIENTUy5ESVNQTEFZLk5PTkUsXG4gIENTUy5ESVNQTEFZLklOSVRJQUwsXG4gIENTUy5ESVNQTEFZLklOTElORSxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgQ1NTLkFYSVMxLkFST1VORCxcbiAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gIENTUy5BWElTMS5DRU5URVIsXG4gIENTUy5BWElTMS5FTkQsXG4gIENTUy5BWElTMS5TVEFSVCxcbiAgQ1NTLkFYSVMyLkFST1VORCxcbiAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgQ1NTLkFYSVMyLkVORCxcbiAgQ1NTLkFYSVMyLlNUQVJULFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OX1JFVkVSU0UsXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1csXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1dfUkVWRVJTRSxcbiAgQ1NTLkdBUC5PTkUsXG4gIENTUy5HQVAuSEFMRixcbiAgQ1NTLkdBUC5RVUFSVEVSLFxuICBDU1MuR0FQLlRXTyxcbiAgQ1NTLkdBUC5GT1VSLFxuICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICBDU1MuRkxFWC5HUk9XLk9OLFxuICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgQ1NTLkZMRVguU0hSSU5LLk9OLFxuICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICBDU1MuRkxFWC5XUkFQLFxuICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gIENTUy5QT1NJVElPTi5GSVhFRCxcbiAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICBDU1MuUE9TSVRJT04uU1RJQ0tZLFxuICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICBDU1MuUE9TSVRJT05JTkcuUklHSFQsXG4gIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gIENTUy5QT1NJVElPTklORy5MRUZULFxuICBDU1MuQk9YX1NJWklORy5CT1JERVJfQk9YLFxuICBDU1MuQk9YX1NJWklORy5DT05URU5UX0JPWCxcbiAgQ1NTLk1BUkdJTi5GVUxMLk9ORSxcbiAgQ1NTLk1BUkdJTi5GVUxMLkhBTEYsXG4gIENTUy5NQVJHSU4uRlVMTC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLkZVTEwuVFdPLFxuICBDU1MuTUFSR0lOLkZVTEwuRk9VUixcbiAgQ1NTLk1BUkdJTi5ZLk9ORSxcbiAgQ1NTLk1BUkdJTi5ZLkhBTEYsXG4gIENTUy5NQVJHSU4uWS5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlkuVFdPLFxuICBDU1MuTUFSR0lOLlkuRk9VUixcbiAgQ1NTLk1BUkdJTi5UT1AuT05FLFxuICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICBDU1MuTUFSR0lOLlRPUC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlRPUC5UV08sXG4gIENTUy5NQVJHSU4uVE9QLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5PTkUsXG4gIENTUy5NQVJHSU4uWC5IQUxGLFxuICBDU1MuTUFSR0lOLlguUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5YLlRXTyxcbiAgQ1NTLk1BUkdJTi5YLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5BVVRPLFxuICBDU1MuTUFSR0lOLlJJR0hULk9ORSxcbiAgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGLFxuICBDU1MuTUFSR0lOLlJJR0hULlFVQVJURVIsXG4gIENTUy5NQVJHSU4uUklHSFQuVFdPLFxuICBDU1MuTUFSR0lOLlJJR0hULkZPVVIsXG4gIENTUy5NQVJHSU4uUklHSFQuQVVUTyxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uT05FLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5IQUxGLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5UV08sXG4gIENTUy5NQVJHSU4uQk9UVE9NLkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gIENTUy5NQVJHSU4uTEVGVC5IQUxGLFxuICBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5MRUZULlRXTyxcbiAgQ1NTLk1BUkdJTi5MRUZULkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5BVVRPLFxuICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICBDU1MuQk9SREVSLlRPUC5PTkUsXG4gIENTUy5CT1JERVIuVE9QLlRXTyxcbiAgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsXG4gIENTUy5CT1JERVIuUklHSFQuVFdPLFxuICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gIENTUy5CT1JERVIuQk9UVE9NLlRXTyxcbiAgQ1NTLkJPUkRFUi5MRUZULk9ORSxcbiAgQ1NTLkJPUkRFUi5MRUZULlRXTyxcbiAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLFxuICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gIENTUy5QQURESU5HLkZVTEwuVFdPLFxuICBDU1MuUEFERElORy5GVUxMLkZPVVIsXG4gIENTUy5QQURESU5HLlkuT05FLFxuICBDU1MuUEFERElORy5ZLkhBTEYsXG4gIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuWS5UV08sXG4gIENTUy5QQURESU5HLlkuRk9VUixcbiAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gIENTUy5QQURESU5HLlRPUC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5UT1AuVFdPLFxuICBDU1MuUEFERElORy5UT1AuRk9VUixcbiAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gIENTUy5QQURESU5HLlguSEFMRixcbiAgQ1NTLlBBRERJTkcuWC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5YLlRXTyxcbiAgQ1NTLlBBRERJTkcuWC5GT1VSLFxuICBDU1MuUEFERElORy5SSUdIVC5PTkUsXG4gIENTUy5QQURESU5HLlJJR0hULkhBTEYsXG4gIENTUy5QQURESU5HLlJJR0hULlFVQVJURVIsXG4gIENTUy5QQURESU5HLlJJR0hULlRXTyxcbiAgQ1NTLlBBRERJTkcuUklHSFQuRk9VUixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gIENTUy5QQURESU5HLkJPVFRPTS5RVUFSVEVSLFxuICBDU1MuUEFERElORy5CT1RUT00uVFdPLFxuICBDU1MuUEFERElORy5CT1RUT00uRk9VUixcbiAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gIENTUy5QQURESU5HLkxFRlQuSEFMRixcbiAgQ1NTLlBBRERJTkcuTEVGVC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5MRUZULlRXTyxcbiAgQ1NTLlBBRERJTkcuTEVGVC5GT1VSLFxuICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gIENTUy5XSURUSC5aRVJPLFxuICBDU1MuV0lEVEguRlVMTCxcbiAgQ1NTLkhFSUdIVC5aRVJPLFxuICBDU1MuSEVJR0hULkZVTEwsXG4gIENTUy5BTElHTi5ZLk1JRERMRSxcbiAgQ1NTLkJSRUFLX1dPUkQsXG4gIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgQ1NTLkZPTlQuU0laRS5UV0VMVkUsXG4gIENTUy5GT05ULlNJWkUuRk9VUlRFRU4sXG4gIENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgQ1NTLkZPTlQuU0laRS5UV0VOVFksXG4gIENTUy5GT05ULlNJWkUuVFdFTlRZX0ZPVVIsXG4gIENTUy5GT05ULlNJWkUuVEhJUlRZX1RXTyxcbiAgQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCxcbiAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gIENTUy5PQkpFQ1QuQ0VOVEVSLFxuICBDU1MuT0JKRUNULkNPTlRBSU4sXG4gIENTUy5PQkpFQ1QuQ09WRVIsXG4gIENTUy5PQkpFQ1QuU0NBTEVfRE9XTixcbiAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICBDU1MuU0NST0xMQkFSLk9GRixcbiAgQ1NTLlNIQURPVy5CT1RUT00sXG4gIENTUy5TSEFET1cuVE9QLFxuICBDU1MuU05BUC5PTixcbiAgQ1NTLlNOQVBfQUxJR04uU1RBUlQsXG4gIENTUy5BTElHTi5YLkxFRlQsXG4gIENTUy5BTElHTi5YLkNFTlRFUixcbiAgQ1NTLkFMSUdOLlguUklHSFQsXG4gIENTUy5URVhUX1RSQU5TRk9STS5MT1dFUixcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLk5PTkUsXG4gIENTUy5URVhUX1RSQU5TRk9STS5VUFBFUixcbiAgQ1NTLlVOREVSTElORSxcbiAgQ1NTLlVOREVSTElORS5IT1ZFUixcbiAgQ1NTLlVOREVSTElORS5PRkYsXG4gIENTUy5WSVNJQklMSVRZLk9OLFxuICBDU1MuVklTSUJJTElUWS5PRkYsXG4gIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgQ1NTLk9WRVJGTE9XLlguQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gIENTUy5PVkVSRkxPVy5ZLkhJRERFTixcbl0gYXMgY29uc3Q7XG4iLCJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCJleHBvcnQgY29uc3QgU0laRSA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IGZvcm1hdFBhc2NhbENhc2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gcHJvcHMuaWNvbiBhcyB1bmtub3duIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IG5hbWUgPSBmb3JtYXRQYXNjYWxDYXNlKGlkKTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9JY29uJHtuYW1lfS5zdmdgKSk7XG5cbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaWNvbicsIHByb3BzLnNpemVdXCI+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6ZGF0YS1pY29uPVwiaWNvblwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIDppcz1cImlubmVyU1ZHXCJcbiAgICAgIHYtaWY9XCJpbm5lclNWR1wiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pY29uIHN2ZyB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24uc21hbGwgc3ZnIHtcbiAgICB3aWR0aDogMS4yNXJlbTtcbiAgICBoZWlnaHQ6IDEuMjVyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgSUNPTiA9IHtcbiAgQUNDT1VOVF9CQUxBTkNFOiAnYWNjb3VudC1iYWxhbmNlJyxcbiAgQUREOiAnYWRkJyxcbiAgQUlfREVTQ1JJUFRJT046ICdhaS1kZXNjcmlwdGlvbicsXG4gIEFMSUdOX1NQQUNFOiAnYWxpZ24tc3BhY2UnLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0ZPUldBUkQ6ICdhcnJvdy1mb3J3YXJkJyxcbiAgQVJST1dfUklHSFQ6ICdhcnJvdy1yaWdodCcsXG4gIEFTU0lHTk1FTlQ6ICdhc3NpZ25tZW50JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCT09LTUFSSzogJ2Jvb2ttYXJrJyxcbiAgQ0FMRU5EQVJfTU9OVEg6ICdjYWxlbmRhci1tb250aCcsXG4gIENBTEw6ICdjYWxsJyxcbiAgQ0hFQ0s6ICdjaGVjaycsXG4gIENIRVZST05fTEVGVDogJ2NoZXZyb24tbGVmdCcsXG4gIENIRVZST05fUklHSFQ6ICdjaGV2cm9uLXJpZ2h0JyxcbiAgQ0xFQVI6ICdjbGVhcicsXG4gIENMT1NFOiAnY2xvc2UnLFxuICBDWUNMRTogJ2N5Y2xlJyxcbiAgREVMRVRFOiAnZGVsZXRlJyxcbiAgRElBTU9ORDogJ2RpYW1vbmQnLFxuICBEUkFGVDogJ2RyYWZ0JyxcbiAgRURJVDogJ2VkaXQnLFxuICBFUlJPUjogJ2Vycm9yJyxcbiAgRVhQQU5EX0NPTlRFTlQ6ICdleHBhbmQtY29udGVudCcsXG4gIEVYUEFORF9MRVNTOiAnZXhwYW5kLWxlc3MnLFxuICBFWFBBTkRfTU9SRTogJ2V4cGFuZC1tb3JlJyxcbiAgRkFDRUJPT0s6ICdmYWNlYm9vaycsXG4gIEZBVk9SSVRFOiAnZmF2b3JpdGUnLFxuICBGQVZPUklURV9GSUxMRUQ6ICdmYXZvcml0ZS1maWxsZWQnLFxuICBGT1JNQVRfQk9MRDogJ2Zvcm1hdC1ib2xkJyxcbiAgRk9STUFUX0lUQUxJQzogJ2Zvcm1hdC1pdGFsaWMnLFxuICBGT1JNQVRfTElTVF9CVUxMRVRFRDogJ2Zvcm1hdC1saXN0LWJ1bGxldGVkJyxcbiAgRk9SVU06ICdmb3J1bScsXG4gIEdBVkVMOiAnZ2F2ZWwnLFxuICBHT09HTEU6ICdnb29nbGUnLFxuICBHT09HTEVfUEFZOiAnZ29vZ2xlLXBheScsXG4gIEdSSUQ6ICdncmlkJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElOU0VSVF9URVhUOiAnaW5zZXJ0LXRleHQnLFxuICBJTlNUQUdSQU06ICdpbnN0YWdyYW0nLFxuICBJT1NfU0hBUkU6ICdpb3Mtc2hhcmUnLFxuICBMQVlPVVQ6ICdsYXlvdXQnLFxuICBMSU5LRURfSU46ICdsaW5rZWQgaW4nLFxuICBMT0NBTF9TSElQUElORzogJ2xvY2FsLXNoaXBwaW5nJyxcbiAgTE9DSzogJ2xvY2snLFxuICBNQUlMOiAnbWFpbCcsXG4gIE1FTlU6ICdtZW51JyxcbiAgTU9SRV9IT1JJWjogJ21vcmUtaG9yaXonLFxuICBOT1RJRklDQVRJT05TOiAnbm90aWZpY2F0aW9ucycsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBIT1RPX0NBTUVSQTogJ3Bob3RvLWNhbWVyYScsXG4gIFBJTlRFUkVTVDogJ3BpbnRlcmVzdCcsXG4gIFBMQVlfQVJST1c6ICdwbGF5LWFycm93JyxcbiAgUkVNT1ZFOiAncmVtb3ZlJyxcbiAgUk9VTkRFRF9DT1JORVJTOiAncm91bmRlZC1jb3JuZXJzJyxcbiAgUlVMRVI6ICdydWxlcicsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTVM6ICdzbXMnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNXQVBfVkVSVDogJ3N3YXAtdmVydCcsXG4gIFRIUkVFX0RfUk9UQVRJT046ICd0aHJlZS1kLXJvdGF0aW9uJyxcbiAgVFJPUEhZOiAndHJvcGh5JyxcbiAgVFVORTogJ3R1bmUnLFxuICBUV0lUVEVSOiAndHdpdHRlcicsXG4gIFZJREVPQ0FNOiAndmlkZW9jYW0nLFxuICBWSUVXX0lOX0FSOiAndmlldy1pbi1hcicsXG4gIFZJU0lCSUxJVFk6ICd2aXNpYmlsaXR5JyxcbiAgVk9MVU1FX09GRjogJ3ZvbHVtZS1vZmYnLFxuICBWT0xVTUVfT046ICd2b2x1bWUtb24nLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG4gIFdFSUdIVDogJ3dlaWdodCcsXG4gIFdJRFRIOiAnd2lkdGgnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBJY29uID0gKHR5cGVvZiBJQ09OKVtrZXlvZiB0eXBlb2YgSUNPTl07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5kaWNhdG9yIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gICAgaGFzQm90dG9tRGl2aWRlcjoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaGFzVG9wRGl2aWRlcjoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaXNBY3RpdmU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGlzRXhwYW5kZWRJbml0aWFsOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc09wdGlvbmFsOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgZGVmYXVsdDogJycsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBpc0V4cGFuZGVkID0gcmVmKHByb3BzLmlzRXhwYW5kZWRJbml0aWFsKTtcblxuICBsZXQgYWNjb3JkaW9uQm9keSA9IHJlZigpO1xuXG4gIGNvbnN0IHRvZ2dsZUlzRXhwYW5kZWQgPSAoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFjY29yZGlvbkJvZHkudmFsdWUgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpc0V4cGFuZGVkLnZhbHVlID0gIWlzRXhwYW5kZWQudmFsdWU7XG5cbiAgICBlbGVtZW50LnN0eWxlLmdyaWRUZW1wbGF0ZVJvd3MgPSBpc0V4cGFuZGVkLnZhbHVlID8gJzFmcicgOiAnMGZyJztcbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhY2NvcmRpb25Cb2R5LnZhbHVlIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgZWxlbWVudC5zdHlsZS5ncmlkVGVtcGxhdGVSb3dzID0gaXNFeHBhbmRlZC52YWx1ZSA/ICcxZnInIDogJzBmcic7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJ0b2dnbGVJc0V4cGFuZGVkXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIENTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVEXVwiPlxuICAgICAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuaXNPcHRpb25hbFwiXG4gICAgICAgID5cbiAgICAgICAgICAob3B0aW9uYWwpXG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8VGlkZUluZGljYXRvciB2LWlmPVwicHJvcHMuaXNBY3RpdmVcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvbiA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBDU1MuRElTUExBWS5HUklEXVwiXG4gICAgICByZWY9XCJhY2NvcmRpb25Cb2R5XCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuT1ZFUkZMT1cuWS5ISURERU5dXCI+XG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5NQVJHSU4uWS5PTkUsIENTUy5GT05ULldFSUdIVC5GT1VSX0hVTkRSRUQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNCb3R0b21EaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hY2NvcmRpb24tYm9keSB7XG4gICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1yb3dzIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEFMRVJUIH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBpY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpY29uOiBJY29uID0gSUNPTi5WSUVXX0lOX0FSO1xuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4gICAgICBjYXNlIEFMRVJULkVSUk9SOlxuICAgICAgICBpY29uID0gSUNPTi5FUlJPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBBTEVSVC5JTkZPOlxuICAgICAgICBpY29uID0gSUNPTi5JTkZPO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQUxFUlQuU1VDQ0VTUzpcbiAgICAgICAgaWNvbiA9IElDT04uQ0hFQ0s7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBTEVSVC5XQVJOSU5HOlxuICAgICAgICBpY29uID0gSUNPTi5XQVJOSU5HO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gaWNvbjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiAmJiBDU1MuQkcuU1VSRkFDRS5FUlJPUixcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gJiYgQ1NTLkJHLlNVUkZBQ0UuSU5GTyxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLlNVUkZBQ0UuU1VDQ0VTUyxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkcgJiYgQ1NTLkJHLlNVUkZBQ0UuV0FSTklORyxcbiAgICAgIHByb3BzLmlzVG9hc3QgPyBDU1MuU0hBRE9XLkJPVFRPTSA6ICcnLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtaWNvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIHByb3BzLnR5cGUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gICAgICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFLFxuICAgICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SICYmIENTUy5CRy5FUlJPUixcbiAgICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5JTkZPLFxuICAgICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLlNVQ0NFU1MsXG4gICAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORyAmJiBDU1MuQkcuV0FSTklORyxcbiAgICAgICAgXVwiXG4gICAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtaGVhZGluZycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICA8aDIgOmNsYXNzPVwiW0NTUy5GT05ULlNJWkUuU0lYVEVFTiwgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICAgIDwvaDI+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGFsZXJ0XCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtYm9keScsIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIj5cbiAgICAgIDxzbG90IC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWxlcnQge1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAnaWNvbiBoZWFkaW5nIGNsb3NlJ1xuICAgICAgJy4gYm9keSAuJztcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyIGF1dG87XG4gICAgZ3JpZC1jb2x1bW4tZ2FwOiAwLjVyZW07XG4gICAgbWF4LXdpZHRoOiA0MHJlbTtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWljb24ge1xuICAgIGdyaWQtYXJlYTogaWNvbjtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWhlYWRpbmcge1xuICAgIGdyaWQtYXJlYTogaGVhZGluZztcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWNsb3NlIHtcbiAgICBncmlkLWFyZWE6IGNsb3NlO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtYm9keSB7XG4gICAgZ3JpZC1hcmVhOiBib2R5O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IEJBREdFID0ge1xuICBKVVNUX0xJU1RFRDogJ0p1c3QgbGlzdGVkJyxcbiAgTkFUSU9OV0lERTogJ05hdGlvbndpZGUnLFxuICBSRURVQ0VEOiAnUmVkdWNlZCcsXG4gIFVQREFURUQ6ICdVcGRhdGVkJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9QUkVNSVVNID0ge1xuICBQUkVNSVVNOiAnUHJlbWl1bScsXG4gIFBSRU1JVU1fU0VMRUNUOiAnUHJlbWl1bSBTRUxFQ1QnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfNTogJzUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQmFkZ2UgPSAodHlwZW9mIEJBREdFKVtrZXlvZiB0eXBlb2YgQkFER0VdO1xuZXhwb3J0IHR5cGUgQmFkZ2VQcmVtaXVtID0gKHR5cGVvZiBCQURHRV9QUkVNSVVNKVtrZXlvZiB0eXBlb2YgQkFER0VfUFJFTUlVTV07XG5leHBvcnQgdHlwZSBCYWRnZVRydXN0ZWRZZWFycyA9ICh0eXBlb2YgQkFER0VfVFJVU1RFRClba2V5b2YgdHlwZW9mIEJBREdFX1RSVVNURURdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25Nb3VudGVkLCBvblVubW91bnRlZCwgb25VcGRhdGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc1RvdWNoc2NyZWVuPzogYm9vbGVhbjtcbiAgICBvZmZzZXRYPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb2Zmc2V0WDogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGxldCBjb250ZW50V2lkdGggPSByZWYoKTtcbiAgbGV0IGZyYW1lV2lkdGggPSByZWYoKTtcbiAgbGV0IGhhc092ZXJmbG93ID0gcmVmKCk7XG4gIGxldCBsYXN0UG9zaXRpb24gPSByZWYoKTtcblxuICBjb25zdCBjb250ZW50UmVmID0gcmVmKCk7XG4gIGNvbnN0IGZyYW1lUmVmID0gcmVmKCk7XG4gIGNvbnN0IHNob3dCdXR0b25zID0gcmVmKCk7XG4gIGNvbnN0IGN1cnJlbnRTbGlkZSA9IHJlZigwKTtcblxuICBjb25zdCBnYXAgPSAxNjtcblxuICAvKipcbiAgICogTWVhc3VyZSB0aGUgY3VycmVudCBzbGlkZSBiYXNlZCBvbiB0aGUgc2Nyb2xsXG4gICAqIHBvc2l0aW9uIG9mIHRoZSBmcmFtZS4gVGhlIGN1cnJlbnQgc2xpZGUgaXNcbiAgICogdGhlIHNsaWRlIHRoYXQgaXMgY2xvc2VzdCB0byB0aGUgbGVmdCBlZGdlIG9mXG4gICAqIHRoZSBmcmFtZS5cbiAgICovXG4gIGNvbnN0IG1lYXN1cmVDdXJyZW50U2xpZGUgPSAoKSA9PiB7XG4gICAgLy8gZ2V0IGxlZnQgb2Zmc2V0cyBvZiBlYWNoIHNsaWRlXG4gICAgY29uc3Qgc2xpZGVPZmZzZXRzID0gQXJyYXkuZnJvbShjb250ZW50UmVmLnZhbHVlLmNoaWxkcmVuKS5tYXAoKHNsaWRlOiBhbnkpID0+IHNsaWRlLm9mZnNldExlZnQpO1xuXG4gICAgaWYgKHNsaWRlT2Zmc2V0cy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIC8vIGdldCB2YWx1ZSBjbG9zZXN0IHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uXG4gICAgY29uc3QgY2xvc2VzdFNsaWRlT2Zmc2V0ID0gc2xpZGVPZmZzZXRzLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgcmV0dXJuIE1hdGguYWJzKGN1cnIgLSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0KSA8IE1hdGguYWJzKHByZXYgLSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0KSA/IGN1cnIgOiBwcmV2O1xuICAgIH0pO1xuXG4gICAgLy8gc2V0IGN1cnJlbnQgc2xpZGUgdG8gaW5kZXggb2YgY2xvc2VzdCBzbGlkZVxuICAgIGN1cnJlbnRTbGlkZS52YWx1ZSA9IHNsaWRlT2Zmc2V0cy5pbmRleE9mKGNsb3Nlc3RTbGlkZU9mZnNldCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBjb250ZW50V2lkdGgudmFsdWUgPSBjb250ZW50UmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGZyYW1lV2lkdGgudmFsdWUgPSBmcmFtZVJlZi52YWx1ZS5jbGllbnRXaWR0aDtcbiAgICBoYXNPdmVyZmxvdy52YWx1ZSA9IGNvbnRlbnRXaWR0aC52YWx1ZSA+IGZyYW1lV2lkdGgudmFsdWU7XG4gICAgbGFzdFBvc2l0aW9uLnZhbHVlID0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsV2lkdGggLSBmcmFtZVJlZi52YWx1ZS5jbGllbnRXaWR0aDtcbiAgICBzaG93QnV0dG9ucy52YWx1ZSA9IGhhc092ZXJmbG93LnZhbHVlICYmICFwcm9wcy5pc1RvdWNoc2NyZWVuO1xuXG4gICAgbWVhc3VyZUN1cnJlbnRTbGlkZSgpO1xuICB9O1xuXG4gIC8vIFRPRE86IGRlYm91bmNlIHRoaXNcbiAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfTtcblxuICAvKipcbiAgICogU2Nyb2xscyB0byB0aGUgc2xpZGUgYXQgdGhlIGdpdmVuIGluZGV4LCBvclxuICAgKiB0byB0aGUgZmlyc3Qgb3IgbGFzdCBzbGlkZSBpZiB0aGUgZ2l2ZW4gaW5kZXhcbiAgICogaXMgb3V0IG9mIGJvdW5kcy5cbiAgICogQHBhcmFtIHNsaWRlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBzbGlkZSB0byBzY3JvbGwgdG9cbiAgICovXG4gIGNvbnN0IHNjcm9sbFRvU2xpZGUgPSAoc2xpZGVJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgZnJhbWVSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbltzbGlkZUluZGV4XS5vZmZzZXRMZWZ0LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudFdpZHRoID0gY29udGVudFJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBjb25zdCBjb250ZW50UmlnaHRFZGdlID0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCArIGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuXG4gICAgaWYgKGNvbnRlbnRSaWdodEVkZ2UgPiBjb250ZW50V2lkdGgpIHtcbiAgICAgIGZyYW1lUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICBsZWZ0OiBjb250ZW50V2lkdGgsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXNGaXJzdFNsaWRlV2l0aE9mZnNldCA9IHByb3BzLm9mZnNldFggJiYgY3VycmVudFNsaWRlLnZhbHVlID09PSAwO1xuICAgICAgY29uc3QgaXNMYXN0U2xpZGUgPSBjb250ZW50UmlnaHRFZGdlID09PSBjb250ZW50V2lkdGg7XG4gICAgICBjb25zdCBuZXh0U2xpZGUgPSBpc0xhc3RTbGlkZSA/IDAgOiBpc0ZpcnN0U2xpZGVXaXRoT2Zmc2V0ID8gMiA6IGN1cnJlbnRTbGlkZS52YWx1ZSArIDE7XG5cbiAgICAgIHNjcm9sbFRvU2xpZGUobmV4dFNsaWRlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzU2xpZGUgPSAoKSA9PiB7XG4gICAgY29uc3QgZmlyc3RTbGlkZSA9IHByb3BzLm9mZnNldFggPyAxIDogMDtcbiAgICBjb25zdCBpc0ZpcnN0U2xpZGUgPSBjdXJyZW50U2xpZGUudmFsdWUgLSAxID09PSBmaXJzdFNsaWRlO1xuICAgIGNvbnN0IGlzU2Vjb25kU2xpZGUgPSBjdXJyZW50U2xpZGUudmFsdWUgPD0gZmlyc3RTbGlkZTtcbiAgICBjb25zdCBwcmV2aW91c1NsaWRlID0gaXNTZWNvbmRTbGlkZVxuICAgICAgPyBjb250ZW50UmVmLnZhbHVlLmNoaWxkcmVuLmxlbmd0aCAtIDFcbiAgICAgIDogaXNGaXJzdFNsaWRlXG4gICAgICA/IDBcbiAgICAgIDogY3VycmVudFNsaWRlLnZhbHVlIC0gMTtcblxuICAgIHNjcm9sbFRvU2xpZGUocHJldmlvdXNTbGlkZSk7XG4gIH07XG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICB9KTtcblxuICBvblVwZGF0ZWQoKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfSk7XG5cbiAgd2F0Y2goY3VycmVudFNsaWRlLCAoKSA9PiB7XG4gICAgZW1pdCgnY2hhbmdlJywgY3VycmVudFNsaWRlLnZhbHVlKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1jYXJvdXNlbCcsIENTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICByZWY9XCJjYXJvdXNlbFJlZlwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLlNDUk9MTEJBUi5PRkYsIENTUy5TTkFQLk9OLCBDU1MuT1ZFUkZMT1cuWC5TQ1JPTExdXCJcbiAgICAgIHJlZj1cImZyYW1lUmVmXCJcbiAgICAgIEBzY3JvbGw9XCJoYW5kbGVTY3JvbGxcIlxuICAgID5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbcHJvcHMuaXNUb3VjaHNjcmVlbiA/IFtDU1MuT1ZFUkZMT1cuWC5BVVRPXSA6ICcnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLk9ORSwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCJcbiAgICAgICAgcmVmPVwiY29udGVudFJlZlwiXG4gICAgICA+XG4gICAgICAgIDxsaVxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuU05BUF9BTElHTi5TVEFSVF1cIlxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGAke3Byb3BzLm9mZnNldFggLSBnYXB9cHhgIH1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5vZmZzZXRYXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c2xvdCAvPlxuXG4gICAgICAgIDxsaVxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuU05BUF9BTElHTi5TVEFSVF1cIlxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGAke3Byb3BzLm9mZnNldFggLSBnYXB9cHhgIH1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5vZmZzZXRYXCJcbiAgICAgICAgLz5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBdXCJcbiAgICAgIHYtaWY9XCJzaG93QnV0dG9uc1wiXG4gICAgPlxuICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UHJldmlvdXNTbGlkZVwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd05leHRTbGlkZVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbHQ/OiBzdHJpbmc7XG4gICAgY2RuPzogc3RyaW5nO1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICAgIHNyYz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgY2RuOiB1bmRlZmluZWQsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIG9mZnNldDogMCxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdGlkZUltYWdlID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gYCR7cHJvcHMuY2RufS9pbWFnZS1jb21pbmctc29vbi01MTIucG5nYDtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIHRpZGVJbWFnZS52YWx1ZS5zcmMgPSBpbWFnZURlZmF1bHQ7XG4gIH07XG5cbiAgZGVmaW5lRXhwb3NlKHRpZGVJbWFnZS52YWx1ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8aW1nXG4gICAgOmFsdD1cImFsdFwiXG4gICAgOmNsYXNzPVwiWyd0aWRlLWltYWdlJywgQ1NTLk9CSkVDVC5DRU5URVIsIENTUy5PQkpFQ1QuQ09WRVJdXCJcbiAgICA6bG9hZGluZz1cImlzTGF6eSA/ICdsYXp5JyA6ICdlYWdlcidcIlxuICAgIHJlZj1cInRpZGVJbWFnZVwiXG4gICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgIEBlcnJvcj1cInNldEltYWdlRnJvbURlZmF1bHRcIlxuICAvPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIGdldEN1cnJlbnRJbnN0YW5jZSwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGNoZWNrZWQgPSByZWYocHJvcHMuY2hlY2tlZCk7XG5cbiAgY29uc3QgdW5pcXVlSWQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuaW5wdXRJZCA/IHByb3BzLmlucHV0SWQgOiBgdGV4dC1pbnB1dC0ke2dldEN1cnJlbnRJbnN0YW5jZSgpPy51aWQgfHwgJyd9YCkpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmNoZWNrZWQsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gY2hlY2tlZC52YWx1ZSkge1xuICAgICAgICBjaGVja2VkLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCddXCI+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInVuaXF1ZUlkXCJcbiAgICAgIG5hbWU9XCJcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHZhbHVlPVwiXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGNoZWNrZWQgPyBDU1MuQk9SREVSLkNPTE9SLkhJR0ggOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRFwiXG4gICAgICA6Zm9yPVwidW5pcXVlSWRcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICAgIGhlaWdodDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMXJlbTtcbiAgICBoZWlnaHQ6IDFyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmltcG9ydCB0eXBlIHsgUmFuZ2VEYXRhIH0gZnJvbSAnQC90eXBlcy9GYWNldFJhbmdlJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdJbnB1dCB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuaW1wb3J0IHsgcHJpY2VUb051bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlLic7XG5cbmV4cG9ydCBjb25zdCBub0Vycm9yID0ge1xuICBtZXNzYWdlOiAnJyxcbiAgdmFsaWQ6IHRydWUsXG59IGFzIFJlYWRvbmx5PFZhbGlkYXRpb25SZXN1bHQ+O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKHR5cGVvZiBlcnJvckZyb21Qcm9wcyA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUHJvcHMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9yRnJvbVByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgZXJyb3JGcm9tUmVmID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21SZWYubGVuZ3RoID4gMCA/IGVycm9yRnJvbVJlZiA6IGVycm9yTWVzc2FnZURlZmF1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRIYXNFcnJvciA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT5cbiAgZXJyb3JGcm9tUHJvcHMgIT09IGZhbHNlIHx8IGVycm9yRnJvbVJlZiAhPT0gZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCB0b29TaG9ydCA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IHRvb0xvbmcgPSBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhdG9vU2hvcnQgJiYgIXRvb0xvbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWF4UmFuZ2VJc1ZhbGlkID0gKHsgbWluIH06IFBpY2s8UmFuZ2VEYXRhLCAnbWluJz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNYXg6IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01heCA9ICFpc05hTihuZXdNYXgpID8gbmV3TWF4IDogbnVsbDtcbiAgICBpZiAobWluICYmIG5ld01heCkge1xuICAgICAgaWYgKG5ld01heCA+PSBtaW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWluUmFuZ2VJc1ZhbGlkID0gKHsgbWF4IH06IFBpY2s8UmFuZ2VEYXRhLCAnbWF4Jz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNaW46IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01pbiA9ICFpc05hTihuZXdNaW4pID8gbmV3TWluIDogbnVsbDtcbiAgICBpZiAobWF4ICYmIG5ld01pbikge1xuICAgICAgaWYgKG5ld01pbiA8PSBtYXgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgbGVzcyB0aGFuIG1heGAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlRmllbGRWYWxpZGF0aW9uID0gKHtcbiAgZXJyb3IsXG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yOiBSZWY8VmFsaWRhdGlvbkVycm9yPjtcbiAgZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvcjtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU6IFJlZjxzdHJpbmc+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlLnZhbHVlLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGh2YWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGh2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0Zyb21SZWZzKGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBSZWY8U3RyaW5nSW5wdXQgfCBudWxsPiB9KSB7XG4gIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkc1trZXldLnZhbHVlPy5yZXF1aXJlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XS52YWx1ZT8udmFsdWU7XG4gICAgICB2YWxpZCA9IHZhbGlkICYmICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpZWxkc1trZXldLnZhbHVlPy5lcnJvcjtcbiAgICB2YWxpZCA9IHZhbGlkICYmICFlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGdldEN1cnJlbnRJbnN0YW5jZSwgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0RmllbGQgfSBmcm9tICdAL3R5cGVzL0ZpZWxkJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBnZXRGaWVsZEhhc0Vycm9yLCBnZXRFcnJvck1lc3NhZ2UgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCByZXF1aXJlZCA9IHJlZihwcm9wcy5yZXF1aXJlZCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycpO1xuXG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlNJWkUuVFdFTFZFXSA6IENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6Zm9yPVwidW5pcXVlSWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsIENTUy5QQURESU5HLlguT05FLCBDU1MuV0lEVEguRlVMTCwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJ1bmlxdWVJZFwiXG4gICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFQsIENTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLk1BUkdJTi5MRUZULk9ORV1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuU0laRS5UV0VMVkUsIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRURdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgZ2V0Q3VycmVudEluc3RhbmNlLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaGFzQ2xlYXI/OiBib29sZWFuO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRhdGFUcmFjazogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2Zvcm1WYWx1ZTogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRFWFRfSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3QgdHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuICBjb25zdCB1bmlxdWVJZCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5pbnB1dElkID8gcHJvcHMuaW5wdXRJZCA6IGB0ZXh0LWlucHV0LSR7Z2V0Q3VycmVudEluc3RhbmNlKCk/LnVpZCB8fCAnJ31gKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZS5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG5cbiAgICAgIHZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlVmFsdWUgPSAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHVwZGF0ZVZhbHVlLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dC1wcmVmaXgnLCAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULCBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5wcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICAgIEBjbGljay5wcmV2ZW50PVwiaW5wdXQ/LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuU0laRS5UV0VMVkVdIDogQ1NTLkZPTlQuU0laRS5TSVhURUVOLFxuICAgICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVELFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIDpmb3I9XCJ1bmlxdWVJZFwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICAgIDpkYXRhLXRyYWNrPVwicHJvcHMuZGF0YVRyYWNrXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgICAgICAgIDptYXhsZW5ndGg9XCJwcm9wcy5tYXhsZW5ndGhcIlxuICAgICAgICAgICAgOm1pbmxlbmd0aD1cInByb3BzLm1pbmxlbmd0aFwiXG4gICAgICAgICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicHJvcHMucmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJ0eXBlXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUlucHV0XCJcbiAgICAgICAgICAgIDppZD1cInVuaXF1ZUlkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCcsICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCddXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlkuSEFMRiwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB2LWlmPVwiaGFzQ2xlYXIgJiYgcHJvcHMudHlwZSAhPT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgIC8+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuUEFERElORy5GVUxMLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB2LWlmPVwicHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTUFSR0lOLkxFRlQuT05FXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5TSVpFLlRXRUxWRSwgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRF1cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itb24tc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIGdldEN1cnJlbnRJbnN0YW5jZSwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCB1bmlxdWVJZCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5pbnB1dElkID8gcHJvcHMuaW5wdXRJZCA6IGB0ZXh0LWlucHV0LSR7Z2V0Q3VycmVudEluc3RhbmNlKCk/LnVpZCB8fCAnJ31gKSk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGxhYmVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlNJWkUuVFdFTFZFXSA6IENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsXG4gICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICBdXCJcbiAgICAgICAgOmZvcj1cInVuaXF1ZUlkXCJcbiAgICAgICAgcmVmPVwibGFiZWxcIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgIDptYXhsZW5ndGg9XCJwcm9wcy5tYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwicHJvcHMubWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJwcm9wcy5yZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicHJvcHMucm93c1wiXG4gICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cInVuaXF1ZUlkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTUFSR0lOLkxFRlQuT05FXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuU0laRS5UV0VMVkUsIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRURdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG48L3N0eWxlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGljb25UcmFpbGluZz86IEljb247XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGhhc0ljb24gPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5pY29uTGVhZGluZyB8fCBwcm9wcy5pY29uVHJhaWxpbmcpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/ICd0aWRlLWJ1dHRvbi1hcy1saW5rJyA6ICd0aWRlLWxpbmsnLFxuICAgICAgaGFzSWNvblxuICAgICAgICA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVxuICAgICAgICA6IFtDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCwgQ1NTLlVOREVSTElORS5PTl0sXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gRUxFTUVOVC5MSU5LIDogRUxFTUVOVC5CVVRUT05cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCwgQ1NTLlVOREVSTElORS5PTl1cIlxuICAgICAgdi1pZj1cImhhc0ljb25cIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9kaXY+XG5cbiAgICA8dGVtcGxhdGUgdi1lbHNlPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2Nsb3NlJ10pO1xuXG4gIGNvbnN0IGlzT3BlbiA9IHJlZihwcm9wcy5pc09wZW4pO1xuICBjb25zdCBzYXZlZFNjcm9sbFBvc2l0aW9uID0gcmVmPG51bWJlciB8IG51bGw+KG51bGwpOyAvLyBUT0RPOiByZXBsYWNlIGJvZHkgc2Nyb2xsIGxvY2sgd2l0aCBnbG9iYWwgc3RydWN0dXJlP1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuXG4gICAgdXBkYXRlTW9kYWxEaXNwbGF5KCk7XG4gICAgZW1pdCgnY2xvc2UnLCBldmVudCk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlTW9kYWxEaXNwbGF5ID0gKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb24udmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgIHNhdmVkU2Nyb2xsUG9zaXRpb24udmFsdWUgJiYgd2luZG93LnNjcm9sbFRvKDAsIHNhdmVkU2Nyb2xsUG9zaXRpb24udmFsdWUpO1xuXG4gICAgICBhZGRPcGVuTGlzdGVuZXJzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcblxuICAgICAgcmVtb3ZlT3Blbkxpc3RlbmVycygpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaGFuZGxlQ2xvc2UoZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRPcGVuTGlzdGVuZXJzID0gKCkgPT4ge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bik7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlT3Blbkxpc3RlbmVycyA9ICgpID0+IHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgdXBkYXRlTW9kYWxEaXNwbGF5KCk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmlzT3BlbixcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlzT3Blbi52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgdXBkYXRlTW9kYWxEaXNwbGF5KCk7XG4gICAgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IHRvPVwiYm9keVwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtbW9kYWwtd3JhcHBlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIHByb3BzLmlzT3BlbiA/ICdhY3RpdmUnIDogQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlkuSElEREVOLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtbW9kYWwtYmcnLCBDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTExdXCJcbiAgICAgICAgOnN0eWxlPVwieyAnLS10aWRlLW1vZGFsLXdpZHRoJzogcHJvcHMud2lkdGggfVwiXG4gICAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQ2xvc2VcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwnLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLlNIQURPVy5CT1RUT00sXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtbW9kYWwtaGVhZGVyJyxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLlRXTyxcbiAgICAgICAgICAgIENTUy5CT1JERVIuQk9UVE9NLk9ORSxcbiAgICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT04sIENTUy5GT05ULlNJWkUuVFdFTlRZLCBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRF1cIlxuICAgICAgICAgICAgdi1pZj1cInRpdGxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULlRXT11cIlxuICAgICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xvc2VcIlxuICAgICAgICAgICAgdGl0bGU9XCJDbG9zZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5DTE9TRVwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLW1vZGFsLWNvbnRlbnQnLCBDU1MuUEFERElORy5GVUxMLlRXTywgQ1NTLk9WRVJGTE9XLlkuQVVUT11cIj5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIiRzbG90cy5mb290ZXJcIj5cbiAgICAgICAgICA8Zm9vdGVyXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgICAgICAgICBDU1MuUE9TSVRJT04uU1RJQ0tZLFxuICAgICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgICAgQ1NTLkFYSVMxLkVORCxcbiAgICAgICAgICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICAgICAgICAgIENTUy5QQURESU5HLlguVFdPLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCIgLz5cbiAgICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtbW9kYWwge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLW1vZGFsLXdpZHRoKTtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDJyZW0pO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDJyZW0pO1xuICAgIGJveC1zaGFkb3c6IDBweCAxMHB4IDI1cHggMHB4IHJnYmEoMTgsIDQzLCA1OCwgMC4yKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwdmgpO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xuICB9XG5cbiAgLnRpZGUtbW9kYWwtYmcge1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZHJvcC1maWx0ZXIsIGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAuYWN0aXZlIC50aWRlLW1vZGFsIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cblxuICAuYWN0aXZlIC50aWRlLW1vZGFsLWJnIHtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlQnV0dG9uUGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvblBhZ2luYXRpb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHBhZ2VDdXJyZW50PzogbnVtYmVyO1xuICAgIHBhZ2VUb3RhbD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHBhZ2VDdXJyZW50OiAxLFxuICAgIHBhZ2VUb3RhbDogMSxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IHBhZ2VDdXJyZW50ID0gcmVmKHByb3BzLnBhZ2VDdXJyZW50KTtcblxuICBjb25zdCBwYWdpbmF0aW9uQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IG5ldyBBcnJheShwcm9wcy5wYWdlVG90YWwpLmZpbGwoJycpLm1hcCgoZW1wdHksIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBwYWdlQ3VycmVudC52YWx1ZSA9IGluZGV4O1xuXG4gICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLXBhZ2luYXRpb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiXG4gID5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSAxXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgcGFnZUN1cnJlbnQgLSAxKVwiXG4gICAgLz5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6a2V5PVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgIHYtZm9yPVwicGFnaW5hdGlvbkJ1dHRvbiBpbiBwYWdpbmF0aW9uQnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uUGFnaW5hdGlvblxuICAgICAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSBwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6bGFiZWw9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgcGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgcGFnZUN1cnJlbnQgKyAxKVwiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhY3RpdmVUYWJJbml0aWFsPzogbnVtYmVyO1xuICAgIHRhYnM6IFRhYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWN0aXZlVGFiSW5pdGlhbDogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGFjdGl2ZVRhYiA9IHJlZihwcm9wcy5hY3RpdmVUYWJJbml0aWFsKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBhY3RpdmVUYWIudmFsdWUgPSBpbmRleDtcblxuICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtdGFicycsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLXRhYnMtdGFiJyxcbiAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYlxuICAgICAgICAgID8gW0NTUy5CRy5TVVJGQUNFLkRFRkFVTFQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLlNIQURPVy5CT1RUT01dXG4gICAgICAgICAgOiBbJ2luYWN0aXZlJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICAgICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICAgIF1cIlxuICAgICAgOmRhdGEtdHJhY2s9XCJ0YWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgIEBjbGljaz1cIihldmVudDogRXZlbnQpID0+IGhhbmRsZUNsaWNrKGV2ZW50LCBpbmRleClcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gcHJvcHMudGFic1wiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULldFSUdIVC5TSVhfSFVORFJFRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVEXVwiXG4gICAgICAgIHYtaWY9XCJ0YWIuY291bnQgJiYgdGFiLmNvdW50ID4gMFwiXG4gICAgICA+XG4gICAgICAgICh7eyB0YWIuY291bnQgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtdGFicyB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICB9XG5cbiAgLnRpZGUtdGFicy10YWIge1xuICAgIGZsZXg6IDE7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLmluYWN0aXZlOm5vdCg6aG92ZXIpIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAuaW5hY3RpdmU6aG92ZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcbiAgICBkaXNhYmxlZDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaXNBY3RpdmU6IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgaXNBY3RpdmUgPSByZWYocHJvcHMuaXNBY3RpdmUpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmICghcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIGlzQWN0aXZlLnZhbHVlID0gIWlzQWN0aXZlLnZhbHVlO1xuXG4gICAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaXNBY3RpdmUudmFsdWUpO1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS10b2dnbGUnLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnYWN0aXZlJyA6ICcnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJycgOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU0VDT05EQVJZIDogQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJUb2dnbGVcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS10b2dnbGUtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBwcm9wcy5pc0FjdGl2ZSA/IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQgOiBDU1MuQkcuU0VDT05EQVJZLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXRvZ2dsZSB7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXRvZ2dsZTpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zMjtcbiAgfVxuXG4gIC50aWRlLXRvZ2dsZS5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtdG9nZ2xlLmFjdGl2ZSAudGlkZS10b2dnbGUtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiAzNnB4O1xuICB9XG5cbiAgLnRpZGUtdG9nZ2xlLWluZGljYXRvciB7XG4gICAgbGVmdDogNHB4O1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFJFQUxNID0ge1xuICBBRVJPOiAnYWVybycsXG4gIEFUVjogJ2F0dicsXG4gIEJPQVRNQVJUOiAnYm9hdG1hcnQnLFxuICBDWUNMRTogJ2N5Y2xlJyxcbiAgRVFVSVA6ICdlcXVpcCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG0gPSAodHlwZW9mIFJFQUxNKVtrZXlvZiB0eXBlb2YgUkVBTE1dO1xuIiwiaW1wb3J0IFRpZGVBY2NvcmRpb25JdGVtIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQWNjb3JkaW9uSXRlbS52dWUnO1xuaW1wb3J0IFRpZGVBbGVydCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUFsZXJ0LnZ1ZSc7XG5pbXBvcnQgVGlkZUJhY2tncm91bmRJbWFnZSBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJhY2tncm91bmRJbWFnZS52dWUnO1xuaW1wb3J0IFRpZGVCYWRnZSBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJhZGdlLnZ1ZSc7XG5pbXBvcnQgVGlkZUJhZGdlUHJlbWl1bSBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJhZGdlUHJlbWl1bS52dWUnO1xuaW1wb3J0IFRpZGVCYWRnZVRydXN0ZWRQYXJ0bmVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQmFkZ2VUcnVzdGVkUGFydG5lci52dWUnO1xuaW1wb3J0IFRpZGVCcmVhZENydW1icyBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJyZWFkQ3J1bWJzLnZ1ZSc7XG5pbXBvcnQgVGlkZUJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbi52dWUnO1xuaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuaW1wb3J0IFRpZGVCdXR0b25QYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUnO1xuaW1wb3J0IFRpZGVDYXJkIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQ2FyZC52dWUnO1xuaW1wb3J0IFRpZGVDYXJvdXNlbCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSc7XG5pbXBvcnQgVGlkZUNoaXBBY3Rpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVDaGlwQWN0aW9uLnZ1ZSc7XG5pbXBvcnQgVGlkZUNoaXBGaWx0ZXIgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVDaGlwRmlsdGVyLnZ1ZSc7XG5pbXBvcnQgVGlkZUNoaXBJbnB1dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUNoaXBJbnB1dC52dWUnO1xuaW1wb3J0IFRpZGVDb2x1bW5zIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQ29sdW1ucy52dWUnO1xuaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuaW1wb3J0IFRpZGVJbWFnZSBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSc7XG5pbXBvcnQgVGlkZUluZGljYXRvciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUluZGljYXRvci52dWUnO1xuaW1wb3J0IFRpZGVJbnB1dFJhZGlvIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUnO1xuaW1wb3J0IFRpZGVJbnB1dFNlbGVjdCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSc7XG5pbXBvcnQgVGlkZUlucHV0VGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dC52dWUnO1xuaW1wb3J0IFRpZGVJbnB1dFRleHRhcmVhIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0YXJlYS52dWUnO1xuaW1wb3J0IFRpZGVMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlTGluay52dWUnO1xuaW1wb3J0IFRpZGVNb2RhbCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSc7XG5pbXBvcnQgVGlkZVBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSc7XG5pbXBvcnQgVGlkZVNlb0xpbmtzIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlU2VvTGlua3MudnVlJztcbmltcG9ydCBUaWRlVGFicyBmcm9tICdAL2NvbXBvbmVudHMvVGlkZVRhYnMudnVlJztcbmltcG9ydCBUaWRlVG9nZ2xlIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlVG9nZ2xlLnZ1ZSc7XG5cbmltcG9ydCB0eXBlIHsgQWxlcnQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbmltcG9ydCB0eXBlIHsgQmFkZ2UsIEJhZGdlUHJlbWl1bSwgQmFkZ2VUcnVzdGVkWWVhcnMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbmltcG9ydCB0eXBlIHsgQnJlYWRDcnVtYiB9IGZyb20gJ0AvdHlwZXMvQnJlYWRDcnVtYic7XG5pbXBvcnQgdHlwZSB7IEJyZWFrcG9pbnQsIENzc1V0aWxpdHkgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5pbXBvcnQgdHlwZSB7IERldGFpbCB9IGZyb20gJ0AvdHlwZXMvRGV0YWlsJztcbmltcG9ydCB0eXBlIHsgRWxlbWVudCwgRWxlbWVudFRleHRBc0ljb24gfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbmltcG9ydCB0eXBlIHsgTGluayB9IGZyb20gJ0AvdHlwZXMvTGluayc7XG5pbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG5pbXBvcnQgdHlwZSB7IFJlYWxtIH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5pbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5pbXBvcnQgdHlwZSB7IFRhcmdldCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuaW1wb3J0IHsgQUxFUlQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbmltcG9ydCB7IEJBREdFLCBCQURHRV9QUkVNSVVNLCBCQURHRV9UUlVTVEVEIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG5pbXBvcnQgeyBCUkVBS1BPSU5ULCBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5pbXBvcnQgeyBFTEVNRU5ULCBFTEVNRU5UX1RFWFRfQVNfSUNPTiB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG5pbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbmltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG5pbXBvcnQgeyBSRUFMTSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5pbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbmltcG9ydCAnQC9hc3NldHMvY3NzL21haW4uY3NzJztcblxuZXhwb3J0IHR5cGUge1xuICBBbGVydCxcbiAgQmFkZ2UsXG4gIEJhZGdlUHJlbWl1bSxcbiAgQmFkZ2VUcnVzdGVkWWVhcnMsXG4gIEJyZWFkQ3J1bWIsXG4gIEJyZWFrcG9pbnQsXG4gIENzc1V0aWxpdHksXG4gIERldGFpbCxcbiAgRWxlbWVudCxcbiAgRWxlbWVudFRleHRBc0ljb24sXG4gIEljb24sXG4gIExpbmssXG4gIFByaW9yaXR5LFxuICBSZWFsbSxcbiAgU2l6ZSxcbiAgVGFiLFxuICBUYXJnZXQsXG59O1xuXG5leHBvcnQge1xuICBBTEVSVCxcbiAgQkFER0UsXG4gIEJBREdFX1BSRU1JVU0sXG4gIEJBREdFX1RSVVNURUQsXG4gIEJSRUFLUE9JTlQsXG4gIENTUyxcbiAgRUxFTUVOVCxcbiAgRUxFTUVOVF9URVhUX0FTX0lDT04sXG4gIElDT04sXG4gIFBSSU9SSVRZLFxuICBSRUFMTSxcbiAgU0laRSxcbiAgVEFSR0VULFxuICBUaWRlQWNjb3JkaW9uSXRlbSxcbiAgVGlkZUFsZXJ0LFxuICBUaWRlQmFja2dyb3VuZEltYWdlLFxuICBUaWRlQmFkZ2UsXG4gIFRpZGVCYWRnZVByZW1pdW0sXG4gIFRpZGVCYWRnZVRydXN0ZWRQYXJ0bmVyLFxuICBUaWRlQnJlYWRDcnVtYnMsXG4gIFRpZGVCdXR0b24sXG4gIFRpZGVCdXR0b25JY29uLFxuICBUaWRlQnV0dG9uUGFnaW5hdGlvbixcbiAgVGlkZUNhcmQsXG4gIFRpZGVDYXJvdXNlbCxcbiAgVGlkZUNoaXBBY3Rpb24sXG4gIFRpZGVDaGlwRmlsdGVyLFxuICBUaWRlQ2hpcElucHV0LFxuICBUaWRlQ29sdW1ucyxcbiAgVGlkZURpdmlkZXIsXG4gIFRpZGVJY29uLFxuICBUaWRlSW1hZ2UsXG4gIFRpZGVJbmRpY2F0b3IsXG4gIFRpZGVJbnB1dFJhZGlvLFxuICBUaWRlSW5wdXRTZWxlY3QsXG4gIFRpZGVJbnB1dFRleHQsXG4gIFRpZGVJbnB1dFRleHRhcmVhLFxuICBUaWRlTGluayxcbiAgVGlkZU1vZGFsLFxuICBUaWRlUGFnaW5hdGlvbixcbiAgVGlkZVNlb0xpbmtzLFxuICBUaWRlVGFicyxcbiAgVGlkZVRvZ2dsZSxcbn07XG5cbmV4cG9ydCBjb25zdCBGTkFNRSA9IHtcbiAgRElDSzogJ0RpY2snLFxuICBIQVJSWTogJ0hhcnJ5JyxcbiAgVE9NOiAnVG9tJyxcbn0gYXMgY29uc3Q7XG4iXSwibmFtZXMiOlsiQlJFQUtQT0lOVCIsIkNTUyIsInV0aWxpdGllcyIsImJyZWFrcG9pbnQiLCJ1dGlsaXR5IiwiT1JJRU5UQVRJT04iLCJTSVpFIiwiZm9ybWF0UGFzY2FsQ2FzZSIsImlucHV0Iiwid29yZCIsImlubmVyU1ZHIiwicmVmIiwid2F0Y2giLCJwcm9wcyIsImlkIiwibmFtZSIsImNvbXBvbmVudCIsImRlZmluZUFzeW5jQ29tcG9uZW50IiwiX192YXJpYWJsZUR5bmFtaWNJbXBvcnRSdW50aW1lSGVscGVyIiwibWFya1JhdyIsIklDT04iLCJpc0V4cGFuZGVkIiwiYWNjb3JkaW9uQm9keSIsInRvZ2dsZUlzRXhwYW5kZWQiLCJlbGVtZW50Iiwib25Nb3VudGVkIiwiRUxFTUVOVCIsIkVMRU1FTlRfVEVYVF9BU19JQ09OIiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJBTEVSVCIsImljb24iLCJjb21wdXRlZCIsIkJBREdFIiwiQkFER0VfUFJFTUlVTSIsIkJBREdFX1RSVVNURUQiLCJnYXAiLCJjb250ZW50V2lkdGgiLCJmcmFtZVdpZHRoIiwiaGFzT3ZlcmZsb3ciLCJsYXN0UG9zaXRpb24iLCJjb250ZW50UmVmIiwiZnJhbWVSZWYiLCJzaG93QnV0dG9ucyIsImN1cnJlbnRTbGlkZSIsIm1lYXN1cmVDdXJyZW50U2xpZGUiLCJzbGlkZU9mZnNldHMiLCJzbGlkZSIsImNsb3Nlc3RTbGlkZU9mZnNldCIsInByZXYiLCJjdXJyIiwibWVhc3VyZURvbSIsImhhbmRsZVNjcm9sbCIsInNjcm9sbFRvU2xpZGUiLCJzbGlkZUluZGV4Iiwic2hvd05leHRTbGlkZSIsImNvbnRlbnRSaWdodEVkZ2UiLCJpc0ZpcnN0U2xpZGVXaXRoT2Zmc2V0IiwibmV4dFNsaWRlIiwic2hvd1ByZXZpb3VzU2xpZGUiLCJmaXJzdFNsaWRlIiwiaXNGaXJzdFNsaWRlIiwicHJldmlvdXNTbGlkZSIsIm9uVW5tb3VudGVkIiwib25VcGRhdGVkIiwiZW1pdCIsInRpZGVJbWFnZSIsImltYWdlRGVmYXVsdCIsInNldEltYWdlRnJvbURlZmF1bHQiLCJfX2V4cG9zZSIsImNoZWNrZWQiLCJ1bmlxdWVJZCIsIl9hIiwiZ2V0Q3VycmVudEluc3RhbmNlIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsImVycm9yTWVzc2FnZURlZmF1bHQiLCJnZXRFcnJvck1lc3NhZ2UiLCJlcnJvckZyb21Qcm9wcyIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJ2YWx1ZSIsInRvb1Nob3J0IiwidG9vTG9uZyIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwidmFsaWRhdG9ycyIsInZhbGlkYXRpb24iLCJ2YWxpZGF0ZVByb3BlcnR5IiwibGVuZ3RodmFsaWRhdGlvbiIsInZhbGlkYXRlTGVuZ3RoIiwicmVzcG9uc2UiLCJ2YWxpZGF0b3IiLCJoYXNGb2N1cyIsInJlcXVpcmVkIiwiZXJyb3JNZXNzYWdlIiwiZm9ybWF0dGVkTGFiZWwiLCJoYXNFcnJvciIsImhhc01pbmlsYWJlbCIsImlzRW1wdHkiLCJleHBhbmRPcHRpb25zIiwiZXZlbnQiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0IiwiVEVYVF9JTlBVVF9UWVBFIiwic2hvd1Bhc3N3b3JkIiwiaGFzQ2xlYXIiLCJ0eXBlIiwiaGFuZGxlQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJkaWdpdHMiLCJ1cGRhdGVWYWx1ZSIsImhhc0ljb24iLCJpc09wZW4iLCJzYXZlZFNjcm9sbFBvc2l0aW9uIiwiaGFuZGxlQ2xvc2UiLCJ1cGRhdGVNb2RhbERpc3BsYXkiLCJhZGRPcGVuTGlzdGVuZXJzIiwicmVtb3ZlT3Blbkxpc3RlbmVycyIsImhhbmRsZUtleURvd24iLCJwYWdlQ3VycmVudCIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJpbmRleCIsImhhbmRsZUNsaWNrIiwiYWN0aXZlVGFiIiwiaXNBY3RpdmUiLCJSRUFMTSIsIkZOQU1FIl0sIm1hcHBpbmdzIjoiO0FBRU8sTUFBTUEsS0FBYTtBQUFBLEVBQ3hCLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFDTixHQUlhQyxJQUFNO0FBQUEsRUFDakIsZ0JBQWdCLENBQUNDLEdBQXFCQyxNQUM3QkQsRUFBVSxJQUFJLENBQUNFLE1BQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUU7QUFBQSxFQUU5RCxPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsTUFDUixNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFDVDtBQUFBLElBQ0EsR0FBRztBQUFBLE1BQ0QsUUFBUTtBQUFBLElBQ1Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFD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VCxTQUFTO0FBQUEsRUFDWDtBQUFBLEVBQ0EsY0FBYztBQUFBLElBQ1osS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxLQUFLO0FBQUEsTUFDSCxTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLElBQ1AsWUFBWTtBQUFBLEVBQ2Q7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNQLEtBQUs7QUFBQSxJQUNMLElBQUk7QUFBQSxFQUNOO0FBQUEsRUFDQSxVQUFVO0FBQUEsSUFDUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsSUFDVjtBQUFBLElBQ0EsSUFBSTtBQUFBLE1BQ0YsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLElBQ1Y7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUNWO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsUUFBUTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsR0FB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QUFJLE9BQU8sSUFBSSxNQUNmQSxFQUFJLE9BQU8sSUFBSSxTQUNmQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxNQUNmQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxTQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxNQUFNLFNBQ2pCQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxNQUFNLE1BQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxPQUFPLFNBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssU0FDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssTUFDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxPQUFPLE1BQ2xCQSxFQUFJLE9BQU8sT0FBTyxTQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxNQUNqQkEsRUFBSSxRQUFRLEtBQUssU0FDakJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxNQUNqQkEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsTUFDZEEsRUFBSSxRQUFRLEVBQUUsU0FDZEEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsTUFDZEEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLE1BQ2hCQSxFQUFJLFFBQVEsSUFBSSxTQUNoQkEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLE1BQ2hCQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsRUFBRSxTQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sTUFDbEJBLEVBQUksUUFBUSxNQUFNLFNBQ2xCQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sTUFDbEJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxNQUNuQkEsRUFBSSxRQUFRLE9BQU8sU0FDbkJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxNQUNuQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLFFBQVEsS0FBSyxTQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLE1BQU0sVUFDVkEsRUFBSSxNQUFNLE1BQ1ZBLEVBQUksTUFBTSxNQUNWQSxFQUFJLE9BQU8sTUFDWEEsRUFBSSxPQUFPLE1BQ1hBLEVBQUksTUFBTSxFQUFFLFFBQ1pBLEVBQUksWUFDSkEsRUFBSSxPQUFPLGFBQ1hBLEVBQUksT0FBTyxTQUNYQSxFQUFJLEtB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QUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixVQUFVO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixpQkFBaUI7QUFBQSxFQUNqQixhQUFhO0FBQUEsRUFDYixlQUFlO0FBQUEsRUFDZixzQkFBc0I7QUFBQSxFQUN0QixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixZQUFZO0FBQUEsRUFDWixNQUFNO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixhQUFhO0FBQUEsRUFDYixXQUFXO0FBQUEsRUFDWCxXQUFXO0FBQUEsRUFDWCxRQUFRO0FBQUEsRUFDUixXQUFXO0FBQUEsRUFDWCxnQkFBZ0I7QUFBQSxFQUNoQixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixZQUFZO0FBQUEsRUFDWixlQUFlO0FBQUEsRUFDZixhQUFhO0FBQUEsRUFDYixTQUFTO0FBQUEsRUFDVCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixjQUFjO0FBQUEsRUFDZCxXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixRQUFRO0FBQUEsRUFDUixpQkFBaUI7QUFBQSxFQUNqQixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxlQUFlO0FBQUEsRUFDZixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQUEsRUFDTixXQUFXO0FBQUEsRUFDWCxrQkFBa0I7QUFBQSxFQUNsQixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixZQUFZO0FBQUEsRUFDWixZQUFZO0FBQUEsRUFDWixZQUFZO0FBQUEsRUFDWixXQUFXO0FBQUEsRUFDWCxTQUFTO0FBQUEsRUFDVCxRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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