@ukhomeoffice/cop-react-form-renderer 7.3.2-alpha.5 → 8.0.0-alpha

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 (761) hide show
  1. package/README.md +106 -32
  2. package/dist/components/CheckYourAnswers/Answer.d.ts +10 -0
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.d.ts +35 -0
  4. package/dist/components/CheckYourAnswers/index.d.ts +2 -0
  5. package/dist/components/CollectionPage/CollectionPage.d.ts +24 -0
  6. package/dist/components/CollectionPage/index.d.ts +1 -0
  7. package/dist/components/CollectionSummary/BannerStrip.d.ts +9 -0
  8. package/dist/components/CollectionSummary/CollectionSummary.d.ts +53 -0
  9. package/dist/components/CollectionSummary/Confirmation.d.ts +15 -0
  10. package/dist/components/CollectionSummary/RenderListView.d.ts +42 -0
  11. package/dist/components/CollectionSummary/SummaryCard.d.ts +62 -0
  12. package/dist/components/CollectionSummary/SummaryCardButtons.d.ts +21 -0
  13. package/dist/components/CollectionSummary/SummaryCardDetails.d.ts +14 -0
  14. package/dist/components/CollectionSummary/SummaryCardValidationContext.d.ts +9 -0
  15. package/dist/components/CollectionSummary/index.d.ts +2 -0
  16. package/dist/components/FormComponent/Collection.d.ts +39 -0
  17. package/dist/components/FormComponent/Container.d.ts +26 -0
  18. package/dist/components/FormComponent/FormComponent.d.ts +39 -0
  19. package/dist/components/FormComponent/helpers/addLabel.d.ts +7 -0
  20. package/dist/components/FormComponent/helpers/getComponentDisabled.d.ts +2 -0
  21. package/dist/components/FormComponent/helpers/getComponentError.d.ts +4 -0
  22. package/dist/components/FormComponent/helpers/getComponentFieldSet.d.ts +2 -0
  23. package/dist/components/FormComponent/helpers/index.d.ts +5 -0
  24. package/dist/components/FormComponent/index.d.ts +2 -0
  25. package/dist/components/FormPage/FormPage.d.ts +36 -0
  26. package/dist/components/FormPage/index.d.ts +2 -0
  27. package/dist/components/FormRenderer/FormRenderer.d.ts +39 -0
  28. package/dist/components/FormRenderer/handlers/cyaAction.d.ts +9 -0
  29. package/dist/components/FormRenderer/handlers/getPageId.d.ts +8 -0
  30. package/dist/components/FormRenderer/handlers/index.d.ts +6 -0
  31. package/dist/components/FormRenderer/handlers/navigate.d.ts +10 -0
  32. package/dist/components/FormRenderer/handlers/submissionError.d.ts +7 -0
  33. package/dist/components/FormRenderer/helpers/canActionProceed.d.ts +12 -0
  34. package/dist/components/FormRenderer/helpers/canCYASubmit.d.ts +10 -0
  35. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.d.ts +2 -0
  36. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.d.ts +51 -0
  37. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutesUtils.d.ts +179 -0
  38. package/dist/components/FormRenderer/helpers/getCYA.d.ts +20 -0
  39. package/dist/components/FormRenderer/helpers/getFormState.d.ts +25 -0
  40. package/dist/components/FormRenderer/helpers/getNextPageId.d.ts +2 -0
  41. package/dist/components/FormRenderer/helpers/getPage.d.ts +9 -0
  42. package/dist/components/FormRenderer/helpers/getRelevantPages.d.ts +2 -0
  43. package/dist/components/FormRenderer/helpers/getSubmissionStatus.d.ts +2 -0
  44. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.d.ts +10 -0
  45. package/dist/components/FormRenderer/helpers/index.d.ts +29 -0
  46. package/dist/components/FormRenderer/index.d.ts +2 -0
  47. package/dist/components/FormRenderer/onCYAAction.d.ts +6 -0
  48. package/dist/components/FormRenderer/onPageAction.d.ts +2 -0
  49. package/dist/components/FormRenderer/onTaskAction.d.ts +2 -0
  50. package/dist/components/PageActions/ActionButton.d.ts +7 -0
  51. package/dist/components/PageActions/PageActions.d.ts +7 -0
  52. package/dist/components/PageActions/index.d.ts +2 -0
  53. package/dist/components/SummaryList/GroupAction.d.ts +12 -0
  54. package/dist/components/SummaryList/RowAction.d.ts +12 -0
  55. package/dist/components/SummaryList/SummaryList.d.ts +28 -0
  56. package/dist/components/SummaryList/SummaryList.stories.d.ts +10 -0
  57. package/dist/components/SummaryList/SummaryListHeadingRow.d.ts +7 -0
  58. package/dist/components/SummaryList/SummaryListHeadingRowWithAction.d.ts +16 -0
  59. package/dist/components/SummaryList/SummaryListRow.d.ts +19 -0
  60. package/dist/components/SummaryList/SummaryListTitleRow.d.ts +7 -0
  61. package/dist/components/SummaryList/helpers/getGroupActionAttributes.d.ts +17 -0
  62. package/dist/components/SummaryList/helpers/getRowActionAttributes.d.ts +17 -0
  63. package/dist/components/SummaryList/helpers/index.d.ts +2 -0
  64. package/dist/components/SummaryList/index.d.ts +2 -0
  65. package/dist/components/TaskList/Task.d.ts +12 -0
  66. package/dist/components/TaskList/TaskList.d.ts +40 -0
  67. package/dist/components/TaskList/TaskState.d.ts +6 -0
  68. package/dist/components/TaskList/index.d.ts +2 -0
  69. package/dist/components/index.d.ts +8 -0
  70. package/dist/context/HooksContext/HooksContext.d.ts +23 -0
  71. package/dist/context/HooksContext/index.d.ts +3 -0
  72. package/dist/context/ValidationContext/ValidationContext.d.ts +7 -0
  73. package/dist/context/ValidationContext/index.d.ts +3 -0
  74. package/dist/context/index.d.ts +3 -0
  75. package/dist/hooks/index.d.ts +6 -0
  76. package/dist/hooks/useAxios.d.ts +2 -0
  77. package/dist/hooks/useGetRequest.d.ts +12 -0
  78. package/dist/hooks/useHooks.d.ts +2 -0
  79. package/dist/hooks/useRefData.d.ts +7 -0
  80. package/dist/hooks/useValidation.d.ts +2 -0
  81. package/dist/index.cjs +5 -0
  82. package/dist/index.css +1 -0
  83. package/dist/index.d.ts +6 -0
  84. package/dist/index.js +6124 -81
  85. package/dist/models/CollectionLabels.d.ts +7 -0
  86. package/dist/models/ComponentTypes.d.ts +27 -0
  87. package/dist/models/EventTypes.d.ts +6 -0
  88. package/dist/models/FormPages.d.ts +6 -0
  89. package/dist/models/FormTypes.d.ts +10 -0
  90. package/dist/models/HubFormats.d.ts +5 -0
  91. package/dist/models/PageAction.d.ts +89 -0
  92. package/dist/models/TaskStates.d.ts +39 -0
  93. package/dist/models/index.d.ts +143 -0
  94. package/dist/setupTests.d.ts +14 -0
  95. package/dist/utils/CheckYourAnswers/getCYAAction.d.ts +20 -0
  96. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.d.ts +22 -0
  97. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.d.ts +22 -0
  98. package/dist/utils/CheckYourAnswers/getCYARow.d.ts +26 -0
  99. package/dist/utils/CheckYourAnswers/getCYARowForGroup.d.ts +17 -0
  100. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.d.ts +2 -0
  101. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.d.ts +23 -0
  102. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.d.ts +2 -0
  103. package/dist/utils/CheckYourAnswers/getCYARowsForPage.d.ts +11 -0
  104. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.d.ts +3 -0
  105. package/dist/utils/CheckYourAnswers/index.d.ts +5 -0
  106. package/dist/utils/CheckYourAnswers/showComponentCYA.d.ts +11 -0
  107. package/dist/utils/CollectionPage/addCollectionPageEntry.d.ts +12 -0
  108. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.d.ts +13 -0
  109. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.d.ts +13 -0
  110. package/dist/utils/CollectionPage/getCollectionPageActiveId.d.ts +14 -0
  111. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.d.ts +15 -0
  112. package/dist/utils/CollectionPage/getCollectionPageData.d.ts +15 -0
  113. package/dist/utils/CollectionPage/getErrorsForCollection.d.ts +2 -0
  114. package/dist/utils/CollectionPage/getQuickEditPage.d.ts +40 -0
  115. package/dist/utils/CollectionPage/index.d.ts +13 -0
  116. package/dist/utils/CollectionPage/mergeCollectionPages.d.ts +13 -0
  117. package/dist/utils/CollectionPage/removeCollectionPageEntry.d.ts +11 -0
  118. package/dist/utils/CollectionPage/setCollectionPageData.d.ts +16 -0
  119. package/dist/utils/Component/addShowWhen.d.ts +13 -0
  120. package/dist/utils/Component/applyToComponentTree.d.ts +15 -0
  121. package/dist/utils/Component/cleanAttributes.d.ts +14 -0
  122. package/dist/utils/Component/elevateNestedComponents.d.ts +28 -0
  123. package/dist/utils/Component/getDefaultValue.d.ts +2 -0
  124. package/dist/utils/Component/getDefaultValueFromConfig.d.ts +2 -0
  125. package/dist/utils/Component/index.d.ts +12 -0
  126. package/dist/utils/Component/isEditable.d.ts +3 -0
  127. package/dist/utils/Component/optionIsSelected.d.ts +10 -0
  128. package/dist/utils/Component/setupContainerComponentsPath.d.ts +2 -0
  129. package/dist/utils/Component/showComponent.d.ts +2 -0
  130. package/dist/utils/Condition/index.d.ts +6 -0
  131. package/dist/utils/Condition/meetsAllConditions.d.ts +8 -0
  132. package/dist/utils/Condition/meetsCondition.d.ts +14 -0
  133. package/dist/utils/Condition/meetsOneCondition.d.ts +8 -0
  134. package/dist/utils/Condition/setupConditions.d.ts +2 -0
  135. package/dist/utils/Container/getEditableComponents.d.ts +7 -0
  136. package/dist/utils/Container/index.d.ts +6 -0
  137. package/dist/utils/Container/setupNesting.d.ts +2 -0
  138. package/dist/utils/Container/showContainer.d.ts +8 -0
  139. package/dist/utils/Data/applyFormula.d.ts +2 -0
  140. package/dist/utils/Data/deleteValues.d.ts +8 -0
  141. package/dist/utils/Data/getAutocompleteSource.d.ts +2 -0
  142. package/dist/utils/Data/getDataPath.d.ts +21 -0
  143. package/dist/utils/Data/getOptions.d.ts +2 -0
  144. package/dist/utils/Data/getSourceData.d.ts +17 -0
  145. package/dist/utils/Data/index.d.ts +15 -0
  146. package/dist/utils/Data/nestInRefdataOptions.d.ts +10 -0
  147. package/dist/utils/Data/refDataToOptions.d.ts +8 -0
  148. package/dist/utils/Data/setDataItem.d.ts +2 -0
  149. package/dist/utils/Data/setupFormData.d.ts +15 -0
  150. package/dist/utils/Data/setupRefDataUrlForComponent.d.ts +2 -0
  151. package/dist/utils/FormPage/applyConditionalProperties.d.ts +8 -0
  152. package/dist/utils/FormPage/getConditionalText.d.ts +23 -0
  153. package/dist/utils/FormPage/getFormPage.d.ts +9 -0
  154. package/dist/utils/FormPage/getFormPages.d.ts +9 -0
  155. package/dist/utils/FormPage/getPageActions.d.ts +13 -0
  156. package/dist/utils/FormPage/getParagraphFromText.d.ts +11 -0
  157. package/dist/utils/FormPage/index.d.ts +10 -0
  158. package/dist/utils/FormPage/showFormPage.d.ts +8 -0
  159. package/dist/utils/FormPage/showFormPageCYA.d.ts +8 -0
  160. package/dist/utils/FormPage/useComponent.d.ts +9 -0
  161. package/dist/utils/Format/formatData.d.ts +8 -0
  162. package/dist/utils/Format/formatDataForComponent.d.ts +15 -0
  163. package/dist/utils/Format/formatDataForForm.d.ts +8 -0
  164. package/dist/utils/Format/formatDataForPage.d.ts +15 -0
  165. package/dist/utils/Format/index.d.ts +7 -0
  166. package/dist/utils/Hub/getFormHub.d.ts +15 -0
  167. package/dist/utils/Hub/index.d.ts +4 -0
  168. package/dist/utils/Meta/constants.d.ts +2 -0
  169. package/dist/utils/Meta/documents/getDocuments.d.ts +2 -0
  170. package/dist/utils/Meta/documents/index.d.ts +6 -0
  171. package/dist/utils/Meta/documents/setDocumentsForField.d.ts +2 -0
  172. package/dist/utils/Meta/index.d.ts +9 -0
  173. package/dist/utils/Operate/checkValueIsTruthy.d.ts +9 -0
  174. package/dist/utils/Operate/deleteValueInFormData.d.ts +8 -0
  175. package/dist/utils/Operate/doesContainValue.d.ts +11 -0
  176. package/dist/utils/Operate/getFirstOf.d.ts +2 -0
  177. package/dist/utils/Operate/getIndexOfMatchingValueIn.d.ts +11 -0
  178. package/dist/utils/Operate/getLength.d.ts +11 -0
  179. package/dist/utils/Operate/index.d.ts +4 -0
  180. package/dist/utils/Operate/persistValueInFormData.d.ts +9 -0
  181. package/dist/utils/Operate/runPageOperations.d.ts +19 -0
  182. package/dist/utils/Operate/setValueInFormData.d.ts +2 -0
  183. package/dist/utils/Operate/shouldRun.d.ts +9 -0
  184. package/dist/utils/Validate/additional/conditionallyPermittedChange.d.ts +14 -0
  185. package/dist/utils/Validate/additional/conditionallyRequired.d.ts +11 -0
  186. package/dist/utils/Validate/additional/index.d.ts +2 -0
  187. package/dist/utils/Validate/additional/mustBeAfter.d.ts +14 -0
  188. package/dist/utils/Validate/additional/mustBeBefore.d.ts +14 -0
  189. package/dist/utils/Validate/additional/mustBeEarlierDateTime.d.ts +15 -0
  190. package/dist/utils/Validate/additional/mustBeGreaterThan.d.ts +7 -0
  191. package/dist/utils/Validate/additional/mustBeInTheFuture.d.ts +8 -0
  192. package/dist/utils/Validate/additional/mustBeInThePast.d.ts +9 -0
  193. package/dist/utils/Validate/additional/mustBeLessThan.d.ts +7 -0
  194. package/dist/utils/Validate/additional/mustBeLongerThan.d.ts +9 -0
  195. package/dist/utils/Validate/additional/mustBeNumbersOnly.d.ts +9 -0
  196. package/dist/utils/Validate/additional/mustBeOneOf.d.ts +8 -0
  197. package/dist/utils/Validate/additional/mustBeShorterThan.d.ts +9 -0
  198. package/dist/utils/Validate/additional/mustBeUniqueInCollection.d.ts +10 -0
  199. package/dist/utils/Validate/additional/mustEnterAtLeastOne.d.ts +9 -0
  200. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.d.ts +7 -0
  201. package/dist/utils/Validate/additional/mustNotContainSql.d.ts +2 -0
  202. package/dist/utils/Validate/additional/mustSelectOnlyOne.d.ts +8 -0
  203. package/dist/utils/Validate/additional/utils.d.ts +4 -0
  204. package/dist/utils/Validate/index.d.ts +42 -0
  205. package/dist/utils/Validate/validateCollection.d.ts +9 -0
  206. package/dist/utils/Validate/validateComponent.d.ts +16 -0
  207. package/dist/utils/Validate/validateContainer.d.ts +12 -0
  208. package/dist/utils/Validate/validateDate.d.ts +29 -0
  209. package/dist/utils/Validate/validateEmail.d.ts +13 -0
  210. package/dist/utils/Validate/validateMultifile.d.ts +3 -0
  211. package/dist/utils/Validate/validateOnPageLoad.d.ts +1 -0
  212. package/dist/utils/Validate/validatePage.d.ts +8 -0
  213. package/dist/utils/Validate/validateRegex.d.ts +13 -0
  214. package/dist/utils/Validate/validateRequired.d.ts +9 -0
  215. package/dist/utils/Validate/validateTextArea.d.ts +13 -0
  216. package/dist/utils/Validate/validateTime.d.ts +20 -0
  217. package/dist/utils/canOverrideFieldRequired.d.ts +9 -0
  218. package/dist/utils/index.d.ts +140 -0
  219. package/package.json +81 -170
  220. package/LICENCE.md +0 -21
  221. package/dist/components/CheckYourAnswers/Answer.js +0 -59
  222. package/dist/components/CheckYourAnswers/Answer.test.js +0 -142
  223. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +0 -252
  224. package/dist/components/CheckYourAnswers/CheckYourAnswers.scss +0 -43
  225. package/dist/components/CheckYourAnswers/CheckYourAnswers.stories.mdx +0 -409
  226. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +0 -603
  227. package/dist/components/CheckYourAnswers/index.js +0 -10
  228. package/dist/components/CollectionPage/CollectionPage.js +0 -178
  229. package/dist/components/CollectionPage/CollectionPage.test.js +0 -507
  230. package/dist/components/CollectionPage/index.js +0 -10
  231. package/dist/components/CollectionSummary/BannerStrip.js +0 -65
  232. package/dist/components/CollectionSummary/BannerStrip.scss +0 -60
  233. package/dist/components/CollectionSummary/BannerStrip.test.js +0 -167
  234. package/dist/components/CollectionSummary/CollectionSummary.js +0 -362
  235. package/dist/components/CollectionSummary/CollectionSummary.scss +0 -26
  236. package/dist/components/CollectionSummary/CollectionSummary.test.js +0 -368
  237. package/dist/components/CollectionSummary/Confirmation.js +0 -65
  238. package/dist/components/CollectionSummary/Confirmation.scss +0 -26
  239. package/dist/components/CollectionSummary/Confirmation.test.js +0 -109
  240. package/dist/components/CollectionSummary/RenderListView.js +0 -162
  241. package/dist/components/CollectionSummary/RenderListView.scss +0 -295
  242. package/dist/components/CollectionSummary/RenderListView.test.js +0 -303
  243. package/dist/components/CollectionSummary/SummaryCard.js +0 -277
  244. package/dist/components/CollectionSummary/SummaryCard.scss +0 -114
  245. package/dist/components/CollectionSummary/SummaryCard.test.js +0 -1442
  246. package/dist/components/CollectionSummary/SummaryCardButtons.js +0 -76
  247. package/dist/components/CollectionSummary/SummaryCardButtons.test.js +0 -87
  248. package/dist/components/CollectionSummary/SummaryCardDetails.js +0 -206
  249. package/dist/components/CollectionSummary/SummaryCardDetails.scss +0 -216
  250. package/dist/components/CollectionSummary/SummaryCardDetails.test.js +0 -654
  251. package/dist/components/CollectionSummary/SummaryCardValidationContext.js +0 -79
  252. package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +0 -104
  253. package/dist/components/CollectionSummary/index.js +0 -10
  254. package/dist/components/FormComponent/Collection.js +0 -234
  255. package/dist/components/FormComponent/Collection.scss +0 -24
  256. package/dist/components/FormComponent/Collection.test.js +0 -934
  257. package/dist/components/FormComponent/Container.js +0 -130
  258. package/dist/components/FormComponent/Container.scss +0 -15
  259. package/dist/components/FormComponent/Container.test.js +0 -456
  260. package/dist/components/FormComponent/FormComponent.js +0 -238
  261. package/dist/components/FormComponent/FormComponent.stories.mdx +0 -186
  262. package/dist/components/FormComponent/FormComponent.test.js +0 -436
  263. package/dist/components/FormComponent/helpers/addLabel.js +0 -25
  264. package/dist/components/FormComponent/helpers/getComponentDisabled.js +0 -15
  265. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +0 -27
  266. package/dist/components/FormComponent/helpers/getComponentError.js +0 -23
  267. package/dist/components/FormComponent/helpers/getComponentError.test.js +0 -51
  268. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +0 -11
  269. package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +0 -30
  270. package/dist/components/FormComponent/helpers/index.js +0 -35
  271. package/dist/components/FormComponent/index.js +0 -10
  272. package/dist/components/FormPage/FormPage.js +0 -212
  273. package/dist/components/FormPage/FormPage.scss +0 -7
  274. package/dist/components/FormPage/FormPage.stories.mdx +0 -157
  275. package/dist/components/FormPage/FormPage.test.js +0 -454
  276. package/dist/components/FormPage/index.js +0 -10
  277. package/dist/components/FormRenderer/FormRenderer.js +0 -426
  278. package/dist/components/FormRenderer/FormRenderer.scss +0 -5
  279. package/dist/components/FormRenderer/FormRenderer.stories.mdx +0 -178
  280. package/dist/components/FormRenderer/FormRenderer.test.js +0 -799
  281. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/cop-reassign-task-to-rcc.json +0 -446
  282. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-containerised.json +0 -120
  283. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-dependent-component-nested-block.json +0 -113
  284. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-dependent-component-nested.json +0 -106
  285. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-refdata.json +0 -106
  286. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-target-component-nested.json +0 -99
  287. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens.json +0 -106
  288. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-show-whens-page-hidden.json +0 -113
  289. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-cop-airpax.json +0 -26408
  290. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-cop-mandec.json +0 -9405
  291. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-collection-component-dependent-on-external-data.json +0 -158
  292. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-collection-component.json +0 -86
  293. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-referring-to-collection.json +0 -173
  294. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-referring-to-hidden-collection.json +0 -202
  295. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-show-when-in-component-and-page.json +0 -63
  296. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-with-nested-questions-visible-elsewhere.json +0 -118
  297. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-with-nested-questions.json +0 -112
  298. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component.json +0 -58
  299. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-containerised-component.json +0 -97
  300. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-embedded-collection-component.json +0 -83
  301. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-embedded-component.json +0 -55
  302. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-entire-collection.json +0 -114
  303. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-multilevel-containerised-component-leaf-hidden.json +0 -106
  304. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-multilevel-containerised-component.json +0 -106
  305. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-options.json +0 -99
  306. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-collection.json +0 -128
  307. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-component-used-elsewhere.json +0 -109
  308. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-same-component-reused.json +0 -62
  309. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page.json +0 -96
  310. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-nested-answers-hidden-by-option-visible-elsewhere.json +0 -113
  311. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-nested-answers-hidden-by-option.json +0 -112
  312. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-page-nested-component.json +0 -26003
  313. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-page-nested-radio-component.json +0 -201
  314. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-page-same-component-reused-one-shown.json +0 -75
  315. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-variance-breach.json +0 -4272
  316. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-airpax-carrier.json +0 -407
  317. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-airpax-change-what-happened-before.json +0 -300
  318. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-airpax-remove-photos-before.json +0 -384
  319. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-mandec-remove-business-interests-before.json +0 -140
  320. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-mandec-remove-criminality-before.json +0 -186
  321. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-mandec-remove-unspent-convictions-before.json +0 -143
  322. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-variance-breach-with-upload-files.json +0 -1264
  323. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens-containerised.json +0 -11
  324. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens-dependent-component-nested-block.json +0 -10
  325. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens-dependent-component-nested.json +0 -9
  326. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens-refdata.json +0 -11
  327. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens-target-component-nested.json +0 -9
  328. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-component-show-whens.json +0 -9
  329. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-chained-show-whens-page-hidden.json +0 -9
  330. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-collection-component-dependent-on-external-data.json +0 -26
  331. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-collection-component.json +0 -15
  332. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component-referring-to-collection.json +0 -25
  333. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component-referring-to-hidden-collection.json +0 -26
  334. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component-show-when-in-component-and-page.json +0 -6
  335. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component-with-nested-questions-visible-elsewhere.json +0 -12
  336. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component-with-nested-questions.json +0 -12
  337. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-component.json +0 -5
  338. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-containerised-component.json +0 -11
  339. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-embedded-collection-component.json +0 -15
  340. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-embedded-component.json +0 -5
  341. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-entire-collection.json +0 -20
  342. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-multilevel-containerised-component-leaf-hidden.json +0 -14
  343. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-multilevel-containerised-component.json +0 -14
  344. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-options.json +0 -10
  345. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-page-collection.json +0 -18
  346. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-page-component-used-elsewhere.json +0 -9
  347. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-page-same-component-reused.json +0 -6
  348. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-page.json +0 -9
  349. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-nested-answers-hidden-by-option-visible-elsewhere.json +0 -12
  350. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-nested-answers-hidden-by-option.json +0 -12
  351. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-page-nested-component.json +0 -63
  352. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-page-nested-radio-component.json +0 -45
  353. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-page-same-component-reused-one-shown.json +0 -8
  354. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/reassign-to-rcc.json +0 -72
  355. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/cop-airpax-change-what-happened-after.json +0 -280
  356. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/cop-airpax-remove-photos-after.json +0 -355
  357. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/cop-mandec-base-file.json +0 -80
  358. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/cop-mandec-remove-business-interests-after.json +0 -122
  359. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/cop-mandec-remove-criminality-after.json +0 -86
  360. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/cop-mandec-remove-unspent-convictions-after.json +0 -127
  361. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-containerised-removed.json +0 -11
  362. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-dependent-component-nested-block-removed.json +0 -7
  363. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-dependent-component-nested-removed.json +0 -7
  364. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-refdata-removed.json +0 -7
  365. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-removed.json +0 -7
  366. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-component-show-whens-target-component-nested-removed.json +0 -6
  367. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-chained-show-whens-page-hidden-removed.json +0 -6
  368. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-collection-component-dependent-on-external-data-removed.json +0 -23
  369. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-collection-component-removed.json +0 -4
  370. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-referring-to-collection-removed.json +0 -21
  371. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-referring-to-hidden-collection-removed.json +0 -6
  372. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-removed.json +0 -4
  373. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-show-when-in-component-and-page-removed.json +0 -5
  374. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-with-nested-questions-removed.json +0 -10
  375. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-component-with-nested-questions-visible-elsewhere-removed.json +0 -11
  376. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-containerised-component-removed.json +0 -10
  377. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-embedded-collection-component-removed.json +0 -4
  378. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-embedded-component-removed.json +0 -4
  379. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-entire-collection-removed.json +0 -3
  380. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-multilevel-containerised-component-leaf-hidden-removed.json +0 -13
  381. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-multilevel-containerised-component-removed.json +0 -10
  382. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-options-removed.json +0 -8
  383. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-page-collection-removed.json +0 -15
  384. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-page-component-used-elsewhere-removed.json +0 -5
  385. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-page-removed.json +0 -4
  386. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-page-same-component-reused-removed.json +0 -5
  387. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-nested-answers-hidden-by-option-removed.json +0 -11
  388. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-nested-answers-hidden-by-option-visible-elsewhere-removed.json +0 -12
  389. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-page-nested-component.json +0 -63
  390. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-page-nested-radio-component-removed.json +0 -45
  391. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-page-same-component-reused-one-shown-removed.json +0 -7
  392. package/dist/components/FormRenderer/handlers/cyaAction.js +0 -23
  393. package/dist/components/FormRenderer/handlers/getPageId.js +0 -15
  394. package/dist/components/FormRenderer/handlers/getPageId.test.js +0 -35
  395. package/dist/components/FormRenderer/handlers/handlers.test.js +0 -81
  396. package/dist/components/FormRenderer/handlers/index.js +0 -17
  397. package/dist/components/FormRenderer/handlers/navigate.js +0 -25
  398. package/dist/components/FormRenderer/handlers/submissionError.js +0 -18
  399. package/dist/components/FormRenderer/helpers/canActionProceed.js +0 -27
  400. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +0 -84
  401. package/dist/components/FormRenderer/helpers/canCYASubmit.js +0 -17
  402. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +0 -75
  403. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +0 -63
  404. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +0 -191
  405. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +0 -338
  406. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +0 -434
  407. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutesUtils.js +0 -399
  408. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutesUtils.test.js +0 -559
  409. package/dist/components/FormRenderer/helpers/getCYA.js +0 -42
  410. package/dist/components/FormRenderer/helpers/getCYA.test.js +0 -46
  411. package/dist/components/FormRenderer/helpers/getFormState.js +0 -25
  412. package/dist/components/FormRenderer/helpers/getFormState.test.js +0 -60
  413. package/dist/components/FormRenderer/helpers/getNextPageId.js +0 -76
  414. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +0 -292
  415. package/dist/components/FormRenderer/helpers/getPage.js +0 -27
  416. package/dist/components/FormRenderer/helpers/getPage.test.js +0 -45
  417. package/dist/components/FormRenderer/helpers/getRelevantPages.js +0 -27
  418. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +0 -70
  419. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +0 -65
  420. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +0 -309
  421. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +0 -201
  422. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +0 -473
  423. package/dist/components/FormRenderer/helpers/index.js +0 -33
  424. package/dist/components/FormRenderer/index.js +0 -10
  425. package/dist/components/FormRenderer/onCYAAction.js +0 -150
  426. package/dist/components/FormRenderer/onCYAAction.test.js +0 -741
  427. package/dist/components/FormRenderer/onPageAction.js +0 -227
  428. package/dist/components/FormRenderer/onPageAction.test.js +0 -960
  429. package/dist/components/FormRenderer/onTaskAction.js +0 -47
  430. package/dist/components/FormRenderer/onTaskAction.test.js +0 -247
  431. package/dist/components/PageActions/ActionButton.js +0 -48
  432. package/dist/components/PageActions/ActionButton.test.js +0 -73
  433. package/dist/components/PageActions/PageActions.js +0 -37
  434. package/dist/components/PageActions/PageActions.stories.mdx +0 -74
  435. package/dist/components/PageActions/PageActions.test.js +0 -106
  436. package/dist/components/PageActions/index.js +0 -10
  437. package/dist/components/SummaryList/GroupAction.js +0 -50
  438. package/dist/components/SummaryList/GroupAction.test.js +0 -86
  439. package/dist/components/SummaryList/RowAction.js +0 -48
  440. package/dist/components/SummaryList/RowAction.test.js +0 -86
  441. package/dist/components/SummaryList/SummaryList.js +0 -128
  442. package/dist/components/SummaryList/SummaryList.scss +0 -79
  443. package/dist/components/SummaryList/SummaryList.stories.mdx +0 -84
  444. package/dist/components/SummaryList/SummaryList.test.js +0 -504
  445. package/dist/components/SummaryList/SummaryListHeadingRow.js +0 -39
  446. package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +0 -65
  447. package/dist/components/SummaryList/SummaryListHeadingRowWithAction.scss +0 -38
  448. package/dist/components/SummaryList/SummaryListRow.js +0 -58
  449. package/dist/components/SummaryList/SummaryListTitleRow.js +0 -32
  450. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +0 -29
  451. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +0 -72
  452. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +0 -29
  453. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +0 -72
  454. package/dist/components/SummaryList/helpers/index.js +0 -14
  455. package/dist/components/SummaryList/index.js +0 -10
  456. package/dist/components/TaskList/Task.js +0 -62
  457. package/dist/components/TaskList/Task.test.js +0 -176
  458. package/dist/components/TaskList/TaskList.js +0 -175
  459. package/dist/components/TaskList/TaskList.scss +0 -123
  460. package/dist/components/TaskList/TaskList.stories.mdx +0 -164
  461. package/dist/components/TaskList/TaskList.test.js +0 -535
  462. package/dist/components/TaskList/TaskState.js +0 -37
  463. package/dist/components/TaskList/TaskState.test.js +0 -95
  464. package/dist/components/TaskList/index.js +0 -10
  465. package/dist/components/index.js +0 -56
  466. package/dist/context/HooksContext/HooksContext.js +0 -122
  467. package/dist/context/HooksContext/HooksContext.test.js +0 -45
  468. package/dist/context/HooksContext/index.js +0 -16
  469. package/dist/context/ValidationContext/ValidationContext.js +0 -98
  470. package/dist/context/ValidationContext/ValidationContext.test.js +0 -107
  471. package/dist/context/ValidationContext/index.js +0 -16
  472. package/dist/context/index.js +0 -21
  473. package/dist/hooks/index.js +0 -55
  474. package/dist/hooks/useAxios.js +0 -36
  475. package/dist/hooks/useGetRequest.js +0 -89
  476. package/dist/hooks/useHooks.js +0 -15
  477. package/dist/hooks/useRefData.js +0 -62
  478. package/dist/hooks/useValidation.js +0 -15
  479. package/dist/json/actions.json +0 -17
  480. package/dist/json/actionsNoSave.json +0 -17
  481. package/dist/json/addressDetails.json +0 -149
  482. package/dist/json/areYouACivilServant.json +0 -7
  483. package/dist/json/firstForm.json +0 -94
  484. package/dist/json/grade.json +0 -108
  485. package/dist/json/group.data.json +0 -21
  486. package/dist/json/group.json +0 -402
  487. package/dist/json/groupOfRow.json +0 -137
  488. package/dist/json/groupOfRowData.json +0 -15
  489. package/dist/json/port.json +0 -346
  490. package/dist/json/saveAndContinue.json +0 -98
  491. package/dist/json/sublocation.json +0 -859
  492. package/dist/json/taskList.json +0 -265
  493. package/dist/json/team.json +0 -17351
  494. package/dist/json/terminal.json +0 -81
  495. package/dist/json/userProfile.data.json +0 -21
  496. package/dist/json/userProfile.json +0 -276
  497. package/dist/models/CollectionLabels.js +0 -15
  498. package/dist/models/ComponentTypes.js +0 -58
  499. package/dist/models/EventTypes.js +0 -16
  500. package/dist/models/FormPages.js +0 -16
  501. package/dist/models/FormTypes.js +0 -24
  502. package/dist/models/HubFormats.js +0 -14
  503. package/dist/models/PageAction.js +0 -65
  504. package/dist/models/TaskStates.js +0 -46
  505. package/dist/models/index.js +0 -77
  506. package/dist/setupTests.js +0 -54
  507. package/dist/utils/CheckYourAnswers/getCYAAction.js +0 -44
  508. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +0 -120
  509. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +0 -57
  510. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +0 -162
  511. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +0 -66
  512. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +0 -198
  513. package/dist/utils/CheckYourAnswers/getCYARow.js +0 -58
  514. package/dist/utils/CheckYourAnswers/getCYARow.test.js +0 -373
  515. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +0 -69
  516. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +0 -70
  517. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +0 -71
  518. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +0 -285
  519. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +0 -237
  520. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +0 -844
  521. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +0 -45
  522. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +0 -535
  523. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +0 -72
  524. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +0 -343
  525. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +0 -42
  526. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +0 -56
  527. package/dist/utils/CheckYourAnswers/index.js +0 -15
  528. package/dist/utils/CheckYourAnswers/showComponentCYA.js +0 -53
  529. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +0 -149
  530. package/dist/utils/CollectionPage/addCollectionPageEntry.js +0 -23
  531. package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +0 -17
  532. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +0 -26
  533. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +0 -70
  534. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +0 -51
  535. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +0 -125
  536. package/dist/utils/CollectionPage/getCollectionPageActiveId.js +0 -24
  537. package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +0 -26
  538. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +0 -44
  539. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +0 -88
  540. package/dist/utils/CollectionPage/getCollectionPageData.js +0 -53
  541. package/dist/utils/CollectionPage/getCollectionPageData.test.js +0 -103
  542. package/dist/utils/CollectionPage/getErrorsForCollection.js +0 -55
  543. package/dist/utils/CollectionPage/getErrorsForCollection.test.js +0 -154
  544. package/dist/utils/CollectionPage/getQuickEditPage.js +0 -122
  545. package/dist/utils/CollectionPage/getQuickEditPage.test.js +0 -143
  546. package/dist/utils/CollectionPage/index.js +0 -33
  547. package/dist/utils/CollectionPage/mergeCollectionPages.js +0 -128
  548. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +0 -198
  549. package/dist/utils/CollectionPage/removeCollectionPageEntry.js +0 -36
  550. package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +0 -62
  551. package/dist/utils/CollectionPage/setCollectionPageData.js +0 -60
  552. package/dist/utils/CollectionPage/setCollectionPageData.test.js +0 -182
  553. package/dist/utils/Component/addShowWhen.js +0 -43
  554. package/dist/utils/Component/addShowWhen.test.js +0 -217
  555. package/dist/utils/Component/applyToComponentTree.js +0 -68
  556. package/dist/utils/Component/applyToComponentTree.test.js +0 -125
  557. package/dist/utils/Component/cleanAttributes.js +0 -42
  558. package/dist/utils/Component/cleanAttributes.test.js +0 -67
  559. package/dist/utils/Component/elevateNestedComponents.js +0 -58
  560. package/dist/utils/Component/elevateNestedComponents.test.js +0 -305
  561. package/dist/utils/Component/getComponent.js +0 -305
  562. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +0 -73
  563. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +0 -251
  564. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +0 -156
  565. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +0 -104
  566. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +0 -56
  567. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +0 -60
  568. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +0 -60
  569. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +0 -31
  570. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +0 -42
  571. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +0 -29
  572. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +0 -47
  573. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +0 -66
  574. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +0 -211
  575. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +0 -46
  576. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +0 -60
  577. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +0 -221
  578. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +0 -62
  579. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +0 -60
  580. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +0 -104
  581. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +0 -80
  582. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +0 -14
  583. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +0 -29
  584. package/dist/utils/Component/getDefaultValue.js +0 -22
  585. package/dist/utils/Component/getDefaultValue.test.js +0 -62
  586. package/dist/utils/Component/getDefaultValueFromConfig.js +0 -106
  587. package/dist/utils/Component/getDefaultValueFromConfig.test.js +0 -141
  588. package/dist/utils/Component/index.js +0 -29
  589. package/dist/utils/Component/isEditable.js +0 -13
  590. package/dist/utils/Component/isEditable.test.js +0 -42
  591. package/dist/utils/Component/optionIsSelected.js +0 -25
  592. package/dist/utils/Component/optionIsSelected.test.js +0 -69
  593. package/dist/utils/Component/setupContainerComponentsPath.js +0 -35
  594. package/dist/utils/Component/setupContainerComponentsPath.test.js +0 -79
  595. package/dist/utils/Component/showComponent.js +0 -25
  596. package/dist/utils/Component/showComponent.test.js +0 -157
  597. package/dist/utils/Component/wrapInFormGroup.js +0 -26
  598. package/dist/utils/Condition/index.js +0 -17
  599. package/dist/utils/Condition/meetsAllConditions.js +0 -44
  600. package/dist/utils/Condition/meetsAllConditions.test.js +0 -109
  601. package/dist/utils/Condition/meetsCondition.js +0 -165
  602. package/dist/utils/Condition/meetsCondition.test.js +0 -899
  603. package/dist/utils/Condition/meetsOneCondition.js +0 -32
  604. package/dist/utils/Condition/meetsOneCondition.test.js +0 -101
  605. package/dist/utils/Condition/setupConditions.js +0 -36
  606. package/dist/utils/Condition/setupConditions.test.js +0 -34
  607. package/dist/utils/Container/getEditableComponents.js +0 -29
  608. package/dist/utils/Container/getEditableComponents.test.js +0 -134
  609. package/dist/utils/Container/index.js +0 -17
  610. package/dist/utils/Container/setupNesting.js +0 -53
  611. package/dist/utils/Container/setupNesting.test.js +0 -143
  612. package/dist/utils/Container/showContainer.js +0 -52
  613. package/dist/utils/Container/showContainer.test.js +0 -179
  614. package/dist/utils/Data/applyFormula.js +0 -90
  615. package/dist/utils/Data/applyFormula.test.js +0 -264
  616. package/dist/utils/Data/deleteValues.js +0 -19
  617. package/dist/utils/Data/deleteValues.test.js +0 -58
  618. package/dist/utils/Data/getAutocompleteSource.js +0 -87
  619. package/dist/utils/Data/getAutocompleteSource.test.js +0 -335
  620. package/dist/utils/Data/getDataPath.js +0 -66
  621. package/dist/utils/Data/getDataPath.test.js +0 -49
  622. package/dist/utils/Data/getOptions.js +0 -86
  623. package/dist/utils/Data/getOptions.test.js +0 -279
  624. package/dist/utils/Data/getSourceData.js +0 -44
  625. package/dist/utils/Data/getSourceData.test.js +0 -158
  626. package/dist/utils/Data/index.js +0 -35
  627. package/dist/utils/Data/nestInRefdataOptions.js +0 -47
  628. package/dist/utils/Data/nestInRefdataOptions.test.js +0 -237
  629. package/dist/utils/Data/refDataToOptions.js +0 -44
  630. package/dist/utils/Data/refDataToOptions.test.js +0 -197
  631. package/dist/utils/Data/setDataItem.js +0 -26
  632. package/dist/utils/Data/setDataItem.test.js +0 -136
  633. package/dist/utils/Data/setupFormData.js +0 -49
  634. package/dist/utils/Data/setupFormData.test.js +0 -215
  635. package/dist/utils/Data/setupRefDataUrlForComponent.js +0 -44
  636. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +0 -150
  637. package/dist/utils/FormPage/applyConditionalProperties.js +0 -34
  638. package/dist/utils/FormPage/applyConditionalProperties.test.js +0 -61
  639. package/dist/utils/FormPage/getConditionalText.js +0 -55
  640. package/dist/utils/FormPage/getConditionalText.test.js +0 -163
  641. package/dist/utils/FormPage/getFormPage.js +0 -54
  642. package/dist/utils/FormPage/getFormPage.test.js +0 -206
  643. package/dist/utils/FormPage/getFormPages.js +0 -30
  644. package/dist/utils/FormPage/getFormPages.test.js +0 -97
  645. package/dist/utils/FormPage/getPageActions.js +0 -58
  646. package/dist/utils/FormPage/getPageActions.test.js +0 -115
  647. package/dist/utils/FormPage/getParagraphFromText.js +0 -21
  648. package/dist/utils/FormPage/getParagraphFromText.test.js +0 -28
  649. package/dist/utils/FormPage/index.js +0 -24
  650. package/dist/utils/FormPage/showFormPage.js +0 -52
  651. package/dist/utils/FormPage/showFormPage.test.js +0 -181
  652. package/dist/utils/FormPage/showFormPageCYA.js +0 -23
  653. package/dist/utils/FormPage/showFormPageCYA.test.js +0 -29
  654. package/dist/utils/FormPage/useComponent.js +0 -83
  655. package/dist/utils/FormPage/useComponent.test.js +0 -216
  656. package/dist/utils/Format/formatData.js +0 -27
  657. package/dist/utils/Format/formatData.test.js +0 -46
  658. package/dist/utils/Format/formatDataForComponent.js +0 -35
  659. package/dist/utils/Format/formatDataForComponent.test.js +0 -114
  660. package/dist/utils/Format/formatDataForForm.js +0 -27
  661. package/dist/utils/Format/formatDataForForm.test.js +0 -79
  662. package/dist/utils/Format/formatDataForPage.js +0 -31
  663. package/dist/utils/Format/formatDataForPage.test.js +0 -94
  664. package/dist/utils/Format/index.js +0 -21
  665. package/dist/utils/Hub/getFormHub.js +0 -40
  666. package/dist/utils/Hub/getFormHub.test.js +0 -105
  667. package/dist/utils/Hub/index.js +0 -15
  668. package/dist/utils/Meta/constants.js +0 -9
  669. package/dist/utils/Meta/documents/getDocuments.js +0 -15
  670. package/dist/utils/Meta/documents/getDocuments.test.js +0 -46
  671. package/dist/utils/Meta/documents/index.js +0 -19
  672. package/dist/utils/Meta/documents/setDocumentsForField.js +0 -30
  673. package/dist/utils/Meta/documents/setDocumentsForField.test.js +0 -97
  674. package/dist/utils/Meta/index.js +0 -17
  675. package/dist/utils/Operate/checkValueIsTruthy.js +0 -29
  676. package/dist/utils/Operate/checkValueIsTruthy.test.js +0 -43
  677. package/dist/utils/Operate/deleteValueInFormData.js +0 -27
  678. package/dist/utils/Operate/deleteValueInFormData.test.js +0 -61
  679. package/dist/utils/Operate/doesContainValue.js +0 -35
  680. package/dist/utils/Operate/doesContainValue.test.js +0 -76
  681. package/dist/utils/Operate/getFirstOf.js +0 -31
  682. package/dist/utils/Operate/getFirstOf.test.js +0 -87
  683. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +0 -68
  684. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +0 -158
  685. package/dist/utils/Operate/getLength.js +0 -51
  686. package/dist/utils/Operate/getLength.test.js +0 -90
  687. package/dist/utils/Operate/index.js +0 -13
  688. package/dist/utils/Operate/persistValueInFormData.js +0 -40
  689. package/dist/utils/Operate/persistValueInFormData.test.js +0 -118
  690. package/dist/utils/Operate/runPageOperations.js +0 -75
  691. package/dist/utils/Operate/runPageOperations.test.js +0 -105
  692. package/dist/utils/Operate/setValueInFormData.js +0 -22
  693. package/dist/utils/Operate/setValueInFormData.test.js +0 -45
  694. package/dist/utils/Operate/shouldRun.js +0 -57
  695. package/dist/utils/Operate/shouldRun.test.js +0 -65
  696. package/dist/utils/Validate/additional/conditionallyPermittedChange.js +0 -26
  697. package/dist/utils/Validate/additional/conditionallyPermittedChange.test.js +0 -34
  698. package/dist/utils/Validate/additional/conditionallyRequired.js +0 -24
  699. package/dist/utils/Validate/additional/conditionallyRequired.test.js +0 -74
  700. package/dist/utils/Validate/additional/index.js +0 -74
  701. package/dist/utils/Validate/additional/index.test.js +0 -130
  702. package/dist/utils/Validate/additional/mustBeAfter.js +0 -34
  703. package/dist/utils/Validate/additional/mustBeAfter.test.js +0 -109
  704. package/dist/utils/Validate/additional/mustBeBefore.js +0 -34
  705. package/dist/utils/Validate/additional/mustBeBefore.test.js +0 -77
  706. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +0 -57
  707. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +0 -128
  708. package/dist/utils/Validate/additional/mustBeGreaterThan.js +0 -22
  709. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +0 -57
  710. package/dist/utils/Validate/additional/mustBeInTheFuture.js +0 -33
  711. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +0 -32
  712. package/dist/utils/Validate/additional/mustBeInThePast.js +0 -36
  713. package/dist/utils/Validate/additional/mustBeInThePast.test.js +0 -32
  714. package/dist/utils/Validate/additional/mustBeLessThan.js +0 -22
  715. package/dist/utils/Validate/additional/mustBeLessThan.test.js +0 -53
  716. package/dist/utils/Validate/additional/mustBeLongerThan.js +0 -23
  717. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +0 -49
  718. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +0 -24
  719. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +0 -45
  720. package/dist/utils/Validate/additional/mustBeOneOf.js +0 -22
  721. package/dist/utils/Validate/additional/mustBeOneOf.test.js +0 -37
  722. package/dist/utils/Validate/additional/mustBeShorterThan.js +0 -23
  723. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +0 -49
  724. package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +0 -40
  725. package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +0 -163
  726. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +0 -26
  727. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +0 -37
  728. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +0 -19
  729. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +0 -37
  730. package/dist/utils/Validate/additional/mustNotContainSql.js +0 -19
  731. package/dist/utils/Validate/additional/mustNotContainSql.test.js +0 -33
  732. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +0 -29
  733. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +0 -55
  734. package/dist/utils/Validate/additional/utils.js +0 -35
  735. package/dist/utils/Validate/index.js +0 -33
  736. package/dist/utils/Validate/validateCollection.js +0 -50
  737. package/dist/utils/Validate/validateCollection.test.js +0 -134
  738. package/dist/utils/Validate/validateComponent.js +0 -126
  739. package/dist/utils/Validate/validateComponent.test.js +0 -435
  740. package/dist/utils/Validate/validateContainer.js +0 -52
  741. package/dist/utils/Validate/validateContainer.test.js +0 -115
  742. package/dist/utils/Validate/validateDate.js +0 -112
  743. package/dist/utils/Validate/validateDate.test.js +0 -133
  744. package/dist/utils/Validate/validateEmail.js +0 -45
  745. package/dist/utils/Validate/validateEmail.test.js +0 -78
  746. package/dist/utils/Validate/validateMultifile.js +0 -29
  747. package/dist/utils/Validate/validateMultifile.test.js +0 -46
  748. package/dist/utils/Validate/validateOnPageLoad.js +0 -24
  749. package/dist/utils/Validate/validateOnPageLoad.test.js +0 -89
  750. package/dist/utils/Validate/validatePage.js +0 -56
  751. package/dist/utils/Validate/validatePage.test.js +0 -795
  752. package/dist/utils/Validate/validateRegex.js +0 -41
  753. package/dist/utils/Validate/validateRegex.test.js +0 -43
  754. package/dist/utils/Validate/validateRequired.js +0 -37
  755. package/dist/utils/Validate/validateRequired.test.js +0 -64
  756. package/dist/utils/Validate/validateTextArea.js +0 -36
  757. package/dist/utils/Validate/validateTextArea.test.js +0 -71
  758. package/dist/utils/Validate/validateTime.js +0 -76
  759. package/dist/utils/Validate/validateTime.test.js +0 -116
  760. package/dist/utils/canOverrideFieldRequired.js +0 -23
  761. package/dist/utils/index.js +0 -42
