@payloadcms/ui 3.0.0-alpha.2 → 3.0.0-alpha.21

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 (530) hide show
  1. package/dist/@types/assets.d.js +0 -1
  2. package/dist/config.js +2 -12
  3. package/dist/elements/ArrayAction/index.js +25 -81
  4. package/dist/elements/ArrayAction/types.js +2 -5
  5. package/dist/elements/Autosave/index.js +37 -92
  6. package/dist/elements/Autosave/types.js +2 -5
  7. package/dist/elements/Banner/index.js +10 -34
  8. package/dist/elements/Banner/types.js +2 -5
  9. package/dist/elements/Button/index.js +34 -93
  10. package/dist/elements/Button/types.js +2 -5
  11. package/dist/elements/Card/index.js +9 -24
  12. package/dist/elements/Card/types.js +2 -5
  13. package/dist/elements/CodeEditor/CodeEditor.js +10 -25
  14. package/dist/elements/CodeEditor/index.js +8 -59
  15. package/dist/elements/CodeEditor/types.js +2 -5
  16. package/dist/elements/Collapsible/index.js +26 -82
  17. package/dist/elements/Collapsible/provider.js +7 -66
  18. package/dist/elements/Collapsible/types.js +2 -5
  19. package/dist/elements/ColumnSelector/index.js +20 -76
  20. package/dist/elements/ColumnSelector/types.js +2 -5
  21. package/dist/elements/CopyToClipboard/index.js +14 -65
  22. package/dist/elements/CopyToClipboard/types.js +2 -5
  23. package/dist/elements/DatePicker/DatePicker.js +19 -75
  24. package/dist/elements/DatePicker/index.js +8 -59
  25. package/dist/elements/DatePicker/types.js +2 -5
  26. package/dist/elements/DeleteDocument/index.js +36 -86
  27. package/dist/elements/DeleteDocument/types.js +2 -5
  28. package/dist/elements/DeleteMany/index.js +38 -102
  29. package/dist/elements/DeleteMany/types.js +2 -5
  30. package/dist/elements/DocumentControls/index.js +46 -102
  31. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  32. package/dist/elements/DocumentDrawer/DrawerContent.js +62 -114
  33. package/dist/elements/DocumentDrawer/index.js +33 -98
  34. package/dist/elements/DocumentDrawer/types.js +2 -5
  35. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  36. package/dist/elements/DocumentFields/index.js +16 -31
  37. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +4 -14
  38. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
  39. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +17 -26
  40. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +9 -68
  41. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +5 -15
  42. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +2 -12
  43. package/dist/elements/DocumentHeader/Tabs/index.js +18 -33
  44. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +8 -23
  45. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +5 -23
  46. package/dist/elements/DocumentHeader/index.js +10 -66
  47. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +7 -66
  48. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js +2 -5
  49. package/dist/elements/DraggableSortable/index.js +15 -66
  50. package/dist/elements/DraggableSortable/types.js +2 -5
  51. package/dist/elements/DraggableSortable/useDraggableSortable/index.js +4 -14
  52. package/dist/elements/DraggableSortable/useDraggableSortable/types.js +2 -5
  53. package/dist/elements/Drawer/index.d.ts +1 -1
  54. package/dist/elements/Drawer/index.js +32 -94
  55. package/dist/elements/Drawer/types.js +2 -5
  56. package/dist/elements/Drawer/useDrawerSlug.js +8 -18
  57. package/dist/elements/Dropzone/index.js +20 -35
  58. package/dist/elements/DuplicateDocument/index.js +33 -83
  59. package/dist/elements/DuplicateDocument/types.js +2 -5
  60. package/dist/elements/EditMany/index.d.ts.map +1 -1
  61. package/dist/elements/EditMany/index.js +72 -125
  62. package/dist/elements/EditMany/types.js +2 -5
  63. package/dist/elements/EditUpload/index.js +66 -122
  64. package/dist/elements/ErrorPill/index.js +7 -22
  65. package/dist/elements/ErrorPill/types.js +2 -5
  66. package/dist/elements/FieldSelect/index.js +23 -79
  67. package/dist/elements/FileDetails/FileMeta/index.js +19 -75
  68. package/dist/elements/FileDetails/FileMeta/types.js +2 -5
  69. package/dist/elements/FileDetails/index.js +15 -30
  70. package/dist/elements/FileDetails/types.js +2 -5
  71. package/dist/elements/GenerateConfirmation/index.js +22 -37
  72. package/dist/elements/GenerateConfirmation/types.js +2 -5
  73. package/dist/elements/GetFilterOptions/index.js +18 -33
  74. package/dist/elements/Gutter/index.js +5 -56
  75. package/dist/elements/Hamburger/index.js +18 -33
  76. package/dist/elements/Header/index.js +39 -95
  77. package/dist/elements/HydrateClientUser/index.js +6 -16
  78. package/dist/elements/IDLabel/index.js +5 -20
  79. package/dist/elements/ListControls/getTextFieldsToBeSearched.js +6 -16
  80. package/dist/elements/ListControls/index.js +52 -104
  81. package/dist/elements/ListControls/types.js +2 -5
  82. package/dist/elements/ListDrawer/DrawerContent.js +72 -128
  83. package/dist/elements/ListDrawer/index.js +32 -100
  84. package/dist/elements/ListDrawer/types.js +2 -5
  85. package/dist/elements/ListSelection/index.js +11 -62
  86. package/dist/elements/Loading/index.js +25 -51
  87. package/dist/elements/LoadingOverlay/index.js +17 -79
  88. package/dist/elements/LoadingOverlay/reducer.js +3 -21
  89. package/dist/elements/LoadingOverlay/types.js +2 -5
  90. package/dist/elements/Localizer/LocalizerLabel/index.js +15 -30
  91. package/dist/elements/Localizer/index.d.ts.map +1 -1
  92. package/dist/elements/Localizer/index.js +37 -95
  93. package/dist/elements/Logout/index.js +13 -28
  94. package/dist/elements/Nav/NavHamburger/index.js +8 -23
  95. package/dist/elements/Nav/NavToggler/index.js +13 -28
  96. package/dist/elements/Nav/NavWrapper/index.js +8 -23
  97. package/dist/elements/Nav/context.js +20 -82
  98. package/dist/elements/Nav/index.js +36 -51
  99. package/dist/elements/NavGroup/index.js +21 -77
  100. package/dist/elements/Pagination/ClickableArrow/index.js +7 -22
  101. package/dist/elements/Pagination/ClickableArrow/types.js +2 -5
  102. package/dist/elements/Pagination/Page/index.js +4 -19
  103. package/dist/elements/Pagination/Page/types.js +2 -5
  104. package/dist/elements/Pagination/Separator/index.js +4 -19
  105. package/dist/elements/Pagination/index.js +20 -35
  106. package/dist/elements/Pagination/types.js +2 -5
  107. package/dist/elements/PerPage/index.js +28 -83
  108. package/dist/elements/Pill/index.js +16 -40
  109. package/dist/elements/Pill/types.js +2 -5
  110. package/dist/elements/Popup/PopupButtonList/index.js +10 -75
  111. package/dist/elements/Popup/PopupTrigger/index.js +6 -21
  112. package/dist/elements/Popup/PopupTrigger/types.js +2 -5
  113. package/dist/elements/Popup/index.js +29 -80
  114. package/dist/elements/Popup/types.js +2 -5
  115. package/dist/elements/PreviewButton/index.js +22 -73
  116. package/dist/elements/PreviewSizes/index.js +24 -80
  117. package/dist/elements/Publish/index.js +23 -79
  118. package/dist/elements/PublishMany/index.js +37 -93
  119. package/dist/elements/PublishMany/types.js +2 -5
  120. package/dist/elements/ReactSelect/ClearIndicator/index.js +7 -22
  121. package/dist/elements/ReactSelect/Control/index.js +5 -20
  122. package/dist/elements/ReactSelect/MultiValue/index.js +8 -23
  123. package/dist/elements/ReactSelect/MultiValueLabel/index.js +7 -22
  124. package/dist/elements/ReactSelect/MultiValueRemove/index.js +12 -27
  125. package/dist/elements/ReactSelect/SingleValue/index.js +5 -20
  126. package/dist/elements/ReactSelect/ValueContainer/index.js +7 -22
  127. package/dist/elements/ReactSelect/index.js +45 -60
  128. package/dist/elements/ReactSelect/types.js +2 -5
  129. package/dist/elements/RenderCustomComponent/index.js +5 -20
  130. package/dist/elements/RenderCustomComponent/types.js +2 -5
  131. package/dist/elements/RenderTitle/index.js +9 -24
  132. package/dist/elements/RenderTitle/types.js +2 -5
  133. package/dist/elements/Save/index.js +16 -72
  134. package/dist/elements/SaveDraft/index.js +24 -80
  135. package/dist/elements/SearchFilter/index.js +31 -86
  136. package/dist/elements/SearchFilter/types.js +2 -5
  137. package/dist/elements/SelectAll/index.d.ts.map +1 -1
  138. package/dist/elements/SelectAll/index.js +13 -26
  139. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  140. package/dist/elements/SelectRow/index.js +10 -23
  141. package/dist/elements/ShimmerEffect/index.js +12 -71
  142. package/dist/elements/SortColumn/index.js +27 -90
  143. package/dist/elements/SortColumn/types.js +2 -5
  144. package/dist/elements/SortComplex/index.js +35 -90
  145. package/dist/elements/SortComplex/types.js +2 -5
  146. package/dist/elements/Status/index.js +38 -88
  147. package/dist/elements/StayLoggedIn/index.js +20 -34
  148. package/dist/elements/StayLoggedIn/types.js +2 -5
  149. package/dist/elements/StepNav/SetStepNav.js +6 -16
  150. package/dist/elements/StepNav/index.js +27 -93
  151. package/dist/elements/StepNav/types.js +2 -5
  152. package/dist/elements/Table/TableCellProvider/index.js +9 -32
  153. package/dist/elements/Table/index.js +15 -38
  154. package/dist/elements/Table/types.js +2 -5
  155. package/dist/elements/TableColumns/buildColumns.d.ts.map +1 -1
  156. package/dist/elements/TableColumns/buildColumns.js +7 -16
  157. package/dist/elements/TableColumns/columnReducer.js +2 -12
  158. package/dist/elements/TableColumns/index.js +24 -86
  159. package/dist/elements/Thumbnail/index.js +12 -68
  160. package/dist/elements/Thumbnail/types.js +2 -5
  161. package/dist/elements/ThumbnailCard/index.js +13 -28
  162. package/dist/elements/ThumbnailCard/types.js +2 -5
  163. package/dist/elements/Tooltip/index.js +14 -65
  164. package/dist/elements/Tooltip/types.js +2 -5
  165. package/dist/elements/Translation/index.js +7 -58
  166. package/dist/elements/UnpublishMany/index.js +37 -93
  167. package/dist/elements/UnpublishMany/types.js +2 -5
  168. package/dist/elements/Upload/index.js +57 -127
  169. package/dist/elements/Upload/types.d.ts +1 -2
  170. package/dist/elements/Upload/types.d.ts.map +1 -1
  171. package/dist/elements/Upload/types.js +2 -5
  172. package/dist/elements/ViewDescription/index.js +12 -27
  173. package/dist/elements/ViewDescription/types.js +4 -19
  174. package/dist/elements/WhereBuilder/Condition/Date/index.js +6 -21
  175. package/dist/elements/WhereBuilder/Condition/Date/types.js +2 -5
  176. package/dist/elements/WhereBuilder/Condition/Number/index.js +7 -22
  177. package/dist/elements/WhereBuilder/Condition/Number/types.js +2 -5
  178. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +28 -84
  179. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +5 -15
  180. package/dist/elements/WhereBuilder/Condition/Relationship/types.js +2 -5
  181. package/dist/elements/WhereBuilder/Condition/Select/index.js +15 -30
  182. package/dist/elements/WhereBuilder/Condition/Select/types.js +2 -5
  183. package/dist/elements/WhereBuilder/Condition/Text/index.js +7 -22
  184. package/dist/elements/WhereBuilder/Condition/Text/types.js +2 -5
  185. package/dist/elements/WhereBuilder/Condition/index.js +37 -93
  186. package/dist/elements/WhereBuilder/Condition/types.js +2 -5
  187. package/dist/elements/WhereBuilder/field-types.js +2 -12
  188. package/dist/elements/WhereBuilder/index.js +43 -98
  189. package/dist/elements/WhereBuilder/reducer.js +2 -12
  190. package/dist/elements/WhereBuilder/transformWhereQuery.js +6 -12
  191. package/dist/elements/WhereBuilder/types.js +2 -5
  192. package/dist/elements/WhereBuilder/validateWhereQuery.js +4 -14
  193. package/dist/exports/assets.js +3 -26
  194. package/dist/exports/elements.d.ts +6 -0
  195. package/dist/exports/elements.d.ts.map +1 -1
  196. package/dist/exports/elements.js +48 -225
  197. package/dist/exports/forms.d.ts +4 -1
  198. package/dist/exports/forms.d.ts.map +1 -1
  199. package/dist/exports/forms.js +38 -157
  200. package/dist/exports/graphics.js +3 -26
  201. package/dist/exports/hooks.js +10 -54
  202. package/dist/exports/icons.js +18 -81
  203. package/dist/exports/index.js +10 -27
  204. package/dist/exports/providers.d.ts +1 -0
  205. package/dist/exports/providers.d.ts.map +1 -1
  206. package/dist/exports/providers.js +24 -115
  207. package/dist/exports/templates.js +3 -21
  208. package/dist/exports/types.d.ts +1 -0
  209. package/dist/exports/types.d.ts.map +1 -1
  210. package/dist/exports/types.js +2 -5
  211. package/dist/exports/utilities.js +11 -61
  212. package/dist/forms/Error/index.js +11 -26
  213. package/dist/forms/FieldDescription/index.js +9 -24
  214. package/dist/forms/FieldDescription/types.js +2 -5
  215. package/dist/forms/FieldPathProvider/index.d.ts.map +1 -1
  216. package/dist/forms/FieldPathProvider/index.js +7 -30
  217. package/dist/forms/Form/buildFieldSchemaMap.js +14 -14
  218. package/dist/forms/Form/buildInitialState.js +2 -12
  219. package/dist/forms/Form/context.js +17 -67
  220. package/dist/forms/Form/createNestedFieldPath.js +5 -15
  221. package/dist/forms/Form/errorMessages.js +2 -12
  222. package/dist/forms/Form/fieldReducer.d.ts +2 -1
  223. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  224. package/dist/forms/Form/fieldReducer.js +25 -38
  225. package/dist/forms/Form/getDataByPath.d.ts +1 -1
  226. package/dist/forms/Form/getDataByPath.d.ts.map +1 -1
  227. package/dist/forms/Form/getDataByPath.js +4 -14
  228. package/dist/forms/Form/getSiblingData.d.ts +1 -2
  229. package/dist/forms/Form/getSiblingData.d.ts.map +1 -1
  230. package/dist/forms/Form/getSiblingData.js +6 -21
  231. package/dist/forms/Form/index.d.ts.map +1 -1
  232. package/dist/forms/Form/index.js +85 -141
  233. package/dist/forms/Form/initContextState.d.ts.map +1 -1
  234. package/dist/forms/Form/initContextState.js +2 -12
  235. package/dist/forms/Form/mergeServerFormState.d.ts +1 -1
  236. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  237. package/dist/forms/Form/mergeServerFormState.js +5 -15
  238. package/dist/forms/Form/reduceFieldsToValues.d.ts +1 -2
  239. package/dist/forms/Form/reduceFieldsToValues.d.ts.map +1 -1
  240. package/dist/forms/Form/reduceFieldsToValues.js +4 -14
  241. package/dist/forms/Form/rows.d.ts +1 -1
  242. package/dist/forms/Form/rows.d.ts.map +1 -1
  243. package/dist/forms/Form/rows.js +3 -21
  244. package/dist/forms/Form/types.d.ts +2 -23
  245. package/dist/forms/Form/types.d.ts.map +1 -1
  246. package/dist/forms/Form/types.js +2 -5
  247. package/dist/forms/Label/index.js +9 -24
  248. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  249. package/dist/forms/NullifyField/index.js +16 -72
  250. package/dist/forms/ReadOnlyProvider/index.d.ts +7 -0
  251. package/dist/forms/ReadOnlyProvider/index.d.ts.map +1 -0
  252. package/dist/forms/ReadOnlyProvider/index.js +15 -0
  253. package/dist/forms/RenderFields/RenderField.d.ts +3 -0
  254. package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
  255. package/dist/forms/RenderFields/RenderField.js +22 -23
  256. package/dist/forms/RenderFields/index.d.ts.map +1 -1
  257. package/dist/forms/RenderFields/index.js +16 -29
  258. package/dist/forms/RenderFields/types.d.ts +2 -0
  259. package/dist/forms/RenderFields/types.d.ts.map +1 -1
  260. package/dist/forms/RenderFields/types.js +2 -5
  261. package/dist/forms/RowLabel/index.js +13 -28
  262. package/dist/forms/RowLabel/types.d.ts +1 -2
  263. package/dist/forms/RowLabel/types.d.ts.map +1 -1
  264. package/dist/forms/RowLabel/types.js +4 -19
  265. package/dist/forms/Submit/index.js +11 -62
  266. package/dist/forms/WatchChildErrors/buildPathSegments.js +2 -12
  267. package/dist/forms/WatchChildErrors/getFieldStateFromPaths.d.ts +1 -1
  268. package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js +2 -12
  269. package/dist/forms/WatchChildErrors/getNestedFieldState.d.ts +1 -2
  270. package/dist/forms/WatchChildErrors/getNestedFieldState.d.ts.map +1 -1
  271. package/dist/forms/WatchChildErrors/getNestedFieldState.js +5 -14
  272. package/dist/forms/WatchChildErrors/index.js +11 -26
  273. package/dist/forms/fields/Array/ArrayRow.d.ts +1 -2
  274. package/dist/forms/fields/Array/ArrayRow.d.ts.map +1 -1
  275. package/dist/forms/fields/Array/ArrayRow.js +24 -39
  276. package/dist/forms/fields/Array/index.js +59 -115
  277. package/dist/forms/fields/Array/types.js +2 -5
  278. package/dist/forms/fields/Blocks/BlockRow.d.ts +1 -2
  279. package/dist/forms/fields/Blocks/BlockRow.d.ts.map +1 -1
  280. package/dist/forms/fields/Blocks/BlockRow.js +27 -42
  281. package/dist/forms/fields/Blocks/BlocksDrawer/BlockSearch/index.js +10 -25
  282. package/dist/forms/fields/Blocks/BlocksDrawer/index.js +29 -85
  283. package/dist/forms/fields/Blocks/BlocksDrawer/types.js +2 -5
  284. package/dist/forms/fields/Blocks/RowActions.js +12 -27
  285. package/dist/forms/fields/Blocks/SectionTitle/index.js +10 -25
  286. package/dist/forms/fields/Blocks/SectionTitle/types.js +2 -5
  287. package/dist/forms/fields/Blocks/index.js +78 -133
  288. package/dist/forms/fields/Blocks/types.js +2 -5
  289. package/dist/forms/fields/Checkbox/Input.d.ts.map +1 -1
  290. package/dist/forms/fields/Checkbox/Input.js +11 -33
  291. package/dist/forms/fields/Checkbox/index.js +19 -75
  292. package/dist/forms/fields/Checkbox/types.js +2 -5
  293. package/dist/forms/fields/Code/index.js +15 -71
  294. package/dist/forms/fields/Code/types.js +2 -5
  295. package/dist/forms/fields/Collapsible/index.js +31 -87
  296. package/dist/forms/fields/Collapsible/types.js +2 -5
  297. package/dist/forms/fields/ConfirmPassword/index.d.ts.map +1 -1
  298. package/dist/forms/fields/ConfirmPassword/index.js +19 -75
  299. package/dist/forms/fields/ConfirmPassword/types.js +2 -5
  300. package/dist/forms/fields/DateTime/index.js +18 -74
  301. package/dist/forms/fields/DateTime/types.js +2 -5
  302. package/dist/forms/fields/Email/index.js +19 -83
  303. package/dist/forms/fields/Email/types.js +2 -5
  304. package/dist/forms/fields/Group/index.js +32 -88
  305. package/dist/forms/fields/Group/provider.js +7 -69
  306. package/dist/forms/fields/Group/types.js +2 -5
  307. package/dist/forms/fields/HiddenInput/index.js +8 -64
  308. package/dist/forms/fields/HiddenInput/types.js +2 -5
  309. package/dist/forms/fields/JSON/index.js +20 -76
  310. package/dist/forms/fields/JSON/types.js +2 -5
  311. package/dist/forms/fields/Number/index.js +26 -82
  312. package/dist/forms/fields/Number/types.js +2 -5
  313. package/dist/forms/fields/Password/index.js +15 -79
  314. package/dist/forms/fields/Password/types.js +2 -5
  315. package/dist/forms/fields/Point/index.js +24 -80
  316. package/dist/forms/fields/Point/types.js +2 -5
  317. package/dist/forms/fields/RadioGroup/Radio/index.js +13 -28
  318. package/dist/forms/fields/RadioGroup/index.js +23 -79
  319. package/dist/forms/fields/RadioGroup/types.js +2 -5
  320. package/dist/forms/fields/Relationship/AddNew/index.js +43 -99
  321. package/dist/forms/fields/Relationship/AddNew/types.js +2 -5
  322. package/dist/forms/fields/Relationship/AddNew/useRelatedCollections.js +6 -16
  323. package/dist/forms/fields/Relationship/createRelationMap.js +2 -12
  324. package/dist/forms/fields/Relationship/findOptionsByValue.js +2 -12
  325. package/dist/forms/fields/Relationship/index.js +64 -120
  326. package/dist/forms/fields/Relationship/optionsReducer.js +7 -17
  327. package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.js +21 -72
  328. package/dist/forms/fields/Relationship/select-components/SingleValue/index.js +22 -73
  329. package/dist/forms/fields/Relationship/types.js +2 -5
  330. package/dist/forms/fields/RichText/index.js +2 -12
  331. package/dist/forms/fields/RichText/types.js +2 -5
  332. package/dist/forms/fields/Row/index.js +11 -26
  333. package/dist/forms/fields/Row/provider.js +7 -69
  334. package/dist/forms/fields/Row/types.js +2 -5
  335. package/dist/forms/fields/Select/index.js +24 -88
  336. package/dist/forms/fields/Select/types.js +2 -5
  337. package/dist/forms/fields/Tabs/Tab/index.js +13 -64
  338. package/dist/forms/fields/Tabs/index.d.ts.map +1 -1
  339. package/dist/forms/fields/Tabs/index.js +35 -91
  340. package/dist/forms/fields/Tabs/provider.js +7 -69
  341. package/dist/forms/fields/Tabs/types.js +2 -5
  342. package/dist/forms/fields/Text/Input.d.ts +18 -0
  343. package/dist/forms/fields/Text/Input.d.ts.map +1 -0
  344. package/dist/forms/fields/Text/Input.js +62 -0
  345. package/dist/forms/fields/Text/index.d.ts.map +1 -1
  346. package/dist/forms/fields/Text/index.js +44 -129
  347. package/dist/forms/fields/Text/types.d.ts +2 -2
  348. package/dist/forms/fields/Text/types.d.ts.map +1 -1
  349. package/dist/forms/fields/Text/types.js +2 -5
  350. package/dist/forms/fields/Textarea/Input.d.ts +11 -0
  351. package/dist/forms/fields/Textarea/Input.d.ts.map +1 -0
  352. package/dist/forms/fields/Textarea/Input.js +43 -0
  353. package/dist/forms/fields/Textarea/index.d.ts.map +1 -1
  354. package/dist/forms/fields/Textarea/index.js +39 -104
  355. package/dist/forms/fields/Textarea/types.js +2 -5
  356. package/dist/forms/fields/UI/index.js +2 -12
  357. package/dist/forms/fields/Upload/Input.d.ts +15 -1
  358. package/dist/forms/fields/Upload/Input.d.ts.map +1 -1
  359. package/dist/forms/fields/Upload/Input.js +127 -2
  360. package/dist/forms/fields/Upload/index.d.ts.map +1 -1
  361. package/dist/forms/fields/Upload/index.js +32 -180
  362. package/dist/forms/fields/Upload/types.js +2 -5
  363. package/dist/forms/fields/getFilterOptionsQuery.js +2 -12
  364. package/dist/forms/fields/index.js +50 -65
  365. package/dist/forms/fields/shared.d.ts +3 -3
  366. package/dist/forms/fields/shared.d.ts.map +1 -1
  367. package/dist/forms/fields/shared.js +7 -21
  368. package/dist/forms/useField/index.d.ts.map +1 -1
  369. package/dist/forms/useField/index.js +30 -41
  370. package/dist/forms/useField/types.d.ts +2 -2
  371. package/dist/forms/useField/types.d.ts.map +1 -1
  372. package/dist/forms/useField/types.js +2 -5
  373. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts +1 -2
  374. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  375. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +21 -33
  376. package/dist/forms/utilities/buildStateFromSchema/buildStateFromSchema.spec.js +5 -14
  377. package/dist/forms/utilities/buildStateFromSchema/index.d.ts +1 -2
  378. package/dist/forms/utilities/buildStateFromSchema/index.d.ts.map +1 -1
  379. package/dist/forms/utilities/buildStateFromSchema/index.js +4 -14
  380. package/dist/forms/utilities/buildStateFromSchema/iterateFields.d.ts +1 -2
  381. package/dist/forms/utilities/buildStateFromSchema/iterateFields.d.ts.map +1 -1
  382. package/dist/forms/utilities/buildStateFromSchema/iterateFields.js +8 -16
  383. package/dist/forms/withCondition/WatchCondition.js +7 -57
  384. package/dist/forms/withCondition/index.js +8 -23
  385. package/dist/graphics/Account/Default/index.js +7 -22
  386. package/dist/graphics/Account/Gravatar/index.js +10 -25
  387. package/dist/graphics/Account/index.js +15 -30
  388. package/dist/graphics/DefaultBlockImage/index.js +11 -62
  389. package/dist/graphics/ExternalLink/index.js +5 -20
  390. package/dist/graphics/File/index.js +7 -22
  391. package/dist/graphics/Icon/index.js +13 -28
  392. package/dist/graphics/Logo/index.js +15 -30
  393. package/dist/graphics/Search/index.js +6 -21
  394. package/dist/hooks/useAdminThumbnail.js +5 -15
  395. package/dist/hooks/useDebounce.js +6 -16
  396. package/dist/hooks/useDebouncedCallback.js +10 -15
  397. package/dist/hooks/useDebouncedEffect.js +6 -16
  398. package/dist/hooks/useDelay.js +7 -58
  399. package/dist/hooks/useDelayedRender.js +11 -62
  400. package/dist/hooks/useHotkey.js +10 -20
  401. package/dist/hooks/useIntersect.js +7 -17
  402. package/dist/hooks/usePayloadAPI.js +17 -32
  403. package/dist/hooks/useResize.js +5 -15
  404. package/dist/hooks/useThrottledEffect.js +5 -15
  405. package/dist/hooks/useThumbnail.js +8 -18
  406. package/dist/hooks/useUseAsTitle.js +6 -16
  407. package/dist/icons/Calendar/index.js +8 -23
  408. package/dist/icons/Check/index.js +6 -21
  409. package/dist/icons/Chevron/index.js +5 -20
  410. package/dist/icons/CloseMenu/index.js +6 -21
  411. package/dist/icons/CodeBlock/index.js +5 -20
  412. package/dist/icons/Copy/index.js +6 -21
  413. package/dist/icons/DragHandle/index.js +10 -25
  414. package/dist/icons/Edit/index.js +7 -22
  415. package/dist/icons/Line/index.js +5 -20
  416. package/dist/icons/Link/index.js +6 -21
  417. package/dist/icons/LogOut/index.js +7 -22
  418. package/dist/icons/Menu/index.js +7 -22
  419. package/dist/icons/MinimizeMaximize/index.js +12 -63
  420. package/dist/icons/More/index.js +7 -22
  421. package/dist/icons/Plus/index.js +6 -21
  422. package/dist/icons/Search/index.js +6 -21
  423. package/dist/icons/Swap/index.js +8 -23
  424. package/dist/icons/X/index.js +6 -21
  425. package/dist/index.js +2 -19
  426. package/dist/providers/ActionsProvider/SetViewActions/index.d.ts +6 -0
  427. package/dist/providers/ActionsProvider/SetViewActions/index.d.ts.map +1 -0
  428. package/dist/providers/ActionsProvider/SetViewActions/index.js +18 -0
  429. package/dist/providers/ActionsProvider/index.d.ts +3 -2
  430. package/dist/providers/ActionsProvider/index.d.ts.map +1 -1
  431. package/dist/providers/ActionsProvider/index.js +13 -72
  432. package/dist/providers/Auth/index.d.ts.map +1 -1
  433. package/dist/providers/Auth/index.js +56 -132
  434. package/dist/providers/Auth/types.js +2 -5
  435. package/dist/providers/ClientFunction/index.js +14 -40
  436. package/dist/providers/ComponentMapProvider/index.d.ts +4 -0
  437. package/dist/providers/ComponentMapProvider/index.d.ts.map +1 -1
  438. package/dist/providers/ComponentMapProvider/index.js +20 -67
  439. package/dist/providers/Config/index.js +6 -65
  440. package/dist/providers/CustomProvider/index.js +9 -24
  441. package/dist/providers/DocumentEvents/index.js +7 -66
  442. package/dist/providers/DocumentEvents/types.d.ts +1 -1
  443. package/dist/providers/DocumentEvents/types.d.ts.map +1 -1
  444. package/dist/providers/DocumentEvents/types.js +2 -5
  445. package/dist/providers/DocumentInfo/SetDocumentInfo/index.js +9 -19
  446. package/dist/providers/DocumentInfo/index.js +42 -100
  447. package/dist/providers/DocumentInfo/types.d.ts +1 -2
  448. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  449. package/dist/providers/DocumentInfo/types.js +2 -5
  450. package/dist/providers/EditDepth/index.js +5 -67
  451. package/dist/providers/FormQueryParams/index.js +7 -69
  452. package/dist/providers/ListInfo/index.js +9 -68
  453. package/dist/providers/ListInfo/types.d.ts +2 -2
  454. package/dist/providers/ListInfo/types.d.ts.map +1 -1
  455. package/dist/providers/ListInfo/types.js +2 -5
  456. package/dist/providers/Locale/index.d.ts.map +1 -1
  457. package/dist/providers/Locale/index.js +56 -97
  458. package/dist/providers/OperationProvider/index.js +5 -67
  459. package/dist/providers/Params/index.js +9 -67
  460. package/dist/providers/Portal/index.js +4 -19
  461. package/dist/providers/Preferences/index.js +25 -89
  462. package/dist/providers/Root/index.d.ts +2 -1
  463. package/dist/providers/Root/index.d.ts.map +1 -1
  464. package/dist/providers/Root/index.js +31 -82
  465. package/dist/providers/SearchParams/index.d.ts.map +1 -1
  466. package/dist/providers/SearchParams/index.js +14 -77
  467. package/dist/providers/SearchParams/types.js +2 -5
  468. package/dist/providers/SelectionProvider/index.js +23 -90
  469. package/dist/providers/Theme/index.d.ts +6 -3
  470. package/dist/providers/Theme/index.d.ts.map +1 -1
  471. package/dist/providers/Theme/index.js +42 -106
  472. package/dist/providers/Theme/types.d.ts +1 -0
  473. package/dist/providers/Theme/types.d.ts.map +1 -1
  474. package/dist/providers/Theme/types.js +2 -5
  475. package/dist/providers/Theme/utilities.js +3 -21
  476. package/dist/providers/Translation/index.d.ts +1 -6
  477. package/dist/providers/Translation/index.d.ts.map +1 -1
  478. package/dist/providers/Translation/index.js +12 -69
  479. package/dist/scss/toastify.scss +0 -1
  480. package/dist/templates/Default/NavHamburger/index.js +7 -22
  481. package/dist/templates/Default/Wrapper/index.js +7 -22
  482. package/dist/templates/Default/index.js +17 -68
  483. package/dist/templates/Default/types.js +2 -5
  484. package/dist/templates/Minimal/index.js +6 -21
  485. package/dist/templates/Minimal/types.js +2 -5
  486. package/dist/utilities/api.js +4 -19
  487. package/dist/utilities/arraysHaveSameStrings.js +2 -12
  488. package/dist/utilities/buildComponentMap/index.d.ts +3 -7
  489. package/dist/utilities/buildComponentMap/index.d.ts.map +1 -1
  490. package/dist/utilities/buildComponentMap/index.js +36 -45
  491. package/dist/utilities/buildComponentMap/mapActions.d.ts +7 -0
  492. package/dist/utilities/buildComponentMap/mapActions.d.ts.map +1 -0
  493. package/dist/utilities/buildComponentMap/mapActions.js +39 -0
  494. package/dist/utilities/buildComponentMap/mapFields.d.ts +2 -5
  495. package/dist/utilities/buildComponentMap/mapFields.d.ts.map +1 -1
  496. package/dist/utilities/buildComponentMap/mapFields.js +48 -114
  497. package/dist/utilities/buildComponentMap/types.d.ts +10 -0
  498. package/dist/utilities/buildComponentMap/types.d.ts.map +1 -1
  499. package/dist/utilities/buildComponentMap/types.js +2 -5
  500. package/dist/utilities/buildFieldSchemaMap/index.js +5 -15
  501. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +9 -19
  502. package/dist/utilities/buildFieldSchemaMap/types.js +2 -5
  503. package/dist/utilities/canUseDOM.js +2 -12
  504. package/dist/utilities/findLocaleFromCode.js +4 -12
  505. package/dist/utilities/formatDate/getSupportedDateLocale.js +2 -12
  506. package/dist/utilities/formatDate/index.js +10 -69
  507. package/dist/utilities/formatDocTitle.d.ts +1 -2
  508. package/dist/utilities/formatDocTitle.d.ts.map +1 -1
  509. package/dist/utilities/formatDocTitle.js +6 -16
  510. package/dist/utilities/formatFields.js +3 -13
  511. package/dist/utilities/getFormState.d.ts +1 -2
  512. package/dist/utilities/getFormState.d.ts.map +1 -1
  513. package/dist/utilities/getFormState.js +2 -12
  514. package/dist/utilities/getOffsetTop.js +2 -12
  515. package/dist/utilities/getRequestLanguage.js +2 -12
  516. package/dist/utilities/getSupportedMonacoLocale.js +2 -12
  517. package/dist/utilities/groupNavItems.js +7 -25
  518. package/dist/utilities/scrollToID.js +2 -12
  519. package/dist/utilities/setsAreEqual.js +2 -12
  520. package/dist/utilities/withMergedProps/index.js +23 -21
  521. package/dist/views/Global/RenderCustomView.d.ts +0 -1
  522. package/dist/views/Global/RenderCustomView.js +0 -1
  523. package/package.json +7 -6
  524. package/dist/forms/FieldPathProvider/index.scss +0 -12
  525. package/dist/forms/FieldPathProvider/types.d.ts +0 -7
  526. package/dist/forms/FieldPathProvider/types.d.ts.map +0 -1
  527. package/dist/forms/FieldPathProvider/types.js +0 -6
  528. package/dist/providers/Auth/HydrateClientUser/index.d.ts +0 -7
  529. package/dist/providers/Auth/HydrateClientUser/index.d.ts.map +0 -1
  530. package/dist/providers/Auth/HydrateClientUser/index.js +0 -28
@@ -1,110 +1,54 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function() {
9
- return _default;
10
- }
11
- });
12
- const _deepequal = /*#__PURE__*/ _interop_require_default(require("deep-equal"));
13
- const _navigation = require("next/navigation");
14
- const _objecttoformdata = require("object-to-formdata");
15
- const _utilities = require("payload/utilities");
16
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
17
- const _reacttoastify = require("react-toastify");
18
- const _ = require("../..");
19
- const _useDebouncedEffect = require("../../hooks/useDebouncedEffect");
20
- const _useThrottledEffect = /*#__PURE__*/ _interop_require_default(require("../../hooks/useThrottledEffect"));
21
- const _Auth = require("../../providers/Auth");
22
- const _Config = require("../../providers/Config");
23
- const _DocumentInfo = require("../../providers/DocumentInfo");
24
- const _Locale = require("../../providers/Locale");
25
- const _OperationProvider = require("../../providers/OperationProvider");
26
- const _Translation = require("../../providers/Translation");
27
- const _api = require("../../utilities/api");
28
- const _context = require("./context");
29
- const _errorMessages = /*#__PURE__*/ _interop_require_default(require("./errorMessages"));
30
- const _fieldReducer = require("./fieldReducer");
31
- const _getDataByPath = /*#__PURE__*/ _interop_require_default(require("./getDataByPath"));
32
- const _getSiblingData = /*#__PURE__*/ _interop_require_default(require("./getSiblingData"));
33
- const _initContextState = /*#__PURE__*/ _interop_require_default(require("./initContextState"));
34
- const _mergeServerFormState = require("./mergeServerFormState");
35
- const _reduceFieldsToValues = /*#__PURE__*/ _interop_require_default(require("./reduceFieldsToValues"));
36
- function _interop_require_default(obj) {
37
- return obj && obj.__esModule ? obj : {
38
- default: obj
39
- };
40
- }
41
- function _getRequireWildcardCache(nodeInterop) {
42
- if (typeof WeakMap !== "function") return null;
43
- var cacheBabelInterop = new WeakMap();
44
- var cacheNodeInterop = new WeakMap();
45
- return (_getRequireWildcardCache = function(nodeInterop) {
46
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
47
- })(nodeInterop);
48
- }
49
- function _interop_require_wildcard(obj, nodeInterop) {
50
- if (!nodeInterop && obj && obj.__esModule) {
51
- return obj;
52
- }
53
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
54
- return {
55
- default: obj
56
- };
57
- }
58
- var cache = _getRequireWildcardCache(nodeInterop);
59
- if (cache && cache.has(obj)) {
60
- return cache.get(obj);
61
- }
62
- var newObj = {
63
- __proto__: null
64
- };
65
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
66
- for(var key in obj){
67
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
68
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
69
- if (desc && (desc.get || desc.set)) {
70
- Object.defineProperty(newObj, key, desc);
71
- } else {
72
- newObj[key] = obj[key];
73
- }
74
- }
75
- }
76
- newObj.default = obj;
77
- if (cache) {
78
- cache.set(obj, newObj);
79
- }
80
- return newObj;
81
- }
2
+ /* eslint-disable jsx-a11y/no-noninteractive-element-interactions */ import isDeepEqual from 'deep-equal';
3
+ import { useRouter } from 'next/navigation';
4
+ import { serialize } from 'object-to-formdata';
5
+ import { wait } from 'payload/utilities';
6
+ import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react';
7
+ import { toast } from 'react-toastify';
8
+ import { useDebouncedEffect } from '../../hooks/useDebouncedEffect';
9
+ import useThrottledEffect from '../../hooks/useThrottledEffect';
10
+ import { useAuth } from '../../providers/Auth';
11
+ import { useConfig } from '../../providers/Config';
12
+ import { useDocumentInfo } from '../../providers/DocumentInfo';
13
+ import { useLocale } from '../../providers/Locale';
14
+ import { useOperation } from '../../providers/OperationProvider';
15
+ import { useTranslation } from '../../providers/Translation';
16
+ import { requests } from '../../utilities/api';
17
+ import { getFormState } from '../../utilities/getFormState';
18
+ import { FormContext, FormFieldsContext, FormWatchContext, ModifiedContext, ProcessingContext, SubmittedContext } from './context';
19
+ import errorMessages from './errorMessages';
20
+ import { fieldReducer } from './fieldReducer';
21
+ import getDataByPathFunc from './getDataByPath';
22
+ import getSiblingDataFunc from './getSiblingData';
23
+ import initContextState from './initContextState';
24
+ import { mergeServerFormState } from './mergeServerFormState';
25
+ import reduceFieldsToValues from './reduceFieldsToValues';
82
26
  const baseClass = 'form';