@@ -1,844 +0,0 @@
1
- "use strict";
2
-
3
- var _getCYARowsForCollectionPage = _interopRequireDefault(require("./getCYARowsForCollectionPage"));
4
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
5
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
8
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
9
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // Local imports
10
- describe('utils.CheckYourAnswers.getCYARowsForCollectionPage', () => {
11
- const TEXT_COMP = {
12
- id: 'testText',
13
- fieldId: 'testText',
14
- label: 'Test text',
15
- type: 'text'
16
- };
17
- const DATE_COMP = {
18
- id: 'testDate',
19
- fieldId: 'testDate',
20
- label: 'Test date',
21
- type: 'date'
22
- };
23
- const PAGES = [{
24
- id: 'page1',
25
- collection: {
26
- name: 'collection'
27
- },
28
- components: [TEXT_COMP]
29
- }, {
30
- id: 'page2',
31
- collection: {
32
- name: 'collection'
33
- },
34
- components: [DATE_COMP]
35
- }];
36
- const MASTER_PAGE = {
37
- id: 'page1',
38
- collection: {
39
- name: 'collection',
40
- labels: {
41
- // eslint-disable-next-line no-template-curly-in-string
42
- item: 'Collection entry ${index}'
43
- },
44
- actions: [{
45
- type: 'change'
46
- }, {
47
- type: 'remove',
48
- label: 'custom remove label'
49
- }, {
50
- type: 'change',
51
- label: 'custom change label',
52
- page: 'confirmDelete'
53
- }]
54
- },
55
- childPages: PAGES
56
- };
57
- it('should return no rows for a collection if it does not exist in formData', () => {
58
- const FORM_DATA = {};
59
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
60
- formData: FORM_DATA
61
- });
62
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
63
- expect(ROWS.length).toEqual(0);
64
- });
65
- it('should return no rows for a collection if it has no entries', () => {
66
- const FORM_DATA = {
67
- collection: []
68
- };
69
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
70
- formData: FORM_DATA
71
- });
72
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
73
- expect(ROWS.length).toEqual(0);
74
- });
75
- it('should accept the hideNameFromCYA collection flag', () => {
76
- const FORM_DATA = {
77
- collection: [{
78
- testText: 'hello'
79
- }]
80
- };
81
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
82
- formData: FORM_DATA,
83
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
84
- hideNameFromCYA: true
85
- })
86
- });
87
- const TITLE_FIELD_ID = "".concat(PAGE.collection.name, "Title");
88
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
89
- expect(ROWS[0].fieldId).not.toEqual(TITLE_FIELD_ID);
90
- });
91
- it('should format titles correctly when collection.labels.item is specified', () => {
92
- const FORM_DATA = {
93
- collection: [{
94
- id: '01',
95
- testText: 'value'
96
- }]
97
- };
98
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
99
- formData: FORM_DATA
100
- });
101
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
102
- expect(ROWS.length).toEqual(7); // Collection title, item title, action rows & component rows
103
- expect(ROWS[1].key).toEqual('Collection entry 1');
104
- });
105
- it('should hide titles when hideItemTitles is true', () => {
106
- const FORM_DATA = {
107
- collection: [{
108
- id: '01',
109
- testText: 'value'
110
- }]
111
- };
112
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
113
- formData: FORM_DATA,
114
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
115
- hideItemTitles: true
116
- })
117
- });
118
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
119
- expect(ROWS.length).toEqual(6); // Collection title, NO item title, action rows & component rows
120
- });
121
- it('should hide titles when hideItemTitles is a show_when that is true', () => {
122
- const FORM_DATA = {
123
- shouldShow: false,
124
- collection: [{
125
- id: '01',
126
- testText: 'value'
127
- }]
128
- };
129
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
130
- formData: FORM_DATA,
131
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
132
- hideItemTitles: [{
133
- field: 'shouldShow',
134
- op: '=',
135
- value: false
136
- }]
137
- })
138
- });
139
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
140
- expect(ROWS.length).toEqual(6); // Collection title, NO item title, action rows & component rows
141
- });
142
- it('should provide default titles if collection.labels.item is not specified', () => {
143
- const FORM_DATA = {
144
- collection: [{
145
- id: '01',
146
- testText: 'value'
147
- }]
148
- };
149
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
150
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
151
- labels: {}
152
- }),
153
- formData: FORM_DATA
154
- });
155
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
156
- expect(ROWS.length).toEqual(7); // Collection title, item title, action rows & component rows
157
- expect(ROWS[1].key).toEqual('Item 1');
158
- });
159
- it('should return correctly formatted rows for mutliple entries', () => {
160
- const FORM_DATA = {
161
- collection: [{
162
- id: '01',
163
- testText: 'value'
164
- }, {
165
- id: '02',
166
- testText: 'value'
167
- }]
168
- };
169
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
170
- formData: FORM_DATA
171
- });
172
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
173
- expect(ROWS.length).toEqual(13); // Title row + component row for each item
174
- expect(ROWS[0]).toMatchObject({
175
- type: 'heading',
176
- key: 'Collection'
177
- });
178
- expect(ROWS[1]).toMatchObject({
179
- type: 'heading',
180
- key: 'Collection entry 1'
181
- });
182
- expect(ROWS[2].action.label).toEqual('Change');
183
- expect(ROWS[3].action.label).toEqual('custom remove label');
184
- expect(ROWS[4].action.label).toEqual('custom change label');
185
- expect(ROWS[5]).toMatchObject({
186
- value: 'value',
187
- key: 'Test text'
188
- });
189
- expect(ROWS[6]).toMatchObject({
190
- value: '',
191
- key: 'Test date'
192
- });
193
- expect(ROWS[7]).toMatchObject({
194
- type: 'heading',
195
- key: 'Collection entry 2'
196
- });
197
- expect(ROWS[8].action.label).toEqual('Change');
198
- expect(ROWS[9].action.label).toEqual('custom remove label');
199
- expect(ROWS[10].action.label).toEqual('custom change label');
200
- expect(ROWS[11]).toMatchObject({
201
- value: 'value',
202
- key: 'Test text'
203
- });
204
- expect(ROWS[12]).toMatchObject({
205
- value: '',
206
- key: 'Test date'
207
- });
208
- });
209
- it('should use values from top-level formData if they don\'t exist in the item', () => {
210
- const FORM_DATA = {
211
- testText: 'value',
212
- collection: [{
213
- id: '01'
214
- }]
215
- };
216
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
217
- childPages: [_objectSpread(_objectSpread({}, PAGES[0]), {}, {
218
- formData: FORM_DATA
219
- }), PAGES[1]],
220
- formData: FORM_DATA
221
- });
222
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
223
- expect(ROWS.length).toEqual(7); // Title row + component row for each item
224
- expect(ROWS[0]).toMatchObject({
225
- type: 'heading',
226
- key: 'Collection'
227
- });
228
- expect(ROWS[1]).toMatchObject({
229
- type: 'heading',
230
- key: 'Collection entry 1'
231
- });
232
- expect(ROWS[2].action.label).toEqual('Change');
233
- expect(ROWS[3].action.label).toEqual('custom remove label');
234
- expect(ROWS[4].action.label).toEqual('custom change label');
235
- expect(ROWS[5]).toMatchObject({
236
- value: 'value',
237
- key: 'Test text'
238
- });
239
- expect(ROWS[6]).toMatchObject({
240
- value: '',
241
- key: 'Test date'
242
- });
243
- });
244
- it('should return correctly formatted rows for only the active entry when page.collection.onlyShowActiveEntryOnCYA is defined', () => {
245
- const FORM_DATA = {
246
- collectionActiveId: '02',
247
- collection: [{
248
- id: '01',
249
- testText: 'value'
250
- }, {
251
- id: '02',
252
- testText: 'value'
253
- }]
254
- };
255
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
256
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
257
- onlyShowActiveEntryOnCYA: true
258
- }),
259
- formData: FORM_DATA
260
- });
261
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
262
- expect(ROWS.length).toEqual(7); // Title row + component row for only the active item.
263
- expect(ROWS[0]).toMatchObject({
264
- type: 'heading',
265
- key: 'Collection'
266
- });
267
- expect(ROWS[1]).toMatchObject({
268
- type: 'heading',
269
- key: 'Collection entry 2'
270
- });
271
- expect(ROWS[2].action.label).toEqual('Change');
272
- expect(ROWS[3].action.label).toEqual('custom remove label');
273
- expect(ROWS[4].action.label).toEqual('custom change label');
274
- expect(ROWS[5]).toMatchObject({
275
- value: 'value',
276
- key: 'Test text'
277
- });
278
- expect(ROWS[6]).toMatchObject({
279
- value: '',
280
- key: 'Test date'
281
- });
282
- });
283
- it('should return correctly formatted rows for only the active entry when page.collection.onlyShowActiveEntryOnCYA is an array', () => {
284
- const FORM_DATA = {
285
- text: 'blue',
286
- collectionActiveId: '02',
287
- collection: [{
288
- id: '01',
289
- testText: 'value'
290
- }, {
291
- id: '02',
292
- testText: 'value'
293
- }]
294
- };
295
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
296
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
297
- onlyShowActiveEntryOnCYA: [{
298
- field: 'text',
299
- op: 'eq',
300
- value: 'blue'
301
- }]
302
- }),
303
- formData: FORM_DATA
304
- });
305
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
306
- expect(ROWS.length).toEqual(7); // Title row + component row for only the active item.
307
- expect(ROWS[0]).toMatchObject({
308
- type: 'heading',
309
- key: 'Collection'
310
- });
311
- expect(ROWS[1]).toMatchObject({
312
- type: 'heading',
313
- key: 'Collection entry 2'
314
- });
315
- expect(ROWS[2].action.label).toEqual('Change');
316
- expect(ROWS[3].action.label).toEqual('custom remove label');
317
- expect(ROWS[4].action.label).toEqual('custom change label');
318
- expect(ROWS[5]).toMatchObject({
319
- value: 'value',
320
- key: 'Test text'
321
- });
322
- expect(ROWS[6]).toMatchObject({
323
- value: '',
324
- key: 'Test date'
325
- });
326
- });
327
- it('should exclude components that should not be shown', () => {
328
- const FD = {
329
- collection: [{
330
- id: '01',
331
- otherField: 'yes',
332
- testText: 'testing'
333
- }, {
334
- id: '02',
335
- otherField: 'no',
336
- testText: 'testing'
337
- }]
338
- };
339
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
340
- collection: {
341
- name: 'collection'
342
- },
343
- formData: FD,
344
- childPages: [_objectSpread(_objectSpread({}, PAGES[0]), {}, {
345
- components: [{
346
- id: 'testText',
347
- fieldId: 'testText',
348
- label: 'Test text',
349
- type: 'text',
350
- show_when: {
351
- field: "otherField",
352
- op: "!=",
353
- value: "yes"
354
- }
355
- }]
356
- })]
357
- });
358
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FD);
359
- expect(ROWS.length).toEqual(4);
360
- expect(ROWS[0]).toMatchObject({
361
- type: 'heading',
362
- key: 'Collection'
363
- });
364
- expect(ROWS[1]).toMatchObject({
365
- type: 'heading',
366
- key: 'Item 1'
367
- });
368
- expect(ROWS[2]).toMatchObject({
369
- type: 'heading',
370
- key: 'Item 2'
371
- });
372
- expect(ROWS[3]).toMatchObject({
373
- value: 'testing',
374
- key: 'Test text'
375
- });
376
- });
377
- it('should exclude pages that should not be shown', () => {
378
- const FD = {
379
- collection: [{
380
- id: '01',
381
- otherField: 'yes',
382
- testText: 'testing'
383
- }]
384
- };
385
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
386
- collection: {
387
- name: 'collection'
388
- },
389
- formData: FD,
390
- childPages: [_objectSpread(_objectSpread({}, PAGES[0]), {}, {
391
- show_when: {
392
- field: "otherField",
393
- op: "!=",
394
- value: "yes"
395
- }
396
- }), PAGES[1]]
397
- });
398
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FD);
399
- expect(ROWS.length).toEqual(3); // Missing the page with the text component on.
400
- expect(ROWS[0]).toMatchObject({
401
- type: 'heading',
402
- key: 'Collection'
403
- });
404
- expect(ROWS[1]).toMatchObject({
405
- type: 'heading',
406
- key: 'Item 1'
407
- });
408
- expect(ROWS[2]).toMatchObject({
409
- value: '',
410
- key: 'Test date'
411
- });
412
- });
413
- it('should include rows for custom headings', () => {
414
- const FORM_DATA = {
415
- collection: [{
416
- id: '01',
417
- testText: 'value'
418
- }]
419
- };
420
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
421
- formData: FORM_DATA,
422
- childPages: [_objectSpread(_objectSpread({}, PAGES[0]), {}, {
423
- collection: _objectSpread(_objectSpread({}, PAGES[0].collection), {}, {
424
- heading: {
425
- size: 'm',
426
- text: 'Custom page heading'
427
- }
428
- })
429
- })]
430
- });
431
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
432
- expect(ROWS.length).toEqual(7);
433
- expect(ROWS[0]).toMatchObject({
434
- type: 'heading',
435
- key: 'Collection'
436
- });
437
- expect(ROWS[1]).toMatchObject({
438
- type: 'heading',
439
- key: 'Collection entry 1'
440
- });
441
- expect(ROWS[2].action.label).toEqual('Change');
442
- expect(ROWS[3].action.label).toEqual('custom remove label');
443
- expect(ROWS[4].action.label).toEqual('custom change label');
444
- expect(ROWS[5]).toMatchObject({
445
- type: 'heading',
446
- key: 'Custom page heading',
447
- size: 'm'
448
- });
449
- expect(ROWS[6]).toMatchObject({
450
- value: 'value',
451
- key: 'Test text'
452
- });
453
- });
454
- it('should allow interpolation of custom headings', () => {
455
- const FORM_DATA = {
456
- collection: [{
457
- id: '01',
458
- testText: 'value'
459
- }]
460
- };
461
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
462
- formData: FORM_DATA,
463
- childPages: [_objectSpread(_objectSpread({}, PAGES[0]), {}, {
464
- collection: _objectSpread(_objectSpread({}, PAGES[0].collection), {}, {
465
- // eslint-disable-next-line no-template-curly-in-string
466
- heading: {
467
- size: 'm',
468
- text: 'interpolated text: ${testText}'
469
- }
470
- })
471
- })]
472
- });
473
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
474
- expect(ROWS.length).toEqual(7);
475
- expect(ROWS[0]).toMatchObject({
476
- type: 'heading',
477
- key: 'Collection'
478
- });
479
- expect(ROWS[1]).toMatchObject({
480
- type: 'heading',
481
- key: 'Collection entry 1'
482
- });
483
- expect(ROWS[2].action.label).toEqual('Change');
484
- expect(ROWS[3].action.label).toEqual('custom remove label');
485
- expect(ROWS[4].action.label).toEqual('custom change label');
486
- expect(ROWS[5]).toMatchObject({
487
- type: 'heading',
488
- key: 'interpolated text: value',
489
- size: 'm'
490
- });
491
- expect(ROWS[6]).toMatchObject({
492
- value: 'value',
493
- key: 'Test text'
494
- });
495
- });
496
- it('should alow configuration of collection name headings', () => {
497
- const FORM_DATA = {
498
- collection: [{
499
- id: '01',
500
- testText: 'value'
501
- }]
502
- };
503
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
504
- formData: FORM_DATA,
505
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
506
- collectionHeading: {
507
- text: 'Custom collection heading',
508
- size: 'm',
509
- changeLinkPage: PAGES[0].id
510
- }
511
- }),
512
- childPages: [_objectSpread(_objectSpread({}, PAGES[0]), {}, {
513
- collection: _objectSpread({}, PAGES[0].collection)
514
- })]
515
- });
516
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
517
- expect(ROWS.length).toEqual(6);
518
- expect(ROWS[0]).toMatchObject({
519
- type: 'headingWithAction',
520
- key: 'Custom collection heading'
521
- });
522
- });
523
- it('should default to a title size of small if one is not specified', () => {
524
- const FORM_DATA = {
525
- collection: [{
526
- id: '01',
527
- testText: 'value'
528
- }]
529
- };
530
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
531
- formData: FORM_DATA,
532
- childPages: [_objectSpread(_objectSpread({}, PAGES[0]), {}, {
533
- collection: _objectSpread(_objectSpread({}, PAGES[0].collection), {}, {
534
- heading: {
535
- text: 'Custom page heading'
536
- }
537
- })
538
- })]
539
- });
540
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
541
- expect(ROWS[5]).toMatchObject({
542
- type: 'heading',
543
- key: 'Custom page heading',
544
- size: 's'
545
- });
546
- });
547
- it('should position actions under the title if actionPosition flag is not specified', () => {
548
- const FORM_DATA = {
549
- collection: [{
550
- id: '01',
551
- testText: 'value'
552
- }]
553
- };
554
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
555
- formData: FORM_DATA
556
- });
557
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
558
- expect(ROWS[2].action.label).toEqual('Change');
559
- expect(ROWS[3].action.label).toEqual('custom remove label');
560
- expect(ROWS[4].action.label).toEqual('custom change label');
561
- });
562
- it('should position actions under the title if actionPosition flag is top', () => {
563
- const FORM_DATA = {
564
- collection: [{
565
- id: '01',
566
- testText: 'value'
567
- }]
568
- };
569
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
570
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
571
- actionPosition: 'top'
572
- }),
573
- formData: FORM_DATA
574
- });
575
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
576
- expect(ROWS[2].action.label).toEqual('Change');
577
- expect(ROWS[3].action.label).toEqual('custom remove label');
578
- expect(ROWS[4].action.label).toEqual('custom change label');
579
- });
580
- it('should position actions under all other rows if actionPosition flag is bottom', () => {
581
- const FORM_DATA = {
582
- collection: [{
583
- id: '01',
584
- testText: 'value'
585
- }]
586
- };
587
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
588
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
589
- actionPosition: 'bottom'
590
- }),
591
- formData: FORM_DATA
592
- });
593
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
594
- expect(ROWS[ROWS.length - 3].action.label).toEqual('Change');
595
- expect(ROWS[ROWS.length - 2].action.label).toEqual('custom remove label');
596
- expect(ROWS[ROWS.length - 1].action.label).toEqual('custom change label');
597
- });
598
- it('Show show the collection action when show_when condition is true', () => {
599
- const FORM_DATA = {
600
- collection: [{
601
- id: '01',
602
- testText: 'value'
603
- }]
604
- };
605
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
606
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
607
- // Add a show_when to the colleciton action.
608
- actions: MASTER_PAGE.collection.actions.map((action, index) => index === 1 ? _objectSpread(_objectSpread({}, action), {}, {
609
- show_when: [{
610
- field: "collection.length",
611
- op: "=",
612
- value: 1
613
- }]
614
- }) : action)
615
- }),
616
- formData: FORM_DATA
617
- });
618
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
619
- expect(ROWS[2].action.label).toEqual('Change');
620
- expect(ROWS[3].action.label).toEqual('custom remove label');
621
- expect(ROWS[4].action.label).toEqual('custom change label');
622
- });
623
- it('Should hide the collection action when show_when condition is false', () => {
624
- const FORM_DATA = {
625
- collection: [{
626
- id: '01',
627
- testText: 'value'
628
- }]
629
- };
630
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
631
- collection: _objectSpread(_objectSpread({}, MASTER_PAGE.collection), {}, {
632
- // Add a show_when to the colleciton action.
633
- actions: MASTER_PAGE.collection.actions.map((action, index) => index === 1 ? _objectSpread(_objectSpread({}, action), {}, {
634
- show_when: [{
635
- field: "collection.length",
636
- op: "=",
637
- value: 10
638
- }]
639
- }) : action)
640
- }),
641
- formData: FORM_DATA
642
- });
643
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, FORM_DATA);
644
- expect(ROWS[2].action.label).toEqual('Change');
645
- expect(ROWS[3].action.label).toEqual('custom change label');
646
- });
647
- it('should ignore the result of the override function if it returns nullish', () => {
648
- const FORM_DATA = {
649
- collection: [{
650
- id: '01',
651
- testText: 'value'
652
- }]
653
- };
654
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
655
- formData: FORM_DATA
656
- });
657
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, () => null, FORM_DATA);
658
- expect(ROWS.length).toEqual(7); // Collection title, item title, action rows & component rows
659
- expect(ROWS[5].key).toEqual("Test text");
660
- });
661
- it('should use the rows produced by the override function if provided', () => {
662
- const FORM_DATA = {
663
- collection: [{
664
- id: '01',
665
- testText: 'value'
666
- }]
667
- };
668
-
669
- // eslint-disable-next-line arrow-body-style
670
- const OVERRIDE = (page, comp) => {
671
- // This will be called for each component on the page,
672
- // returning a custom row object.
673
- return {
674
- key: "CustomRowFor".concat(comp.label)
675
- };
676
- };
677
- const PAGE = _objectSpread(_objectSpread({}, MASTER_PAGE), {}, {
678
- formData: FORM_DATA
679
- });
680
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, OVERRIDE, FORM_DATA);
681
- expect(ROWS.length).toEqual(7); // Collection title, item title, action rows & component rows
682
- expect(ROWS[5].key).toEqual("CustomRowFor".concat(TEXT_COMP.label));
683
- });
684
- it('should create rows for nested collections correctly', () => {
685
- const CUSTOM_FORM_DATA = {
686
- parentActiveId: '001',
687
- childActiveId: '001',
688
- parent: [{
689
- id: '001',
690
- testText: 'alpha',
691
- child: [{
692
- id: '001',
693
- testText: 'bravo'
694
- }]
695
- }]
696
- };
697
- const CHILD_MASTER_PAGE = {
698
- id: 'childPage',
699
- collection: {
700
- name: 'parent.child',
701
- masterPage: true,
702
- labels: {
703
- // eslint-disable-next-line no-template-curly-in-string
704
- item: 'Child number ${index}'
705
- },
706
- actions: [{
707
- type: 'change'
708
- }, {
709
- type: 'remove',
710
- label: 'custom remove label'
711
- }]
712
- },
713
- childPages: [{
714
- id: 'childPage',
715
- collection: {
716
- name: 'parent.child'
717
- },
718
- components: [TEXT_COMP]
719
- }]
720
- };
721
- const PARENT_MASTER_PAGE = {
722
- id: 'parentPage',
723
- collection: {
724
- name: 'parent',
725
- masterPage: true
726
- },
727
- childPages: [{
728
- id: 'parentPage',
729
- collection: {
730
- name: 'parent'
731
- },
732
- components: [TEXT_COMP]
733
- }, CHILD_MASTER_PAGE]
734
- };
735
- const PAGE = _objectSpread(_objectSpread({}, PARENT_MASTER_PAGE), {}, {
736
- formData: CUSTOM_FORM_DATA
737
- });
738
- const ROWS = (0, _getCYARowsForCollectionPage.default)(PAGE, null, null, CUSTOM_FORM_DATA);
739
- expect(ROWS.length).toEqual(8);
740
- expect(ROWS[0]).toMatchObject({
741
- type: 'heading',
742
- key: 'Parent'
743
- });
744
- expect(ROWS[1]).toMatchObject({
745
- type: 'heading',
746
- key: 'Item 1'
747
- });
748
- expect(ROWS[2]).toMatchObject({
749
- value: 'alpha',
750
- key: 'Test text'
751
- });
752
- expect(ROWS[3]).toMatchObject({
753
- type: 'heading',
754
- key: 'Child'
755
- });
756
- expect(ROWS[4]).toMatchObject({
757
- type: 'heading',
758
- key: 'Child number 1'
759
- });
760
- expect(ROWS[5].action.label).toEqual('Change');
761
- expect(ROWS[6].action.label).toEqual('custom remove label');
762
- expect(ROWS[7]).toMatchObject({
763
- value: 'bravo',
764
- key: 'Test text'
765
- });
766
- });
767
- it('should create rows for the Collection component correctly', () => {
768
- const FORM_DATA = {
769
- collection: [{
770
- id: '01',
771
- testCollection: [{
772
- testText: 'collection value'
773
- }],
774
- otherComp: 'one'
775
- }]
776
- };
777
- const COLLECTION_COMP = {
778
- id: 'testCollection',
779
- fieldId: 'testCollection',
780
- label: 'Test collection',
781
- type: 'collection',
782
- item: [{
783
- id: 'testText',
784
- fieldId: 'testText',
785
- type: 'text',
786
- label: 'Some nice text'
787
- }],
788
- show_when: [{
789
- field: 'otherComp',
790
- op: 'eq',
791
- value: 'one'
792
- }]
793
- };
794
- const MASTER_PAGE_WITH_COLLECTION = {
795
- id: 'page1',
796
- collection: {
797
- name: 'collection',
798
- labels: {
799
- // eslint-disable-next-line no-template-curly-in-string
800
- item: 'Collection entry ${index}'
801
- },
802
- actions: [{
803
- type: 'change'
804
- }, {
805
- type: 'remove',
806
- label: 'custom remove label'
807
- }, {
808
- type: 'change',
809
- label: 'custom change label',
810
- page: 'confirmDelete'
811
- }]
812
- },
813
- childPages: [{
814
- id: 'page1',
815
- collection: {
816
- name: 'collection'
817
- },
818
- components: [COLLECTION_COMP]
819
- }],
820
- formData: FORM_DATA
821
- };
822
- const ROWS = (0, _getCYARowsForCollectionPage.default)(MASTER_PAGE_WITH_COLLECTION, null, null, FORM_DATA);
823
- expect(ROWS.length).toEqual(7); // Title row + component row for each item
824
- expect(ROWS[0]).toMatchObject({
825
- type: 'heading',
826
- key: 'Collection'
827
- });
828
- expect(ROWS[1]).toMatchObject({
829
- type: 'heading',
830
- key: 'Collection entry 1'
831
- });
832
- expect(ROWS[2].action.label).toEqual('Change');
833
- expect(ROWS[3].action.label).toEqual('custom remove label');
834
- expect(ROWS[4].action.label).toEqual('custom change label');
835
- expect(ROWS[5]).toMatchObject({
836
- key: 'Item 1'
837
- });
838
- expect(ROWS[6]).toMatchObject({
839
- value: 'collection value',
840
- key: 'Some nice text'
841
- });
842
- });
843
- });
844
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2V0Q1lBUm93c0ZvckNvbGxlY3Rpb25QYWdlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiZGVzY3JpYmUiLCJURVhUX0NPTVAiLCJpZCIsImZpZWxkSWQiLCJsYWJlbCIsInR5cGUiLCJEQVRFX0NPTVAiLCJQQUdFUyIsImNvbGxlY3Rpb24iLCJuYW1lIiwiY29tcG9uZW50cyIsIk1BU1RFUl9QQUdFIiwibGFiZWxzIiwiaXRlbSIsImFjdGlvbnMiLCJwYWdlIiwiY2hpbGRQYWdlcyIsIml0IiwiRk9STV9EQVRBIiwiUEFHRSIsImZvcm1EYXRhIiwiUk9XUyIsImdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZSIsImV4cGVjdCIsInRvRXF1YWwiLCJ0ZXN0VGV4dCIsImhpZGVOYW1lRnJvbUNZQSIsIlRJVExFX0ZJRUxEX0lEIiwiY29uY2F0Iiwibm90Iiwia2V5IiwiaGlkZUl0ZW1UaXRsZXMiLCJzaG91bGRTaG93IiwiZmllbGQiLCJvcCIsInRvTWF0Y2hPYmplY3QiLCJhY3Rpb24iLCJjb2xsZWN0aW9uQWN0aXZlSWQiLCJvbmx5U2hvd0FjdGl2ZUVudHJ5T25DWUEiLCJ0ZXh0IiwiRkQiLCJvdGhlckZpZWxkIiwic2hvd193aGVuIiwiaGVhZGluZyIsInNpemUiLCJjb2xsZWN0aW9uSGVhZGluZyIsImNoYW5nZUxpbmtQYWdlIiwiYWN0aW9uUG9zaXRpb24iLCJtYXAiLCJpbmRleCIsIk9WRVJSSURFIiwiY29tcCIsIkNVU1RPTV9GT1JNX0RBVEEiLCJwYXJlbnRBY3RpdmVJZCIsImNoaWxkQWN0aXZlSWQiLCJwYXJlbnQiLCJjaGlsZCIsIkNISUxEX01BU1RFUl9QQUdFIiwibWFzdGVyUGFnZSIsIlBBUkVOVF9NQVNURVJfUEFHRSIsInRlc3RDb2xsZWN0aW9uIiwib3RoZXJDb21wIiwiQ09MTEVDVElPTl9DT01QIiwiTUFTVEVSX1BBR0VfV0lUSF9DT0xMRUNUSU9OIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL0NoZWNrWW91ckFuc3dlcnMvZ2V0Q1lBUm93c0ZvckNvbGxlY3Rpb25QYWdlLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTG9jYWwgaW1wb3J0c1xuaW1wb3J0IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZSBmcm9tICcuL2dldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZSc7XG5cbmRlc2NyaWJlKCd1dGlscy5DaGVja1lvdXJBbnN3ZXJzLmdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZScsICgpID0+IHtcbiAgY29uc3QgVEVYVF9DT01QID0ge1xuICAgIGlkOiAndGVzdFRleHQnLFxuICAgIGZpZWxkSWQ6ICd0ZXN0VGV4dCcsXG4gICAgbGFiZWw6ICdUZXN0IHRleHQnLFxuICAgIHR5cGU6ICd0ZXh0J1xuICB9O1xuICBjb25zdCBEQVRFX0NPTVAgPSB7XG4gICAgaWQ6ICd0ZXN0RGF0ZScsXG4gICAgZmllbGRJZDogJ3Rlc3REYXRlJyxcbiAgICBsYWJlbDogJ1Rlc3QgZGF0ZScsXG4gICAgdHlwZTogJ2RhdGUnXG4gIH07XG4gIGNvbnN0IFBBR0VTID0gW1xuICAgIHtcbiAgICAgIGlkOiAncGFnZTEnLFxuICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICBuYW1lOiAnY29sbGVjdGlvbicsXG4gICAgICB9LFxuICAgICAgY29tcG9uZW50czogW1xuICAgICAgICBURVhUX0NPTVAsXG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ3BhZ2UyJyxcbiAgICAgIGNvbGxlY3Rpb246IHtcbiAgICAgICAgbmFtZTogJ2NvbGxlY3Rpb24nLFxuICAgICAgfSxcbiAgICAgIGNvbXBvbmVudHM6IFtcbiAgICAgICAgREFURV9DT01QLFxuICAgICAgXVxuICAgIH0sXG4gIF07XG4gIGNvbnN0IE1BU1RFUl9QQUdFID0ge1xuICAgIGlkOiAncGFnZTEnLFxuICAgIGNvbGxlY3Rpb246IHtcbiAgICAgIG5hbWU6ICdjb2xsZWN0aW9uJyxcbiAgICAgIGxhYmVsczoge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGVtcGxhdGUtY3VybHktaW4tc3RyaW5nXG4gICAgICAgIGl0ZW06ICdDb2xsZWN0aW9uIGVudHJ5ICR7aW5kZXh9J1xuICAgICAgfSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjaGFuZ2UnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncmVtb3ZlJyxcbiAgICAgICAgICBsYWJlbDogJ2N1c3RvbSByZW1vdmUgbGFiZWwnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnY2hhbmdlJyxcbiAgICAgICAgICBsYWJlbDogJ2N1c3RvbSBjaGFuZ2UgbGFiZWwnLFxuICAgICAgICAgIHBhZ2U6ICdjb25maXJtRGVsZXRlJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBjaGlsZFBhZ2VzOiBQQUdFU1xuICB9O1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIG5vIHJvd3MgZm9yIGEgY29sbGVjdGlvbiBpZiBpdCBkb2VzIG5vdCBleGlzdCBpbiBmb3JtRGF0YScsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7fTtcbiAgICBjb25zdCBQQUdFID0geyAuLi5NQVNURVJfUEFHRSwgZm9ybURhdGE6IEZPUk1fREFUQSB9O1xuICAgIGNvbnN0IFJPV1MgPSBnZXRDWUFSb3dzRm9yQ29sbGVjdGlvblBhZ2UoUEFHRSwgbnVsbCwgbnVsbCwgRk9STV9EQVRBKTtcbiAgICBleHBlY3QoUk9XUy5sZW5ndGgpLnRvRXF1YWwoMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIG5vIHJvd3MgZm9yIGEgY29sbGVjdGlvbiBpZiBpdCBoYXMgbm8gZW50cmllcycsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7IGNvbGxlY3Rpb246IFsgXSB9O1xuICAgIGNvbnN0IFBBR0UgPSB7IC4uLk1BU1RFUl9QQUdFLCBmb3JtRGF0YTogRk9STV9EQVRBIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShQQUdFLCBudWxsLCBudWxsLCBGT1JNX0RBVEEpO1xuICAgIGV4cGVjdChST1dTLmxlbmd0aCkudG9FcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgdGhlIGhpZGVOYW1lRnJvbUNZQSBjb2xsZWN0aW9uIGZsYWcnLCAoKSA9PiB7XG4gICAgY29uc3QgRk9STV9EQVRBID0geyBcbiAgICAgIGNvbGxlY3Rpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIHRlc3RUZXh0OiAnaGVsbG8nXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbnN0IFBBR0UgPSB7IFxuICAgICAgLi4uTUFTVEVSX1BBR0UsIFxuICAgICAgZm9ybURhdGE6IEZPUk1fREFUQSwgXG4gICAgICBjb2xsZWN0aW9uOiB7XG4gICAgICAgIC4uLk1BU1RFUl9QQUdFLmNvbGxlY3Rpb24sXG4gICAgICAgIGhpZGVOYW1lRnJvbUNZQTogdHJ1ZVxuICAgICAgfSBcbiAgICB9O1xuICAgIGNvbnN0IFRJVExFX0ZJRUxEX0lEID0gYCR7UEFHRS5jb2xsZWN0aW9uLm5hbWV9VGl0bGVgO1xuICAgIGNvbnN0IFJPV1MgPSBnZXRDWUFSb3dzRm9yQ29sbGVjdGlvblBhZ2UoUEFHRSwgbnVsbCwgbnVsbCwgRk9STV9EQVRBKTtcbiAgICBleHBlY3QoUk9XU1swXS5maWVsZElkKS5ub3QudG9FcXVhbChUSVRMRV9GSUVMRF9JRCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZm9ybWF0IHRpdGxlcyBjb3JyZWN0bHkgd2hlbiBjb2xsZWN0aW9uLmxhYmVscy5pdGVtIGlzIHNwZWNpZmllZCcsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7XG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgUEFHRSA9IHsgLi4uTUFTVEVSX1BBR0UsIGZvcm1EYXRhOiBGT1JNX0RBVEEgfTtcbiAgICBjb25zdCBST1dTID0gZ2V0Q1lBUm93c0ZvckNvbGxlY3Rpb25QYWdlKFBBR0UsIG51bGwsIG51bGwsIEZPUk1fREFUQSk7XG4gICAgZXhwZWN0KFJPV1MubGVuZ3RoKS50b0VxdWFsKDcpOyAvLyBDb2xsZWN0aW9uIHRpdGxlLCBpdGVtIHRpdGxlLCBhY3Rpb24gcm93cyAmIGNvbXBvbmVudCByb3dzXG4gICAgZXhwZWN0KFJPV1NbMV0ua2V5KS50b0VxdWFsKCdDb2xsZWN0aW9uIGVudHJ5IDEnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoaWRlIHRpdGxlcyB3aGVuIGhpZGVJdGVtVGl0bGVzIGlzIHRydWUnLCAoKSA9PiB7XG4gICAgY29uc3QgRk9STV9EQVRBID0ge1xuICAgICAgY29sbGVjdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcwMScsXG4gICAgICAgICAgdGVzdFRleHQ6ICd2YWx1ZScsXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbnN0IFBBR0UgPSB7IFxuICAgICAgLi4uTUFTVEVSX1BBR0UsIFxuICAgICAgZm9ybURhdGE6IEZPUk1fREFUQSxcbiAgICAgIGNvbGxlY3Rpb246IHtcbiAgICAgICAgLi4uTUFTVEVSX1BBR0UuY29sbGVjdGlvbixcbiAgICAgICAgaGlkZUl0ZW1UaXRsZXM6IHRydWVcbiAgICAgIH0gXG4gICAgfTtcbiAgICBjb25zdCBST1dTID0gZ2V0Q1lBUm93c0ZvckNvbGxlY3Rpb25QYWdlKFBBR0UsIG51bGwsIG51bGwsIEZPUk1fREFUQSk7XG4gICAgZXhwZWN0KFJPV1MubGVuZ3RoKS50b0VxdWFsKDYpOyAvLyBDb2xsZWN0aW9uIHRpdGxlLCBOTyBpdGVtIHRpdGxlLCBhY3Rpb24gcm93cyAmIGNvbXBvbmVudCByb3dzXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGlkZSB0aXRsZXMgd2hlbiBoaWRlSXRlbVRpdGxlcyBpcyBhIHNob3dfd2hlbiB0aGF0IGlzIHRydWUnLCAoKSA9PiB7XG4gICAgY29uc3QgRk9STV9EQVRBID0ge1xuICAgICAgc2hvdWxkU2hvdzogZmFsc2UsXG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgUEFHRSA9IHsgXG4gICAgICAuLi5NQVNURVJfUEFHRSwgXG4gICAgICBmb3JtRGF0YTogRk9STV9EQVRBLFxuICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICAuLi5NQVNURVJfUEFHRS5jb2xsZWN0aW9uLFxuICAgICAgICBoaWRlSXRlbVRpdGxlczogW3tcbiAgICAgICAgICBmaWVsZDogJ3Nob3VsZFNob3cnLFxuICAgICAgICAgIG9wOiAnPScsXG4gICAgICAgICAgdmFsdWU6IGZhbHNlXG4gICAgICAgIH1dXG4gICAgICB9IFxuICAgIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShQQUdFLCBudWxsLCBudWxsLCBGT1JNX0RBVEEpO1xuICAgIGV4cGVjdChST1dTLmxlbmd0aCkudG9FcXVhbCg2KTsgLy8gQ29sbGVjdGlvbiB0aXRsZSwgTk8gaXRlbSB0aXRsZSwgYWN0aW9uIHJvd3MgJiBjb21wb25lbnQgcm93c1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3ZpZGUgZGVmYXVsdCB0aXRsZXMgaWYgY29sbGVjdGlvbi5sYWJlbHMuaXRlbSBpcyBub3Qgc3BlY2lmaWVkJywgKCkgPT4ge1xuICAgIGNvbnN0IEZPUk1fREFUQSA9IHtcbiAgICAgIGNvbGxlY3Rpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnMDEnLFxuICAgICAgICAgIHRlc3RUZXh0OiAndmFsdWUnLFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICBjb25zdCBQQUdFID0geyAuLi5NQVNURVJfUEFHRSwgY29sbGVjdGlvbjogey4uLk1BU1RFUl9QQUdFLmNvbGxlY3Rpb24sIGxhYmVsczoge30gfSwgZm9ybURhdGE6IEZPUk1fREFUQSB9O1xuICAgIGNvbnN0IFJPV1MgPSBnZXRDWUFSb3dzRm9yQ29sbGVjdGlvblBhZ2UoUEFHRSwgbnVsbCwgbnVsbCwgRk9STV9EQVRBKTtcbiAgICBleHBlY3QoUk9XUy5sZW5ndGgpLnRvRXF1YWwoNyk7IC8vIENvbGxlY3Rpb24gdGl0bGUsIGl0ZW0gdGl0bGUsIGFjdGlvbiByb3dzICYgY29tcG9uZW50IHJvd3NcbiAgICBleHBlY3QoUk9XU1sxXS5rZXkpLnRvRXF1YWwoJ0l0ZW0gMScpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiBjb3JyZWN0bHkgZm9ybWF0dGVkIHJvd3MgZm9yIG11dGxpcGxlIGVudHJpZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgRk9STV9EQVRBID0ge1xuICAgICAgY29sbGVjdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcwMScsXG4gICAgICAgICAgdGVzdFRleHQ6ICd2YWx1ZScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAyJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJ1xuICAgICAgICB9LFxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgUEFHRSA9IHsgLi4uTUFTVEVSX1BBR0UsIGZvcm1EYXRhOiBGT1JNX0RBVEEgfTtcbiAgICBjb25zdCBST1dTID0gZ2V0Q1lBUm93c0ZvckNvbGxlY3Rpb25QYWdlKFBBR0UsIG51bGwsIG51bGwsIEZPUk1fREFUQSk7XG4gICAgZXhwZWN0KFJPV1MubGVuZ3RoKS50b0VxdWFsKDEzKTsgLy8gVGl0bGUgcm93ICsgY29tcG9uZW50IHJvdyBmb3IgZWFjaCBpdGVtXG4gICAgZXhwZWN0KFJPV1NbMF0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ29sbGVjdGlvbidcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1sxXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgICBrZXk6ICdDb2xsZWN0aW9uIGVudHJ5IDEnXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbMl0uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdDaGFuZ2UnKTtcbiAgICBleHBlY3QoUk9XU1szXS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSByZW1vdmUgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s0XS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSBjaGFuZ2UgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s1XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJ3ZhbHVlJyxcbiAgICAgIGtleTogJ1Rlc3QgdGV4dCdcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1s2XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJycsXG4gICAgICBrZXk6ICdUZXN0IGRhdGUnXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbN10pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ29sbGVjdGlvbiBlbnRyeSAyJ1xuICAgIH0pO1xuICAgIGV4cGVjdChST1dTWzhdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnQ2hhbmdlJyk7XG4gICAgZXhwZWN0KFJPV1NbOV0uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdjdXN0b20gcmVtb3ZlIGxhYmVsJyk7XG4gICAgZXhwZWN0KFJPV1NbMTBdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIGNoYW5nZSBsYWJlbCcpO1xuICAgIGV4cGVjdChST1dTWzExXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJ3ZhbHVlJyxcbiAgICAgIGtleTogJ1Rlc3QgdGV4dCdcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1sxMl0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdmFsdWU6ICcnLFxuICAgICAga2V5OiAnVGVzdCBkYXRlJ1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHVzZSB2YWx1ZXMgZnJvbSB0b3AtbGV2ZWwgZm9ybURhdGEgaWYgdGhleSBkb25cXCd0IGV4aXN0IGluIHRoZSBpdGVtJywgKCkgPT4ge1xuICAgIGNvbnN0IEZPUk1fREFUQSA9IHtcbiAgICAgIHRlc3RUZXh0OiAndmFsdWUnLFxuICAgICAgY29sbGVjdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcwMScsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfTtcbiAgICBjb25zdCBQQUdFID0ge1xuICAgICAgLi4uTUFTVEVSX1BBR0UsXG4gICAgICBjaGlsZFBhZ2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5QQUdFU1swXSxcbiAgICAgICAgICBmb3JtRGF0YTogRk9STV9EQVRBXG4gICAgICAgIH0sXG4gICAgICAgIFBBR0VTWzFdXG4gICAgICBdLFxuICAgICAgZm9ybURhdGE6IEZPUk1fREFUQVxuICAgIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShQQUdFLCBudWxsLCBudWxsLCBGT1JNX0RBVEEpO1xuICAgIGV4cGVjdChST1dTLmxlbmd0aCkudG9FcXVhbCg3KTsgLy8gVGl0bGUgcm93ICsgY29tcG9uZW50IHJvdyBmb3IgZWFjaCBpdGVtXG4gICAgZXhwZWN0KFJPV1NbMF0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ29sbGVjdGlvbidcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1sxXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgICBrZXk6ICdDb2xsZWN0aW9uIGVudHJ5IDEnXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbMl0uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdDaGFuZ2UnKTtcbiAgICBleHBlY3QoUk9XU1szXS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSByZW1vdmUgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s0XS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSBjaGFuZ2UgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s1XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJ3ZhbHVlJyxcbiAgICAgIGtleTogJ1Rlc3QgdGV4dCdcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1s2XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJycsXG4gICAgICBrZXk6ICdUZXN0IGRhdGUnXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3RseSBmb3JtYXR0ZWQgcm93cyBmb3Igb25seSB0aGUgYWN0aXZlIGVudHJ5IHdoZW4gcGFnZS5jb2xsZWN0aW9uLm9ubHlTaG93QWN0aXZlRW50cnlPbkNZQSBpcyBkZWZpbmVkJywgKCkgPT4ge1xuICAgIGNvbnN0IEZPUk1fREFUQSA9IHtcbiAgICAgIGNvbGxlY3Rpb25BY3RpdmVJZDogJzAyJyxcbiAgICAgIGNvbGxlY3Rpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnMDEnLFxuICAgICAgICAgIHRlc3RUZXh0OiAndmFsdWUnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcwMicsXG4gICAgICAgICAgdGVzdFRleHQ6ICd2YWx1ZSdcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbnN0IFBBR0UgPSB7IFxuICAgICAgLi4uTUFTVEVSX1BBR0UsIFxuICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICAuLi5NQVNURVJfUEFHRS5jb2xsZWN0aW9uLFxuICAgICAgICBvbmx5U2hvd0FjdGl2ZUVudHJ5T25DWUE6IHRydWVcbiAgICAgIH0sXG4gICAgICBmb3JtRGF0YTogRk9STV9EQVRBIFxuICAgIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShQQUdFLCBudWxsLCBudWxsLCBGT1JNX0RBVEEpO1xuICAgIGV4cGVjdChST1dTLmxlbmd0aCkudG9FcXVhbCg3KTsgLy8gVGl0bGUgcm93ICsgY29tcG9uZW50IHJvdyBmb3Igb25seSB0aGUgYWN0aXZlIGl0ZW0uXG4gICAgZXhwZWN0KFJPV1NbMF0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ29sbGVjdGlvbidcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1sxXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgICBrZXk6ICdDb2xsZWN0aW9uIGVudHJ5IDInXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbMl0uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdDaGFuZ2UnKTtcbiAgICBleHBlY3QoUk9XU1szXS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSByZW1vdmUgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s0XS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSBjaGFuZ2UgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s1XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJ3ZhbHVlJyxcbiAgICAgIGtleTogJ1Rlc3QgdGV4dCdcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1s2XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJycsXG4gICAgICBrZXk6ICdUZXN0IGRhdGUnXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3RseSBmb3JtYXR0ZWQgcm93cyBmb3Igb25seSB0aGUgYWN0aXZlIGVudHJ5IHdoZW4gcGFnZS5jb2xsZWN0aW9uLm9ubHlTaG93QWN0aXZlRW50cnlPbkNZQSBpcyBhbiBhcnJheScsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7XG4gICAgICB0ZXh0OiAnYmx1ZScsXG4gICAgICBjb2xsZWN0aW9uQWN0aXZlSWQ6ICcwMicsXG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnMDInLFxuICAgICAgICAgIHRlc3RUZXh0OiAndmFsdWUnXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfTtcbiAgICBjb25zdCBQQUdFID0ge1xuICAgICAgLi4uTUFTVEVSX1BBR0UsXG4gICAgICBjb2xsZWN0aW9uOiB7XG4gICAgICAgIC4uLk1BU1RFUl9QQUdFLmNvbGxlY3Rpb24sXG4gICAgICAgIG9ubHlTaG93QWN0aXZlRW50cnlPbkNZQTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkOiAndGV4dCcsXG4gICAgICAgICAgICBvcDogJ2VxJyxcbiAgICAgICAgICAgIHZhbHVlOiAnYmx1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBmb3JtRGF0YTogRk9STV9EQVRBLFxuICAgIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShQQUdFLCBudWxsLCBudWxsLCBGT1JNX0RBVEEpO1xuICAgIGV4cGVjdChST1dTLmxlbmd0aCkudG9FcXVhbCg3KTsgLy8gVGl0bGUgcm93ICsgY29tcG9uZW50IHJvdyBmb3Igb25seSB0aGUgYWN0aXZlIGl0ZW0uXG4gICAgZXhwZWN0KFJPV1NbMF0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ29sbGVjdGlvbidcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1sxXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgICBrZXk6ICdDb2xsZWN0aW9uIGVudHJ5IDInXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbMl0uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdDaGFuZ2UnKTtcbiAgICBleHBlY3QoUk9XU1szXS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSByZW1vdmUgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s0XS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSBjaGFuZ2UgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s1XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJ3ZhbHVlJyxcbiAgICAgIGtleTogJ1Rlc3QgdGV4dCdcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1s2XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJycsXG4gICAgICBrZXk6ICdUZXN0IGRhdGUnXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhjbHVkZSBjb21wb25lbnRzIHRoYXQgc2hvdWxkIG5vdCBiZSBzaG93bicsICgpID0+IHtcbiAgICBjb25zdCBGRD0ge1xuICAgICAgY29sbGVjdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcwMScsXG4gICAgICAgICAgb3RoZXJGaWVsZDogJ3llcycsXG4gICAgICAgICAgdGVzdFRleHQ6ICd0ZXN0aW5nJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcwMicsXG4gICAgICAgICAgb3RoZXJGaWVsZDogJ25vJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3Rlc3RpbmcnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gICAgY29uc3QgUEFHRSA9IHsgXG4gICAgICAuLi5NQVNURVJfUEFHRSwgXG4gICAgICBjb2xsZWN0aW9uOiB7XG4gICAgICAgIG5hbWU6ICdjb2xsZWN0aW9uJ1xuICAgICAgfSxcbiAgICAgIGZvcm1EYXRhOiBGRCxcbiAgICAgIGNoaWxkUGFnZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC4uLlBBR0VTWzBdLFxuICAgICAgICAgIGNvbXBvbmVudHM6IFt7XG4gICAgICAgICAgICBpZDogJ3Rlc3RUZXh0JyxcbiAgICAgICAgICAgIGZpZWxkSWQ6ICd0ZXN0VGV4dCcsXG4gICAgICAgICAgICBsYWJlbDogJ1Rlc3QgdGV4dCcsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICBzaG93X3doZW46IHtcbiAgICAgICAgICAgICAgZmllbGQ6IFwib3RoZXJGaWVsZFwiLFxuICAgICAgICAgICAgICBvcDogXCIhPVwiLFxuICAgICAgICAgICAgICB2YWx1ZTogXCJ5ZXNcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1dXG4gICAgICAgIH1cbiAgICAgIF0gXG4gICAgfTtcbiAgICBjb25zdCBST1dTID0gZ2V0Q1lBUm93c0ZvckNvbGxlY3Rpb25QYWdlKFBBR0UsIG51bGwsIG51bGwsIEZEKTtcbiAgICBleHBlY3QoUk9XUy5sZW5ndGgpLnRvRXF1YWwoNCk7XG4gICAgZXhwZWN0KFJPV1NbMF0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ29sbGVjdGlvbidcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1sxXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgICBrZXk6ICdJdGVtIDEnXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbMl0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnSXRlbSAyJ1xuICAgIH0pO1xuICAgIGV4cGVjdChST1dTWzNdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHZhbHVlOiAndGVzdGluZycsXG4gICAgICBrZXk6ICdUZXN0IHRleHQnXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhjbHVkZSBwYWdlcyB0aGF0IHNob3VsZCBub3QgYmUgc2hvd24nLCAoKSA9PiB7XG4gICAgY29uc3QgRkQ9IHtcbiAgICAgIGNvbGxlY3Rpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnMDEnLFxuICAgICAgICAgIG90aGVyRmllbGQ6ICd5ZXMnLFxuICAgICAgICAgIHRlc3RUZXh0OiAndGVzdGluZydcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgICBjb25zdCBQQUdFID0geyBcbiAgICAgIC4uLk1BU1RFUl9QQUdFLCBcbiAgICAgIGNvbGxlY3Rpb246IHtcbiAgICAgICAgbmFtZTogJ2NvbGxlY3Rpb24nXG4gICAgICB9LFxuICAgICAgZm9ybURhdGE6IEZELFxuICAgICAgY2hpbGRQYWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgLi4uUEFHRVNbMF0sXG4gICAgICAgICAgc2hvd193aGVuOiB7XG4gICAgICAgICAgICBmaWVsZDogXCJvdGhlckZpZWxkXCIsXG4gICAgICAgICAgICBvcDogXCIhPVwiLFxuICAgICAgICAgICAgdmFsdWU6IFwieWVzXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFBBR0VTWzFdXG4gICAgICBdIFxuICAgIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShQQUdFLCBudWxsLCBudWxsLCBGRCk7XG4gICAgZXhwZWN0KFJPV1MubGVuZ3RoKS50b0VxdWFsKDMpOyAvLyBNaXNzaW5nIHRoZSBwYWdlIHdpdGggdGhlIHRleHQgY29tcG9uZW50IG9uLlxuICAgIGV4cGVjdChST1dTWzBdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHR5cGU6ICdoZWFkaW5nJyxcbiAgICAgIGtleTogJ0NvbGxlY3Rpb24nXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbMV0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnSXRlbSAxJ1xuICAgIH0pO1xuICAgIGV4cGVjdChST1dTWzJdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIGtleTogJ1Rlc3QgZGF0ZSdcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBpbmNsdWRlIHJvd3MgZm9yIGN1c3RvbSBoZWFkaW5ncycsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7XG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgUEFHRSA9IHsgXG4gICAgICAuLi5NQVNURVJfUEFHRSwgXG4gICAgICBmb3JtRGF0YTogRk9STV9EQVRBLFxuICAgICAgY2hpbGRQYWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgLi4uUEFHRVNbMF0sXG4gICAgICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICAgICAgLi4uUEFHRVNbMF0uY29sbGVjdGlvbixcbiAgICAgICAgICAgIGhlYWRpbmc6IHsgc2l6ZTogJ20nLCB0ZXh0OiAnQ3VzdG9tIHBhZ2UgaGVhZGluZycgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbnN0IFJPV1MgPSBnZXRDWUFSb3dzRm9yQ29sbGVjdGlvblBhZ2UoUEFHRSwgbnVsbCwgbnVsbCwgRk9STV9EQVRBKTtcbiAgICBleHBlY3QoUk9XUy5sZW5ndGgpLnRvRXF1YWwoNyk7IFxuICAgIGV4cGVjdChST1dTWzBdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHR5cGU6ICdoZWFkaW5nJyxcbiAgICAgIGtleTogJ0NvbGxlY3Rpb24nXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbMV0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ29sbGVjdGlvbiBlbnRyeSAxJ1xuICAgIH0pO1xuICAgIGV4cGVjdChST1dTWzJdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnQ2hhbmdlJyk7XG4gICAgZXhwZWN0KFJPV1NbM10uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdjdXN0b20gcmVtb3ZlIGxhYmVsJyk7XG4gICAgZXhwZWN0KFJPV1NbNF0uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdjdXN0b20gY2hhbmdlIGxhYmVsJyk7XG4gICAgZXhwZWN0KFJPV1NbNV0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ3VzdG9tIHBhZ2UgaGVhZGluZycsXG4gICAgICBzaXplOiAnbSdcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1s2XSkudG9NYXRjaE9iamVjdCh7IFxuICAgICAgdmFsdWU6ICd2YWx1ZScsIFxuICAgICAga2V5OiAnVGVzdCB0ZXh0JyBcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBpbnRlcnBvbGF0aW9uIG9mIGN1c3RvbSBoZWFkaW5ncycsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7XG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgUEFHRSA9IHsgXG4gICAgICAuLi5NQVNURVJfUEFHRSwgXG4gICAgICBmb3JtRGF0YTogRk9STV9EQVRBLFxuICAgICAgY2hpbGRQYWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgLi4uUEFHRVNbMF0sXG4gICAgICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICAgICAgLi4uUEFHRVNbMF0uY29sbGVjdGlvbixcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmdcbiAgICAgICAgICAgIGhlYWRpbmc6IHsgc2l6ZTogJ20nLCB0ZXh0OiAnaW50ZXJwb2xhdGVkIHRleHQ6ICR7dGVzdFRleHR9JyB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShQQUdFLCBudWxsLCBudWxsLCBGT1JNX0RBVEEpO1xuICAgIGV4cGVjdChST1dTLmxlbmd0aCkudG9FcXVhbCg3KTsgXG4gICAgZXhwZWN0KFJPV1NbMF0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ29sbGVjdGlvbidcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1sxXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgICBrZXk6ICdDb2xsZWN0aW9uIGVudHJ5IDEnXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbMl0uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdDaGFuZ2UnKTtcbiAgICBleHBlY3QoUk9XU1szXS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSByZW1vdmUgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s0XS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSBjaGFuZ2UgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s1XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgICBrZXk6ICdpbnRlcnBvbGF0ZWQgdGV4dDogdmFsdWUnLFxuICAgICAgc2l6ZTogJ20nXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbNl0pLnRvTWF0Y2hPYmplY3QoeyBcbiAgICAgIHZhbHVlOiAndmFsdWUnLCBcbiAgICAgIGtleTogJ1Rlc3QgdGV4dCcgXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxvdyBjb25maWd1cmF0aW9uIG9mIGNvbGxlY3Rpb24gbmFtZSBoZWFkaW5ncycsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7XG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgUEFHRSA9IHsgXG4gICAgICAuLi5NQVNURVJfUEFHRSwgXG4gICAgICBmb3JtRGF0YTogRk9STV9EQVRBLFxuICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICAuLi5NQVNURVJfUEFHRS5jb2xsZWN0aW9uLFxuICAgICAgICBjb2xsZWN0aW9uSGVhZGluZzoge1xuICAgICAgICAgIHRleHQ6ICdDdXN0b20gY29sbGVjdGlvbiBoZWFkaW5nJyxcbiAgICAgICAgICBzaXplOiAnbScsXG4gICAgICAgICAgY2hhbmdlTGlua1BhZ2U6IFBBR0VTWzBdLmlkXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjaGlsZFBhZ2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5QQUdFU1swXSxcbiAgICAgICAgICBjb2xsZWN0aW9uOiB7XG4gICAgICAgICAgICAuLi5QQUdFU1swXS5jb2xsZWN0aW9uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICBjb25zdCBST1dTID0gZ2V0Q1lBUm93c0ZvckNvbGxlY3Rpb25QYWdlKFBBR0UsIG51bGwsIG51bGwsIEZPUk1fREFUQSk7XG4gICAgZXhwZWN0KFJPV1MubGVuZ3RoKS50b0VxdWFsKDYpOyBcbiAgICBleHBlY3QoUk9XU1swXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiAnaGVhZGluZ1dpdGhBY3Rpb24nLFxuICAgICAga2V5OiAnQ3VzdG9tIGNvbGxlY3Rpb24gaGVhZGluZydcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZWZhdWx0IHRvIGEgdGl0bGUgc2l6ZSBvZiBzbWFsbCBpZiBvbmUgaXMgbm90IHNwZWNpZmllZCcsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7XG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgUEFHRSA9IHsgXG4gICAgICAuLi5NQVNURVJfUEFHRSwgXG4gICAgICBmb3JtRGF0YTogRk9STV9EQVRBLFxuICAgICAgY2hpbGRQYWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgLi4uUEFHRVNbMF0sXG4gICAgICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICAgICAgLi4uUEFHRVNbMF0uY29sbGVjdGlvbixcbiAgICAgICAgICAgIGhlYWRpbmc6IHsgdGV4dDogJ0N1c3RvbSBwYWdlIGhlYWRpbmcnIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICBjb25zdCBST1dTID0gZ2V0Q1lBUm93c0ZvckNvbGxlY3Rpb25QYWdlKFBBR0UsIG51bGwsIG51bGwsIEZPUk1fREFUQSk7XG4gICAgZXhwZWN0KFJPV1NbNV0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ3VzdG9tIHBhZ2UgaGVhZGluZycsXG4gICAgICBzaXplOiAncydcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwb3NpdGlvbiBhY3Rpb25zIHVuZGVyIHRoZSB0aXRsZSBpZiBhY3Rpb25Qb3NpdGlvbiBmbGFnIGlzIG5vdCBzcGVjaWZpZWQnLCAoKSA9PiB7XG4gICAgY29uc3QgRk9STV9EQVRBID0ge1xuICAgICAgY29sbGVjdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcwMScsXG4gICAgICAgICAgdGVzdFRleHQ6ICd2YWx1ZScsXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbnN0IFBBR0UgPSB7IFxuICAgICAgLi4uTUFTVEVSX1BBR0UsIFxuICAgICAgZm9ybURhdGE6IEZPUk1fREFUQSxcbiAgICB9O1xuICAgIGNvbnN0IFJPV1MgPSBnZXRDWUFSb3dzRm9yQ29sbGVjdGlvblBhZ2UoUEFHRSwgbnVsbCwgbnVsbCwgRk9STV9EQVRBKTtcbiAgICBleHBlY3QoUk9XU1syXS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ0NoYW5nZScpO1xuICAgIGV4cGVjdChST1dTWzNdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIHJlbW92ZSBsYWJlbCcpO1xuICAgIGV4cGVjdChST1dTWzRdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIGNoYW5nZSBsYWJlbCcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBvc2l0aW9uIGFjdGlvbnMgdW5kZXIgdGhlIHRpdGxlIGlmIGFjdGlvblBvc2l0aW9uIGZsYWcgaXMgdG9wJywgKCkgPT4ge1xuICAgIGNvbnN0IEZPUk1fREFUQSA9IHtcbiAgICAgIGNvbGxlY3Rpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnMDEnLFxuICAgICAgICAgIHRlc3RUZXh0OiAndmFsdWUnLFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICBjb25zdCBQQUdFID0geyBcbiAgICAgIC4uLk1BU1RFUl9QQUdFLCBcbiAgICAgIGNvbGxlY3Rpb246IHtcbiAgICAgICAgLi4uTUFTVEVSX1BBR0UuY29sbGVjdGlvbixcbiAgICAgICAgYWN0aW9uUG9zaXRpb246ICd0b3AnXG4gICAgICB9LFxuICAgICAgZm9ybURhdGE6IEZPUk1fREFUQSxcbiAgICB9O1xuICAgIGNvbnN0IFJPV1MgPSBnZXRDWUFSb3dzRm9yQ29sbGVjdGlvblBhZ2UoUEFHRSwgbnVsbCwgbnVsbCwgRk9STV9EQVRBKTtcbiAgICBleHBlY3QoUk9XU1syXS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ0NoYW5nZScpO1xuICAgIGV4cGVjdChST1dTWzNdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIHJlbW92ZSBsYWJlbCcpO1xuICAgIGV4cGVjdChST1dTWzRdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIGNoYW5nZSBsYWJlbCcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBvc2l0aW9uIGFjdGlvbnMgdW5kZXIgYWxsIG90aGVyIHJvd3MgaWYgYWN0aW9uUG9zaXRpb24gZmxhZyBpcyBib3R0b20nLCAoKSA9PiB7XG4gICAgY29uc3QgRk9STV9EQVRBID0ge1xuICAgICAgY29sbGVjdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcwMScsXG4gICAgICAgICAgdGVzdFRleHQ6ICd2YWx1ZScsXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbnN0IFBBR0UgPSB7IFxuICAgICAgLi4uTUFTVEVSX1BBR0UsIFxuICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICAuLi5NQVNURVJfUEFHRS5jb2xsZWN0aW9uLFxuICAgICAgICBhY3Rpb25Qb3NpdGlvbjogJ2JvdHRvbSdcbiAgICAgIH0sXG4gICAgICBmb3JtRGF0YTogRk9STV9EQVRBLFxuICAgIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShQQUdFLCBudWxsLCBudWxsLCBGT1JNX0RBVEEpO1xuICAgIGV4cGVjdChST1dTW1JPV1MubGVuZ3RoIC0gM10uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdDaGFuZ2UnKTtcbiAgICBleHBlY3QoUk9XU1tST1dTLmxlbmd0aCAtIDJdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIHJlbW92ZSBsYWJlbCcpO1xuICAgIGV4cGVjdChST1dTW1JPV1MubGVuZ3RoIC0gMV0uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdjdXN0b20gY2hhbmdlIGxhYmVsJyk7XG4gIH0pO1xuXG4gICBpdCgnU2hvdyBzaG93IHRoZSBjb2xsZWN0aW9uIGFjdGlvbiB3aGVuIHNob3dfd2hlbiBjb25kaXRpb24gaXMgdHJ1ZScsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7XG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgUEFHRSA9IHsgXG4gICAgICAuLi5NQVNURVJfUEFHRSwgXG4gICAgICBjb2xsZWN0aW9uOiB7XG4gICAgICAgIC4uLk1BU1RFUl9QQUdFLmNvbGxlY3Rpb24sXG4gICAgICAgIC8vIEFkZCBhIHNob3dfd2hlbiB0byB0aGUgY29sbGVjaXRvbiBhY3Rpb24uXG4gICAgICAgIGFjdGlvbnM6IE1BU1RFUl9QQUdFLmNvbGxlY3Rpb24uYWN0aW9ucy5tYXAoKGFjdGlvbiwgaW5kZXgpID0+XG4gICAgICAgICAgaW5kZXggPT09IDFcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgICAgICAgICBzaG93X3doZW46IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IFwiY29sbGVjdGlvbi5sZW5ndGhcIixcbiAgICAgICAgICAgICAgICAgICAgb3A6IFwiPVwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBhY3Rpb25cbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIGZvcm1EYXRhOiBGT1JNX0RBVEEsXG4gICAgfTtcblxuICAgIGNvbnN0IFJPV1MgPSBnZXRDWUFSb3dzRm9yQ29sbGVjdGlvblBhZ2UoUEFHRSwgbnVsbCwgbnVsbCwgRk9STV9EQVRBKTtcbiAgICBleHBlY3QoUk9XU1syXS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ0NoYW5nZScpO1xuICAgIGV4cGVjdChST1dTWzNdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIHJlbW92ZSBsYWJlbCcpO1xuICAgIGV4cGVjdChST1dTWzRdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIGNoYW5nZSBsYWJlbCcpO1xuICB9KTtcblxuICBpdCgnU2hvdWxkIGhpZGUgdGhlIGNvbGxlY3Rpb24gYWN0aW9uIHdoZW4gc2hvd193aGVuIGNvbmRpdGlvbiBpcyBmYWxzZScsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7XG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgICAgIGNvbnN0IFBBR0UgPSB7IFxuICAgICAgLi4uTUFTVEVSX1BBR0UsIFxuICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICAuLi5NQVNURVJfUEFHRS5jb2xsZWN0aW9uLFxuICAgICAgICAvLyBBZGQgYSBzaG93X3doZW4gdG8gdGhlIGNvbGxlY2l0b24gYWN0aW9uLlxuICAgICAgICBhY3Rpb25zOiBNQVNURVJfUEFHRS5jb2xsZWN0aW9uLmFjdGlvbnMubWFwKChhY3Rpb24sIGluZGV4KSA9PlxuICAgICAgICAgIGluZGV4ID09PSAxXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgICAgICAgICAgc2hvd193aGVuOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBcImNvbGxlY3Rpb24ubGVuZ3RoXCIsXG4gICAgICAgICAgICAgICAgICAgIG9wOiBcIj1cIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDEwXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGFjdGlvblxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgZm9ybURhdGE6IEZPUk1fREFUQSxcbiAgICB9O1xuICAgIGNvbnN0IFJPV1MgPSBnZXRDWUFSb3dzRm9yQ29sbGVjdGlvblBhZ2UoUEFHRSwgbnVsbCwgbnVsbCwgRk9STV9EQVRBKTtcbiAgICBleHBlY3QoUk9XU1syXS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ0NoYW5nZScpO1xuICAgIGV4cGVjdChST1dTWzNdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIGNoYW5nZSBsYWJlbCcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGlnbm9yZSB0aGUgcmVzdWx0IG9mIHRoZSBvdmVycmlkZSBmdW5jdGlvbiBpZiBpdCByZXR1cm5zIG51bGxpc2gnLCAoKSA9PiB7XG4gICAgY29uc3QgRk9STV9EQVRBID0ge1xuICAgICAgY29sbGVjdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcwMScsXG4gICAgICAgICAgdGVzdFRleHQ6ICd2YWx1ZScsXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbnN0IFBBR0UgPSB7IC4uLk1BU1RFUl9QQUdFLCBmb3JtRGF0YTogRk9STV9EQVRBIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShQQUdFLCBudWxsLCAoKSA9PiBudWxsLCBGT1JNX0RBVEEpO1xuICAgIGV4cGVjdChST1dTLmxlbmd0aCkudG9FcXVhbCg3KTsgLy8gQ29sbGVjdGlvbiB0aXRsZSwgaXRlbSB0aXRsZSwgYWN0aW9uIHJvd3MgJiBjb21wb25lbnQgcm93c1xuICAgIGV4cGVjdChST1dTWzVdLmtleSkudG9FcXVhbChgVGVzdCB0ZXh0YCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdXNlIHRoZSByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdmVycmlkZSBmdW5jdGlvbiBpZiBwcm92aWRlZCcsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7XG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0VGV4dDogJ3ZhbHVlJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYXJyb3ctYm9keS1zdHlsZVxuICAgIGNvbnN0IE9WRVJSSURFID0gKHBhZ2UsIGNvbXApID0+IHtcbiAgICAgIC8vIFRoaXMgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggY29tcG9uZW50IG9uIHRoZSBwYWdlLFxuICAgICAgLy8gcmV0dXJuaW5nIGEgY3VzdG9tIHJvdyBvYmplY3QuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGBDdXN0b21Sb3dGb3Ike2NvbXAubGFiZWx9YFxuICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IFBBR0UgPSB7IC4uLk1BU1RFUl9QQUdFLCBmb3JtRGF0YTogRk9STV9EQVRBIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShQQUdFLCBudWxsLCBPVkVSUklERSwgRk9STV9EQVRBKTtcbiAgICBleHBlY3QoUk9XUy5sZW5ndGgpLnRvRXF1YWwoNyk7IC8vIENvbGxlY3Rpb24gdGl0bGUsIGl0ZW0gdGl0bGUsIGFjdGlvbiByb3dzICYgY29tcG9uZW50IHJvd3NcbiAgICBleHBlY3QoUk9XU1s1XS5rZXkpLnRvRXF1YWwoYEN1c3RvbVJvd0ZvciR7VEVYVF9DT01QLmxhYmVsfWApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSByb3dzIGZvciBuZXN0ZWQgY29sbGVjdGlvbnMgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIGNvbnN0IENVU1RPTV9GT1JNX0RBVEEgPSB7XG4gICAgICBwYXJlbnRBY3RpdmVJZDogJzAwMScsXG4gICAgICBjaGlsZEFjdGl2ZUlkOiAnMDAxJyxcbiAgICAgIHBhcmVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcwMDEnLFxuICAgICAgICAgIHRlc3RUZXh0OiAnYWxwaGEnLFxuICAgICAgICAgIGNoaWxkOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnMDAxJyxcbiAgICAgICAgICAgICAgdGVzdFRleHQ6ICdicmF2bydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbnN0IENISUxEX01BU1RFUl9QQUdFID0ge1xuICAgICAgaWQ6ICdjaGlsZFBhZ2UnLFxuICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICBuYW1lOiAncGFyZW50LmNoaWxkJyxcbiAgICAgICAgbWFzdGVyUGFnZTogdHJ1ZSxcbiAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZ1xuICAgICAgICAgIGl0ZW06ICdDaGlsZCBudW1iZXIgJHtpbmRleH0nXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnY2hhbmdlJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ3JlbW92ZScsXG4gICAgICAgICAgICBsYWJlbDogJ2N1c3RvbSByZW1vdmUgbGFiZWwnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgY2hpbGRQYWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdjaGlsZFBhZ2UnLFxuICAgICAgICAgIGNvbGxlY3Rpb246IHtcbiAgICAgICAgICAgIG5hbWU6ICdwYXJlbnQuY2hpbGQnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wb25lbnRzOiBbXG4gICAgICAgICAgICBURVhUX0NPTVBcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbnN0IFBBUkVOVF9NQVNURVJfUEFHRSA9IHtcbiAgICAgIGlkOiAncGFyZW50UGFnZScsXG4gICAgICBjb2xsZWN0aW9uOiB7XG4gICAgICAgIG5hbWU6ICdwYXJlbnQnLFxuICAgICAgICBtYXN0ZXJQYWdlOiB0cnVlXG4gICAgICB9LFxuICAgICAgY2hpbGRQYWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdwYXJlbnRQYWdlJyxcbiAgICAgICAgICBjb2xsZWN0aW9uOiB7XG4gICAgICAgICAgICBuYW1lOiAncGFyZW50J1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tcG9uZW50czogW1xuICAgICAgICAgICAgVEVYVF9DT01QXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBDSElMRF9NQVNURVJfUEFHRVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgUEFHRSA9IHsgLi4uUEFSRU5UX01BU1RFUl9QQUdFLCBmb3JtRGF0YTogQ1VTVE9NX0ZPUk1fREFUQSB9O1xuICAgIGNvbnN0IFJPV1MgPSBnZXRDWUFSb3dzRm9yQ29sbGVjdGlvblBhZ2UoUEFHRSwgbnVsbCwgbnVsbCwgQ1VTVE9NX0ZPUk1fREFUQSk7XG4gICAgZXhwZWN0KFJPV1MubGVuZ3RoKS50b0VxdWFsKDgpO1xuICAgIGV4cGVjdChST1dTWzBdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHR5cGU6ICdoZWFkaW5nJyxcbiAgICAgIGtleTogJ1BhcmVudCdcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1sxXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgICBrZXk6ICdJdGVtIDEnXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbMl0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdmFsdWU6ICdhbHBoYScsXG4gICAgICBrZXk6ICdUZXN0IHRleHQnXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbM10pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ2hpbGQnXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbNF0pLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAga2V5OiAnQ2hpbGQgbnVtYmVyIDEnXG4gICAgfSk7XG4gICAgZXhwZWN0KFJPV1NbNV0uYWN0aW9uLmxhYmVsKS50b0VxdWFsKCdDaGFuZ2UnKTtcbiAgICBleHBlY3QoUk9XU1s2XS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ2N1c3RvbSByZW1vdmUgbGFiZWwnKTtcbiAgICBleHBlY3QoUk9XU1s3XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJ2JyYXZvJyxcbiAgICAgIGtleTogJ1Rlc3QgdGV4dCdcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgcm93cyBmb3IgdGhlIENvbGxlY3Rpb24gY29tcG9uZW50IGNvcnJlY3RseScsICgpID0+IHtcbiAgICBjb25zdCBGT1JNX0RBVEEgPSB7XG4gICAgICBjb2xsZWN0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzAxJyxcbiAgICAgICAgICB0ZXN0Q29sbGVjdGlvbjogW3t0ZXN0VGV4dDogJ2NvbGxlY3Rpb24gdmFsdWUnfV0sXG4gICAgICAgICAgb3RoZXJDb21wOiAnb25lJ1xuICAgICAgICB9XG4gICAgICBdLFxuICAgIH07XG4gICAgY29uc3QgQ09MTEVDVElPTl9DT01QID0ge1xuICAgICAgaWQ6ICd0ZXN0Q29sbGVjdGlvbicsXG4gICAgICBmaWVsZElkOiAndGVzdENvbGxlY3Rpb24nLFxuICAgICAgbGFiZWw6ICdUZXN0IGNvbGxlY3Rpb24nLFxuICAgICAgdHlwZTogJ2NvbGxlY3Rpb24nLFxuICAgICAgaXRlbTogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICd0ZXN0VGV4dCcsXG4gICAgICAgICAgZmllbGRJZDogJ3Rlc3RUZXh0JyxcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgbGFiZWw6ICdTb21lIG5pY2UgdGV4dCcsXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBzaG93X3doZW46IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpZWxkOiAnb3RoZXJDb21wJyxcbiAgICAgICAgICBvcDogJ2VxJyxcbiAgICAgICAgICB2YWx1ZTogJ29uZSdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29uc3QgTUFTVEVSX1BBR0VfV0lUSF9DT0xMRUNUSU9OID0ge1xuICAgICAgaWQ6ICdwYWdlMScsXG4gICAgICBjb2xsZWN0aW9uOiB7XG4gICAgICAgIG5hbWU6ICdjb2xsZWN0aW9uJyxcbiAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZ1xuICAgICAgICAgIGl0ZW06ICdDb2xsZWN0aW9uIGVudHJ5ICR7aW5kZXh9J1xuICAgICAgICB9LFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ2NoYW5nZSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdyZW1vdmUnLFxuICAgICAgICAgICAgbGFiZWw6ICdjdXN0b20gcmVtb3ZlIGxhYmVsJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ2NoYW5nZScsXG4gICAgICAgICAgICBsYWJlbDogJ2N1c3RvbSBjaGFuZ2UgbGFiZWwnLFxuICAgICAgICAgICAgcGFnZTogJ2NvbmZpcm1EZWxldGUnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgY2hpbGRQYWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdwYWdlMScsXG4gICAgICAgICAgY29sbGVjdGlvbjogeyBcbiAgICAgICAgICAgIG5hbWU6ICdjb2xsZWN0aW9uJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbXBvbmVudHM6IFtcbiAgICAgICAgICAgIENPTExFQ1RJT05fQ09NUCxcbiAgICAgICAgICBdLFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZm9ybURhdGE6IEZPUk1fREFUQVxuICAgIH07XG4gICAgY29uc3QgUk9XUyA9IGdldENZQVJvd3NGb3JDb2xsZWN0aW9uUGFnZShNQVNURVJfUEFHRV9XSVRIX0NPTExFQ1RJT04sIG51bGwsIG51bGwsIEZPUk1fREFUQSk7XG4gICAgZXhwZWN0KFJPV1MubGVuZ3RoKS50b0VxdWFsKDcpOyAvLyBUaXRsZSByb3cgKyBjb21wb25lbnQgcm93IGZvciBlYWNoIGl0ZW1cbiAgICBleHBlY3QoUk9XU1swXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgICBrZXk6ICdDb2xsZWN0aW9uJ1xuICAgIH0pO1xuICAgIGV4cGVjdChST1dTWzFdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHR5cGU6ICdoZWFkaW5nJyxcbiAgICAgIGtleTogJ0NvbGxlY3Rpb24gZW50cnkgMSdcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1syXS5hY3Rpb24ubGFiZWwpLnRvRXF1YWwoJ0NoYW5nZScpO1xuICAgIGV4cGVjdChST1dTWzNdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIHJlbW92ZSBsYWJlbCcpO1xuICAgIGV4cGVjdChST1dTWzRdLmFjdGlvbi5sYWJlbCkudG9FcXVhbCgnY3VzdG9tIGNoYW5nZSBsYWJlbCcpO1xuICAgIGV4cGVjdChST1dTWzVdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIGtleTogJ0l0ZW0gMSdcbiAgICB9KTtcbiAgICBleHBlY3QoUk9XU1s2XSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB2YWx1ZTogJ2NvbGxlY3Rpb24gdmFsdWUnLFxuICAgICAga2V5OiAnU29tZSBuaWNlIHRleHQnXG4gICAgfSk7XG4gIH0pO1xuXG5cbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUNBLElBQUFBLDRCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBd0UsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBRyxRQUFBSCxDQUFBLEVBQUFJLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQVAsQ0FBQSxPQUFBTSxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBUixDQUFBLEdBQUFJLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFYLENBQUEsRUFBQUksQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQWYsQ0FBQSxhQUFBSSxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEs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