83
27
  const Form = (props)=>{
84
- const { id, getDocPreferences } = (0, _DocumentInfo.useDocumentInfo)();
28
+ const { id, getDocPreferences } = useDocumentInfo();
85
29
  const { action, children, className, disableSuccessStatus, disabled, // fields: fieldsFromProps = collection?.fields || global?.fields,
86
30
  beforeSubmit, handleResponse, initialState, onChange, onSubmit, onSuccess, redirect, submitted: submittedFromProps, uuid, waitForAutocomplete } = props;
87
31
  const method = 'method' in props ? props.method : undefined;
88
- const router = (0, _navigation.useRouter)();
89
- const { code: locale } = (0, _Locale.useLocale)();
90
- const { i18n, t } = (0, _Translation.useTranslation)();
91
- const { refreshCookie, user } = (0, _Auth.useAuth)();
92
- const operation = (0, _OperationProvider.useOperation)();
93
- const config = (0, _Config.useConfig)();
32
+ const router = useRouter();
33
+ const { code: locale } = useLocale();
34
+ const { i18n, t } = useTranslation();
35
+ const { refreshCookie, user } = useAuth();
36
+ const operation = useOperation();
37
+ const config = useConfig();
94
38
  const { routes: { api: apiRoute }, serverURL } = config;
95
- const [modified, setModified] = (0, _react.useState)(false);
96
- const [processing, setProcessing] = (0, _react.useState)(false);
97
- const [submitted, setSubmitted] = (0, _react.useState)(false);
98
- const formRef = (0, _react.useRef)(null);
99
- const contextRef = (0, _react.useRef)({});
100
- const { collectionSlug, globalSlug } = (0, _DocumentInfo.useDocumentInfo)();
101
- const fieldsReducer = (0, _react.useReducer)(_fieldReducer.fieldReducer, {}, ()=>initialState);
39
+ const [modified, setModified] = useState(false);
40
+ const [processing, setProcessing] = useState(false);
41
+ const [submitted, setSubmitted] = useState(false);
42
+ const formRef = useRef(null);
43
+ const contextRef = useRef({});
44
+ const { collectionSlug, globalSlug } = useDocumentInfo();
45
+ const fieldsReducer = useReducer(fieldReducer, {}, ()=>initialState);
102
46
  /**
103
47
  * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,
104
48
  * which calls the fieldReducer, which then updates the state.
105
49
  */ const [fields, dispatchFields] = fieldsReducer;
106
50
  contextRef.current.fields = fields;
107
- const validateForm = (0, _react.useCallback)(async ()=>{
51
+ const validateForm = useCallback(async ()=>{
108
52
  const validatedFieldState = {};
109
53
  let isValid = true;
110
54
  const dataFromContext = contextRef.current.getData();
@@ -140,7 +84,7 @@ const Form = (props)=>{
140
84
  validatedFieldState[path] = validatedField;
141
85
  });
142
86
  await Promise.all(validationPromises);
143
- if (!(0, _deepequal.default)(contextRef.current.fields, validatedFieldState)) {
87
+ if (!isDeepEqual(contextRef.current.fields, validatedFieldState)) {
144
88
  dispatchFields({
145
89
  type: 'REPLACE_STATE',
146
90
  state: validatedFieldState
@@ -155,7 +99,7 @@ const Form = (props)=>{
155
99
  dispatchFields,
156
100
  config
157
101
  ]);
158
- const submit = (0, _react.useCallback)(async (options = {}, e)=>{
102
+ const submit = useCallback(async (options = {}, e)=>{
159
103
  const { action: actionToUse = action, method: methodToUse = method, overrides = {}, skipValidation } = options;
160
104
  if (disabled) {
161
105
  if (e) {
@@ -169,7 +113,7 @@ const Form = (props)=>{
169
113
  }
170
114
  setProcessing(true);
171
115
  setSubmitted(true);
172
- if (waitForAutocomplete) await (0, _utilities.wait)(100);
116
+ if (waitForAutocomplete) await wait(100);
173
117
  // Execute server side validations
174
118
  if (Array.isArray(beforeSubmit)) {
175
119
  let revalidatedFormState;
@@ -192,14 +136,14 @@ const Form = (props)=>{
192
136
  const isValid = skipValidation ? true : await contextRef.current.validateForm();
193
137
  // If not valid, prevent submission
194
138
  if (!isValid) {
195
- _reacttoastify.toast.error(t('error:correctInvalidFields'));
139
+ toast.error(t('error:correctInvalidFields'));
196
140
  setProcessing(false);
197
141
  return;
198
142
  }
199
143
  // If submit handler comes through via props, run that
200
144
  if (onSubmit) {
201
145
  const data = {
202
- ...(0, _reduceFieldsToValues.default)(fields, true),
146
+ ...reduceFieldsToValues(fields, true),
203
147
  ...overrides
204
148
  };
205
149
  onSubmit(fields, data);
@@ -208,7 +152,7 @@ const Form = (props)=>{
208
152
  try {
209
153
  let res;
210
154
  if (typeof actionToUse === 'string') {
211
- res = await _api.requests[methodToUse.toLowerCase()](actionToUse, {
155
+ res = await requests[methodToUse.toLowerCase()](actionToUse, {
212
156
  body: formData,
213
157
  headers: {
214
158
  'Accept-Language': i18n.language
@@ -247,7 +191,7 @@ const Form = (props)=>{
247
191
  // }
248
192
  router.push(redirect);
249
193
  } else if (!disableSuccessStatus) {
250
- _reacttoastify.toast.success(json.message || t('general:submissionSuccessful'), {
194
+ toast.success(json.message || t('general:submissionSuccessful'), {
251
195
  autoClose: 3000
252
196
  });
253
197
  }
@@ -257,7 +201,7 @@ const Form = (props)=>{
257
201
  } // triggers rerender of all components that subscribe to form
258
202
  ;
259
203
  if (json.message) {
260
- _reacttoastify.toast.error(json.message);
204
+ toast.error(json.message);
261
205
  return;
262
206
  }
263
207
  if (Array.isArray(json.errors)) {
@@ -300,16 +244,16 @@ const Form = (props)=>{
300
244
  });
301
245
  });
302
246
  nonFieldErrors.forEach((err)=>{
303
- _reacttoastify.toast.error(err.message || t('error:unknown'));
247
+ toast.error(err.message || t('error:unknown'));
304
248
  });
305
249
  return;
306
250
  }
307
- const message = _errorMessages.default?.[res.status] || res?.statusText || t('error:unknown');
308
- _reacttoastify.toast.error(message);
251
+ const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown');
252
+ toast.error(message);
309
253
  }
310
254
  } catch (err) {
311
255
  setProcessing(false);
312
- _reacttoastify.toast.error(err);
256
+ toast.error(err);
313
257
  }
314
258
  }, [
315
259
  action,
@@ -328,13 +272,13 @@ const Form = (props)=>{
328
272
  waitForAutocomplete,
329
273
  beforeSubmit
330
274
  ]);
331
- const getFields = (0, _react.useCallback)(()=>contextRef.current.fields, []);
332
- const getField = (0, _react.useCallback)((path)=>contextRef.current.fields[path], []);
333
- const getData = (0, _react.useCallback)(()=>(0, _reduceFieldsToValues.default)(contextRef.current.fields, true), []);
334
- const getSiblingData = (0, _react.useCallback)((path)=>(0, _getSiblingData.default)(contextRef.current.fields, path), []);
335
- const getDataByPath = (0, _react.useCallback)((path)=>(0, _getDataByPath.default)(contextRef.current.fields, path), []);
336
- const createFormData = (0, _react.useCallback)((overrides = {})=>{
337
- const data = (0, _reduceFieldsToValues.default)(contextRef.current.fields, true);
275
+ const getFields = useCallback(()=>contextRef.current.fields, []);
276
+ const getField = useCallback((path)=>contextRef.current.fields[path], []);
277
+ const getData = useCallback(()=>reduceFieldsToValues(contextRef.current.fields, true), []);
278
+ const getSiblingData = useCallback((path)=>getSiblingDataFunc(contextRef.current.fields, path), []);
279
+ const getDataByPath = useCallback((path)=>getDataByPathFunc(contextRef.current.fields, path), []);
280
+ const createFormData = useCallback((overrides = {})=>{
281
+ const data = reduceFieldsToValues(contextRef.current.fields, true);
338
282
  const file = data?.file;
339
283
  if (file) {
340
284
  delete data.file;
@@ -348,13 +292,13 @@ const Form = (props)=>{
348
292
  file
349
293
  };
350
294
  // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves
351
- const formData = (0, _objecttoformdata.serialize)(dataToSerialize, {
295
+ const formData = serialize(dataToSerialize, {
352
296
  indices: true,
353
297
  nullsAsUndefineds: false
354
298
  });
355
299
  return formData;
356
300
  }, []);
357
- const reset = (0, _react.useCallback)(async (fieldSchema, data)=>{
301
+ const reset = useCallback(async (fieldSchema, data)=>{
358
302
  const preferences = await getDocPreferences();
359
303
  // const state = await buildStateFromSchema({
360
304
  // id,
@@ -370,16 +314,16 @@ const Form = (props)=>{
370
314
  // user,
371
315
  // })
372
316
  contextRef.current = {
373
- ..._initContextState.default
317
+ ...initContextState
374
318
  };
375
319
  setModified(false);
376
320
  // dispatchFields({ state, type: 'REPLACE_STATE' })
377
321
  }, [
378
322
  getDocPreferences
379
323
  ]);
380
- const replaceState = (0, _react.useCallback)((state)=>{
324
+ const replaceState = useCallback((state)=>{
381
325
  contextRef.current = {
382
- ..._initContextState.default
326
+ ...initContextState
383
327
  };
384
328
  setModified(false);
385
329
  dispatchFields({
@@ -389,8 +333,8 @@ const Form = (props)=>{
389
333
  }, [
390
334
  dispatchFields
391
335
  ]);
392
- const getFieldStateByPath = (0, _react.useCallback)(async ({ data, path })=>{
393
- const fieldSchema = await (0, _.getFormState)({
336
+ const getFieldStateByPath = useCallback(async ({ data, path })=>{
337
+ const fieldSchema = await getFormState({
394
338
  apiRoute,
395
339
  body: {
396
340
  collectionSlug,
@@ -410,7 +354,7 @@ const Form = (props)=>{
410
354
  globalSlug,
411
355
  serverURL
412
356
  ]);
413
- const addFieldRow = (0, _react.useCallback)(async ({ data, path, rowIndex })=>{
357
+ const addFieldRow = useCallback(async ({ data, path, rowIndex })=>{
414
358
  const subFieldState = await getFieldStateByPath({
415
359
  data,
416
360
  path
@@ -426,7 +370,7 @@ const Form = (props)=>{
426
370
  getFieldStateByPath,
427
371
  dispatchFields
428
372
  ]);
429
- const removeFieldRow = (0, _react.useCallback)(({ path, rowIndex })=>{
373
+ const removeFieldRow = useCallback(({ path, rowIndex })=>{
430
374
  dispatchFields({
431
375
  type: 'REMOVE_ROW',
432
376
  path,
@@ -435,7 +379,7 @@ const Form = (props)=>{
435
379
  }, [
436
380
  dispatchFields
437
381
  ]);
438
- const replaceFieldRow = (0, _react.useCallback)(async ({ data, path, rowIndex })=>{
382
+ const replaceFieldRow = useCallback(async ({ data, path, rowIndex })=>{
439
383
  const subFieldState = await getFieldStateByPath({
440
384
  data,
441
385
  path
@@ -471,15 +415,15 @@ const Form = (props)=>{
471
415
  contextRef.current.removeFieldRow = removeFieldRow;
472
416
  contextRef.current.replaceFieldRow = replaceFieldRow;
473
417
  contextRef.current.uuid = uuid;
474
- (0, _react.useEffect)(()=>{
418
+ useEffect(()=>{
475
419
  if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps);
476
420
  }, [
477
421
  submittedFromProps
478
422
  ]);
479
- (0, _react.useEffect)(()=>{
423
+ useEffect(()=>{
480
424
  if (initialState) {
481
425
  contextRef.current = {
482
- ..._initContextState.default
426
+ ...initContextState
483
427
  };
484
428
  dispatchFields({
485
429
  type: 'REPLACE_STATE',
@@ -490,12 +434,12 @@ const Form = (props)=>{
490
434
  initialState,
491
435
  dispatchFields
492
436
  ]);
493
- (0, _useThrottledEffect.default)(()=>{
437
+ useThrottledEffect(()=>{
494
438
  refreshCookie();
495
439
  }, 15000, [
496
440
  fields
497
441
  ]);
498
- (0, _react.useEffect)(()=>{
442
+ useEffect(()=>{
499
443
  contextRef.current = {
500
444
  ...contextRef.current
501
445
  } // triggers rerender of all components that subscribe to form
@@ -508,7 +452,7 @@ const Form = (props)=>{
508
452
  className,
509
453
  baseClass
510
454
  ].filter(Boolean).join(' ');
511
- (0, _useDebouncedEffect.useDebouncedEffect)(()=>{
455
+ useDebouncedEffect(()=>{
512
456
  const executeOnChange = async ()=>{
513
457
  if (Array.isArray(onChange)) {
514
458
  let revalidatedFormState;
@@ -519,7 +463,7 @@ const Form = (props)=>{
519
463
  });
520
464
  revalidatedFormState = result;
521
465
  }, Promise.resolve());
522
- const { changed, newState } = (0, _mergeServerFormState.mergeServerFormState)(fields, revalidatedFormState);
466
+ const { changed, newState } = mergeServerFormState(fields, revalidatedFormState);
523
467
  if (changed) {
524
468
  dispatchFields({
525
469
  type: 'REPLACE_STATE',
@@ -529,37 +473,37 @@ const Form = (props)=>{
529
473
  }
530
474
  }
531
475
  };
532
- executeOnChange() // eslint-disable-line @typescript-eslint/no-floating-promises
476
+ void executeOnChange() // eslint-disable-line @typescript-eslint/no-floating-promises
533
477
  ;
534
478
  }, 150, [
535
479
  fields,
536
480
  dispatchFields,
537
481
  onChange
538
482
  ]);
539
- return /*#__PURE__*/ _react.default.createElement("form", {
483
+ return /*#__PURE__*/ React.createElement("form", {
540
484
  action: action,
541
485
  className: classes,
542
486
  method: method,
543
487
  noValidate: true,
544
488
  onSubmit: (e)=>contextRef.current.submit({}, e),
545
489
  ref: formRef
546
- }, /*#__PURE__*/ _react.default.createElement(_context.FormContext.Provider, {
490
+ }, /*#__PURE__*/ React.createElement(FormContext.Provider, {
547
491
  value: contextRef.current
548
- }, /*#__PURE__*/ _react.default.createElement(_context.FormWatchContext.Provider, {
492
+ }, /*#__PURE__*/ React.createElement(FormWatchContext.Provider, {
549
493
  value: {
550
494
  fields,
551
495
  ...contextRef.current
552
496
  }
553
- }, /*#__PURE__*/ _react.default.createElement(_context.SubmittedContext.Provider, {
497
+ }, /*#__PURE__*/ React.createElement(SubmittedContext.Provider, {
554
498
  value: submitted
555
- }, /*#__PURE__*/ _react.default.createElement(_context.ProcessingContext.Provider, {
499
+ }, /*#__PURE__*/ React.createElement(ProcessingContext.Provider, {
556
500
  value: processing
557
- }, /*#__PURE__*/ _react.default.createElement(_context.ModifiedContext.Provider, {
501
+ }, /*#__PURE__*/ React.createElement(ModifiedContext.Provider, {
558
502
  value: modified
559
- }, /*#__PURE__*/ _react.default.createElement(_context.FormFieldsContext.Provider, {
503
+ }, /*#__PURE__*/ React.createElement(FormFieldsContext.Provider, {
560
504
  value: fieldsReducer
561
505
  }, children)))))));
562
506
  };
563
- const _default = Form;
507
+ export default Form;
564
508
 
565
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3Jtcy9Gb3JtL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1ub25pbnRlcmFjdGl2ZS1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IGlzRGVlcEVxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG5pbXBvcnQgeyBzZXJpYWxpemUgfSBmcm9tICdvYmplY3QtdG8tZm9ybWRhdGEnXG5pbXBvcnQgeyB3YWl0IH0gZnJvbSAncGF5bG9hZC91dGlsaXRpZXMnXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVkdWNlciwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSdcblxuaW1wb3J0IHR5cGUge1xuICBDb250ZXh0IGFzIEZvcm1Db250ZXh0VHlwZSxcbiAgRm9ybVN0YXRlLFxuICBHZXREYXRhQnlQYXRoLFxuICBQcm9wcyxcbiAgU3VibWl0T3B0aW9ucyxcbn0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgZ2V0Rm9ybVN0YXRlIH0gZnJvbSAnLi4vLi4nXG5pbXBvcnQgeyB1c2VEZWJvdW5jZWRFZmZlY3QgfSBmcm9tICcuLi8uLi9ob29rcy91c2VEZWJvdW5jZWRFZmZlY3QnXG5pbXBvcnQgdXNlVGhyb3R0bGVkRWZmZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZVRocm90dGxlZEVmZmVjdCdcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvQXV0aCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9Db25maWcnXG5pbXBvcnQgeyB1c2VEb2N1bWVudEluZm8gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvRG9jdW1lbnRJbmZvJ1xuaW1wb3J0IHsgdXNlTG9jYWxlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0xvY2FsZSdcbmltcG9ydCB7IHVzZU9wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9PcGVyYXRpb25Qcm92aWRlcidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL1RyYW5zbGF0aW9uJ1xuaW1wb3J0IHsgcmVxdWVzdHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvYXBpJ1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRleHQsXG4gIEZvcm1GaWVsZHNDb250ZXh0LFxuICBGb3JtV2F0Y2hDb250ZXh0LFxuICBNb2RpZmllZENvbnRleHQsXG4gIFByb2Nlc3NpbmdDb250ZXh0LFxuICBTdWJtaXR0ZWRDb250ZXh0LFxufSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgZXJyb3JNZXNzYWdlcyBmcm9tICcuL2Vycm9yTWVzc2FnZXMnXG5pbXBvcnQgeyBmaWVsZFJlZHVjZXIgfSBmcm9tICcuL2ZpZWxkUmVkdWNlcidcbmltcG9ydCBnZXREYXRhQnlQYXRoRnVuYyBmcm9tICcuL2dldERhdGFCeVBhdGgnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGFGdW5jIGZyb20gJy4vZ2V0U2libGluZ0RhdGEnXG5pbXBvcnQgaW5pdENvbnRleHRTdGF0ZSBmcm9tICcuL2luaXRDb250ZXh0U3RhdGUnXG5pbXBvcnQgeyBtZXJnZVNlcnZlckZvcm1TdGF0ZSB9IGZyb20gJy4vbWVyZ2VTZXJ2ZXJGb3JtU3RhdGUnXG5pbXBvcnQgcmVkdWNlRmllbGRzVG9WYWx1ZXMgZnJvbSAnLi9yZWR1Y2VGaWVsZHNUb1ZhbHVlcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2Zvcm0nXG5cbmNvbnN0IEZvcm06IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGlkLCBnZXREb2NQcmVmZXJlbmNlcyB9ID0gdXNlRG9jdW1lbnRJbmZvKClcblxuICBjb25zdCB7XG4gICAgYWN0aW9uLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBkaXNhYmxlU3VjY2Vzc1N0YXR1cyxcbiAgICBkaXNhYmxlZCxcbiAgICAvLyBmaWVsZHM6IGZpZWxkc0Zyb21Qcm9wcyA9IGNvbGxlY3Rpb24/LmZpZWxkcyB8fCBnbG9iYWw/LmZpZWxkcyxcbiAgICBiZWZvcmVTdWJtaXQsXG4gICAgaGFuZGxlUmVzcG9uc2UsXG4gICAgaW5pdGlhbFN0YXRlLCAvLyBmdWxseSBmb3JtZWQgaW5pdGlhbCBmaWVsZCBzdGF0ZVxuICAgIG9uQ2hhbmdlLFxuICAgIG9uU3VibWl0LFxuICAgIG9uU3VjY2VzcyxcbiAgICByZWRpcmVjdCxcbiAgICBzdWJtaXR0ZWQ6IHN1Ym1pdHRlZEZyb21Qcm9wcyxcbiAgICB1dWlkLFxuICAgIHdhaXRGb3JBdXRvY29tcGxldGUsXG4gIH0gPSBwcm9wc1xuXG4gIGNvbnN0IG1ldGhvZCA9ICdtZXRob2QnIGluIHByb3BzID8gcHJvcHMubWV0aG9kIDogdW5kZWZpbmVkXG5cbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcblxuICBjb25zdCB7IGNvZGU6IGxvY2FsZSB9ID0gdXNlTG9jYWxlKClcbiAgY29uc3QgeyBpMThuLCB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IHsgcmVmcmVzaENvb2tpZSwgdXNlciB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHVzZU9wZXJhdGlvbigpXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcbiAgY29uc3Qge1xuICAgIHJvdXRlczogeyBhcGk6IGFwaVJvdXRlIH0sXG4gICAgc2VydmVyVVJMLFxuICB9ID0gY29uZmlnXG5cbiAgY29uc3QgW21vZGlmaWVkLCBzZXRNb2RpZmllZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Byb2Nlc3NpbmcsIHNldFByb2Nlc3NpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzdWJtaXR0ZWQsIHNldFN1Ym1pdHRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgZm9ybVJlZiA9IHVzZVJlZjxIVE1MRm9ybUVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoe30gYXMgRm9ybUNvbnRleHRUeXBlKVxuICBjb25zdCB7IGNvbGxlY3Rpb25TbHVnLCBnbG9iYWxTbHVnIH0gPSB1c2VEb2N1bWVudEluZm8oKVxuXG4gIGNvbnN0IGZpZWxkc1JlZHVjZXIgPSB1c2VSZWR1Y2VyKGZpZWxkUmVkdWNlciwge30sICgpID0+IGluaXRpYWxTdGF0ZSlcbiAgLyoqXG4gICAqIGBmaWVsZHNgIGlzIHRoZSBjdXJyZW50LCB1cC10by1kYXRlIHN0YXRlL2RhdGEgb2YgYWxsIGZpZWxkcyBpbiB0aGUgZm9ybS4gSXQgY2FuIGJlIG1vZGlmaWVkIGJ5IHVzaW5nIGRpc3BhdGNoRmllbGRzLFxuICAgKiB3aGljaCBjYWxscyB0aGUgZmllbGRSZWR1Y2VyLCB3aGljaCB0aGVuIHVwZGF0ZXMgdGhlIHN0YXRlLlxuICAgKi9cbiAgY29uc3QgW2ZpZWxkcywgZGlzcGF0Y2hGaWVsZHNdID0gZmllbGRzUmVkdWNlclxuXG4gIGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMgPSBmaWVsZHNcblxuICBjb25zdCB2YWxpZGF0ZUZvcm0gPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdGVkRmllbGRTdGF0ZSA9IHt9XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlXG5cbiAgICBjb25zdCBkYXRhRnJvbUNvbnRleHQgPSBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YSgpXG4gICAgY29uc3QgZGF0YSA9IGRhdGFGcm9tQ29udGV4dFxuXG4gICAgY29uc3QgdmFsaWRhdGlvblByb21pc2VzID0gT2JqZWN0LmVudHJpZXMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcykubWFwKFxuICAgICAgYXN5bmMgKFtwYXRoLCBmaWVsZF0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVkRmllbGQgPSB7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQucGFzc2VzQ29uZGl0aW9uICE9PSBmYWxzZSkge1xuICAgICAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC52YWxpZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IHZhbHVlVG9WYWxpZGF0ZSA9IGZpZWxkLnZhbHVlXG5cbiAgICAgICAgICAgIGlmIChmaWVsZD8ucm93cyAmJiBBcnJheS5pc0FycmF5KGZpZWxkLnJvd3MpKSB7XG4gICAgICAgICAgICAgIHZhbHVlVG9WYWxpZGF0ZSA9IGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhQnlQYXRoKHBhdGgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCBmaWVsZC52YWxpZGF0ZSh2YWx1ZVRvVmFsaWRhdGUsIHtcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgICAgICBzaWJsaW5nRGF0YTogY29udGV4dFJlZi5jdXJyZW50LmdldFNpYmxpbmdEYXRhKHBhdGgpLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWVsZC5lcnJvck1lc3NhZ2UgPSB2YWxpZGF0aW9uUmVzdWx0XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWVsZC52YWxpZCA9IGZhbHNlXG4gICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZWRGaWVsZFN0YXRlW3BhdGhdID0gdmFsaWRhdGVkRmllbGRcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodmFsaWRhdGlvblByb21pc2VzKVxuXG4gICAgaWYgKCFpc0RlZXBFcXVhbChjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB2YWxpZGF0ZWRGaWVsZFN0YXRlKSkge1xuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyB0eXBlOiAnUkVQTEFDRV9TVEFURScsIHN0YXRlOiB2YWxpZGF0ZWRGaWVsZFN0YXRlIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWRcbiAgfSwgW2lkLCB1c2VyLCBvcGVyYXRpb24sIHQsIGRpc3BhdGNoRmllbGRzLCBjb25maWddKVxuXG4gIGNvbnN0IHN1Ym1pdCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChvcHRpb25zOiBTdWJtaXRPcHRpb25zID0ge30sIGUpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb25Ub1VzZSA9IGFjdGlvbixcbiAgICAgICAgbWV0aG9kOiBtZXRob2RUb1VzZSA9IG1ldGhvZCxcbiAgICAgICAgb3ZlcnJpZGVzID0ge30sXG4gICAgICAgIHNraXBWYWxpZGF0aW9uLFxuICAgICAgfSA9IG9wdGlvbnNcblxuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChlKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG5cbiAgICAgIHNldFByb2Nlc3NpbmcodHJ1ZSlcbiAgICAgIHNldFN1Ym1pdHRlZCh0cnVlKVxuXG4gICAgICBpZiAod2FpdEZvckF1dG9jb21wbGV0ZSkgYXdhaXQgd2FpdCgxMDApXG5cbiAgICAgIC8vIEV4ZWN1dGUgc2VydmVyIHNpZGUgdmFsaWRhdGlvbnNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGJlZm9yZVN1Ym1pdCkpIHtcbiAgICAgICAgbGV0IHJldmFsaWRhdGVkRm9ybVN0YXRlOiBGb3JtU3RhdGVcblxuICAgICAgICBhd2FpdCBiZWZvcmVTdWJtaXQucmVkdWNlKGFzeW5jIChwcmlvck9uQ2hhbmdlLCBiZWZvcmVTdWJtaXRGbikgPT4ge1xuICAgICAgICAgIGF3YWl0IHByaW9yT25DaGFuZ2VcblxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJlZm9yZVN1Ym1pdEZuKHtcbiAgICAgICAgICAgIGZvcm1TdGF0ZTogZmllbGRzLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXZhbGlkYXRlZEZvcm1TdGF0ZSA9IHJlc3VsdFxuICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gT2JqZWN0LmVudHJpZXMocmV2YWxpZGF0ZWRGb3JtU3RhdGUpLmV2ZXJ5KChbLCBmaWVsZF0pID0+IGZpZWxkLnZhbGlkKVxuXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIGRpc3BhdGNoRmllbGRzKHsgdHlwZTogJ1JFUExBQ0VfU1RBVEUnLCBzdGF0ZTogcmV2YWxpZGF0ZWRGb3JtU3RhdGUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc1ZhbGlkID0gc2tpcFZhbGlkYXRpb24gPyB0cnVlIDogYXdhaXQgY29udGV4dFJlZi5jdXJyZW50LnZhbGlkYXRlRm9ybSgpXG5cbiAgICAgIC8vIElmIG5vdCB2YWxpZCwgcHJldmVudCBzdWJtaXNzaW9uXG4gICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgdG9hc3QuZXJyb3IodCgnZXJyb3I6Y29ycmVjdEludmFsaWRGaWVsZHMnKSlcbiAgICAgICAgc2V0UHJvY2Vzc2luZyhmYWxzZSlcblxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSWYgc3VibWl0IGhhbmRsZXIgY29tZXMgdGhyb3VnaCB2aWEgcHJvcHMsIHJ1biB0aGF0XG4gICAgICBpZiAob25TdWJtaXQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAuLi5yZWR1Y2VGaWVsZHNUb1ZhbHVlcyhmaWVsZHMsIHRydWUpLFxuICAgICAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICAgICAgfVxuXG4gICAgICAgIG9uU3VibWl0KGZpZWxkcywgZGF0YSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybURhdGEgPSBjb250ZXh0UmVmLmN1cnJlbnQuY3JlYXRlRm9ybURhdGEob3ZlcnJpZGVzKVxuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgcmVzXG5cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb25Ub1VzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXMgPSBhd2FpdCByZXF1ZXN0c1ttZXRob2RUb1VzZS50b0xvd2VyQ2FzZSgpXShhY3Rpb25Ub1VzZSwge1xuICAgICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY3Rpb25Ub1VzZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJlcyA9IGF3YWl0IGFjdGlvblRvVXNlKGZvcm1EYXRhKVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0TW9kaWZpZWQoZmFsc2UpXG5cbiAgICAgICAgaWYgKHR5cGVvZiBoYW5kbGVSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGhhbmRsZVJlc3BvbnNlKHJlcylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG5cbiAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpXG4gICAgICAgIGNvbnN0IGlzSlNPTiA9IGNvbnRlbnRUeXBlICYmIGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSAhPT0gLTFcblxuICAgICAgICBsZXQganNvbjogYW55ID0ge31cblxuICAgICAgICBpZiAoaXNKU09OKSBqc29uID0gYXdhaXQgcmVzLmpzb24oKVxuXG4gICAgICAgIGlmIChyZXMuc3RhdHVzIDwgNDAwKSB7XG4gICAgICAgICAgc2V0U3VibWl0dGVkKGZhbHNlKVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBvblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIG9uU3VjY2Vzcyhqc29uKVxuXG4gICAgICAgICAgaWYgKHJlZGlyZWN0KSB7XG4gICAgICAgICAgICAvLyBjb25zdCBkZXN0aW5hdGlvbiA9IHtcbiAgICAgICAgICAgIC8vICAgcGF0aG5hbWU6IHJlZGlyZWN0LFxuICAgICAgICAgICAgLy8gICBzdGF0ZToge30sXG4gICAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICAgIC8vIGlmICh0eXBlb2YganNvbiA9PT0gJ29iamVjdCcgJiYganNvbi5tZXNzYWdlICYmICFkaXNhYmxlU3VjY2Vzc1N0YXR1cykge1xuICAgICAgICAgICAgLy8gICBkZXN0aW5hdGlvbi5zdGF0ZSA9IHtcbiAgICAgICAgICAgIC8vICAgICBzdGF0dXM6IFtcbiAgICAgICAgICAgIC8vICAgICAgIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgbWVzc2FnZToganNvbi5tZXNzYWdlLFxuICAgICAgICAgICAgLy8gICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAvLyAgICAgICB9LFxuICAgICAgICAgICAgLy8gICAgIF0sXG4gICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgIC8vIH1cblxuICAgICAgICAgICAgcm91dGVyLnB1c2gocmVkaXJlY3QpXG4gICAgICAgICAgfSBlbHNlIGlmICghZGlzYWJsZVN1Y2Nlc3NTdGF0dXMpIHtcbiAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoanNvbi5tZXNzYWdlIHx8IHQoJ2dlbmVyYWw6c3VibWlzc2lvblN1Y2Nlc3NmdWwnKSwgeyBhdXRvQ2xvc2U6IDMwMDAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5jb250ZXh0UmVmLmN1cnJlbnQgfSAvLyB0cmlnZ2VycyByZXJlbmRlciBvZiBhbGwgY29tcG9uZW50cyB0aGF0IHN1YnNjcmliZSB0byBmb3JtXG4gICAgICAgICAgaWYgKGpzb24ubWVzc2FnZSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoanNvbi5tZXNzYWdlKVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShqc29uLmVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtmaWVsZEVycm9ycywgbm9uRmllbGRFcnJvcnNdID0ganNvbi5lcnJvcnMucmVkdWNlKFxuICAgICAgICAgICAgICAoW2ZpZWxkRXJycywgbm9uRmllbGRFcnJzXSwgZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RmllbGRFcnJzID0gW11cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdOb25GaWVsZEVycnMgPSBbXVxuXG4gICAgICAgICAgICAgICAgaWYgKGVycj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgbmV3Tm9uRmllbGRFcnJzLnB1c2goZXJyKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVycj8uZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgIGVyci5kYXRhLmZvckVhY2goKGRhdGFFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUVycm9yPy5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpZWxkRXJycy5wdXNoKGRhdGFFcnJvcilcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBuZXdOb25GaWVsZEVycnMucHVzaChkYXRhRXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgIFsuLi5maWVsZEVycnMsIC4uLm5ld0ZpZWxkRXJyc10sXG4gICAgICAgICAgICAgICAgICBbLi4ubm9uRmllbGRFcnJzLCAuLi5uZXdOb25GaWVsZEVycnNdLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW1tdLCBbXV0sXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGZpZWxkRXJyb3JzLmZvckVhY2goKGVycikgPT4ge1xuICAgICAgICAgICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1VQREFURScsXG4gICAgICAgICAgICAgICAgLi4uKGNvbnRleHRSZWYuY3VycmVudD8uZmllbGRzPy5bZXJyLmZpZWxkXSB8fCB7fSksXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwYXRoOiBlcnIuZmllbGQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgbm9uRmllbGRFcnJvcnMuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIHRvYXN0LmVycm9yKGVyci5tZXNzYWdlIHx8IHQoJ2Vycm9yOnVua25vd24nKSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VzPy5bcmVzLnN0YXR1c10gfHwgcmVzPy5zdGF0dXNUZXh0IHx8IHQoJ2Vycm9yOnVua25vd24nKVxuXG4gICAgICAgICAgdG9hc3QuZXJyb3IobWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG5cbiAgICAgICAgdG9hc3QuZXJyb3IoZXJyKVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYWN0aW9uLFxuICAgICAgZGlzYWJsZVN1Y2Nlc3NTdGF0dXMsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGRpc3BhdGNoRmllbGRzLFxuICAgICAgZmllbGRzLFxuICAgICAgaGFuZGxlUmVzcG9uc2UsXG4gICAgICBtZXRob2QsXG4gICAgICBvblN1Ym1pdCxcbiAgICAgIG9uU3VjY2VzcyxcbiAgICAgIHJlZGlyZWN0LFxuICAgICAgcm91dGVyLFxuICAgICAgdCxcbiAgICAgIGkxOG4sXG4gICAgICB3YWl0Rm9yQXV0b2NvbXBsZXRlLFxuICAgICAgYmVmb3JlU3VibWl0LFxuICAgIF0sXG4gIClcblxuICBjb25zdCBnZXRGaWVsZHMgPSB1c2VDYWxsYmFjaygoKSA9PiBjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCBbXSlcblxuICBjb25zdCBnZXRGaWVsZCA9IHVzZUNhbGxiYWNrKChwYXRoOiBzdHJpbmcpID0+IGNvbnRleHRSZWYuY3VycmVudC5maWVsZHNbcGF0aF0sIFtdKVxuXG4gIGNvbnN0IGdldERhdGEgPSB1c2VDYWxsYmFjaygoKSA9PiByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB0cnVlKSwgW10pXG5cbiAgY29uc3QgZ2V0U2libGluZ0RhdGEgPSB1c2VDYWxsYmFjayhcbiAgICAocGF0aDogc3RyaW5nKSA9PiBnZXRTaWJsaW5nRGF0YUZ1bmMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgcGF0aCksXG4gICAgW10sXG4gIClcbiAgY29uc3QgZ2V0RGF0YUJ5UGF0aCA9IHVzZUNhbGxiYWNrPEdldERhdGFCeVBhdGg+KFxuICAgIChwYXRoOiBzdHJpbmcpID0+IGdldERhdGFCeVBhdGhGdW5jKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHBhdGgpLFxuICAgIFtdLFxuICApXG5cbiAgY29uc3QgY3JlYXRlRm9ybURhdGEgPSB1c2VDYWxsYmFjaygob3ZlcnJpZGVzOiBhbnkgPSB7fSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB0cnVlKVxuXG4gICAgY29uc3QgZmlsZSA9IGRhdGE/LmZpbGVcblxuICAgIGlmIChmaWxlKSB7XG4gICAgICBkZWxldGUgZGF0YS5maWxlXG4gICAgfVxuXG4gICAgY29uc3QgZGF0YVdpdGhPdmVycmlkZXMgPSB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgLi4ub3ZlcnJpZGVzLFxuICAgIH1cblxuICAgIGNvbnN0IGRhdGFUb1NlcmlhbGl6ZSA9IHtcbiAgICAgIF9wYXlsb2FkOiBKU09OLnN0cmluZ2lmeShkYXRhV2l0aE92ZXJyaWRlcyksXG4gICAgICBmaWxlLFxuICAgIH1cblxuICAgIC8vIG51bGxBc1VuZGVmaW5lZHMgaXMgaW1wb3J0YW50IHRvIGFsbG93IHVwbG9hZHMgYW5kIHJlbGF0aW9uc2hpcCBmaWVsZHMgdG8gY2xlYXIgdGhlbXNlbHZlc1xuICAgIGNvbnN0IGZvcm1EYXRhID0gc2VyaWFsaXplKGRhdGFUb1NlcmlhbGl6ZSwgeyBpbmRpY2VzOiB0cnVlLCBudWxsc0FzVW5kZWZpbmVkczogZmFsc2UgfSlcblxuICAgIHJldHVybiBmb3JtRGF0YVxuICB9LCBbXSlcblxuICBjb25zdCByZXNldCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChmaWVsZFNjaGVtYTogRmllbGRbXSwgZGF0YTogdW5rbm93bikgPT4ge1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXMgPSBhd2FpdCBnZXREb2NQcmVmZXJlbmNlcygpXG4gICAgICAvLyBjb25zdCBzdGF0ZSA9IGF3YWl0IGJ1aWxkU3RhdGVGcm9tU2NoZW1hKHtcbiAgICAgIC8vICAgaWQsXG4gICAgICAvLyAgIC8vIFRPRE86IGZpeCB0aGlzXG4gICAgICAvLyAgIC8vIEB0cy1pZ25vcmUtbmV4dC1saW5lXG4gICAgICAvLyAgIGNvbmZpZyxcbiAgICAgIC8vICAgZGF0YSxcbiAgICAgIC8vICAgZmllbGRTY2hlbWEsXG4gICAgICAvLyAgIGxvY2FsZSxcbiAgICAgIC8vICAgb3BlcmF0aW9uLFxuICAgICAgLy8gICBwcmVmZXJlbmNlcyxcbiAgICAgIC8vICAgdCxcbiAgICAgIC8vICAgdXNlcixcbiAgICAgIC8vIH0pXG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICAgICAgLy8gZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfSxcbiAgICBbZ2V0RG9jUHJlZmVyZW5jZXNdLFxuICApXG5cbiAgY29uc3QgcmVwbGFjZVN0YXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKHN0YXRlOiBGb3JtU3RhdGUpID0+IHtcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uaW5pdENvbnRleHRTdGF0ZSB9IGFzIEZvcm1Db250ZXh0VHlwZVxuICAgICAgc2V0TW9kaWZpZWQoZmFsc2UpXG4gICAgICBkaXNwYXRjaEZpZWxkcyh7IHR5cGU6ICdSRVBMQUNFX1NUQVRFJywgc3RhdGUgfSlcbiAgICB9LFxuICAgIFtkaXNwYXRjaEZpZWxkc10sXG4gIClcblxuICBjb25zdCBnZXRGaWVsZFN0YXRlQnlQYXRoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgZGF0YSwgcGF0aCB9KSA9PiB7XG4gICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IGF3YWl0IGdldEZvcm1TdGF0ZSh7XG4gICAgICAgIGFwaVJvdXRlLFxuICAgICAgICBib2R5OiB7XG4gICAgICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBnbG9iYWxTbHVnLFxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAgVHVybnM6ICdhcnJheUZpZWxkLjAuZ3JvdXAxMjNmaWVsZC5hcnJheUZpZWxkLjAudGV4dEZpZWxkJ1xuICAgICAgICAgICAgSW50bzogJ2FycmF5RmllbGQuZ3JvdXAxMjNmaWVsZC5hcnJheUZpZWxkLnRleHRGaWVsZCdcbiAgICAgICAgICAqL1xuICAgICAgICAgIHNjaGVtYVBhdGg6IGAke2NvbGxlY3Rpb25TbHVnIHx8IGdsb2JhbFNsdWd9LiR7cGF0aH1gLnJlcGxhY2UoL1xcLlxcZCtcXC4vZywgJy4nKSxcbiAgICAgICAgfSxcbiAgICAgICAgc2VydmVyVVJMLFxuICAgICAgfSlcbiAgICAgIHJldHVybiBmaWVsZFNjaGVtYVxuICAgIH0sXG4gICAgW2FwaVJvdXRlLCBjb2xsZWN0aW9uU2x1ZywgZ2xvYmFsU2x1Zywgc2VydmVyVVJMXSxcbiAgKVxuXG4gIGNvbnN0IGFkZEZpZWxkUm93OiBGb3JtQ29udGV4dFR5cGVbJ2FkZEZpZWxkUm93J10gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoeyBkYXRhLCBwYXRoLCByb3dJbmRleCB9KSA9PiB7XG4gICAgICBjb25zdCBzdWJGaWVsZFN0YXRlID0gYXdhaXQgZ2V0RmllbGRTdGF0ZUJ5UGF0aCh7IGRhdGEsIHBhdGggfSlcblxuICAgICAgZGlzcGF0Y2hGaWVsZHMoe1xuICAgICAgICB0eXBlOiAnQUREX1JPVycsXG4gICAgICAgIGJsb2NrVHlwZTogZGF0YT8uYmxvY2tUeXBlLFxuICAgICAgICBwYXRoLFxuICAgICAgICByb3dJbmRleCxcbiAgICAgICAgc3ViRmllbGRTdGF0ZSxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZ2V0RmllbGRTdGF0ZUJ5UGF0aCwgZGlzcGF0Y2hGaWVsZHNdLFxuICApXG5cbiAgY29uc3QgcmVtb3ZlRmllbGRSb3c6IEZvcm1Db250ZXh0VHlwZVsncmVtb3ZlRmllbGRSb3cnXSA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHBhdGgsIHJvd0luZGV4IH0pID0+IHtcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgdHlwZTogJ1JFTU9WRV9ST1cnLCBwYXRoLCByb3dJbmRleCB9KVxuICAgIH0sXG4gICAgW2Rpc3BhdGNoRmllbGRzXSxcbiAgKVxuXG4gIGNvbnN0IHJlcGxhY2VGaWVsZFJvdzogRm9ybUNvbnRleHRUeXBlWydyZXBsYWNlRmllbGRSb3cnXSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGRhdGEsIHBhdGgsIHJvd0luZGV4IH0pID0+IHtcbiAgICAgIGNvbnN0IHN1YkZpZWxkU3RhdGUgPSBhd2FpdCBnZXRGaWVsZFN0YXRlQnlQYXRoKHsgZGF0YSwgcGF0aCB9KVxuXG4gICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgIHR5cGU6ICdSRVBMQUNFX1JPVycsXG4gICAgICAgIGJsb2NrVHlwZTogZGF0YT8uYmxvY2tUeXBlLFxuICAgICAgICBwYXRoLFxuICAgICAgICByb3dJbmRleCxcbiAgICAgICAgc3ViRmllbGRTdGF0ZSxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZ2V0RmllbGRTdGF0ZUJ5UGF0aCwgZGlzcGF0Y2hGaWVsZHNdLFxuICApXG5cbiAgY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCA9IHN1Ym1pdFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RmllbGRzID0gZ2V0RmllbGRzXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXRGaWVsZCA9IGdldEZpZWxkXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhID0gZ2V0RGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0U2libGluZ0RhdGEgPSBnZXRTaWJsaW5nRGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YUJ5UGF0aCA9IGdldERhdGFCeVBhdGhcbiAgY29udGV4dFJlZi5jdXJyZW50LnZhbGlkYXRlRm9ybSA9IHZhbGlkYXRlRm9ybVxuICBjb250ZXh0UmVmLmN1cnJlbnQuY3JlYXRlRm9ybURhdGEgPSBjcmVhdGVGb3JtRGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0TW9kaWZpZWQgPSBzZXRNb2RpZmllZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0UHJvY2Vzc2luZyA9IHNldFByb2Nlc3NpbmdcbiAgY29udGV4dFJlZi5jdXJyZW50LnNldFN1Ym1pdHRlZCA9IHNldFN1Ym1pdHRlZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZGlzYWJsZWQgPSBkaXNhYmxlZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZm9ybVJlZiA9IGZvcm1SZWZcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlc2V0ID0gcmVzZXRcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlcGxhY2VTdGF0ZSA9IHJlcGxhY2VTdGF0ZVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZGlzcGF0Y2hGaWVsZHMgPSBkaXNwYXRjaEZpZWxkc1xuICBjb250ZXh0UmVmLmN1cnJlbnQuYWRkRmllbGRSb3cgPSBhZGRGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQucmVtb3ZlRmllbGRSb3cgPSByZW1vdmVGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQucmVwbGFjZUZpZWxkUm93ID0gcmVwbGFjZUZpZWxkUm93XG4gIGNvbnRleHRSZWYuY3VycmVudC51dWlkID0gdXVpZFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBzdWJtaXR0ZWRGcm9tUHJvcHMgPT09ICdib29sZWFuJykgc2V0U3VibWl0dGVkKHN1Ym1pdHRlZEZyb21Qcm9wcylcbiAgfSwgW3N1Ym1pdHRlZEZyb21Qcm9wc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbFN0YXRlKSB7XG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgdHlwZTogJ1JFUExBQ0VfU1RBVEUnLCBzdGF0ZTogaW5pdGlhbFN0YXRlIH0pXG4gICAgfVxuICB9LCBbaW5pdGlhbFN0YXRlLCBkaXNwYXRjaEZpZWxkc10pXG5cbiAgdXNlVGhyb3R0bGVkRWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIHJlZnJlc2hDb29raWUoKVxuICAgIH0sXG4gICAgMTUwMDAsXG4gICAgW2ZpZWxkc10sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uY29udGV4dFJlZi5jdXJyZW50IH0gLy8gdHJpZ2dlcnMgcmVyZW5kZXIgb2YgYWxsIGNvbXBvbmVudHMgdGhhdCBzdWJzY3JpYmUgdG8gZm9ybVxuICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICB9LCBbbG9jYWxlXSlcblxuICBjb25zdCBjbGFzc2VzID0gW2NsYXNzTmFtZSwgYmFzZUNsYXNzXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpXG5cbiAgdXNlRGVib3VuY2VkRWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGVPbkNoYW5nZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob25DaGFuZ2UpKSB7XG4gICAgICAgICAgbGV0IHJldmFsaWRhdGVkRm9ybVN0YXRlOiBGb3JtU3RhdGVcblxuICAgICAgICAgIGF3YWl0IG9uQ2hhbmdlLnJlZHVjZShhc3luYyAocHJpb3JPbkNoYW5nZSwgb25DaGFuZ2VGbikgPT4ge1xuICAgICAgICAgICAgYXdhaXQgcHJpb3JPbkNoYW5nZVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvbkNoYW5nZUZuKHtcbiAgICAgICAgICAgICAgZm9ybVN0YXRlOiBmaWVsZHMsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXZhbGlkYXRlZEZvcm1TdGF0ZSA9IHJlc3VsdFxuICAgICAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgICAgICAgY29uc3QgeyBjaGFuZ2VkLCBuZXdTdGF0ZSB9ID0gbWVyZ2VTZXJ2ZXJGb3JtU3RhdGUoZmllbGRzLCByZXZhbGlkYXRlZEZvcm1TdGF0ZSlcblxuICAgICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICBkaXNwYXRjaEZpZWxkcyh7IHR5cGU6ICdSRVBMQUNFX1NUQVRFJywgb3B0aW1pemU6IGZhbHNlLCBzdGF0ZTogbmV3U3RhdGUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZXhlY3V0ZU9uQ2hhbmdlKCkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICB9LFxuICAgIDE1MCxcbiAgICBbZmllbGRzLCBkaXNwYXRjaEZpZWxkcywgb25DaGFuZ2VdLFxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybVxuICAgICAgYWN0aW9uPXthY3Rpb259XG4gICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICBtZXRob2Q9e21ldGhvZH1cbiAgICAgIG5vVmFsaWRhdGVcbiAgICAgIG9uU3VibWl0PXsoZSkgPT4gY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCh7fSwgZSl9XG4gICAgICByZWY9e2Zvcm1SZWZ9XG4gICAgPlxuICAgICAgPEZvcm1Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0UmVmLmN1cnJlbnR9PlxuICAgICAgICA8Rm9ybVdhdGNoQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICAuLi5jb250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTdWJtaXR0ZWRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzdWJtaXR0ZWR9PlxuICAgICAgICAgICAgPFByb2Nlc3NpbmdDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwcm9jZXNzaW5nfT5cbiAgICAgICAgICAgICAgPE1vZGlmaWVkQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bW9kaWZpZWR9PlxuICAgICAgICAgICAgICAgIDxGb3JtRmllbGRzQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZmllbGRzUmVkdWNlcn0+XG4gICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9Gb3JtRmllbGRzQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9Nb2RpZmllZENvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICAgICA8L1Byb2Nlc3NpbmdDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgIDwvU3VibWl0dGVkQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9Gb3JtV2F0Y2hDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9Gb3JtQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L2Zvcm0+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRm9ybVxuIl0sIm5hbWVzIjpbImJhc2VDbGFzcyIsIkZvcm0iLCJwcm9wcyIsImlkIiwiZ2V0RG9jUHJlZmVyZW5jZXMiLCJ1c2VEb2N1bWVudEluZm8iLCJhY3Rpb24iLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImRpc2FibGVTdWNjZXNzU3RhdHVzIiwiZGlzYWJsZWQiLCJiZWZvcmVTdWJtaXQiLCJoYW5kbGVSZXNwb25zZSIsImluaXRpYWxTdGF0ZSIsIm9uQ2hhbmdlIiwib25TdWJtaXQiLCJvblN1Y2Nlc3MiLCJyZWRpcmVjdCIsInN1Ym1pdHRlZCIsInN1Ym1pdHRlZEZyb21Qcm9wcyIsInV1aWQiLCJ3YWl0Rm9yQXV0b2NvbXBsZXRlIiwibWV0aG9kIiwidW5kZWZpbmVkIiwicm91dGVyIiwidXNlUm91dGVyIiwiY29kZSIsImxvY2FsZSIsInVzZUxvY2FsZSIsImkxOG4iLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJyZWZyZXNoQ29va2llIiwidXNlciIsInVzZUF1dGgiLCJvcGVyYXRpb24iLCJ1c2VPcGVyYXRpb24iLCJjb25maWciLCJ1c2VDb25maWciLCJyb3V0ZXMiLCJhcGkiLCJhcGlSb3V0ZSIsInNlcnZlclVSTCIsIm1vZGlmaWVkIiwic2V0TW9kaWZpZWQiLCJ1c2VTdGF0ZSIsInByb2Nlc3NpbmciLCJzZXRQcm9jZXNzaW5nIiwic2V0U3VibWl0dGVkIiwiZm9ybVJlZiIsInVzZVJlZiIsImNvbnRleHRSZWYiLCJjb2xsZWN0aW9uU2x1ZyIsImdsb2JhbFNsdWciLCJmaWVsZHNSZWR1Y2VyIiwidXNlUmVkdWNlciIsImZpZWxkUmVkdWNlciIsImZpZWxkcyIsImRpc3BhdGNoRmllbGRzIiwiY3VycmVudCIsInZhbGlkYXRlRm9ybSIsInVzZUNhbGxiYWNrIiwidmFsaWRhdGVkRmllbGRTdGF0ZSIsImlzVmFsaWQiLCJkYXRhRnJvbUNvbnRleHQiLCJnZXREYXRhIiwiZGF0YSIsInZhbGlkYXRpb25Qcm9taXNlcyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJwYXRoIiwiZmllbGQiLCJ2YWxpZGF0ZWRGaWVsZCIsInZhbGlkIiwicGFzc2VzQ29uZGl0aW9uIiwidmFsaWRhdGlvblJlc3VsdCIsInZhbGlkYXRlIiwidmFsdWVUb1ZhbGlkYXRlIiwidmFsdWUiLCJyb3dzIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0RGF0YUJ5UGF0aCIsInNpYmxpbmdEYXRhIiwiZ2V0U2libGluZ0RhdGEiLCJlcnJvck1lc3NhZ2UiLCJQcm9taXNlIiwiYWxsIiwiaXNEZWVwRXF1YWwiLCJ0eXBlIiwic3RhdGUiLCJzdWJtaXQiLCJvcHRpb25zIiwiZSIsImFjdGlvblRvVXNlIiwibWV0aG9kVG9Vc2UiLCJvdmVycmlkZXMiLCJza2lwVmFsaWRhdGlvbiIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwid2FpdCIsInJldmFsaWRhdGVkRm9ybVN0YXRlIiwicmVkdWNlIiwicHJpb3JPbkNoYW5nZSIsImJlZm9yZVN1Ym1pdEZuIiwicmVzdWx0IiwiZm9ybVN0YXRlIiwicmVzb2x2ZSIsImV2ZXJ5IiwidG9hc3QiLCJlcnJvciIsInJlZHVjZUZpZWxkc1RvVmFsdWVzIiwiZm9ybURhdGEiLCJjcmVhdGVGb3JtRGF0YSIsInJlcyIsInJlcXVlc3RzIiwidG9Mb3dlckNhc2UiLCJib2R5IiwiaGVhZGVycyIsImxhbmd1YWdlIiwiY29udGVudFR5cGUiLCJnZXQiLCJpc0pTT04iLCJpbmRleE9mIiwianNvbiIsInN0YXR1cyIsInB1c2giLCJzdWNjZXNzIiwibWVzc2FnZSIsImF1dG9DbG9zZSIsImVycm9ycyIsImZpZWxkRXJyb3JzIiwibm9uRmllbGRFcnJvcnMiLCJmaWVsZEVycnMiLCJub25GaWVsZEVycnMiLCJlcnIiLCJuZXdGaWVsZEVycnMiLCJuZXdOb25GaWVsZEVycnMiLCJmb3JFYWNoIiwiZGF0YUVycm9yIiwiZXJyb3JNZXNzYWdlcyIsInN0YXR1c1RleHQiLCJnZXRGaWVsZHMiLCJnZXRGaWVsZCIsImdldFNpYmxpbmdEYXRhRnVuYyIsImdldERhdGFCeVBhdGhGdW5jIiwiZmlsZSIsImRhdGFXaXRoT3ZlcnJpZGVzIiwiZGF0YVRvU2VyaWFsaXplIiwiX3BheWxvYWQiLCJKU09OIiwic3RyaW5naWZ5Iiwic2VyaWFsaXplIiwiaW5kaWNlcyIsIm51bGxzQXNVbmRlZmluZWRzIiwicmVzZXQiLCJmaWVsZFNjaGVtYSIsInByZWZlcmVuY2VzIiwiaW5pdENvbnRleHRTdGF0ZSIsInJlcGxhY2VTdGF0ZSIsImdldEZpZWxkU3RhdGVCeVBhdGgiLCJnZXRGb3JtU3RhdGUiLCJzY2hlbWFQYXRoIiwicmVwbGFjZSIsImFkZEZpZWxkUm93Iiwicm93SW5kZXgiLCJzdWJGaWVsZFN0YXRlIiwiYmxvY2tUeXBlIiwicmVtb3ZlRmllbGRSb3ciLCJyZXBsYWNlRmllbGRSb3ciLCJ1c2VFZmZlY3QiLCJ1c2VUaHJvdHRsZWRFZmZlY3QiLCJjbGFzc2VzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJ1c2VEZWJvdW5jZWRFZmZlY3QiLCJleGVjdXRlT25DaGFuZ2UiLCJvbkNoYW5nZUZuIiwiY2hhbmdlZCIsIm5ld1N0YXRlIiwibWVyZ2VTZXJ2ZXJGb3JtU3RhdGUiLCJvcHRpbWl6ZSIsImZvcm0iLCJub1ZhbGlkYXRlIiwicmVmIiwiRm9ybUNvbnRleHQiLCJQcm92aWRlciIsIkZvcm1XYXRjaENvbnRleHQiLCJTdWJtaXR0ZWRDb250ZXh0IiwiUHJvY2Vzc2luZ0NvbnRleHQiLCJNb2RpZmllZENvbnRleHQiLCJGb3JtRmllbGRzQ29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OytCQXlsQkE7OztlQUFBOzs7a0VBcmxCd0I7NEJBQ0U7a0NBQ0E7MkJBQ0w7K0RBQ3VEOytCQUN0RDtrQkFVTztvQ0FDTTsyRUFDSjtzQkFDUDt3QkFDRTs4QkFDTTt3QkFDTjttQ0FDRzs2QkFDRTtxQkFDTjt5QkFRbEI7c0VBQ21COzhCQUNHO3NFQUNDO3VFQUNDO3lFQUNGO3NDQUNROzZFQUNKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVqQyxNQUFNQSxZQUFZO0FBRWxCLE1BQU1DLE9BQXdCLENBQUNDO0lBQzdCLE1BQU0sRUFBRUMsRUFBRSxFQUFFQyxpQkFBaUIsRUFBRSxHQUFHQyxJQUFBQSw2QkFBZTtJQUVqRCxNQUFNLEVBQ0pDLE1BQU0sRUFDTkMsUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLG9CQUFvQixFQUNwQkMsUUFBUSxFQUNSLGtFQUFrRTtJQUNsRUMsWUFBWSxFQUNaQyxjQUFjLEVBQ2RDLFlBQVksRUFDWkMsUUFBUSxFQUNSQyxRQUFR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
509
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3Jtcy9Gb3JtL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgRmllbGQsIEZvcm1TdGF0ZSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgaXNEZWVwRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gJ29iamVjdC10by1mb3JtZGF0YSdcbmltcG9ydCB7IHdhaXQgfSBmcm9tICdwYXlsb2FkL3V0aWxpdGllcydcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWR1Y2VyLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gJ3JlYWN0LXRvYXN0aWZ5J1xuXG5pbXBvcnQgdHlwZSB7IENvbnRleHQgYXMgRm9ybUNvbnRleHRUeXBlLCBHZXREYXRhQnlQYXRoLCBQcm9wcywgU3VibWl0T3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IHVzZURlYm91bmNlZEVmZmVjdCB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZURlYm91bmNlZEVmZmVjdCdcbmltcG9ydCB1c2VUaHJvdHRsZWRFZmZlY3QgZnJvbSAnLi4vLi4vaG9va3MvdXNlVGhyb3R0bGVkRWZmZWN0J1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9BdXRoJ1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0NvbmZpZydcbmltcG9ydCB7IHVzZURvY3VtZW50SW5mbyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9Eb2N1bWVudEluZm8nXG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvTG9jYWxlJ1xuaW1wb3J0IHsgdXNlT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL09wZXJhdGlvblByb3ZpZGVyJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvVHJhbnNsYXRpb24nXG5pbXBvcnQgeyByZXF1ZXN0cyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9hcGknXG5pbXBvcnQgeyBnZXRGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZ2V0Rm9ybVN0YXRlJ1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRleHQsXG4gIEZvcm1GaWVsZHNDb250ZXh0LFxuICBGb3JtV2F0Y2hDb250ZXh0LFxuICBNb2RpZmllZENvbnRleHQsXG4gIFByb2Nlc3NpbmdDb250ZXh0LFxuICBTdWJtaXR0ZWRDb250ZXh0LFxufSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgZXJyb3JNZXNzYWdlcyBmcm9tICcuL2Vycm9yTWVzc2FnZXMnXG5pbXBvcnQgeyBmaWVsZFJlZHVjZXIgfSBmcm9tICcuL2ZpZWxkUmVkdWNlcidcbmltcG9ydCBnZXREYXRhQnlQYXRoRnVuYyBmcm9tICcuL2dldERhdGFCeVBhdGgnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGFGdW5jIGZyb20gJy4vZ2V0U2libGluZ0RhdGEnXG5pbXBvcnQgaW5pdENvbnRleHRTdGF0ZSBmcm9tICcuL2luaXRDb250ZXh0U3RhdGUnXG5pbXBvcnQgeyBtZXJnZVNlcnZlckZvcm1TdGF0ZSB9IGZyb20gJy4vbWVyZ2VTZXJ2ZXJGb3JtU3RhdGUnXG5pbXBvcnQgcmVkdWNlRmllbGRzVG9WYWx1ZXMgZnJvbSAnLi9yZWR1Y2VGaWVsZHNUb1ZhbHVlcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2Zvcm0nXG5cbmNvbnN0IEZvcm06IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGlkLCBnZXREb2NQcmVmZXJlbmNlcyB9ID0gdXNlRG9jdW1lbnRJbmZvKClcblxuICBjb25zdCB7XG4gICAgYWN0aW9uLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBkaXNhYmxlU3VjY2Vzc1N0YXR1cyxcbiAgICBkaXNhYmxlZCxcbiAgICAvLyBmaWVsZHM6IGZpZWxkc0Zyb21Qcm9wcyA9IGNvbGxlY3Rpb24/LmZpZWxkcyB8fCBnbG9iYWw/LmZpZWxkcyxcbiAgICBiZWZvcmVTdWJtaXQsXG4gICAgaGFuZGxlUmVzcG9uc2UsXG4gICAgaW5pdGlhbFN0YXRlLCAvLyBmdWxseSBmb3JtZWQgaW5pdGlhbCBmaWVsZCBzdGF0ZVxuICAgIG9uQ2hhbmdlLFxuICAgIG9uU3VibWl0LFxuICAgIG9uU3VjY2VzcyxcbiAgICByZWRpcmVjdCxcbiAgICBzdWJtaXR0ZWQ6IHN1Ym1pdHRlZEZyb21Qcm9wcyxcbiAgICB1dWlkLFxuICAgIHdhaXRGb3JBdXRvY29tcGxldGUsXG4gIH0gPSBwcm9wc1xuXG4gIGNvbnN0IG1ldGhvZCA9ICdtZXRob2QnIGluIHByb3BzID8gcHJvcHMubWV0aG9kIDogdW5kZWZpbmVkXG5cbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcblxuICBjb25zdCB7IGNvZGU6IGxvY2FsZSB9ID0gdXNlTG9jYWxlKClcbiAgY29uc3QgeyBpMThuLCB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IHsgcmVmcmVzaENvb2tpZSwgdXNlciB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHVzZU9wZXJhdGlvbigpXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcbiAgY29uc3Qge1xuICAgIHJvdXRlczogeyBhcGk6IGFwaVJvdXRlIH0sXG4gICAgc2VydmVyVVJMLFxuICB9ID0gY29uZmlnXG5cbiAgY29uc3QgW21vZGlmaWVkLCBzZXRNb2RpZmllZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Byb2Nlc3NpbmcsIHNldFByb2Nlc3NpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzdWJtaXR0ZWQsIHNldFN1Ym1pdHRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgZm9ybVJlZiA9IHVzZVJlZjxIVE1MRm9ybUVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoe30gYXMgRm9ybUNvbnRleHRUeXBlKVxuICBjb25zdCB7IGNvbGxlY3Rpb25TbHVnLCBnbG9iYWxTbHVnIH0gPSB1c2VEb2N1bWVudEluZm8oKVxuXG4gIGNvbnN0IGZpZWxkc1JlZHVjZXIgPSB1c2VSZWR1Y2VyKGZpZWxkUmVkdWNlciwge30sICgpID0+IGluaXRpYWxTdGF0ZSlcbiAgLyoqXG4gICAqIGBmaWVsZHNgIGlzIHRoZSBjdXJyZW50LCB1cC10by1kYXRlIHN0YXRlL2RhdGEgb2YgYWxsIGZpZWxkcyBpbiB0aGUgZm9ybS4gSXQgY2FuIGJlIG1vZGlmaWVkIGJ5IHVzaW5nIGRpc3BhdGNoRmllbGRzLFxuICAgKiB3aGljaCBjYWxscyB0aGUgZmllbGRSZWR1Y2VyLCB3aGljaCB0aGVuIHVwZGF0ZXMgdGhlIHN0YXRlLlxuICAgKi9cbiAgY29uc3QgW2ZpZWxkcywgZGlzcGF0Y2hGaWVsZHNdID0gZmllbGRzUmVkdWNlclxuXG4gIGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMgPSBmaWVsZHNcblxuICBjb25zdCB2YWxpZGF0ZUZvcm0gPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdGVkRmllbGRTdGF0ZSA9IHt9XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlXG5cbiAgICBjb25zdCBkYXRhRnJvbUNvbnRleHQgPSBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YSgpXG4gICAgY29uc3QgZGF0YSA9IGRhdGFGcm9tQ29udGV4dFxuXG4gICAgY29uc3QgdmFsaWRhdGlvblByb21pc2VzID0gT2JqZWN0LmVudHJpZXMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcykubWFwKFxuICAgICAgYXN5bmMgKFtwYXRoLCBmaWVsZF0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVkRmllbGQgPSB7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQucGFzc2VzQ29uZGl0aW9uICE9PSBmYWxzZSkge1xuICAgICAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC52YWxpZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IHZhbHVlVG9WYWxpZGF0ZSA9IGZpZWxkLnZhbHVlXG5cbiAgICAgICAgICAgIGlmIChmaWVsZD8ucm93cyAmJiBBcnJheS5pc0FycmF5KGZpZWxkLnJvd3MpKSB7XG4gICAgICAgICAgICAgIHZhbHVlVG9WYWxpZGF0ZSA9IGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhQnlQYXRoKHBhdGgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCBmaWVsZC52YWxpZGF0ZSh2YWx1ZVRvVmFsaWRhdGUsIHtcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgICAgICBzaWJsaW5nRGF0YTogY29udGV4dFJlZi5jdXJyZW50LmdldFNpYmxpbmdEYXRhKHBhdGgpLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWVsZC5lcnJvck1lc3NhZ2UgPSB2YWxpZGF0aW9uUmVzdWx0XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWVsZC52YWxpZCA9IGZhbHNlXG4gICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZWRGaWVsZFN0YXRlW3BhdGhdID0gdmFsaWRhdGVkRmllbGRcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodmFsaWRhdGlvblByb21pc2VzKVxuXG4gICAgaWYgKCFpc0RlZXBFcXVhbChjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB2YWxpZGF0ZWRGaWVsZFN0YXRlKSkge1xuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyB0eXBlOiAnUkVQTEFDRV9TVEFURScsIHN0YXRlOiB2YWxpZGF0ZWRGaWVsZFN0YXRlIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWRcbiAgfSwgW2lkLCB1c2VyLCBvcGVyYXRpb24sIHQsIGRpc3BhdGNoRmllbGRzLCBjb25maWddKVxuXG4gIGNvbnN0IHN1Ym1pdCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChvcHRpb25zOiBTdWJtaXRPcHRpb25zID0ge30sIGUpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb25Ub1VzZSA9IGFjdGlvbixcbiAgICAgICAgbWV0aG9kOiBtZXRob2RUb1VzZSA9IG1ldGhvZCxcbiAgICAgICAgb3ZlcnJpZGVzID0ge30sXG4gICAgICAgIHNraXBWYWxpZGF0aW9uLFxuICAgICAgfSA9IG9wdGlvbnNcblxuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChlKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG5cbiAgICAgIHNldFByb2Nlc3NpbmcodHJ1ZSlcbiAgICAgIHNldFN1Ym1pdHRlZCh0cnVlKVxuXG4gICAgICBpZiAod2FpdEZvckF1dG9jb21wbGV0ZSkgYXdhaXQgd2FpdCgxMDApXG5cbiAgICAgIC8vIEV4ZWN1dGUgc2VydmVyIHNpZGUgdmFsaWRhdGlvbnNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGJlZm9yZVN1Ym1pdCkpIHtcbiAgICAgICAgbGV0IHJldmFsaWRhdGVkRm9ybVN0YXRlOiBGb3JtU3RhdGVcblxuICAgICAgICBhd2FpdCBiZWZvcmVTdWJtaXQucmVkdWNlKGFzeW5jIChwcmlvck9uQ2hhbmdlLCBiZWZvcmVTdWJtaXRGbikgPT4ge1xuICAgICAgICAgIGF3YWl0IHByaW9yT25DaGFuZ2VcblxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJlZm9yZVN1Ym1pdEZuKHtcbiAgICAgICAgICAgIGZvcm1TdGF0ZTogZmllbGRzLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXZhbGlkYXRlZEZvcm1TdGF0ZSA9IHJlc3VsdFxuICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gT2JqZWN0LmVudHJpZXMocmV2YWxpZGF0ZWRGb3JtU3RhdGUpLmV2ZXJ5KChbLCBmaWVsZF0pID0+IGZpZWxkLnZhbGlkKVxuXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIGRpc3BhdGNoRmllbGRzKHsgdHlwZTogJ1JFUExBQ0VfU1RBVEUnLCBzdGF0ZTogcmV2YWxpZGF0ZWRGb3JtU3RhdGUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc1ZhbGlkID0gc2tpcFZhbGlkYXRpb24gPyB0cnVlIDogYXdhaXQgY29udGV4dFJlZi5jdXJyZW50LnZhbGlkYXRlRm9ybSgpXG5cbiAgICAgIC8vIElmIG5vdCB2YWxpZCwgcHJldmVudCBzdWJtaXNzaW9uXG4gICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgdG9hc3QuZXJyb3IodCgnZXJyb3I6Y29ycmVjdEludmFsaWRGaWVsZHMnKSlcbiAgICAgICAgc2V0UHJvY2Vzc2luZyhmYWxzZSlcblxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSWYgc3VibWl0IGhhbmRsZXIgY29tZXMgdGhyb3VnaCB2aWEgcHJvcHMsIHJ1biB0aGF0XG4gICAgICBpZiAob25TdWJtaXQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAuLi5yZWR1Y2VGaWVsZHNUb1ZhbHVlcyhmaWVsZHMsIHRydWUpLFxuICAgICAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICAgICAgfVxuXG4gICAgICAgIG9uU3VibWl0KGZpZWxkcywgZGF0YSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybURhdGEgPSBjb250ZXh0UmVmLmN1cnJlbnQuY3JlYXRlRm9ybURhdGEob3ZlcnJpZGVzKVxuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgcmVzXG5cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb25Ub1VzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXMgPSBhd2FpdCByZXF1ZXN0c1ttZXRob2RUb1VzZS50b0xvd2VyQ2FzZSgpXShhY3Rpb25Ub1VzZSwge1xuICAgICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY3Rpb25Ub1VzZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJlcyA9IGF3YWl0IGFjdGlvblRvVXNlKGZvcm1EYXRhKVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0TW9kaWZpZWQoZmFsc2UpXG5cbiAgICAgICAgaWYgKHR5cGVvZiBoYW5kbGVSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGhhbmRsZVJlc3BvbnNlKHJlcylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG5cbiAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpXG4gICAgICAgIGNvbnN0IGlzSlNPTiA9IGNvbnRlbnRUeXBlICYmIGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSAhPT0gLTFcblxuICAgICAgICBsZXQganNvbjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG5cbiAgICAgICAgaWYgKGlzSlNPTikganNvbiA9IGF3YWl0IHJlcy5qc29uKClcblxuICAgICAgICBpZiAocmVzLnN0YXR1cyA8IDQwMCkge1xuICAgICAgICAgIHNldFN1Ym1pdHRlZChmYWxzZSlcblxuICAgICAgICAgIGlmICh0eXBlb2Ygb25TdWNjZXNzID09PSAnZnVuY3Rpb24nKSBvblN1Y2Nlc3MoanNvbilcblxuICAgICAgICAgIGlmIChyZWRpcmVjdCkge1xuICAgICAgICAgICAgLy8gY29uc3QgZGVzdGluYXRpb24gPSB7XG4gICAgICAgICAgICAvLyAgIHBhdGhuYW1lOiByZWRpcmVjdCxcbiAgICAgICAgICAgIC8vICAgc3RhdGU6IHt9LFxuICAgICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgICAvLyBpZiAodHlwZW9mIGpzb24gPT09ICdvYmplY3QnICYmIGpzb24ubWVzc2FnZSAmJiAhZGlzYWJsZVN1Y2Nlc3NTdGF0dXMpIHtcbiAgICAgICAgICAgIC8vICAgZGVzdGluYXRpb24uc3RhdGUgPSB7XG4gICAgICAgICAgICAvLyAgICAgc3RhdHVzOiBbXG4gICAgICAgICAgICAvLyAgICAgICB7XG4gICAgICAgICAgICAvLyAgICAgICAgIG1lc3NhZ2U6IGpzb24ubWVzc2FnZSxcbiAgICAgICAgICAgIC8vICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgLy8gICAgICAgfSxcbiAgICAgICAgICAgIC8vICAgICBdLFxuICAgICAgICAgICAgLy8gICB9XG4gICAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICAgIHJvdXRlci5wdXNoKHJlZGlyZWN0KVxuICAgICAgICAgIH0gZWxzZSBpZiAoIWRpc2FibGVTdWNjZXNzU3RhdHVzKSB7XG4gICAgICAgICAgICB0b2FzdC5zdWNjZXNzKGpzb24ubWVzc2FnZSB8fCB0KCdnZW5lcmFsOnN1Ym1pc3Npb25TdWNjZXNzZnVsJyksIHsgYXV0b0Nsb3NlOiAzMDAwIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uY29udGV4dFJlZi5jdXJyZW50IH0gLy8gdHJpZ2dlcnMgcmVyZW5kZXIgb2YgYWxsIGNvbXBvbmVudHMgdGhhdCBzdWJzY3JpYmUgdG8gZm9ybVxuICAgICAgICAgIGlmIChqc29uLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHRvYXN0LmVycm9yKGpzb24ubWVzc2FnZSlcblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoanNvbi5lcnJvcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBbZmllbGRFcnJvcnMsIG5vbkZpZWxkRXJyb3JzXSA9IGpzb24uZXJyb3JzLnJlZHVjZShcbiAgICAgICAgICAgICAgKFtmaWVsZEVycnMsIG5vbkZpZWxkRXJyc10sIGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpZWxkRXJycyA9IFtdXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Tm9uRmllbGRFcnJzID0gW11cblxuICAgICAgICAgICAgICAgIGlmIChlcnI/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgIG5ld05vbkZpZWxkRXJycy5wdXNoKGVycilcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlcnI/LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICBlcnIuZGF0YS5mb3JFYWNoKChkYXRhRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFFcnJvcj8uZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWVsZEVycnMucHVzaChkYXRhRXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgbmV3Tm9uRmllbGRFcnJzLnB1c2goZGF0YUVycm9yKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICBbLi4uZmllbGRFcnJzLCAuLi5uZXdGaWVsZEVycnNdLFxuICAgICAgICAgICAgICAgICAgWy4uLm5vbkZpZWxkRXJycywgLi4ubmV3Tm9uRmllbGRFcnJzXSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtbXSwgW11dLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBmaWVsZEVycm9ycy5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgZGlzcGF0Y2hGaWVsZHMoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdVUERBVEUnLFxuICAgICAgICAgICAgICAgIC4uLihjb250ZXh0UmVmLmN1cnJlbnQ/LmZpZWxkcz8uW2Vyci5maWVsZF0gfHwge30pLFxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgcGF0aDogZXJyLmZpZWxkLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIG5vbkZpZWxkRXJyb3JzLmZvckVhY2goKGVycikgPT4ge1xuICAgICAgICAgICAgICB0b2FzdC5lcnJvcihlcnIubWVzc2FnZSB8fCB0KCdlcnJvcjp1bmtub3duJykpXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3JNZXNzYWdlcz8uW3Jlcy5zdGF0dXNdIHx8IHJlcz8uc3RhdHVzVGV4dCB8fCB0KCdlcnJvcjp1bmtub3duJylcblxuICAgICAgICAgIHRvYXN0LmVycm9yKG1lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBzZXRQcm9jZXNzaW5nKGZhbHNlKVxuXG4gICAgICAgIHRvYXN0LmVycm9yKGVycilcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGFjdGlvbixcbiAgICAgIGRpc2FibGVTdWNjZXNzU3RhdHVzLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBkaXNwYXRjaEZpZWxkcyxcbiAgICAgIGZpZWxkcyxcbiAgICAgIGhhbmRsZVJlc3BvbnNlLFxuICAgICAgbWV0aG9kLFxuICAgICAgb25TdWJtaXQsXG4gICAgICBvblN1Y2Nlc3MsXG4gICAgICByZWRpcmVjdCxcbiAgICAgIHJvdXRlcixcbiAgICAgIHQsXG4gICAgICBpMThuLFxuICAgICAgd2FpdEZvckF1dG9jb21wbGV0ZSxcbiAgICAgIGJlZm9yZVN1Ym1pdCxcbiAgICBdLFxuICApXG5cbiAgY29uc3QgZ2V0RmllbGRzID0gdXNlQ2FsbGJhY2soKCkgPT4gY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgW10pXG5cbiAgY29uc3QgZ2V0RmllbGQgPSB1c2VDYWxsYmFjaygocGF0aDogc3RyaW5nKSA9PiBjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzW3BhdGhdLCBbXSlcblxuICBjb25zdCBnZXREYXRhID0gdXNlQ2FsbGJhY2soKCkgPT4gcmVkdWNlRmllbGRzVG9WYWx1ZXMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgdHJ1ZSksIFtdKVxuXG4gIGNvbnN0IGdldFNpYmxpbmdEYXRhID0gdXNlQ2FsbGJhY2soXG4gICAgKHBhdGg6IHN0cmluZykgPT4gZ2V0U2libGluZ0RhdGFGdW5jKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHBhdGgpLFxuICAgIFtdLFxuICApXG4gIGNvbnN0IGdldERhdGFCeVBhdGggPSB1c2VDYWxsYmFjazxHZXREYXRhQnlQYXRoPihcbiAgICAocGF0aDogc3RyaW5nKSA9PiBnZXREYXRhQnlQYXRoRnVuYyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCBwYXRoKSxcbiAgICBbXSxcbiAgKVxuXG4gIGNvbnN0IGNyZWF0ZUZvcm1EYXRhID0gdXNlQ2FsbGJhY2soKG92ZXJyaWRlczogYW55ID0ge30pID0+IHtcbiAgICBjb25zdCBkYXRhID0gcmVkdWNlRmllbGRzVG9WYWx1ZXMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgdHJ1ZSlcblxuICAgIGNvbnN0IGZpbGUgPSBkYXRhPy5maWxlXG5cbiAgICBpZiAoZmlsZSkge1xuICAgICAgZGVsZXRlIGRhdGEuZmlsZVxuICAgIH1cblxuICAgIGNvbnN0IGRhdGFXaXRoT3ZlcnJpZGVzID0ge1xuICAgICAgLi4uZGF0YSxcbiAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhVG9TZXJpYWxpemUgPSB7XG4gICAgICBfcGF5bG9hZDogSlNPTi5zdHJpbmdpZnkoZGF0YVdpdGhPdmVycmlkZXMpLFxuICAgICAgZmlsZSxcbiAgICB9XG5cbiAgICAvLyBudWxsQXNVbmRlZmluZWRzIGlzIGltcG9ydGFudCB0byBhbGxvdyB1cGxvYWRzIGFuZCByZWxhdGlvbnNoaXAgZmllbGRzIHRvIGNsZWFyIHRoZW1zZWx2ZXNcbiAgICBjb25zdCBmb3JtRGF0YSA9IHNlcmlhbGl6ZShkYXRhVG9TZXJpYWxpemUsIHsgaW5kaWNlczogdHJ1ZSwgbnVsbHNBc1VuZGVmaW5lZHM6IGZhbHNlIH0pXG5cbiAgICByZXR1cm4gZm9ybURhdGFcbiAgfSwgW10pXG5cbiAgY29uc3QgcmVzZXQgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoZmllbGRTY2hlbWE6IEZpZWxkW10sIGRhdGE6IHVua25vd24pID0+IHtcbiAgICAgIGNvbnN0IHByZWZlcmVuY2VzID0gYXdhaXQgZ2V0RG9jUHJlZmVyZW5jZXMoKVxuICAgICAgLy8gY29uc3Qgc3RhdGUgPSBhd2FpdCBidWlsZFN0YXRlRnJvbVNjaGVtYSh7XG4gICAgICAvLyAgIGlkLFxuICAgICAgLy8gICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgLy8gICAvLyBAdHMtaWdub3JlLW5leHQtbGluZVxuICAgICAgLy8gICBjb25maWcsXG4gICAgICAvLyAgIGRhdGEsXG4gICAgICAvLyAgIGZpZWxkU2NoZW1hLFxuICAgICAgLy8gICBsb2NhbGUsXG4gICAgICAvLyAgIG9wZXJhdGlvbixcbiAgICAgIC8vICAgcHJlZmVyZW5jZXMsXG4gICAgICAvLyAgIHQsXG4gICAgICAvLyAgIHVzZXIsXG4gICAgICAvLyB9KVxuICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5pbml0Q29udGV4dFN0YXRlIH0gYXMgRm9ybUNvbnRleHRUeXBlXG4gICAgICBzZXRNb2RpZmllZChmYWxzZSlcbiAgICAgIC8vIGRpc3BhdGNoRmllbGRzKHsgc3RhdGUsIHR5cGU6ICdSRVBMQUNFX1NUQVRFJyB9KVxuICAgIH0sXG4gICAgW2dldERvY1ByZWZlcmVuY2VzXSxcbiAgKVxuXG4gIGNvbnN0IHJlcGxhY2VTdGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChzdGF0ZTogRm9ybVN0YXRlKSA9PiB7XG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyB0eXBlOiAnUkVQTEFDRV9TVEFURScsIHN0YXRlIH0pXG4gICAgfSxcbiAgICBbZGlzcGF0Y2hGaWVsZHNdLFxuICApXG5cbiAgY29uc3QgZ2V0RmllbGRTdGF0ZUJ5UGF0aCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGRhdGEsIHBhdGggfSkgPT4ge1xuICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSBhd2FpdCBnZXRGb3JtU3RhdGUoe1xuICAgICAgICBhcGlSb3V0ZSxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZ2xvYmFsU2x1ZyxcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgIFR1cm5zOiAnYXJyYXlGaWVsZC4wLmdyb3VwMTIzZmllbGQuYXJyYXlGaWVsZC4wLnRleHRGaWVsZCdcbiAgICAgICAgICAgIEludG86ICdhcnJheUZpZWxkLmdyb3VwMTIzZmllbGQuYXJyYXlGaWVsZC50ZXh0RmllbGQnXG4gICAgICAgICAgKi9cbiAgICAgICAgICBzY2hlbWFQYXRoOiBgJHtjb2xsZWN0aW9uU2x1ZyB8fCBnbG9iYWxTbHVnfS4ke3BhdGh9YC5yZXBsYWNlKC9cXC5cXGQrXFwuL2csICcuJyksXG4gICAgICAgIH0sXG4gICAgICAgIHNlcnZlclVSTCxcbiAgICAgIH0pXG4gICAgICByZXR1cm4gZmllbGRTY2hlbWFcbiAgICB9LFxuICAgIFthcGlSb3V0ZSwgY29sbGVjdGlvblNsdWcsIGdsb2JhbFNsdWcsIHNlcnZlclVSTF0sXG4gIClcblxuICBjb25zdCBhZGRGaWVsZFJvdzogRm9ybUNvbnRleHRUeXBlWydhZGRGaWVsZFJvdyddID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgZGF0YSwgcGF0aCwgcm93SW5kZXggfSkgPT4ge1xuICAgICAgY29uc3Qgc3ViRmllbGRTdGF0ZSA9IGF3YWl0IGdldEZpZWxkU3RhdGVCeVBhdGgoeyBkYXRhLCBwYXRoIH0pXG5cbiAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgdHlwZTogJ0FERF9ST1cnLFxuICAgICAgICBibG9ja1R5cGU6IGRhdGE/LmJsb2NrVHlwZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcm93SW5kZXgsXG4gICAgICAgIHN1YkZpZWxkU3RhdGUsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2dldEZpZWxkU3RhdGVCeVBhdGgsIGRpc3BhdGNoRmllbGRzXSxcbiAgKVxuXG4gIGNvbnN0IHJlbW92ZUZpZWxkUm93OiBGb3JtQ29udGV4dFR5cGVbJ3JlbW92ZUZpZWxkUm93J10gPSB1c2VDYWxsYmFjayhcbiAgICAoeyBwYXRoLCByb3dJbmRleCB9KSA9PiB7XG4gICAgICBkaXNwYXRjaEZpZWxkcyh7IHR5cGU6ICdSRU1PVkVfUk9XJywgcGF0aCwgcm93SW5kZXggfSlcbiAgICB9LFxuICAgIFtkaXNwYXRjaEZpZWxkc10sXG4gIClcblxuICBjb25zdCByZXBsYWNlRmllbGRSb3c6IEZvcm1Db250ZXh0VHlwZVsncmVwbGFjZUZpZWxkUm93J10gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoeyBkYXRhLCBwYXRoLCByb3dJbmRleCB9KSA9PiB7XG4gICAgICBjb25zdCBzdWJGaWVsZFN0YXRlID0gYXdhaXQgZ2V0RmllbGRTdGF0ZUJ5UGF0aCh7IGRhdGEsIHBhdGggfSlcblxuICAgICAgZGlzcGF0Y2hGaWVsZHMoe1xuICAgICAgICB0eXBlOiAnUkVQTEFDRV9ST1cnLFxuICAgICAgICBibG9ja1R5cGU6IGRhdGE/LmJsb2NrVHlwZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcm93SW5kZXgsXG4gICAgICAgIHN1YkZpZWxkU3RhdGUsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2dldEZpZWxkU3RhdGVCeVBhdGgsIGRpc3BhdGNoRmllbGRzXSxcbiAgKVxuXG4gIGNvbnRleHRSZWYuY3VycmVudC5zdWJtaXQgPSBzdWJtaXRcbiAgY29udGV4dFJlZi5jdXJyZW50LmdldEZpZWxkcyA9IGdldEZpZWxkc1xuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RmllbGQgPSBnZXRGaWVsZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YSA9IGdldERhdGFcbiAgY29udGV4dFJlZi5jdXJyZW50LmdldFNpYmxpbmdEYXRhID0gZ2V0U2libGluZ0RhdGFcbiAgY29udGV4dFJlZi5jdXJyZW50LmdldERhdGFCeVBhdGggPSBnZXREYXRhQnlQYXRoXG4gIGNvbnRleHRSZWYuY3VycmVudC52YWxpZGF0ZUZvcm0gPSB2YWxpZGF0ZUZvcm1cbiAgY29udGV4dFJlZi5jdXJyZW50LmNyZWF0ZUZvcm1EYXRhID0gY3JlYXRlRm9ybURhdGFcbiAgY29udGV4dFJlZi5jdXJyZW50LnNldE1vZGlmaWVkID0gc2V0TW9kaWZpZWRcbiAgY29udGV4dFJlZi5jdXJyZW50LnNldFByb2Nlc3NpbmcgPSBzZXRQcm9jZXNzaW5nXG4gIGNvbnRleHRSZWYuY3VycmVudC5zZXRTdWJtaXR0ZWQgPSBzZXRTdWJtaXR0ZWRcbiAgY29udGV4dFJlZi5jdXJyZW50LmRpc2FibGVkID0gZGlzYWJsZWRcbiAgY29udGV4dFJlZi5jdXJyZW50LmZvcm1SZWYgPSBmb3JtUmVmXG4gIGNvbnRleHRSZWYuY3VycmVudC5yZXNldCA9IHJlc2V0XG4gIGNvbnRleHRSZWYuY3VycmVudC5yZXBsYWNlU3RhdGUgPSByZXBsYWNlU3RhdGVcbiAgY29udGV4dFJlZi5jdXJyZW50LmRpc3BhdGNoRmllbGRzID0gZGlzcGF0Y2hGaWVsZHNcbiAgY29udGV4dFJlZi5jdXJyZW50LmFkZEZpZWxkUm93ID0gYWRkRmllbGRSb3dcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlbW92ZUZpZWxkUm93ID0gcmVtb3ZlRmllbGRSb3dcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlcGxhY2VGaWVsZFJvdyA9IHJlcGxhY2VGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQudXVpZCA9IHV1aWRcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygc3VibWl0dGVkRnJvbVByb3BzID09PSAnYm9vbGVhbicpIHNldFN1Ym1pdHRlZChzdWJtaXR0ZWRGcm9tUHJvcHMpXG4gIH0sIFtzdWJtaXR0ZWRGcm9tUHJvcHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxTdGF0ZSkge1xuICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5pbml0Q29udGV4dFN0YXRlIH0gYXMgRm9ybUNvbnRleHRUeXBlXG4gICAgICBkaXNwYXRjaEZpZWxkcyh7IHR5cGU6ICdSRVBMQUNFX1NUQVRFJywgc3RhdGU6IGluaXRpYWxTdGF0ZSB9KVxuICAgIH1cbiAgfSwgW2luaXRpYWxTdGF0ZSwgZGlzcGF0Y2hGaWVsZHNdKVxuXG4gIHVzZVRocm90dGxlZEVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICByZWZyZXNoQ29va2llKClcbiAgICB9LFxuICAgIDE1MDAwLFxuICAgIFtmaWVsZHNdLFxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmNvbnRleHRSZWYuY3VycmVudCB9IC8vIHRyaWdnZXJzIHJlcmVuZGVyIG9mIGFsbCBjb21wb25lbnRzIHRoYXQgc3Vic2NyaWJlIHRvIGZvcm1cbiAgICBzZXRNb2RpZmllZChmYWxzZSlcbiAgfSwgW2xvY2FsZV0pXG5cbiAgY29uc3QgY2xhc3NlcyA9IFtjbGFzc05hbWUsIGJhc2VDbGFzc10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKVxuXG4gIHVzZURlYm91bmNlZEVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRlT25DaGFuZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9uQ2hhbmdlKSkge1xuICAgICAgICAgIGxldCByZXZhbGlkYXRlZEZvcm1TdGF0ZTogRm9ybVN0YXRlXG5cbiAgICAgICAgICBhd2FpdCBvbkNoYW5nZS5yZWR1Y2UoYXN5bmMgKHByaW9yT25DaGFuZ2UsIG9uQ2hhbmdlRm4pID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHByaW9yT25DaGFuZ2VcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb25DaGFuZ2VGbih7XG4gICAgICAgICAgICAgIGZvcm1TdGF0ZTogZmllbGRzLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgcmV2YWxpZGF0ZWRGb3JtU3RhdGUgPSByZXN1bHRcbiAgICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICAgIGNvbnN0IHsgY2hhbmdlZCwgbmV3U3RhdGUgfSA9IG1lcmdlU2VydmVyRm9ybVN0YXRlKGZpZWxkcywgcmV2YWxpZGF0ZWRGb3JtU3RhdGUpXG5cbiAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgZGlzcGF0Y2hGaWVsZHMoeyB0eXBlOiAnUkVQTEFDRV9TVEFURScsIG9wdGltaXplOiBmYWxzZSwgc3RhdGU6IG5ld1N0YXRlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZvaWQgZXhlY3V0ZU9uQ2hhbmdlKCkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICB9LFxuICAgIDE1MCxcbiAgICBbZmllbGRzLCBkaXNwYXRjaEZpZWxkcywgb25DaGFuZ2VdLFxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybVxuICAgICAgYWN0aW9uPXthY3Rpb259XG4gICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICBtZXRob2Q9e21ldGhvZH1cbiAgICAgIG5vVmFsaWRhdGVcbiAgICAgIG9uU3VibWl0PXsoZSkgPT4gY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCh7fSwgZSl9XG4gICAgICByZWY9e2Zvcm1SZWZ9XG4gICAgPlxuICAgICAgPEZvcm1Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0UmVmLmN1cnJlbnR9PlxuICAgICAgICA8Rm9ybVdhdGNoQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICAuLi5jb250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTdWJtaXR0ZWRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzdWJtaXR0ZWR9PlxuICAgICAgICAgICAgPFByb2Nlc3NpbmdDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwcm9jZXNzaW5nfT5cbiAgICAgICAgICAgICAgPE1vZGlmaWVkQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bW9kaWZpZWR9PlxuICAgICAgICAgICAgICAgIDxGb3JtRmllbGRzQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZmllbGRzUmVkdWNlcn0+XG4gICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9Gb3JtRmllbGRzQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9Nb2RpZmllZENvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICAgICA8L1Byb2Nlc3NpbmdDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgIDwvU3VibWl0dGVkQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9Gb3JtV2F0Y2hDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9Gb3JtQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L2Zvcm0+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRm9ybVxuIl0sIm5hbWVzIjpbImlzRGVlcEVxdWFsIiwidXNlUm91dGVyIiwic2VyaWFsaXplIiwid2FpdCIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VSZWR1Y2VyIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ0b2FzdCIsInVzZURlYm91bmNlZEVmZmVjdCIsInVzZVRocm90dGxlZEVmZmVjdCIsInVzZUF1dGgiLCJ1c2VDb25maWciLCJ1c2VEb2N1bWVudEluZm8iLCJ1c2VMb2NhbGUiLCJ1c2VPcGVyYXRpb24iLCJ1c2VUcmFuc2xhdGlvbiIsInJlcXVlc3RzIiwiZ2V0Rm9ybVN0YXRlIiwiRm9ybUNvbnRleHQiLCJGb3JtRmllbGRzQ29udGV4dCIsIkZvcm1XYXRjaENvbnRleHQiLCJNb2RpZmllZENvbnRleHQiLCJQcm9jZXNzaW5nQ29udGV4dCIsIlN1Ym1pdHRlZENvbnRleHQiLCJlcnJvck1lc3NhZ2VzIiwiZmllbGRSZWR1Y2VyIiwiZ2V0RGF0YUJ5UGF0aEZ1bmMiLCJnZXRTaWJsaW5nRGF0YUZ1bmMiLCJpbml0Q29udGV4dFN0YXRlIiwibWVyZ2VTZXJ2ZXJGb3JtU3RhdGUiLCJyZWR1Y2VGaWVsZHNUb1ZhbHVlcyIsImJhc2VDbGFzcyIsIkZvcm0iLCJwcm9wcyIsImlkIiwiZ2V0RG9jUHJlZmVyZW5jZXMiLCJhY3Rpb24iLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImRpc2FibGVTdWNjZXNzU3RhdHVzIiwiZGlzYWJsZWQiLCJiZWZvcmVTdWJtaXQiLCJoYW5kbGVSZXNwb25zZSIsImluaXRpYWxTdGF0ZSIsIm9uQ2hhbmdlIiwib25TdWJtaXQiLCJvblN1Y2Nlc3MiLCJyZWRpcmVjdCIsInN1Ym1pdHRlZCIsInN1Ym1pdHRlZEZyb21Qcm9wcyIsInV1aWQiLCJ3YWl0Rm9yQXV0b2NvbXBsZXRlIiwibWV0aG9kIiwidW5kZWZpbmVkIiwicm91dGVyIiwiY29kZSIsImxvY2FsZSIsImkxOG4iLCJ0IiwicmVmcmVzaENvb2tpZSIsInVzZXIiLCJvcGVyYXRpb24iLCJjb25maWciLCJyb3V0ZXMiLCJhcGkiLCJhcGlSb3V0ZSIsInNlcnZlclVSTCIsIm1vZGlmaWVkIiwic2V0TW9kaWZpZWQiLCJwcm9jZXNzaW5nIiwic2V0UHJvY2Vzc2luZyIsInNldFN1Ym1pdHRlZCIsImZvcm1SZWYiLCJjb250ZXh0UmVmIiwiY29sbGVjdGlvblNsdWciLCJnbG9iYWxTbHVnIiwiZmllbGRzUmVkdWNlciIsImZpZWxkcyIsImRpc3BhdGNoRmllbGRzIiwiY3VycmVudCIsInZhbGlkYXRlRm9ybSIsInZhbGlkYXRlZEZpZWxkU3RhdGUiLCJpc1ZhbGlkIiwiZGF0YUZyb21Db250ZXh0IiwiZ2V0RGF0YSIsImRhdGEiLCJ2YWxpZGF0aW9uUHJvbWlzZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwibWFwIiwicGF0aCIsImZpZWxkIiwidmFsaWRhdGVkRmllbGQiLCJ2YWxpZCIsInBhc3Nlc0NvbmRpdGlvbiIsInZhbGlkYXRpb25SZXN1bHQiLCJ2YWxpZGF0ZSIsInZhbHVlVG9WYWxpZGF0ZSIsInZhbHVlIiwicm93cyIsIkFycmF5IiwiaXNBcnJheSIsImdldERhdGFCeVBhdGgiLCJzaWJsaW5nRGF0YSIsImdldFNpYmxpbmdEYXRhIiwiZXJyb3JNZXNzYWdlIiwiUHJvbWlzZSIsImFsbCIsInR5cGUiLCJzdGF0ZSIsInN1Ym1pdCIsIm9wdGlvbnMiLCJlIiwiYWN0aW9uVG9Vc2UiLCJtZXRob2RUb1VzZSIsIm92ZXJyaWRlcyIsInNraXBWYWxpZGF0aW9uIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJyZXZhbGlkYXRlZEZvcm1TdGF0ZSIsInJlZHVjZSIsInByaW9yT25DaGFuZ2UiLCJiZWZvcmVTdWJtaXRGbiIsInJlc3VsdCIsImZvcm1TdGF0ZSIsInJlc29sdmUiLCJldmVyeSIsImVycm9yIiwiZm9ybURhdGEiLCJjcmVhdGVGb3JtRGF0YSIsInJlcyIsInRvTG93ZXJDYXNlIiwiYm9keSIsImhlYWRlcnMiLCJsYW5ndWFnZSIsImNvbnRlbnRUeXBlIiwiZ2V0IiwiaXNKU09OIiwiaW5kZXhPZiIsImpzb24iLCJzdGF0dXMiLCJwdXNoIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJhdXRvQ2xvc2UiLCJlcnJvcnMiLCJmaWVsZEVycm9ycyIsIm5vbkZpZWxkRXJyb3JzIiwiZmllbGRFcnJzIiwibm9uRmllbGRFcnJzIiwiZXJyIiwibmV3RmllbGRFcnJzIiwibmV3Tm9uRmllbGRFcnJzIiwiZm9yRWFjaCIsImRhdGFFcnJvciIsInN0YXR1c1RleHQiLCJnZXRGaWVsZHMiLCJnZXRGaWVsZCIsImZpbGUiLCJkYXRhV2l0aE92ZXJyaWRlcyIsImRhdGFUb1NlcmlhbGl6ZSIsIl9wYXlsb2FkIiwiSlNPTiIsInN0cmluZ2lmeSIsImluZGljZXMiLCJudWxsc0FzVW5kZWZpbmVkcyIsInJlc2V0IiwiZmllbGRTY2hlbWEiLCJwcmVmZXJlbmNlcyIsInJlcGxhY2VTdGF0ZSIsImdldEZpZWxkU3RhdGVCeVBhdGgiLCJzY2hlbWFQYXRoIiwicmVwbGFjZSIsImFkZEZpZWxkUm93Iiwicm93SW5kZXgiLCJzdWJGaWVsZFN0YXRlIiwiYmxvY2tUeXBlIiwicmVtb3ZlRmllbGRSb3ciLCJyZXBsYWNlRmllbGRSb3ciLCJjbGFzc2VzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJleGVjdXRlT25DaGFuZ2UiLCJvbkNoYW5nZUZuIiwiY2hhbmdlZCIsIm5ld1N0YXRlIiwib3B0aW1pemUiLCJmb3JtIiwibm9WYWxpZGF0ZSIsInJlZiIsIlByb3ZpZGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUdBLGtFQUFrRSxHQUNsRSxPQUFPQSxpQkFBaUIsYUFBWTtBQUNwQyxTQUFTQyxTQUFTLFFBQVEsa0JBQWlCO0FBQzNDLFNBQVNDLFNBQVMsUUFBUSxxQkFBb0I7QUFDOUMsU0FBU0MsSUFBSSxRQUFRLG9CQUFtQjtBQUN4QyxPQUFPQyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxRQUFPO0FBQ25GLFNBQVNDLEtBQUssUUFBUSxpQkFBZ0I7QUFJdEMsU0FBU0Msa0JBQWtCLFFBQVEsaUNBQWdDO0FBQ25FLE9BQU9DLHdCQUF3QixpQ0FBZ0M7QUFDL0QsU0FBU0MsT0FBTyxRQUFRLHVCQUFzQjtBQUM5QyxTQUFTQyxTQUFTLFFBQVEseUJBQXdCO0FBQ2xELFNBQVNDLGVBQWUsUUFBUSwrQkFBOEI7QUFDOUQsU0FBU0MsU0FBUyxRQUFRLHlCQUF3QjtBQUNsRCxTQUFTQyxZQUFZ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
@@ -1 +1 @@
1
- {"version":3,"file":"initContextState.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/initContextState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,OAAO,EAYR,MAAM,SAAS,CAAA;AAahB,QAAA,MAAM,mBAAmB,EAAE,OAsB1B,CAAA;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"initContextState.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/initContextState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,OAAO,EAUR,MAAM,SAAS,CAAA;AAahB,QAAA,MAAM,mBAAmB,EAAE,OAsB1B,CAAA;AAED,eAAe,mBAAmB,CAAA"}