payload 2.12.0 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1034) hide show
  1. package/auth.js +1 -1
  2. package/components/elements.js +1 -1
  3. package/components/fields/Array.js +1 -1
  4. package/components/fields/Blocks.js +1 -1
  5. package/components/fields/Cell.js +1 -1
  6. package/components/fields/Checkbox.js +1 -1
  7. package/components/fields/Code.js +1 -1
  8. package/components/fields/DateTime.js +1 -1
  9. package/components/fields/Email.js +1 -1
  10. package/components/fields/Group.js +1 -1
  11. package/components/fields/Json.js +1 -1
  12. package/components/fields/Number.js +1 -1
  13. package/components/fields/Password.js +1 -1
  14. package/components/fields/RadioGroup/RadioInput.js +1 -1
  15. package/components/fields/RadioGroup/index.js +1 -1
  16. package/components/fields/Relationship.js +1 -1
  17. package/components/fields/RichText.js +1 -1
  18. package/components/fields/Row.js +1 -1
  19. package/components/fields/Select.js +1 -1
  20. package/components/fields/Text.js +1 -1
  21. package/components/fields/Textarea.js +1 -1
  22. package/components/fields/Upload.js +1 -1
  23. package/components/forms.js +1 -1
  24. package/components/graphics.js +1 -1
  25. package/components/hooks.js +1 -1
  26. package/components/icons.js +1 -1
  27. package/components/index.js +2 -2
  28. package/components/preferences.js +1 -1
  29. package/components/root.js +1 -1
  30. package/components/styles.css +1 -1
  31. package/components/templates.js +1 -1
  32. package/components/utilities.js +1 -1
  33. package/components/views/Cell.js +1 -1
  34. package/components/views/Dashboard.js +1 -1
  35. package/components/views/Edit.js +1 -1
  36. package/components/views/List.js +1 -1
  37. package/components.js +1 -1
  38. package/config.js +1 -1
  39. package/database.d.ts +1 -1
  40. package/database.js +4 -1
  41. package/dist/admin/Root.js +1 -1
  42. package/dist/admin/api.js +1 -1
  43. package/dist/admin/assets/assets.d.js +1 -1
  44. package/dist/admin/components/elements/ArrayAction/index.js +1 -1
  45. package/dist/admin/components/elements/ArrayAction/types.js +1 -1
  46. package/dist/admin/components/elements/Autosave/index.js +1 -1
  47. package/dist/admin/components/elements/Autosave/types.js +1 -1
  48. package/dist/admin/components/elements/Banner/index.js +1 -1
  49. package/dist/admin/components/elements/Banner/types.js +1 -1
  50. package/dist/admin/components/elements/Button/index.js +1 -1
  51. package/dist/admin/components/elements/Button/types.js +1 -1
  52. package/dist/admin/components/elements/Card/index.js +1 -1
  53. package/dist/admin/components/elements/Card/types.js +1 -1
  54. package/dist/admin/components/elements/CodeEditor/CodeEditor.js +1 -1
  55. package/dist/admin/components/elements/CodeEditor/index.js +1 -1
  56. package/dist/admin/components/elements/CodeEditor/types.js +1 -1
  57. package/dist/admin/components/elements/Collapsible/index.js +1 -1
  58. package/dist/admin/components/elements/Collapsible/provider.js +1 -1
  59. package/dist/admin/components/elements/Collapsible/types.js +1 -1
  60. package/dist/admin/components/elements/ColumnSelector/index.js +1 -1
  61. package/dist/admin/components/elements/ColumnSelector/types.js +1 -1
  62. package/dist/admin/components/elements/CopyToClipboard/index.js +1 -1
  63. package/dist/admin/components/elements/CopyToClipboard/types.js +1 -1
  64. package/dist/admin/components/elements/DatePicker/DatePicker.js +1 -1
  65. package/dist/admin/components/elements/DatePicker/index.js +1 -1
  66. package/dist/admin/components/elements/DatePicker/types.js +1 -1
  67. package/dist/admin/components/elements/DeleteDocument/index.d.ts.map +1 -1
  68. package/dist/admin/components/elements/DeleteDocument/index.js +1 -1
  69. package/dist/admin/components/elements/DeleteDocument/types.js +1 -1
  70. package/dist/admin/components/elements/DeleteMany/index.js +1 -1
  71. package/dist/admin/components/elements/DeleteMany/types.js +1 -1
  72. package/dist/admin/components/elements/DocumentControls/index.js +2 -2
  73. package/dist/admin/components/elements/DocumentDrawer/DrawerContent.js +1 -1
  74. package/dist/admin/components/elements/DocumentDrawer/index.js +1 -1
  75. package/dist/admin/components/elements/DocumentDrawer/types.js +1 -1
  76. package/dist/admin/components/elements/DocumentFields/index.js +1 -1
  77. package/dist/admin/components/elements/DocumentHeader/Tabs/Tab/index.js +1 -1
  78. package/dist/admin/components/elements/DocumentHeader/Tabs/getCustomViews.js +1 -1
  79. package/dist/admin/components/elements/DocumentHeader/Tabs/getViewConfig.js +1 -1
  80. package/dist/admin/components/elements/DocumentHeader/Tabs/index.js +1 -1
  81. package/dist/admin/components/elements/DocumentHeader/Tabs/tabs.js +1 -1
  82. package/dist/admin/components/elements/DocumentHeader/Tabs/types.js +1 -1
  83. package/dist/admin/components/elements/DocumentHeader/index.js +1 -1
  84. package/dist/admin/components/elements/DraggableSortable/DraggableSortableItem/index.js +1 -1
  85. package/dist/admin/components/elements/DraggableSortable/DraggableSortableItem/types.js +1 -1
  86. package/dist/admin/components/elements/DraggableSortable/index.js +1 -1
  87. package/dist/admin/components/elements/DraggableSortable/types.js +1 -1
  88. package/dist/admin/components/elements/DraggableSortable/useDraggableSortable/index.js +1 -1
  89. package/dist/admin/components/elements/DraggableSortable/useDraggableSortable/types.js +1 -1
  90. package/dist/admin/components/elements/Drawer/index.js +1 -1
  91. package/dist/admin/components/elements/Drawer/types.js +1 -1
  92. package/dist/admin/components/elements/Drawer/useDrawerSlug.js +1 -1
  93. package/dist/admin/components/elements/Dropzone/index.js +1 -1
  94. package/dist/admin/components/elements/DuplicateDocument/index.d.ts.map +1 -1
  95. package/dist/admin/components/elements/DuplicateDocument/index.js +8 -3
  96. package/dist/admin/components/elements/DuplicateDocument/types.js +1 -1
  97. package/dist/admin/components/elements/EditMany/index.js +4 -4
  98. package/dist/admin/components/elements/EditMany/types.js +1 -1
  99. package/dist/admin/components/elements/EditUpload/index.js +1 -1
  100. package/dist/admin/components/elements/ErrorPill/index.js +1 -1
  101. package/dist/admin/components/elements/ErrorPill/types.js +1 -1
  102. package/dist/admin/components/elements/Eyebrow/index.js +1 -1
  103. package/dist/admin/components/elements/Eyebrow/types.js +1 -1
  104. package/dist/admin/components/elements/FieldSelect/index.js +1 -1
  105. package/dist/admin/components/elements/FileDetails/Meta/index.js +1 -1
  106. package/dist/admin/components/elements/FileDetails/Meta/types.js +1 -1
  107. package/dist/admin/components/elements/FileDetails/index.js +1 -1
  108. package/dist/admin/components/elements/FileDetails/types.js +1 -1
  109. package/dist/admin/components/elements/GenerateConfirmation/index.js +1 -1
  110. package/dist/admin/components/elements/GenerateConfirmation/types.js +1 -1
  111. package/dist/admin/components/elements/Gutter/index.js +1 -1
  112. package/dist/admin/components/elements/Hamburger/index.js +1 -1
  113. package/dist/admin/components/elements/Header/index.js +1 -1
  114. package/dist/admin/components/elements/IDLabel/index.js +1 -1
  115. package/dist/admin/components/elements/ListControls/getTextFieldsToBeSearched.js +1 -1
  116. package/dist/admin/components/elements/ListControls/index.js +1 -1
  117. package/dist/admin/components/elements/ListControls/types.js +1 -1
  118. package/dist/admin/components/elements/ListDrawer/DrawerContent.js +1 -1
  119. package/dist/admin/components/elements/ListDrawer/index.js +1 -1
  120. package/dist/admin/components/elements/ListDrawer/types.js +1 -1
  121. package/dist/admin/components/elements/ListSelection/index.js +1 -1
  122. package/dist/admin/components/elements/Loading/index.js +1 -1
  123. package/dist/admin/components/elements/Localizer/LocalizerLabel/index.js +1 -1
  124. package/dist/admin/components/elements/Localizer/index.js +1 -1
  125. package/dist/admin/components/elements/Logout/index.js +1 -1
  126. package/dist/admin/components/elements/Nav/NavToggler/index.js +1 -1
  127. package/dist/admin/components/elements/Nav/context.js +1 -1
  128. package/dist/admin/components/elements/Nav/index.js +1 -1
  129. package/dist/admin/components/elements/NavGroup/index.js +1 -1
  130. package/dist/admin/components/elements/Paginator/ClickableArrow/index.js +1 -1
  131. package/dist/admin/components/elements/Paginator/ClickableArrow/types.js +1 -1
  132. package/dist/admin/components/elements/Paginator/Page/index.js +1 -1
  133. package/dist/admin/components/elements/Paginator/Page/types.js +1 -1
  134. package/dist/admin/components/elements/Paginator/Separator/index.js +1 -1
  135. package/dist/admin/components/elements/Paginator/index.js +1 -1
  136. package/dist/admin/components/elements/Paginator/types.js +1 -1
  137. package/dist/admin/components/elements/PerPage/index.js +1 -1
  138. package/dist/admin/components/elements/Pill/index.js +1 -1
  139. package/dist/admin/components/elements/Pill/types.js +1 -1
  140. package/dist/admin/components/elements/Popup/PopupButtonList/index.d.ts +1 -0
  141. package/dist/admin/components/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  142. package/dist/admin/components/elements/Popup/PopupButtonList/index.js +3 -2
  143. package/dist/admin/components/elements/Popup/PopupTrigger/index.js +1 -1
  144. package/dist/admin/components/elements/Popup/PopupTrigger/types.js +1 -1
  145. package/dist/admin/components/elements/Popup/index.js +1 -1
  146. package/dist/admin/components/elements/Popup/types.js +1 -1
  147. package/dist/admin/components/elements/PreviewButton/index.js +1 -1
  148. package/dist/admin/components/elements/PreviewSizes/index.js +1 -1
  149. package/dist/admin/components/elements/Publish/index.d.ts +6 -2
  150. package/dist/admin/components/elements/Publish/index.d.ts.map +1 -1
  151. package/dist/admin/components/elements/Publish/index.js +1 -1
  152. package/dist/admin/components/elements/PublishMany/index.js +1 -1
  153. package/dist/admin/components/elements/PublishMany/types.js +1 -1
  154. package/dist/admin/components/elements/ReactSelect/ClearIndicator/index.js +1 -1
  155. package/dist/admin/components/elements/ReactSelect/Control/index.js +1 -1
  156. package/dist/admin/components/elements/ReactSelect/MultiValue/index.js +1 -1
  157. package/dist/admin/components/elements/ReactSelect/MultiValueLabel/index.js +1 -1
  158. package/dist/admin/components/elements/ReactSelect/MultiValueRemove/index.js +1 -1
  159. package/dist/admin/components/elements/ReactSelect/SingleValue/index.js +1 -1
  160. package/dist/admin/components/elements/ReactSelect/ValueContainer/index.js +1 -1
  161. package/dist/admin/components/elements/ReactSelect/index.js +1 -1
  162. package/dist/admin/components/elements/ReactSelect/types.js +1 -1
  163. package/dist/admin/components/elements/RenderTitle/index.js +1 -1
  164. package/dist/admin/components/elements/RenderTitle/types.js +1 -1
  165. package/dist/admin/components/elements/Save/index.js +1 -1
  166. package/dist/admin/components/elements/SaveDraft/index.js +1 -1
  167. package/dist/admin/components/elements/SearchFilter/index.js +1 -1
  168. package/dist/admin/components/elements/SearchFilter/types.js +1 -1
  169. package/dist/admin/components/elements/ShimmerEffect/index.js +1 -1
  170. package/dist/admin/components/elements/SortColumn/index.js +1 -1
  171. package/dist/admin/components/elements/SortColumn/types.js +1 -1
  172. package/dist/admin/components/elements/SortComplex/index.js +1 -1
  173. package/dist/admin/components/elements/SortComplex/types.js +1 -1
  174. package/dist/admin/components/elements/Status/index.js +1 -1
  175. package/dist/admin/components/elements/StepNav/index.js +1 -1
  176. package/dist/admin/components/elements/StepNav/types.js +1 -1
  177. package/dist/admin/components/elements/Table/index.js +1 -1
  178. package/dist/admin/components/elements/Table/types.js +1 -1
  179. package/dist/admin/components/elements/TableColumns/buildColumns.js +1 -1
  180. package/dist/admin/components/elements/TableColumns/columnReducer.js +1 -1
  181. package/dist/admin/components/elements/TableColumns/getInitialColumns.js +1 -1
  182. package/dist/admin/components/elements/TableColumns/index.js +1 -1
  183. package/dist/admin/components/elements/Thumbnail/index.js +1 -1
  184. package/dist/admin/components/elements/Thumbnail/types.js +1 -1
  185. package/dist/admin/components/elements/ThumbnailCard/index.js +1 -1
  186. package/dist/admin/components/elements/ThumbnailCard/types.js +1 -1
  187. package/dist/admin/components/elements/Tooltip/index.js +1 -1
  188. package/dist/admin/components/elements/Tooltip/index.scss +4 -4
  189. package/dist/admin/components/elements/Tooltip/types.js +1 -1
  190. package/dist/admin/components/elements/UnpublishMany/index.js +1 -1
  191. package/dist/admin/components/elements/UnpublishMany/types.js +1 -1
  192. package/dist/admin/components/elements/ViewDescription/index.js +1 -1
  193. package/dist/admin/components/elements/ViewDescription/types.js +1 -1
  194. package/dist/admin/components/elements/WhereBuilder/Condition/Date/index.js +1 -1
  195. package/dist/admin/components/elements/WhereBuilder/Condition/Date/types.js +1 -1
  196. package/dist/admin/components/elements/WhereBuilder/Condition/Number/index.js +1 -1
  197. package/dist/admin/components/elements/WhereBuilder/Condition/Number/types.js +1 -1
  198. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/index.js +1 -1
  199. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +1 -1
  200. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/types.js +1 -1
  201. package/dist/admin/components/elements/WhereBuilder/Condition/Select/index.js +1 -1
  202. package/dist/admin/components/elements/WhereBuilder/Condition/Select/types.js +1 -1
  203. package/dist/admin/components/elements/WhereBuilder/Condition/Text/index.js +1 -1
  204. package/dist/admin/components/elements/WhereBuilder/Condition/Text/types.js +1 -1
  205. package/dist/admin/components/elements/WhereBuilder/Condition/index.js +1 -1
  206. package/dist/admin/components/elements/WhereBuilder/Condition/types.js +1 -1
  207. package/dist/admin/components/elements/WhereBuilder/field-types.js +1 -1
  208. package/dist/admin/components/elements/WhereBuilder/index.js +1 -1
  209. package/dist/admin/components/elements/WhereBuilder/reducer.js +1 -1
  210. package/dist/admin/components/elements/WhereBuilder/transformWhereQuery.js +1 -1
  211. package/dist/admin/components/elements/WhereBuilder/types.js +1 -1
  212. package/dist/admin/components/elements/WhereBuilder/validateWhereQuery.js +1 -1
  213. package/dist/admin/components/elements/elements.spec.js +1 -1
  214. package/dist/admin/components/elements/types.d.ts +1 -1
  215. package/dist/admin/components/elements/types.d.ts.map +1 -1
  216. package/dist/admin/components/elements/types.js +1 -1
  217. package/dist/admin/components/forms/Error/index.js +1 -1
  218. package/dist/admin/components/forms/Error/types.js +1 -1
  219. package/dist/admin/components/forms/FieldDescription/index.js +1 -1
  220. package/dist/admin/components/forms/FieldDescription/types.js +1 -1
  221. package/dist/admin/components/forms/Form/WatchFormErrors.js +1 -1
  222. package/dist/admin/components/forms/Form/buildFieldSchemaMap.js +1 -1
  223. package/dist/admin/components/forms/Form/buildInitialState.js +1 -1
  224. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +1 -1
  225. package/dist/admin/components/forms/Form/buildStateFromSchema/buildStateFromSchema.spec.js +1 -1
  226. package/dist/admin/components/forms/Form/buildStateFromSchema/index.js +1 -1
  227. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +1 -1
  228. package/dist/admin/components/forms/Form/context.js +1 -1
  229. package/dist/admin/components/forms/Form/createNestedFieldPath.js +1 -1
  230. package/dist/admin/components/forms/Form/errorMessages.js +1 -1
  231. package/dist/admin/components/forms/Form/fieldReducer.js +1 -1
  232. package/dist/admin/components/forms/Form/getDataByPath.js +1 -1
  233. package/dist/admin/components/forms/Form/getSiblingData.js +1 -1
  234. package/dist/admin/components/forms/Form/index.js +1 -1
  235. package/dist/admin/components/forms/Form/initContextState.js +1 -1
  236. package/dist/admin/components/forms/Form/reduceFieldsToValues.js +1 -1
  237. package/dist/admin/components/forms/Form/rows.js +1 -1
  238. package/dist/admin/components/forms/Form/types.js +1 -1
  239. package/dist/admin/components/forms/Label/index.js +1 -1
  240. package/dist/admin/components/forms/Label/types.js +1 -1
  241. package/dist/admin/components/forms/NullifyField/index.js +1 -1
  242. package/dist/admin/components/forms/RenderFields/filterFields.js +1 -1
  243. package/dist/admin/components/forms/RenderFields/index.js +1 -1
  244. package/dist/admin/components/forms/RenderFields/types.js +1 -1
  245. package/dist/admin/components/forms/RowLabel/index.js +1 -1
  246. package/dist/admin/components/forms/RowLabel/types.js +1 -1
  247. package/dist/admin/components/forms/Submit/index.js +1 -1
  248. package/dist/admin/components/forms/WatchChildErrors/index.js +1 -1
  249. package/dist/admin/components/forms/field-types/Array/ArrayRow.js +1 -1
  250. package/dist/admin/components/forms/field-types/Array/index.js +1 -1
  251. package/dist/admin/components/forms/field-types/Array/types.js +1 -1
  252. package/dist/admin/components/forms/field-types/Blocks/BlockRow.js +1 -1
  253. package/dist/admin/components/forms/field-types/Blocks/BlocksDrawer/BlockSearch/index.js +1 -1
  254. package/dist/admin/components/forms/field-types/Blocks/BlocksDrawer/index.js +1 -1
  255. package/dist/admin/components/forms/field-types/Blocks/BlocksDrawer/types.js +1 -1
  256. package/dist/admin/components/forms/field-types/Blocks/RowActions.js +1 -1
  257. package/dist/admin/components/forms/field-types/Blocks/SectionTitle/index.js +1 -1
  258. package/dist/admin/components/forms/field-types/Blocks/SectionTitle/types.js +1 -1
  259. package/dist/admin/components/forms/field-types/Blocks/index.js +1 -1
  260. package/dist/admin/components/forms/field-types/Blocks/types.js +1 -1
  261. package/dist/admin/components/forms/field-types/Checkbox/Input.js +1 -1
  262. package/dist/admin/components/forms/field-types/Checkbox/index.js +1 -1
  263. package/dist/admin/components/forms/field-types/Checkbox/types.js +1 -1
  264. package/dist/admin/components/forms/field-types/Code/index.js +1 -1
  265. package/dist/admin/components/forms/field-types/Code/types.js +1 -1
  266. package/dist/admin/components/forms/field-types/Collapsible/index.d.ts.map +1 -1
  267. package/dist/admin/components/forms/field-types/Collapsible/index.js +29 -23
  268. package/dist/admin/components/forms/field-types/Collapsible/types.js +1 -1
  269. package/dist/admin/components/forms/field-types/ConfirmPassword/index.js +1 -1
  270. package/dist/admin/components/forms/field-types/ConfirmPassword/types.js +1 -1
  271. package/dist/admin/components/forms/field-types/DateTime/Input.js +1 -1
  272. package/dist/admin/components/forms/field-types/DateTime/index.js +1 -1
  273. package/dist/admin/components/forms/field-types/DateTime/types.js +1 -1
  274. package/dist/admin/components/forms/field-types/Email/index.js +1 -1
  275. package/dist/admin/components/forms/field-types/Email/types.js +1 -1
  276. package/dist/admin/components/forms/field-types/Group/index.js +1 -1
  277. package/dist/admin/components/forms/field-types/Group/provider.js +1 -1
  278. package/dist/admin/components/forms/field-types/Group/types.js +1 -1
  279. package/dist/admin/components/forms/field-types/HiddenInput/index.js +1 -1
  280. package/dist/admin/components/forms/field-types/HiddenInput/types.js +1 -1
  281. package/dist/admin/components/forms/field-types/JSON/index.d.ts.map +1 -1
  282. package/dist/admin/components/forms/field-types/JSON/index.js +21 -2
  283. package/dist/admin/components/forms/field-types/JSON/types.js +1 -1
  284. package/dist/admin/components/forms/field-types/Number/index.js +1 -1
  285. package/dist/admin/components/forms/field-types/Number/types.js +1 -1
  286. package/dist/admin/components/forms/field-types/Password/index.js +1 -1
  287. package/dist/admin/components/forms/field-types/Password/types.js +1 -1
  288. package/dist/admin/components/forms/field-types/Point/index.js +1 -1
  289. package/dist/admin/components/forms/field-types/Point/types.js +1 -1
  290. package/dist/admin/components/forms/field-types/RadioGroup/Input.js +1 -1
  291. package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/index.js +1 -1
  292. package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/types.js +1 -1
  293. package/dist/admin/components/forms/field-types/RadioGroup/index.js +1 -1
  294. package/dist/admin/components/forms/field-types/RadioGroup/types.js +1 -1
  295. package/dist/admin/components/forms/field-types/Relationship/AddNew/index.js +1 -1
  296. package/dist/admin/components/forms/field-types/Relationship/AddNew/types.js +1 -1
  297. package/dist/admin/components/forms/field-types/Relationship/AddNew/useRelatedCollections.js +1 -1
  298. package/dist/admin/components/forms/field-types/Relationship/createRelationMap.js +1 -1
  299. package/dist/admin/components/forms/field-types/Relationship/findOptionsByValue.js +1 -1
  300. package/dist/admin/components/forms/field-types/Relationship/index.js +1 -1
  301. package/dist/admin/components/forms/field-types/Relationship/optionsReducer.js +1 -1
  302. package/dist/admin/components/forms/field-types/Relationship/select-components/MultiValueLabel/index.js +1 -1
  303. package/dist/admin/components/forms/field-types/Relationship/select-components/SingleValue/index.js +1 -1
  304. package/dist/admin/components/forms/field-types/Relationship/types.js +1 -1
  305. package/dist/admin/components/forms/field-types/RichText/index.js +1 -1
  306. package/dist/admin/components/forms/field-types/RichText/types.d.ts +3 -1
  307. package/dist/admin/components/forms/field-types/RichText/types.d.ts.map +1 -1
  308. package/dist/admin/components/forms/field-types/RichText/types.js +1 -1
  309. package/dist/admin/components/forms/field-types/Row/index.js +1 -1
  310. package/dist/admin/components/forms/field-types/Row/provider.js +1 -1
  311. package/dist/admin/components/forms/field-types/Row/types.js +1 -1
  312. package/dist/admin/components/forms/field-types/Select/Input.js +1 -1
  313. package/dist/admin/components/forms/field-types/Select/index.js +1 -1
  314. package/dist/admin/components/forms/field-types/Select/types.js +1 -1
  315. package/dist/admin/components/forms/field-types/Tabs/index.d.ts.map +1 -1
  316. package/dist/admin/components/forms/field-types/Tabs/index.js +28 -24
  317. package/dist/admin/components/forms/field-types/Tabs/provider.js +1 -1
  318. package/dist/admin/components/forms/field-types/Tabs/types.js +1 -1
  319. package/dist/admin/components/forms/field-types/Text/Input.js +1 -1
  320. package/dist/admin/components/forms/field-types/Text/index.js +1 -1
  321. package/dist/admin/components/forms/field-types/Text/types.js +1 -1
  322. package/dist/admin/components/forms/field-types/Textarea/Input.js +1 -1
  323. package/dist/admin/components/forms/field-types/Textarea/index.js +1 -1
  324. package/dist/admin/components/forms/field-types/Textarea/types.js +1 -1
  325. package/dist/admin/components/forms/field-types/UI/index.js +1 -1
  326. package/dist/admin/components/forms/field-types/Upload/Input.js +1 -1
  327. package/dist/admin/components/forms/field-types/Upload/index.js +1 -1
  328. package/dist/admin/components/forms/field-types/Upload/types.js +1 -1
  329. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.js +1 -1
  330. package/dist/admin/components/forms/field-types/index.js +1 -1
  331. package/dist/admin/components/forms/field-types/shared.js +1 -1
  332. package/dist/admin/components/forms/useField/index.js +1 -1
  333. package/dist/admin/components/forms/useField/types.js +1 -1
  334. package/dist/admin/components/forms/withCondition/WatchCondition.js +1 -1
  335. package/dist/admin/components/forms/withCondition/index.js +1 -1
  336. package/dist/admin/components/graphics/Account/Default/index.js +1 -1
  337. package/dist/admin/components/graphics/Account/Gravatar/index.js +1 -1
  338. package/dist/admin/components/graphics/Account/index.js +1 -1
  339. package/dist/admin/components/graphics/DefaultBlockImage/index.js +1 -1
  340. package/dist/admin/components/graphics/ExternalLink/index.js +1 -1
  341. package/dist/admin/components/graphics/File/index.js +1 -1
  342. package/dist/admin/components/graphics/Icon/index.js +1 -1
  343. package/dist/admin/components/graphics/Logo/index.js +1 -1
  344. package/dist/admin/components/graphics/Search/index.js +1 -1
  345. package/dist/admin/components/icons/Calendar/index.js +1 -1
  346. package/dist/admin/components/icons/Check/index.js +1 -1
  347. package/dist/admin/components/icons/Chevron/index.js +1 -1
  348. package/dist/admin/components/icons/CloseMenu/index.js +1 -1
  349. package/dist/admin/components/icons/CodeBlock/index.js +1 -1
  350. package/dist/admin/components/icons/Copy/index.js +1 -1
  351. package/dist/admin/components/icons/Drag/index.js +1 -1
  352. package/dist/admin/components/icons/Edit/index.js +1 -1
  353. package/dist/admin/components/icons/Line/index.js +1 -1
  354. package/dist/admin/components/icons/Link/index.js +1 -1
  355. package/dist/admin/components/icons/LogOut/index.js +1 -1
  356. package/dist/admin/components/icons/Menu/index.js +1 -1
  357. package/dist/admin/components/icons/MinimizeMaximize/index.js +1 -1
  358. package/dist/admin/components/icons/More/index.js +1 -1
  359. package/dist/admin/components/icons/Plus/index.js +1 -1
  360. package/dist/admin/components/icons/Search/index.js +1 -1
  361. package/dist/admin/components/icons/Swap/index.js +1 -1
  362. package/dist/admin/components/icons/X/index.js +1 -1
  363. package/dist/admin/components/index.js +1 -1
  364. package/dist/admin/components/modals/LeaveWithoutSaving/index.js +1 -1
  365. package/dist/admin/components/modals/StayLoggedIn/index.js +1 -1
  366. package/dist/admin/components/modals/StayLoggedIn/types.js +1 -1
  367. package/dist/admin/components/templates/Default/index.js +1 -1
  368. package/dist/admin/components/templates/Default/types.js +1 -1
  369. package/dist/admin/components/templates/Minimal/index.js +1 -1
  370. package/dist/admin/components/templates/Minimal/types.js +1 -1
  371. package/dist/admin/components/utilities/ActionsProvider/index.js +1 -1
  372. package/dist/admin/components/utilities/Auth/index.js +1 -1
  373. package/dist/admin/components/utilities/Auth/types.js +1 -1
  374. package/dist/admin/components/utilities/Config/index.js +1 -1
  375. package/dist/admin/components/utilities/CustomProvider/index.js +1 -1
  376. package/dist/admin/components/utilities/DocumentEvents/index.js +1 -1
  377. package/dist/admin/components/utilities/DocumentEvents/types.js +1 -1
  378. package/dist/admin/components/utilities/DocumentInfo/index.js +1 -1
  379. package/dist/admin/components/utilities/DocumentInfo/types.js +1 -1
  380. package/dist/admin/components/utilities/EditDepth/index.js +1 -1
  381. package/dist/admin/components/utilities/FormQueryParams/index.js +1 -1
  382. package/dist/admin/components/utilities/GetFilterOptions/index.js +1 -1
  383. package/dist/admin/components/utilities/I18n/index.js +1 -1
  384. package/dist/admin/components/utilities/LoadingOverlay/index.js +1 -1
  385. package/dist/admin/components/utilities/LoadingOverlay/reducer.js +1 -1
  386. package/dist/admin/components/utilities/LoadingOverlay/types.js +1 -1
  387. package/dist/admin/components/utilities/Locale/index.js +1 -1
  388. package/dist/admin/components/utilities/Meta/index.js +1 -1
  389. package/dist/admin/components/utilities/Meta/types.js +1 -1
  390. package/dist/admin/components/utilities/OperationProvider/index.js +1 -1
  391. package/dist/admin/components/utilities/Portal/index.js +1 -1
  392. package/dist/admin/components/utilities/Preferences/index.js +1 -1
  393. package/dist/admin/components/utilities/RenderCustomComponent/index.js +1 -1
  394. package/dist/admin/components/utilities/RenderCustomComponent/types.js +1 -1
  395. package/dist/admin/components/utilities/SearchParams/index.js +1 -1
  396. package/dist/admin/components/utilities/Theme/index.js +1 -1
  397. package/dist/admin/components/utilities/WithMergedProps/index.js +1 -1
  398. package/dist/admin/components/views/API/index.js +1 -1
  399. package/dist/admin/components/views/Account/Default.js +1 -1
  400. package/dist/admin/components/views/Account/Settings/index.js +1 -1
  401. package/dist/admin/components/views/Account/ToggleTheme/index.js +1 -1
  402. package/dist/admin/components/views/Account/index.js +1 -1
  403. package/dist/admin/components/views/Account/types.js +1 -1
  404. package/dist/admin/components/views/CreateFirstUser/index.js +1 -1
  405. package/dist/admin/components/views/CreateFirstUser/types.js +1 -1
  406. package/dist/admin/components/views/Dashboard/Default.js +1 -1
  407. package/dist/admin/components/views/Dashboard/index.js +1 -1
  408. package/dist/admin/components/views/Dashboard/types.js +1 -1
  409. package/dist/admin/components/views/ForgotPassword/index.js +1 -1
  410. package/dist/admin/components/views/Global/Default/index.js +1 -1
  411. package/dist/admin/components/views/Global/Default.js +1 -1
  412. package/dist/admin/components/views/Global/Routes/CustomComponent.js +1 -1
  413. package/dist/admin/components/views/Global/Routes/custom.js +1 -1
  414. package/dist/admin/components/views/Global/Routes/index.js +1 -1
  415. package/dist/admin/components/views/Global/index.js +1 -1
  416. package/dist/admin/components/views/Global/types.js +1 -1
  417. package/dist/admin/components/views/LivePreview/Context/collisionDetection.js +1 -1
  418. package/dist/admin/components/views/LivePreview/Context/context.js +1 -1
  419. package/dist/admin/components/views/LivePreview/Context/index.js +1 -1
  420. package/dist/admin/components/views/LivePreview/Context/sizeReducer.js +1 -1
  421. package/dist/admin/components/views/LivePreview/Device/index.js +1 -1
  422. package/dist/admin/components/views/LivePreview/DeviceContainer/index.js +1 -1
  423. package/dist/admin/components/views/LivePreview/IFrame/index.js +1 -1
  424. package/dist/admin/components/views/LivePreview/Preview/index.js +1 -1
  425. package/dist/admin/components/views/LivePreview/Toolbar/Controls/index.js +1 -1
  426. package/dist/admin/components/views/LivePreview/Toolbar/SizeInput/index.js +1 -1
  427. package/dist/admin/components/views/LivePreview/Toolbar/index.js +1 -1
  428. package/dist/admin/components/views/LivePreview/ToolbarArea/index.js +1 -1
  429. package/dist/admin/components/views/LivePreview/index.js +1 -1
  430. package/dist/admin/components/views/LivePreview/usePopupWindow.js +1 -1
  431. package/dist/admin/components/views/Login/index.js +1 -1
  432. package/dist/admin/components/views/Logout/index.js +1 -1
  433. package/dist/admin/components/views/NotFound/index.js +1 -1
  434. package/dist/admin/components/views/ResetPassword/index.js +1 -1
  435. package/dist/admin/components/views/Routes/collections.js +1 -1
  436. package/dist/admin/components/views/Routes/custom.js +1 -1
  437. package/dist/admin/components/views/Routes/globals.js +1 -1
  438. package/dist/admin/components/views/Routes/index.js +1 -1
  439. package/dist/admin/components/views/Unauthorized/index.js +1 -1
  440. package/dist/admin/components/views/Verify/index.js +1 -1
  441. package/dist/admin/components/views/Version/Compare/index.js +1 -1
  442. package/dist/admin/components/views/Version/Compare/types.js +1 -1
  443. package/dist/admin/components/views/Version/RenderFieldsToDiff/Label/index.js +1 -1
  444. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +1 -1
  445. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.js +1 -1
  446. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +1 -1
  447. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Select/index.js +1 -1
  448. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +1 -1
  449. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.js +1 -1
  450. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/diffMethods.js +1 -1
  451. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.js +1 -1
  452. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/styles.js +1 -1
  453. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/types.js +1 -1
  454. package/dist/admin/components/views/Version/RenderFieldsToDiff/index.js +1 -1
  455. package/dist/admin/components/views/Version/RenderFieldsToDiff/types.js +1 -1
  456. package/dist/admin/components/views/Version/Restore/index.js +1 -1
  457. package/dist/admin/components/views/Version/Restore/types.js +1 -1
  458. package/dist/admin/components/views/Version/SelectLocales/index.js +1 -1
  459. package/dist/admin/components/views/Version/SelectLocales/types.js +1 -1
  460. package/dist/admin/components/views/Version/Version.js +1 -1
  461. package/dist/admin/components/views/Version/index.js +1 -1
  462. package/dist/admin/components/views/Version/shared.js +1 -1
  463. package/dist/admin/components/views/Version/types.js +1 -1
  464. package/dist/admin/components/views/Versions/Default.js +1 -1
  465. package/dist/admin/components/views/Versions/columns.js +1 -1
  466. package/dist/admin/components/views/Versions/index.js +1 -1
  467. package/dist/admin/components/views/Versions/types.js +1 -1
  468. package/dist/admin/components/views/collections/Edit/Auth/APIKey.js +1 -1
  469. package/dist/admin/components/views/collections/Edit/Auth/index.js +1 -1
  470. package/dist/admin/components/views/collections/Edit/Auth/types.js +1 -1
  471. package/dist/admin/components/views/collections/Edit/Default/index.js +1 -1
  472. package/dist/admin/components/views/collections/Edit/Default.js +3 -3
  473. package/dist/admin/components/views/collections/Edit/Routes/CustomComponent.js +1 -1
  474. package/dist/admin/components/views/collections/Edit/Routes/custom.js +1 -1
  475. package/dist/admin/components/views/collections/Edit/Routes/index.js +1 -1
  476. package/dist/admin/components/views/collections/Edit/SetStepNav.js +1 -1
  477. package/dist/admin/components/views/collections/Edit/Upload/index.js +1 -1
  478. package/dist/admin/components/views/collections/Edit/Upload/types.js +1 -1
  479. package/dist/admin/components/views/collections/Edit/formatFields.js +1 -1
  480. package/dist/admin/components/views/collections/Edit/index.js +1 -1
  481. package/dist/admin/components/views/collections/Edit/types.js +1 -1
  482. package/dist/admin/components/views/collections/List/Cell/cellTypes.spec.js +1 -1
  483. package/dist/admin/components/views/collections/List/Cell/field-types/Array/index.js +1 -1
  484. package/dist/admin/components/views/collections/List/Cell/field-types/Blocks/index.js +1 -1
  485. package/dist/admin/components/views/collections/List/Cell/field-types/Checkbox/index.js +1 -1
  486. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.js +1 -1
  487. package/dist/admin/components/views/collections/List/Cell/field-types/Date/index.js +1 -1
  488. package/dist/admin/components/views/collections/List/Cell/field-types/File/index.js +1 -1
  489. package/dist/admin/components/views/collections/List/Cell/field-types/JSON/index.js +1 -1
  490. package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.js +1 -1
  491. package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.js +1 -1
  492. package/dist/admin/components/views/collections/List/Cell/field-types/Select/index.js +1 -1
  493. package/dist/admin/components/views/collections/List/Cell/field-types/Textarea/index.js +1 -1
  494. package/dist/admin/components/views/collections/List/Cell/field-types/index.js +1 -1
  495. package/dist/admin/components/views/collections/List/Cell/index.js +1 -1
  496. package/dist/admin/components/views/collections/List/Cell/types.js +1 -1
  497. package/dist/admin/components/views/collections/List/Default.js +1 -1
  498. package/dist/admin/components/views/collections/List/RelationshipProvider/index.js +1 -1
  499. package/dist/admin/components/views/collections/List/RelationshipProvider/reducer.js +1 -1
  500. package/dist/admin/components/views/collections/List/SelectAll/index.js +1 -1
  501. package/dist/admin/components/views/collections/List/SelectRow/index.js +1 -1
  502. package/dist/admin/components/views/collections/List/SelectionProvider/index.js +1 -1
  503. package/dist/admin/components/views/collections/List/formatFields.js +1 -1
  504. package/dist/admin/components/views/collections/List/index.js +1 -1
  505. package/dist/admin/components/views/collections/List/types.js +1 -1
  506. package/dist/admin/components/views/types.js +1 -1
  507. package/dist/admin/components.config.js +1 -1
  508. package/dist/admin/hooks/useDebounce.js +1 -1
  509. package/dist/admin/hooks/useDebouncedCallback.js +1 -1
  510. package/dist/admin/hooks/useDelay.js +1 -1
  511. package/dist/admin/hooks/useDelayedRender.js +1 -1
  512. package/dist/admin/hooks/useHotkey.js +1 -1
  513. package/dist/admin/hooks/useIntersect.js +1 -1
  514. package/dist/admin/hooks/useMountEffect.js +1 -1
  515. package/dist/admin/hooks/usePayloadAPI.js +1 -1
  516. package/dist/admin/hooks/useThrottledEffect.js +1 -1
  517. package/dist/admin/hooks/useThumbnail.js +1 -1
  518. package/dist/admin/hooks/useTitle.js +1 -1
  519. package/dist/admin/hooks/useUseAsTitle.js +1 -1
  520. package/dist/admin/index.js +1 -1
  521. package/dist/admin/utilities/formatDate/getSupportedDateLocale.d.ts.map +1 -1
  522. package/dist/admin/utilities/formatDate/getSupportedDateLocale.js +27 -2
  523. package/dist/admin/utilities/formatDate/index.js +1 -1
  524. package/dist/admin/utilities/getOffsetTop.js +1 -1
  525. package/dist/admin/utilities/getSupportedMonacoLocale.js +1 -1
  526. package/dist/admin/utilities/groupNavItems.js +1 -1
  527. package/dist/admin/utilities/scrollToID.js +1 -1
  528. package/dist/admin/utilities/setsAreEqual.js +1 -1
  529. package/dist/admin/utilities/useResize.js +1 -1
  530. package/dist/auth/baseFields/accountLock.js +1 -1
  531. package/dist/auth/baseFields/apiKey.js +1 -1
  532. package/dist/auth/baseFields/auth.js +1 -1
  533. package/dist/auth/baseFields/verification.js +1 -1
  534. package/dist/auth/crypto.js +1 -1
  535. package/dist/auth/defaultAccess.js +1 -1
  536. package/dist/auth/defaultUser.js +1 -1
  537. package/dist/auth/executeAccess.js +1 -1
  538. package/dist/auth/getExecuteStaticAccess.js +1 -1
  539. package/dist/auth/getExtractJWT.js +1 -1
  540. package/dist/auth/graphql/resolvers/access.js +1 -1
  541. package/dist/auth/graphql/resolvers/forgotPassword.js +1 -1
  542. package/dist/auth/graphql/resolvers/init.js +1 -1
  543. package/dist/auth/graphql/resolvers/login.js +1 -1
  544. package/dist/auth/graphql/resolvers/logout.js +1 -1
  545. package/dist/auth/graphql/resolvers/me.js +1 -1
  546. package/dist/auth/graphql/resolvers/refresh.js +1 -1
  547. package/dist/auth/graphql/resolvers/resetPassword.js +1 -1
  548. package/dist/auth/graphql/resolvers/unlock.js +1 -1
  549. package/dist/auth/graphql/resolvers/verifyEmail.js +1 -1
  550. package/dist/auth/index.js +1 -1
  551. package/dist/auth/init.js +1 -1
  552. package/dist/auth/isLocked.js +1 -1
  553. package/dist/auth/operations/access.js +1 -1
  554. package/dist/auth/operations/forgotPassword.js +1 -1
  555. package/dist/auth/operations/getFieldsToSign.js +1 -1
  556. package/dist/auth/operations/init.js +1 -1
  557. package/dist/auth/operations/local/forgotPassword.js +1 -1
  558. package/dist/auth/operations/local/index.js +1 -1
  559. package/dist/auth/operations/local/login.js +1 -1
  560. package/dist/auth/operations/local/resetPassword.js +1 -1
  561. package/dist/auth/operations/local/unlock.js +1 -1
  562. package/dist/auth/operations/local/verifyEmail.js +1 -1
  563. package/dist/auth/operations/login.d.ts.map +1 -1
  564. package/dist/auth/operations/login.js +17 -1
  565. package/dist/auth/operations/logout.js +1 -1
  566. package/dist/auth/operations/me.js +1 -1
  567. package/dist/auth/operations/refresh.js +1 -1
  568. package/dist/auth/operations/registerFirstUser.js +1 -1
  569. package/dist/auth/operations/resetPassword.js +1 -1
  570. package/dist/auth/operations/unlock.js +1 -1
  571. package/dist/auth/operations/verifyEmail.js +1 -1
  572. package/dist/auth/requestHandlers/access.js +1 -1
  573. package/dist/auth/requestHandlers/forgotPassword.js +1 -1
  574. package/dist/auth/requestHandlers/init.js +1 -1
  575. package/dist/auth/requestHandlers/login.js +1 -1
  576. package/dist/auth/requestHandlers/logout.js +1 -1
  577. package/dist/auth/requestHandlers/me.js +1 -1
  578. package/dist/auth/requestHandlers/refresh.js +1 -1
  579. package/dist/auth/requestHandlers/registerFirstUser.js +1 -1
  580. package/dist/auth/requestHandlers/resetPassword.js +1 -1
  581. package/dist/auth/requestHandlers/unlock.js +1 -1
  582. package/dist/auth/requestHandlers/verifyEmail.js +1 -1
  583. package/dist/auth/sendVerificationEmail.js +1 -1
  584. package/dist/auth/strategies/apiKey.js +1 -1
  585. package/dist/auth/strategies/jwt.js +1 -1
  586. package/dist/auth/strategies/local/authenticate.js +1 -1
  587. package/dist/auth/strategies/local/generatePasswordSaltHash.js +1 -1
  588. package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
  589. package/dist/auth/strategies/local/register.js +1 -1
  590. package/dist/auth/strategies/local/resetLoginAttempts.js +1 -1
  591. package/dist/auth/types.js +1 -1
  592. package/dist/bin/build.js +1 -1
  593. package/dist/bin/generateGraphQLSchema.js +1 -1
  594. package/dist/bin/generateTypes.js +1 -1
  595. package/dist/bin/index.js +1 -1
  596. package/dist/bin/migrate.js +1 -1
  597. package/dist/bundlers/mocks/db-mongodb.js +1 -1
  598. package/dist/bundlers/mocks/db-postgres.js +1 -1
  599. package/dist/bundlers/mocks/dotENV.js +1 -1
  600. package/dist/bundlers/mocks/emptyModule.js +1 -1
  601. package/dist/bundlers/mocks/fileMock.js +1 -1
  602. package/dist/bundlers/types.js +1 -1
  603. package/dist/collections/bindCollection.js +1 -1
  604. package/dist/collections/buildEndpoints.js +1 -1
  605. package/dist/collections/config/build.js +1 -1
  606. package/dist/collections/config/defaults.js +1 -1
  607. package/dist/collections/config/sanitize.js +1 -1
  608. package/dist/collections/config/schema.d.ts.map +1 -1
  609. package/dist/collections/config/schema.js +4 -2
  610. package/dist/collections/config/types.d.ts +8 -2
  611. package/dist/collections/config/types.d.ts.map +1 -1
  612. package/dist/collections/config/types.js +1 -1
  613. package/dist/collections/dataloader.js +1 -1
  614. package/dist/collections/graphql/init.js +1 -1
  615. package/dist/collections/graphql/resolvers/create.js +1 -1
  616. package/dist/collections/graphql/resolvers/delete.js +1 -1
  617. package/dist/collections/graphql/resolvers/docAccess.js +1 -1
  618. package/dist/collections/graphql/resolvers/find.js +1 -1
  619. package/dist/collections/graphql/resolvers/findByID.js +1 -1
  620. package/dist/collections/graphql/resolvers/findVersionByID.js +1 -1
  621. package/dist/collections/graphql/resolvers/findVersions.js +1 -1
  622. package/dist/collections/graphql/resolvers/restoreVersion.js +1 -1
  623. package/dist/collections/graphql/resolvers/update.js +1 -1
  624. package/dist/collections/graphql/types.js +1 -1
  625. package/dist/collections/initHTTP.js +1 -1
  626. package/dist/collections/initLocal.js +1 -1
  627. package/dist/collections/operations/create.js +1 -1
  628. package/dist/collections/operations/delete.js +1 -1
  629. package/dist/collections/operations/deleteByID.js +1 -1
  630. package/dist/collections/operations/docAccess.js +1 -1
  631. package/dist/collections/operations/find.js +1 -1
  632. package/dist/collections/operations/findByID.js +1 -1
  633. package/dist/collections/operations/findVersionByID.js +1 -1
  634. package/dist/collections/operations/findVersions.js +1 -1
  635. package/dist/collections/operations/local/create.js +1 -1
  636. package/dist/collections/operations/local/delete.js +1 -1
  637. package/dist/collections/operations/local/find.js +1 -1
  638. package/dist/collections/operations/local/findByID.js +1 -1
  639. package/dist/collections/operations/local/findVersionByID.js +1 -1
  640. package/dist/collections/operations/local/findVersions.js +1 -1
  641. package/dist/collections/operations/local/index.js +1 -1
  642. package/dist/collections/operations/local/restoreVersion.js +1 -1
  643. package/dist/collections/operations/local/update.js +1 -1
  644. package/dist/collections/operations/restoreVersion.js +1 -1
  645. package/dist/collections/operations/update.js +2 -3
  646. package/dist/collections/operations/updateByID.js +2 -2
  647. package/dist/collections/operations/utils.js +1 -1
  648. package/dist/collections/requestHandlers/create.js +1 -1
  649. package/dist/collections/requestHandlers/delete.js +1 -1
  650. package/dist/collections/requestHandlers/deleteByID.d.ts.map +1 -1
  651. package/dist/collections/requestHandlers/deleteByID.js +8 -2
  652. package/dist/collections/requestHandlers/docAccess.js +1 -1
  653. package/dist/collections/requestHandlers/find.js +1 -1
  654. package/dist/collections/requestHandlers/findByID.d.ts.map +1 -1
  655. package/dist/collections/requestHandlers/findByID.js +8 -2
  656. package/dist/collections/requestHandlers/findVersionByID.d.ts.map +1 -1
  657. package/dist/collections/requestHandlers/findVersionByID.js +8 -2
  658. package/dist/collections/requestHandlers/findVersions.js +1 -1
  659. package/dist/collections/requestHandlers/restoreVersion.d.ts.map +1 -1
  660. package/dist/collections/requestHandlers/restoreVersion.js +8 -2
  661. package/dist/collections/requestHandlers/update.js +1 -1
  662. package/dist/collections/requestHandlers/updateByID.d.ts.map +1 -1
  663. package/dist/collections/requestHandlers/updateByID.js +8 -2
  664. package/dist/config/build.js +1 -1
  665. package/dist/config/clientFiles.js +1 -1
  666. package/dist/config/defaults.js +1 -1
  667. package/dist/config/find.js +1 -1
  668. package/dist/config/load.js +1 -1
  669. package/dist/config/sanitize.js +1 -1
  670. package/dist/config/schema.js +1 -1
  671. package/dist/config/shared/adminViewSchema.js +1 -1
  672. package/dist/config/shared/componentSchema.js +1 -1
  673. package/dist/config/types.js +1 -1
  674. package/dist/config/validate.js +1 -1
  675. package/dist/database/combineQueries.js +1 -1
  676. package/dist/database/createDatabaseAdapter.js +1 -1
  677. package/dist/database/flattenWhereToOperators.js +1 -1
  678. package/dist/database/getLocalizedPaths.js +1 -1
  679. package/dist/database/migrations/createMigration.js +1 -1
  680. package/dist/database/migrations/getMigrations.js +1 -1
  681. package/dist/database/migrations/migrate.js +1 -1
  682. package/dist/database/migrations/migrateDown.js +1 -1
  683. package/dist/database/migrations/migrateRefresh.js +1 -1
  684. package/dist/database/migrations/migrateReset.js +1 -1
  685. package/dist/database/migrations/migrateStatus.js +1 -1
  686. package/dist/database/migrations/migrationTemplate.js +1 -1
  687. package/dist/database/migrations/migrationsCollection.js +1 -1
  688. package/dist/database/migrations/readMigrationFiles.js +1 -1
  689. package/dist/database/queryValidation/types.js +1 -1
  690. package/dist/database/queryValidation/validateQueryPaths.js +1 -1
  691. package/dist/database/queryValidation/validateSearchParams.js +1 -1
  692. package/dist/database/types.d.ts +4 -0
  693. package/dist/database/types.d.ts.map +1 -1
  694. package/dist/database/types.js +1 -1
  695. package/dist/email/build.js +1 -1
  696. package/dist/email/defaults.js +1 -1
  697. package/dist/email/mockHandler.js +1 -1
  698. package/dist/email/sendEmail.js +1 -1
  699. package/dist/email/types.js +1 -1
  700. package/dist/errors/APIError.js +1 -1
  701. package/dist/errors/AuthenticationError.js +1 -1
  702. package/dist/errors/DuplicateCollection.js +1 -1
  703. package/dist/errors/DuplicateFieldName.js +1 -1
  704. package/dist/errors/DuplicateGlobal.js +1 -1
  705. package/dist/errors/ErrorDeletingFile.js +1 -1
  706. package/dist/errors/FileUploadError.js +1 -1
  707. package/dist/errors/Forbidden.js +1 -1
  708. package/dist/errors/InvalidConfiguration.js +1 -1
  709. package/dist/errors/InvalidFieldName.js +1 -1
  710. package/dist/errors/InvalidFieldRelationship.js +1 -1
  711. package/dist/errors/InvalidSchema.js +1 -1
  712. package/dist/errors/LockedAuth.js +1 -1
  713. package/dist/errors/MissingCollectionLabel.js +1 -1
  714. package/dist/errors/MissingEditorProps.d.ts +7 -0
  715. package/dist/errors/MissingEditorProps.d.ts.map +1 -0
  716. package/dist/errors/MissingEditorProps.js +25 -0
  717. package/dist/errors/MissingFieldInputOptions.js +1 -1
  718. package/dist/errors/MissingFieldType.js +1 -1
  719. package/dist/errors/MissingFile.js +1 -1
  720. package/dist/errors/NotFound.js +1 -1
  721. package/dist/errors/QueryError.js +1 -1
  722. package/dist/errors/TimestampsRequired.js +1 -1
  723. package/dist/errors/UnathorizedError.js +1 -1
  724. package/dist/errors/ValidationError.js +1 -1
  725. package/dist/errors/index.js +1 -1
  726. package/dist/errors/types.js +1 -1
  727. package/dist/exports/auth.js +1 -1
  728. package/dist/exports/components/elements.js +1 -1
  729. package/dist/exports/components/fields/Array.js +1 -1
  730. package/dist/exports/components/fields/Blocks.js +1 -1
  731. package/dist/exports/components/fields/Cell.js +1 -1
  732. package/dist/exports/components/fields/Checkbox.js +1 -1
  733. package/dist/exports/components/fields/Code.js +1 -1
  734. package/dist/exports/components/fields/DateTime.js +1 -1
  735. package/dist/exports/components/fields/Email.js +1 -1
  736. package/dist/exports/components/fields/Group.js +1 -1
  737. package/dist/exports/components/fields/Json.js +1 -1
  738. package/dist/exports/components/fields/Number.js +1 -1
  739. package/dist/exports/components/fields/Password.js +1 -1
  740. package/dist/exports/components/fields/RadioGroup/RadioInput.js +1 -1
  741. package/dist/exports/components/fields/RadioGroup/index.js +1 -1
  742. package/dist/exports/components/fields/Relationship.js +1 -1
  743. package/dist/exports/components/fields/RichText.js +1 -1
  744. package/dist/exports/components/fields/Row.js +1 -1
  745. package/dist/exports/components/fields/Select.js +1 -1
  746. package/dist/exports/components/fields/Text.js +1 -1
  747. package/dist/exports/components/fields/Textarea.js +1 -1
  748. package/dist/exports/components/fields/Upload.js +1 -1
  749. package/dist/exports/components/forms.js +1 -1
  750. package/dist/exports/components/graphics.js +1 -1
  751. package/dist/exports/components/hooks.js +1 -1
  752. package/dist/exports/components/icons.js +1 -1
  753. package/dist/exports/components/preferences.js +1 -1
  754. package/dist/exports/components/root.js +1 -1
  755. package/dist/exports/components/templates.js +1 -1
  756. package/dist/exports/components/utilities.js +1 -1
  757. package/dist/exports/components/views/Cell.js +1 -1
  758. package/dist/exports/components/views/Dashboard.js +1 -1
  759. package/dist/exports/components/views/Edit.js +1 -1
  760. package/dist/exports/components/views/List.js +1 -1
  761. package/dist/exports/components.js +1 -1
  762. package/dist/exports/config.js +1 -1
  763. package/dist/exports/database.d.ts +1 -1
  764. package/dist/exports/database.d.ts.map +1 -1
  765. package/dist/exports/database.js +4 -1
  766. package/dist/exports/errors.js +1 -1
  767. package/dist/exports/fields/validations.js +1 -1
  768. package/dist/exports/graphql.js +1 -1
  769. package/dist/exports/types.d.ts +2 -2
  770. package/dist/exports/types.d.ts.map +1 -1
  771. package/dist/exports/types.js +1 -1
  772. package/dist/exports/utilities.js +1 -1
  773. package/dist/exports/versions.js +1 -1
  774. package/dist/express/admin.js +1 -1
  775. package/dist/express/middleware/authenticate.js +1 -1
  776. package/dist/express/middleware/convertPayload.js +1 -1
  777. package/dist/express/middleware/corsHeaders.js +1 -1
  778. package/dist/express/middleware/defaultPayload.js +1 -1
  779. package/dist/express/middleware/errorHandler.js +1 -1
  780. package/dist/express/middleware/i18n.js +1 -1
  781. package/dist/express/middleware/identifyAPI.js +1 -1
  782. package/dist/express/middleware/index.js +1 -1
  783. package/dist/express/mountEndpoints.js +1 -1
  784. package/dist/express/responses/formatError.js +1 -1
  785. package/dist/express/responses/formatSuccess.js +1 -1
  786. package/dist/express/setRequestContext.js +1 -1
  787. package/dist/express/static.js +1 -1
  788. package/dist/express/types.js +1 -1
  789. package/dist/fields/baseFields/baseBlockFields.js +1 -1
  790. package/dist/fields/baseFields/baseIDField.js +1 -1
  791. package/dist/fields/config/sanitize.d.ts +7 -1
  792. package/dist/fields/config/sanitize.d.ts.map +1 -1
  793. package/dist/fields/config/sanitize.js +16 -8
  794. package/dist/fields/config/sanitize.spec.js +1 -1
  795. package/dist/fields/config/schema.d.ts.map +1 -1
  796. package/dist/fields/config/schema.js +8 -2
  797. package/dist/fields/config/types.d.ts +31 -1
  798. package/dist/fields/config/types.d.ts.map +1 -1
  799. package/dist/fields/config/types.js +1 -1
  800. package/dist/fields/getDefaultValue.js +1 -1
  801. package/dist/fields/hooks/afterChange/index.js +1 -1
  802. package/dist/fields/hooks/afterChange/promise.js +1 -1
  803. package/dist/fields/hooks/afterChange/traverseFields.js +1 -1
  804. package/dist/fields/hooks/afterRead/index.js +1 -1
  805. package/dist/fields/hooks/afterRead/promise.js +1 -1
  806. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +1 -1
  807. package/dist/fields/hooks/afterRead/traverseFields.js +1 -1
  808. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js +1 -1
  809. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js +1 -1
  810. package/dist/fields/hooks/beforeChange/index.js +1 -1
  811. package/dist/fields/hooks/beforeChange/promise.js +1 -1
  812. package/dist/fields/hooks/beforeChange/traverseFields.js +1 -1
  813. package/dist/fields/hooks/beforeValidate/index.js +1 -1
  814. package/dist/fields/hooks/beforeValidate/promise.js +1 -1
  815. package/dist/fields/hooks/beforeValidate/traverseFields.js +1 -1
  816. package/dist/fields/mergeBaseFields.js +1 -1
  817. package/dist/fields/sortableFieldTypes.js +1 -1
  818. package/dist/fields/validations.d.ts +1 -0
  819. package/dist/fields/validations.d.ts.map +1 -1
  820. package/dist/fields/validations.js +43 -2
  821. package/dist/fields/validations.spec.js +1 -1
  822. package/dist/globals/buildEndpoints.js +1 -1
  823. package/dist/globals/config/build.js +1 -1
  824. package/dist/globals/config/sanitize.js +1 -1
  825. package/dist/globals/config/schema.d.ts.map +1 -1
  826. package/dist/globals/config/schema.js +3 -2
  827. package/dist/globals/config/types.d.ts +8 -4
  828. package/dist/globals/config/types.d.ts.map +1 -1
  829. package/dist/globals/config/types.js +1 -1
  830. package/dist/globals/graphql/init.js +1 -1
  831. package/dist/globals/graphql/resolvers/docAccess.js +1 -1
  832. package/dist/globals/graphql/resolvers/findOne.js +1 -1
  833. package/dist/globals/graphql/resolvers/findVersionByID.js +1 -1
  834. package/dist/globals/graphql/resolvers/findVersions.js +1 -1
  835. package/dist/globals/graphql/resolvers/index.js +1 -1
  836. package/dist/globals/graphql/resolvers/restoreVersion.js +1 -1
  837. package/dist/globals/graphql/resolvers/update.js +1 -1
  838. package/dist/globals/initHTTP.js +1 -1
  839. package/dist/globals/initLocal.js +1 -1
  840. package/dist/globals/operations/docAccess.js +1 -1
  841. package/dist/globals/operations/findOne.js +1 -1
  842. package/dist/globals/operations/findVersionByID.js +1 -1
  843. package/dist/globals/operations/findVersions.js +1 -1
  844. package/dist/globals/operations/local/findOne.js +1 -1
  845. package/dist/globals/operations/local/findVersionByID.js +1 -1
  846. package/dist/globals/operations/local/findVersions.js +1 -1
  847. package/dist/globals/operations/local/index.js +1 -1
  848. package/dist/globals/operations/local/restoreVersion.js +1 -1
  849. package/dist/globals/operations/local/update.js +1 -1
  850. package/dist/globals/operations/restoreVersion.js +1 -1
  851. package/dist/globals/operations/update.js +1 -1
  852. package/dist/globals/requestHandlers/docAccess.js +1 -1
  853. package/dist/globals/requestHandlers/findOne.js +1 -1
  854. package/dist/globals/requestHandlers/findVersionByID.js +1 -1
  855. package/dist/globals/requestHandlers/findVersions.js +1 -1
  856. package/dist/globals/requestHandlers/restoreVersion.js +1 -1
  857. package/dist/globals/requestHandlers/update.js +1 -1
  858. package/dist/graphql/errorHandler.js +1 -1
  859. package/dist/graphql/graphQLHandler.js +1 -1
  860. package/dist/graphql/initPlayground.js +1 -1
  861. package/dist/graphql/registerSchema.js +1 -1
  862. package/dist/graphql/schema/buildFallbackLocaleInputType.js +1 -1
  863. package/dist/graphql/schema/buildLocaleInputType.js +1 -1
  864. package/dist/graphql/schema/buildMutationInputType.js +1 -1
  865. package/dist/graphql/schema/buildObjectType.js +1 -1
  866. package/dist/graphql/schema/buildPaginatedListType.js +1 -1
  867. package/dist/graphql/schema/buildPoliciesType.js +1 -1
  868. package/dist/graphql/schema/buildWhereInputType.js +1 -1
  869. package/dist/graphql/schema/fieldToWhereInputSchemaMap.js +1 -1
  870. package/dist/graphql/schema/isFieldNullable.js +1 -1
  871. package/dist/graphql/schema/operators.js +1 -1
  872. package/dist/graphql/schema/recursivelyBuildNestedPaths.js +1 -1
  873. package/dist/graphql/schema/withNullableType.js +1 -1
  874. package/dist/graphql/schema/withOperators.js +1 -1
  875. package/dist/graphql/utilities/combineParentName.js +1 -1
  876. package/dist/graphql/utilities/formatName.js +1 -1
  877. package/dist/graphql/utilities/formatName.spec.js +1 -1
  878. package/dist/graphql/utilities/formatOptions.js +1 -1
  879. package/dist/graphql/utilities/getCheckIfLocaleObject.js +1 -1
  880. package/dist/graphql/utilities/uppercase.js +1 -1
  881. package/dist/graphql/utilities/wrapCustomResolver.js +1 -1
  882. package/dist/index.js +1 -1
  883. package/dist/initHTTP.js +1 -1
  884. package/dist/localization/middleware.js +1 -1
  885. package/dist/localization/sanitizeFallbackLocale.js +1 -1
  886. package/dist/payload.js +1 -1
  887. package/dist/preferences/deleteUserPreferences.js +1 -1
  888. package/dist/preferences/operations/delete.js +1 -1
  889. package/dist/preferences/operations/findOne.js +1 -1
  890. package/dist/preferences/operations/update.js +1 -1
  891. package/dist/preferences/preferencesCollection.js +1 -1
  892. package/dist/preferences/requestHandlers/delete.js +1 -1
  893. package/dist/preferences/requestHandlers/findOne.js +1 -1
  894. package/dist/preferences/requestHandlers/update.js +1 -1
  895. package/dist/preferences/types.js +1 -1
  896. package/dist/translations/ar.json +5 -1
  897. package/dist/translations/az.json +5 -2
  898. package/dist/translations/bg.json +5 -1
  899. package/dist/translations/cs.json +5 -1
  900. package/dist/translations/de.json +5 -1
  901. package/dist/translations/defaultOptions.js +1 -1
  902. package/dist/translations/en.json +2 -0
  903. package/dist/translations/es.json +5 -1
  904. package/dist/translations/extractTranslations.js +1 -1
  905. package/dist/translations/fa.json +5 -1
  906. package/dist/translations/fr.json +5 -1
  907. package/dist/translations/hr.json +5 -1
  908. package/dist/translations/hu.json +5 -1
  909. package/dist/translations/index.d.ts +116 -1
  910. package/dist/translations/index.d.ts.map +1 -1
  911. package/dist/translations/index.js +1 -1
  912. package/dist/translations/init.js +1 -1
  913. package/dist/translations/it.json +5 -1
  914. package/dist/translations/ja.json +5 -1
  915. package/dist/translations/ko.json +4 -0
  916. package/dist/translations/my.json +5 -1
  917. package/dist/translations/nb.json +5 -1
  918. package/dist/translations/nl.json +5 -1
  919. package/dist/translations/pl.json +4 -0
  920. package/dist/translations/pt.json +5 -1
  921. package/dist/translations/ro.json +5 -1
  922. package/dist/translations/rs-latin.json +4 -0
  923. package/dist/translations/rs.json +4 -0
  924. package/dist/translations/ru.json +5 -1
  925. package/dist/translations/sv.json +5 -1
  926. package/dist/translations/th.json +5 -1
  927. package/dist/translations/tr.json +5 -1
  928. package/dist/translations/translation-schema.json +8 -0
  929. package/dist/translations/type.js +1 -1
  930. package/dist/translations/ua.json +6 -2
  931. package/dist/translations/vi.json +5 -1
  932. package/dist/translations/zh-tw.json +6 -4
  933. package/dist/translations/zh.json +4 -0
  934. package/dist/types/constants.js +1 -1
  935. package/dist/types/index.js +1 -1
  936. package/dist/uploads/canResizeImage.js +1 -1
  937. package/dist/uploads/cropImage.js +1 -1
  938. package/dist/uploads/deleteAssociatedFiles.js +1 -1
  939. package/dist/uploads/docWithFilenameExists.js +1 -1
  940. package/dist/uploads/fileExists.js +1 -1
  941. package/dist/uploads/formatFilesize.js +1 -1
  942. package/dist/uploads/generateFileData.d.ts.map +1 -1
  943. package/dist/uploads/generateFileData.js +4 -3
  944. package/dist/uploads/getBaseFields.js +1 -1
  945. package/dist/uploads/getExternalFile.d.ts +3 -2
  946. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  947. package/dist/uploads/getExternalFile.js +20 -3
  948. package/dist/uploads/getFileByPath.js +1 -1
  949. package/dist/uploads/getImageSize.js +1 -1
  950. package/dist/uploads/getSafeFilename.js +1 -1
  951. package/dist/uploads/imageResizer.js +1 -1
  952. package/dist/uploads/isImage.js +1 -1
  953. package/dist/uploads/mimeTypeValidator.js +1 -1
  954. package/dist/uploads/mimeTypeValidator.spec.js +1 -1
  955. package/dist/uploads/saveBufferToFile.js +1 -1
  956. package/dist/uploads/types.d.ts +6 -0
  957. package/dist/uploads/types.d.ts.map +1 -1
  958. package/dist/uploads/types.js +1 -1
  959. package/dist/uploads/unlinkTempFiles.js +1 -1
  960. package/dist/uploads/uploadFiles.js +1 -1
  961. package/dist/utilities/canUseDOM.js +1 -1
  962. package/dist/utilities/checkDuplicateCollections.js +1 -1
  963. package/dist/utilities/combineMerge.js +1 -1
  964. package/dist/utilities/commitTransaction.js +1 -1
  965. package/dist/utilities/configToJSONSchema.d.ts +1 -1
  966. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  967. package/dist/utilities/configToJSONSchema.js +9 -8
  968. package/dist/utilities/configToJSONSchema.spec.js +1 -1
  969. package/dist/utilities/convertData.js +1 -1
  970. package/dist/utilities/createArrayFromCommaDelineated.js +1 -1
  971. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  972. package/dist/utilities/createLocalReq.js +9 -2
  973. package/dist/utilities/deepCopyObject.js +1 -1
  974. package/dist/utilities/deepMerge.js +1 -1
  975. package/dist/utilities/fieldSchemaToJSON.js +1 -1
  976. package/dist/utilities/findLocaleFromCode.js +1 -1
  977. package/dist/utilities/flattenTopLevelFields.js +1 -1
  978. package/dist/utilities/formatLabels.js +1 -1
  979. package/dist/utilities/formatLabels.spec.js +1 -1
  980. package/dist/utilities/getCSSVariable.js +1 -1
  981. package/dist/utilities/getCollectionIDFieldTypes.js +1 -1
  982. package/dist/utilities/getCookieExpiration.js +1 -1
  983. package/dist/utilities/getEntityPolicies.js +1 -1
  984. package/dist/utilities/getIDType.js +1 -1
  985. package/dist/utilities/getObjectDotNotation.js +1 -1
  986. package/dist/utilities/getTranslation.js +1 -1
  987. package/dist/utilities/getUniqueListBy.js +1 -1
  988. package/dist/utilities/groupOrTabHasRequiredSubfield.js +1 -1
  989. package/dist/utilities/initTransaction.js +1 -1
  990. package/dist/utilities/isNumber.js +1 -1
  991. package/dist/utilities/isValidID.js +1 -1
  992. package/dist/utilities/isolateObjectProperty.js +1 -1
  993. package/dist/utilities/killTransaction.js +1 -1
  994. package/dist/utilities/logger.js +1 -1
  995. package/dist/utilities/mapAsync.js +1 -1
  996. package/dist/utilities/overwriteMerge.js +1 -1
  997. package/dist/utilities/parseCookies.js +1 -1
  998. package/dist/utilities/sanitizeCollectionID.d.ts +9 -0
  999. package/dist/utilities/sanitizeCollectionID.d.ts.map +1 -0
  1000. package/dist/utilities/sanitizeCollectionID.js +30 -0
  1001. package/dist/utilities/sanitizeInternalFields.js +1 -1
  1002. package/dist/utilities/setsAreEqual.js +1 -1
  1003. package/dist/utilities/splitPathByArrayFields.js +1 -1
  1004. package/dist/utilities/telemetry/events/adminInit.js +1 -1
  1005. package/dist/utilities/telemetry/events/serverInit.js +1 -1
  1006. package/dist/utilities/telemetry/index.js +1 -1
  1007. package/dist/utilities/telemetry/oneWayHash.js +1 -1
  1008. package/dist/utilities/timestamp.js +1 -1
  1009. package/dist/utilities/toKebabCase.js +1 -1
  1010. package/dist/utilities/wait.js +1 -1
  1011. package/dist/utilities/wordBoundariesRegex.js +1 -1
  1012. package/dist/versions/baseFields.js +1 -1
  1013. package/dist/versions/buildCollectionFields.js +1 -1
  1014. package/dist/versions/buildGlobalFields.js +1 -1
  1015. package/dist/versions/deleteCollectionVersions.js +1 -1
  1016. package/dist/versions/drafts/appendVersionToQueryKey.js +1 -1
  1017. package/dist/versions/drafts/getQueryDraftsSort.js +1 -1
  1018. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +1 -1
  1019. package/dist/versions/enforceMaxVersions.js +1 -1
  1020. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  1021. package/dist/versions/getLatestCollectionVersion.js +3 -1
  1022. package/dist/versions/getLatestGlobalVersion.js +1 -1
  1023. package/dist/versions/getVersionsModelName.d.ts +5 -0
  1024. package/dist/versions/getVersionsModelName.d.ts.map +1 -1
  1025. package/dist/versions/getVersionsModelName.js +1 -1
  1026. package/dist/versions/saveVersion.js +2 -2
  1027. package/dist/versions/types.js +1 -1
  1028. package/errors.js +1 -1
  1029. package/graphql.js +1 -1
  1030. package/package.json +1 -1
  1031. package/types.d.ts +2 -2
  1032. package/types.js +1 -1
  1033. package/utilities.js +1 -1
  1034. package/versions.js +1 -1
@@ -347,4 +347,4 @@ const promise = async ({ id, collection, context, data, doc, field, global, oper
347
347
  }
348
348
  };
349
349
 
350
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvcHJvbWlzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCwgUmVxdWVzdENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEsIHRhYkhhc05hbWUsIHZhbHVlSXNWYWx1ZVdpdGhSZWxhdGlvbiB9IGZyb20gJy4uLy4uL2NvbmZpZy90eXBlcydcbmltcG9ydCBnZXRWYWx1ZVdpdGhEZWZhdWx0IGZyb20gJy4uLy4uL2dldERlZmF1bHRWYWx1ZSdcbmltcG9ydCB7IGNsb25lRGF0YUZyb21PcmlnaW5hbERvYyB9IGZyb20gJy4uL2JlZm9yZUNoYW5nZS9jbG9uZURhdGFGcm9tT3JpZ2luYWxEb2MnXG5pbXBvcnQgeyBnZXRFeGlzdGluZ1Jvd0RvYyB9IGZyb20gJy4uL2JlZm9yZUNoYW5nZS9nZXRFeGlzdGluZ1Jvd0RvYydcbmltcG9ydCB7IHRyYXZlcnNlRmllbGRzIH0gZnJvbSAnLi90cmF2ZXJzZUZpZWxkcydcblxudHlwZSBBcmdzPFQ+ID0ge1xuICBjb2xsZWN0aW9uOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgbnVsbFxuICBjb250ZXh0OiBSZXF1ZXN0Q29udGV4dFxuICBkYXRhOiBUXG4gIGRvYzogVFxuICBmaWVsZDogRmllbGQgfCBUYWJBc0ZpZWxkXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBpZD86IG51bWJlciB8IHN0cmluZ1xuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3ZlcnJpZGVBY2Nlc3M6IGJvb2xlYW5cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gU2FuaXRpemUgaW5jb21pbmcgZGF0YVxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIEV4ZWN1dGUgZmllbGQgYWNjZXNzIGNvbnRyb2xcbi8vIC0gTWVyZ2Ugb3JpZ2luYWwgZG9jdW1lbnQgZGF0YSBpbnRvIGluY29taW5nIGRhdGFcbi8vIC0gQ29tcHV0ZSBkZWZhdWx0IHZhbHVlcyBmb3IgdW5kZWZpbmVkIGZpZWxkc1xuXG5leHBvcnQgY29uc3QgcHJvbWlzZSA9IGFzeW5jIDxUPih7XG4gIGlkLFxuICBjb2xsZWN0aW9uLFxuICBjb250ZXh0LFxuICBkYXRhLFxuICBkb2MsXG4gIGZpZWxkLFxuICBnbG9iYWwsXG4gIG9wZXJhdGlvbixcbiAgb3ZlcnJpZGVBY2Nlc3MsXG4gIHJlcSxcbiAgc2libGluZ0RhdGEsXG4gIHNpYmxpbmdEb2MsXG59OiBBcmdzPFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgIGlmIChmaWVsZC5uYW1lID09PSAnaWQnKSB7XG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZ1xuXG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gcGFyc2VGbG9hdCh2YWx1ZSlcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBmaWVsZC50eXBlID09PSAndGV4dCcgJiZcbiAgICAgICAgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdPy50b1N0cmluZyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICB0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXS50b1N0cmluZygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2FuaXRpemUgaW5jb21pbmcgZGF0YVxuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nXG4gICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKVxuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gdHJpbW1lZC5sZW5ndGggPT09IDAgPyBudWxsIDogcGFyc2VGbG9hdCh0cmltbWVkKVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncG9pbnQnOiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdKSkge1xuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZ1tdKS5tYXAoKGNvb3JkaW5hdGUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29vcmRpbmF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVtpXSBhcyBzdHJpbmdcbiAgICAgICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKVxuICAgICAgICAgICAgICByZXR1cm4gdHJpbW1lZC5sZW5ndGggPT09IDAgPyBudWxsIDogcGFyc2VGbG9hdCh0cmltbWVkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnY2hlY2tib3gnOiB7XG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3RydWUnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHRydWVcbiAgICAgICAgaWYgKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnZmFsc2UnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGZhbHNlXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJycpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gZmFsc2VcblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyaWNoVGV4dCc6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmljaFRleHRKU09OID0gSlNPTi5wYXJzZShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmcpXG4gICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHJpY2hUZXh0SlNPTlxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gRGlzcmVnYXJkIHRoaXMgZGF0YSBhcyBpdCBpcyBub3QgdmFsaWQuXG4gICAgICAgICAgICAvLyBXaWxsIGJlIHJlcG9ydGVkIHRvIHVzZXIgYnkgZmllbGQgdmFsaWRhdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICBjYXNlICd1cGxvYWQnOiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJycgfHxcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ25vbmUnIHx8XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdudWxsJyB8fFxuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyAmJiBmaWVsZC5oYXNNYW55ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IFtdXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYzogeyByZWxhdGlvblRvOiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0sIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSByZWxhdGVkRG9jLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwSURGaWVsZCA9IHJlbGF0ZWRDb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgICBmaWVsZEFmZmVjdHNEYXRhKGNvbGxlY3Rpb25GaWVsZCkgJiYgY29sbGVjdGlvbkZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV1baV0gPSB7XG4gICAgICAgICAgICAgICAgICAuLi5yZWxhdGVkRG9jLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcnNlRmxvYXQocmVsYXRlZERvYy52YWx1ZSBhcyBzdHJpbmcpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgJiZcbiAgICAgICAgICAgIGZpZWxkLmhhc01hbnkgIT09IHRydWUgJiZcbiAgICAgICAgICAgIHZhbHVlSXNWYWx1ZVdpdGhSZWxhdGlvbih2YWx1ZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IHZhbHVlLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBJREZpZWxkID0gcmVsYXRlZENvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0geyAuLi52YWx1ZSwgdmFsdWU6IHBhcnNlRmxvYXQodmFsdWUudmFsdWUgYXMgc3RyaW5nKSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYzogdW5rbm93biwgaSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbiA9IHJlcS5wYXlsb2FkLmNvbmZpZy5jb2xsZWN0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGZpZWxkLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwSURGaWVsZCA9IHJlbGF0ZWRDb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgICBmaWVsZEFmZmVjdHNEYXRhKGNvbGxlY3Rpb25GaWVsZCkgJiYgY29sbGVjdGlvbkZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV1baV0gPSBwYXJzZUZsb2F0KHJlbGF0ZWREb2MgYXMgc3RyaW5nKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgJiYgZmllbGQuaGFzTWFueSAhPT0gdHJ1ZSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gZmllbGQucmVsYXRpb25UbyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgKGNvbGxlY3Rpb25GaWVsZCkgPT5cbiAgICAgICAgICAgICAgICBmaWVsZEFmZmVjdHNEYXRhKGNvbGxlY3Rpb25GaWVsZCkgJiYgY29sbGVjdGlvbkZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAocmVsYXRpb25zaGlwSURGaWVsZD8udHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBwYXJzZUZsb2F0KHZhbHVlIGFzIHN0cmluZylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICAvLyBIYW5kbGUgY2FzZXMgb2YgYXJyYXlzIGJlaW5nIGludGVudGlvbmFsbHkgc2V0IHRvIDBcbiAgICAgICAgaWYgKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnMCcgfHwgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09IDApIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IFtdXG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhlY3V0ZSBob29rc1xuICAgIGlmIChmaWVsZC5ob29rcz8uYmVmb3JlVmFsaWRhdGUpIHtcbiAgICAgIGF3YWl0IGZpZWxkLmhvb2tzLmJlZm9yZVZhbGlkYXRlLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBjdXJyZW50SG9vaykgPT4ge1xuICAgICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgICBjb25zdCBob29rZWRWYWx1ZSA9IGF3YWl0IGN1cnJlbnRIb29rKHtcbiAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICAgIHZhbHVlOiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoaG9va2VkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gaG9va2VkVmFsdWVcbiAgICAgICAgfVxuICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG4gICAgfVxuXG4gICAgLy8gRXhlY3V0ZSBhY2Nlc3MgY29udHJvbFxuICAgIGlmIChmaWVsZC5hY2Nlc3MgJiYgZmllbGQuYWNjZXNzW29wZXJhdGlvbl0pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlQWNjZXNzXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGF3YWl0IGZpZWxkLmFjY2Vzc1tvcGVyYXRpb25dKHsgaWQsIGRhdGEsIGRvYywgcmVxLCBzaWJsaW5nRGF0YSB9KVxuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBkZWxldGUgc2libGluZ0RhdGFbZmllbGQubmFtZV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gSWYgbm8gaW5jb21pbmcgZGF0YSwgYnV0IGV4aXN0aW5nIGRvY3VtZW50IGRhdGEgaXMgZm91bmQsIG1lcmdlIGl0IGluXG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jKHNpYmxpbmdEb2NbZmllbGQubmFtZV0pXG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGNvbXB1dGUgZGVmYXVsdCB2YWx1ZVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZmllbGQuZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGF3YWl0IGdldFZhbHVlV2l0aERlZmF1bHQoe1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGQuZGVmYXVsdFZhbHVlLFxuICAgICAgICAgIGxvY2FsZTogcmVxLmxvY2FsZSxcbiAgICAgICAgICB1c2VyOiByZXEudXNlcixcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVHJhdmVyc2Ugc3ViZmllbGRzXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSB7fVxuXG4gICAgICBjb25zdCBncm91cERhdGEgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgY29uc3QgZ3JvdXBEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogZ3JvdXBEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jOiBncm91cERvYyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgc2libGluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogZ2V0RXhpc3RpbmdSb3dEb2Mocm93LCBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdXG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm93U2libGluZ0RvYyA9IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1tmaWVsZC5uYW1lXSlcbiAgICAgICAgICBjb25zdCBibG9ja1R5cGVUb01hdGNoID0gcm93LmJsb2NrVHlwZSB8fCByb3dTaWJsaW5nRG9jLmJsb2NrVHlwZVxuICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrVHlwZSkgPT4gYmxvY2tUeXBlLnNsdWcgPT09IGJsb2NrVHlwZVRvTWF0Y2gpXG5cbiAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgIHJvdy5ibG9ja1R5cGUgPSBibG9ja1R5cGVUb01hdGNoXG5cbiAgICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3dTaWJsaW5nRG9jLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3Jvdyc6XG4gICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgIGxldCB0YWJTaWJsaW5nRGF0YVxuICAgICAgbGV0IHRhYlNpYmxpbmdEb2NcbiAgICAgIGlmICh0YWJIYXNOYW1lKGZpZWxkKSkge1xuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgICB0YWJTaWJsaW5nRGF0YSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWJTaWJsaW5nRGF0YSA9IHNpYmxpbmdEYXRhXG4gICAgICAgIHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogdGFiU2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2M6IHRhYlNpYmxpbmdEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJwcm9taXNlIiwiaWQiLCJjb2xsZWN0aW9uIiwiY29udGV4dCIsImRhdGEiLCJkb2MiLCJmaWVsZCIsImdsb2JhbCIsIm9wZXJhdGlvbiIsIm92ZXJyaWRlQWNjZXNzIiwicmVxIiwic2libGluZ0RhdGEiLCJzaWJsaW5nRG9jIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJ0eXBlIiwidmFsdWUiLCJwYXJzZUZsb2F0IiwidG9TdHJpbmciLCJ0cmltbWVkIiwidHJpbSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImNvb3JkaW5hdGUiLCJpIiwicmljaFRleHRKU09OIiwiSlNPTiIsInBhcnNlIiwiaGFzTWFueSIsInJlbGF0aW9uVG8iLCJmb3JFYWNoIiwicmVsYXRlZERvYyIsInJlbGF0ZWRDb2xsZWN0aW9uIiwicGF5bG9hZCIsImNvbmZpZyIsImNvbGxlY3Rpb25zIiwiZmluZCIsInNsdWciLCJyZWxhdGlvbnNoaXBJREZpZWxkIiwiZmllbGRzIiwiY29sbGVjdGlvbkZpZWxkIiwidmFsdWVJc1ZhbHVlV2l0aFJlbGF0aW9uIiwiaG9va3MiLCJiZWZvcmVWYWxpZGF0ZSIsInJlZHVjZSIsInByaW9ySG9vayIsImN1cnJlbnRIb29rIiwiaG9va2VkVmFsdWUiLCJvcmlnaW5hbERvYyIsInVuZGVmaW5lZCIsIlByb21pc2UiLCJyZXNvbHZlIiwiYWNjZXNzIiwicmVzdWx0IiwiY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jIiwiZGVmYXVsdFZhbHVlIiwiZ2V0VmFsdWVXaXRoRGVmYXVsdCIsImxvY2FsZSIsInVzZXIiLCJncm91cERhdGEiLCJncm91cERvYyIsInRyYXZlcnNlRmllbGRzIiwicm93cyIsInByb21pc2VzIiwicm93IiwicHVzaCIsImdldEV4aXN0aW5nUm93RG9jIiwiYWxsIiwicm93U2libGluZ0RvYyIsImJsb2NrVHlwZVRvTWF0Y2giLCJibG9ja1R5cGUiLCJibG9jayIsImJsb2NrcyIsInRhYlNpYmxpbmdEYXRhIiwidGFiU2libGluZ0RvYyIsInRhYkhhc05hbWUiLCJ0YWJzIiwidGFiIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBa0N2QkE7OztlQUFBQTs7O3VCQTVCMEQ7d0VBQ3ZDOzBDQUNTO21DQUNQO2dDQUNIOzs7Ozs7QUF3QnhCLE1BQU1BLFVBQVUsT0FBVSxFQUMvQkMsRUFBRSxFQUNGQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxHQUFHLEVBQ0hDLEtBQUssRUFDTEMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLGNBQWMsRUFDZEMsR0FBRyxFQUNIQyxXQUFXLEVBQ1hDLFVBQVUsRUFDRjtJQUNSLElBQUlDLElBQUFBLHVCQUFnQixFQUFDUCxRQUFRO1FBQzNCLElBQUlBLE1BQU1RLElBQUksS0FBSyxNQUFNO1lBQ3ZCLElBQUlSLE1BQU1TLElBQUksS0FBSyxZQUFZLE9BQU9KLFdBQVcsQ0FBQ0wsTUFBTVEsSUFBSSxDQUFDLEtBQUssVUFBVTtnQkFDMUUsTUFBTUUsUUFBUUwsV0FBVyxD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
350
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvcHJvbWlzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCwgUmVxdWVzdENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEsIHRhYkhhc05hbWUsIHZhbHVlSXNWYWx1ZVdpdGhSZWxhdGlvbiB9IGZyb20gJy4uLy4uL2NvbmZpZy90eXBlcydcbmltcG9ydCBnZXRWYWx1ZVdpdGhEZWZhdWx0IGZyb20gJy4uLy4uL2dldERlZmF1bHRWYWx1ZSdcbmltcG9ydCB7IGNsb25lRGF0YUZyb21PcmlnaW5hbERvYyB9IGZyb20gJy4uL2JlZm9yZUNoYW5nZS9jbG9uZURhdGFGcm9tT3JpZ2luYWxEb2MnXG5pbXBvcnQgeyBnZXRFeGlzdGluZ1Jvd0RvYyB9IGZyb20gJy4uL2JlZm9yZUNoYW5nZS9nZXRFeGlzdGluZ1Jvd0RvYydcbmltcG9ydCB7IHRyYXZlcnNlRmllbGRzIH0gZnJvbSAnLi90cmF2ZXJzZUZpZWxkcydcblxudHlwZSBBcmdzPFQ+ID0ge1xuICBjb2xsZWN0aW9uOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgbnVsbFxuICBjb250ZXh0OiBSZXF1ZXN0Q29udGV4dFxuICBkYXRhOiBUXG4gIGRvYzogVFxuICBmaWVsZDogRmllbGQgfCBUYWJBc0ZpZWxkXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBpZD86IG51bWJlciB8IHN0cmluZ1xuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3ZlcnJpZGVBY2Nlc3M6IGJvb2xlYW5cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gU2FuaXRpemUgaW5jb21pbmcgZGF0YVxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIEV4ZWN1dGUgZmllbGQgYWNjZXNzIGNvbnRyb2xcbi8vIC0gTWVyZ2Ugb3JpZ2luYWwgZG9jdW1lbnQgZGF0YSBpbnRvIGluY29taW5nIGRhdGFcbi8vIC0gQ29tcHV0ZSBkZWZhdWx0IHZhbHVlcyBmb3IgdW5kZWZpbmVkIGZpZWxkc1xuXG5leHBvcnQgY29uc3QgcHJvbWlzZSA9IGFzeW5jIDxUPih7XG4gIGlkLFxuICBjb2xsZWN0aW9uLFxuICBjb250ZXh0LFxuICBkYXRhLFxuICBkb2MsXG4gIGZpZWxkLFxuICBnbG9iYWwsXG4gIG9wZXJhdGlvbixcbiAgb3ZlcnJpZGVBY2Nlc3MsXG4gIHJlcSxcbiAgc2libGluZ0RhdGEsXG4gIHNpYmxpbmdEb2MsXG59OiBBcmdzPFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgIGlmIChmaWVsZC5uYW1lID09PSAnaWQnKSB7XG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZ1xuXG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gcGFyc2VGbG9hdCh2YWx1ZSlcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBmaWVsZC50eXBlID09PSAndGV4dCcgJiZcbiAgICAgICAgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdPy50b1N0cmluZyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICB0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXS50b1N0cmluZygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2FuaXRpemUgaW5jb21pbmcgZGF0YVxuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nXG4gICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKVxuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gdHJpbW1lZC5sZW5ndGggPT09IDAgPyBudWxsIDogcGFyc2VGbG9hdCh0cmltbWVkKVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncG9pbnQnOiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdKSkge1xuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZ1tdKS5tYXAoKGNvb3JkaW5hdGUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29vcmRpbmF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVtpXSBhcyBzdHJpbmdcbiAgICAgICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKVxuICAgICAgICAgICAgICByZXR1cm4gdHJpbW1lZC5sZW5ndGggPT09IDAgPyBudWxsIDogcGFyc2VGbG9hdCh0cmltbWVkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnY2hlY2tib3gnOiB7XG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3RydWUnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHRydWVcbiAgICAgICAgaWYgKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnZmFsc2UnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGZhbHNlXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJycpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gZmFsc2VcblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyaWNoVGV4dCc6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmljaFRleHRKU09OID0gSlNPTi5wYXJzZShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmcpXG4gICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHJpY2hUZXh0SlNPTlxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gRGlzcmVnYXJkIHRoaXMgZGF0YSBhcyBpdCBpcyBub3QgdmFsaWQuXG4gICAgICAgICAgICAvLyBXaWxsIGJlIHJlcG9ydGVkIHRvIHVzZXIgYnkgZmllbGQgdmFsaWRhdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICBjYXNlICd1cGxvYWQnOiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJycgfHxcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ25vbmUnIHx8XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdudWxsJyB8fFxuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyAmJiBmaWVsZC5oYXNNYW55ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IFtdXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYzogeyByZWxhdGlvblRvOiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0sIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSByZWxhdGVkRG9jLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwSURGaWVsZCA9IHJlbGF0ZWRDb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgICBmaWVsZEFmZmVjdHNEYXRhKGNvbGxlY3Rpb25GaWVsZCkgJiYgY29sbGVjdGlvbkZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV1baV0gPSB7XG4gICAgICAgICAgICAgICAgICAuLi5yZWxhdGVkRG9jLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcnNlRmxvYXQocmVsYXRlZERvYy52YWx1ZSBhcyBzdHJpbmcpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgJiZcbiAgICAgICAgICAgIGZpZWxkLmhhc01hbnkgIT09IHRydWUgJiZcbiAgICAgICAgICAgIHZhbHVlSXNWYWx1ZVdpdGhSZWxhdGlvbih2YWx1ZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IHZhbHVlLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBJREZpZWxkID0gcmVsYXRlZENvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0geyAuLi52YWx1ZSwgdmFsdWU6IHBhcnNlRmxvYXQodmFsdWUudmFsdWUgYXMgc3RyaW5nKSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYzogdW5rbm93biwgaSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbiA9IHJlcS5wYXlsb2FkLmNvbmZpZy5jb2xsZWN0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGZpZWxkLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwSURGaWVsZCA9IHJlbGF0ZWRDb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgICBmaWVsZEFmZmVjdHNEYXRhKGNvbGxlY3Rpb25GaWVsZCkgJiYgY29sbGVjdGlvbkZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV1baV0gPSBwYXJzZUZsb2F0KHJlbGF0ZWREb2MgYXMgc3RyaW5nKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgJiYgZmllbGQuaGFzTWFueSAhPT0gdHJ1ZSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gZmllbGQucmVsYXRpb25UbyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgKGNvbGxlY3Rpb25GaWVsZCkgPT5cbiAgICAgICAgICAgICAgICBmaWVsZEFmZmVjdHNEYXRhKGNvbGxlY3Rpb25GaWVsZCkgJiYgY29sbGVjdGlvbkZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAocmVsYXRpb25zaGlwSURGaWVsZD8udHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBwYXJzZUZsb2F0KHZhbHVlIGFzIHN0cmluZylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICAvLyBIYW5kbGUgY2FzZXMgb2YgYXJyYXlzIGJlaW5nIGludGVudGlvbmFsbHkgc2V0IHRvIDBcbiAgICAgICAgaWYgKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnMCcgfHwgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09IDApIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IFtdXG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhlY3V0ZSBob29rc1xuICAgIGlmIChmaWVsZC5ob29rcz8uYmVmb3JlVmFsaWRhdGUpIHtcbiAgICAgIGF3YWl0IGZpZWxkLmhvb2tzLmJlZm9yZVZhbGlkYXRlLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBjdXJyZW50SG9vaykgPT4ge1xuICAgICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgICBjb25zdCBob29rZWRWYWx1ZSA9IGF3YWl0IGN1cnJlbnRIb29rKHtcbiAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICAgIHZhbHVlOiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoaG9va2VkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gaG9va2VkVmFsdWVcbiAgICAgICAgfVxuICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG4gICAgfVxuXG4gICAgLy8gRXhlY3V0ZSBhY2Nlc3MgY29udHJvbFxuICAgIGlmIChmaWVsZC5hY2Nlc3MgJiYgZmllbGQuYWNjZXNzW29wZXJhdGlvbl0pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlQWNjZXNzXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGF3YWl0IGZpZWxkLmFjY2Vzc1tvcGVyYXRpb25dKHsgaWQsIGRhdGEsIGRvYywgcmVxLCBzaWJsaW5nRGF0YSB9KVxuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBkZWxldGUgc2libGluZ0RhdGFbZmllbGQubmFtZV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gSWYgbm8gaW5jb21pbmcgZGF0YSwgYnV0IGV4aXN0aW5nIGRvY3VtZW50IGRhdGEgaXMgZm91bmQsIG1lcmdlIGl0IGluXG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jKHNpYmxpbmdEb2NbZmllbGQubmFtZV0pXG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGNvbXB1dGUgZGVmYXVsdCB2YWx1ZVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZmllbGQuZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGF3YWl0IGdldFZhbHVlV2l0aERlZmF1bHQoe1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGQuZGVmYXVsdFZhbHVlLFxuICAgICAgICAgIGxvY2FsZTogcmVxLmxvY2FsZSxcbiAgICAgICAgICB1c2VyOiByZXEudXNlcixcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVHJhdmVyc2Ugc3ViZmllbGRzXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSB7fVxuXG4gICAgICBjb25zdCBncm91cERhdGEgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgY29uc3QgZ3JvdXBEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogZ3JvdXBEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jOiBncm91cERvYyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgc2libGluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogZ2V0RXhpc3RpbmdSb3dEb2Mocm93LCBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdXG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm93U2libGluZ0RvYyA9IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1tmaWVsZC5uYW1lXSlcbiAgICAgICAgICBjb25zdCBibG9ja1R5cGVUb01hdGNoID0gcm93LmJsb2NrVHlwZSB8fCByb3dTaWJsaW5nRG9jLmJsb2NrVHlwZVxuICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrVHlwZSkgPT4gYmxvY2tUeXBlLnNsdWcgPT09IGJsb2NrVHlwZVRvTWF0Y2gpXG5cbiAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgIHJvdy5ibG9ja1R5cGUgPSBibG9ja1R5cGVUb01hdGNoXG5cbiAgICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3dTaWJsaW5nRG9jLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3Jvdyc6XG4gICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgIGxldCB0YWJTaWJsaW5nRGF0YVxuICAgICAgbGV0IHRhYlNpYmxpbmdEb2NcbiAgICAgIGlmICh0YWJIYXNOYW1lKGZpZWxkKSkge1xuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgICB0YWJTaWJsaW5nRGF0YSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWJTaWJsaW5nRGF0YSA9IHNpYmxpbmdEYXRhXG4gICAgICAgIHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogdGFiU2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2M6IHRhYlNpYmxpbmdEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJwcm9taXNlIiwiaWQiLCJjb2xsZWN0aW9uIiwiY29udGV4dCIsImRhdGEiLCJkb2MiLCJmaWVsZCIsImdsb2JhbCIsIm9wZXJhdGlvbiIsIm92ZXJyaWRlQWNjZXNzIiwicmVxIiwic2libGluZ0RhdGEiLCJzaWJsaW5nRG9jIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJ0eXBlIiwidmFsdWUiLCJwYXJzZUZsb2F0IiwidG9TdHJpbmciLCJ0cmltbWVkIiwidHJpbSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImNvb3JkaW5hdGUiLCJpIiwicmljaFRleHRKU09OIiwiSlNPTiIsInBhcnNlIiwiaGFzTWFueSIsInJlbGF0aW9uVG8iLCJmb3JFYWNoIiwicmVsYXRlZERvYyIsInJlbGF0ZWRDb2xsZWN0aW9uIiwicGF5bG9hZCIsImNvbmZpZyIsImNvbGxlY3Rpb25zIiwiZmluZCIsInNsdWciLCJyZWxhdGlvbnNoaXBJREZpZWxkIiwiZmllbGRzIiwiY29sbGVjdGlvbkZpZWxkIiwidmFsdWVJc1ZhbHVlV2l0aFJlbGF0aW9uIiwiaG9va3MiLCJiZWZvcmVWYWxpZGF0ZSIsInJlZHVjZSIsInByaW9ySG9vayIsImN1cnJlbnRIb29rIiwiaG9va2VkVmFsdWUiLCJvcmlnaW5hbERvYyIsInVuZGVmaW5lZCIsIlByb21pc2UiLCJyZXNvbHZlIiwiYWNjZXNzIiwicmVzdWx0IiwiY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jIiwiZGVmYXVsdFZhbHVlIiwiZ2V0VmFsdWVXaXRoRGVmYXVsdCIsImxvY2FsZSIsInVzZXIiLCJncm91cERhdGEiLCJncm91cERvYyIsInRyYXZlcnNlRmllbGRzIiwicm93cyIsInByb21pc2VzIiwicm93IiwicHVzaCIsImdldEV4aXN0aW5nUm93RG9jIiwiYWxsIiwicm93U2libGluZ0RvYyIsImJsb2NrVHlwZVRvTWF0Y2giLCJibG9ja1R5cGUiLCJibG9jayIsImJsb2NrcyIsInRhYlNpYmxpbmdEYXRhIiwidGFiU2libGluZ0RvYyIsInRhYkhhc05hbWUiLCJ0YWJzIiwidGFiIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBa0N2QkE7OztlQUFBQTs7O3VC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
@@ -30,4 +30,4 @@ const traverseFields = async ({ id, collection, context, data, doc, fields, glob
30
30
  await Promise.all(promises);
31
31
  };
32
32
 
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCwgUmVxdWVzdENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCB7IHByb21pc2UgfSBmcm9tICcuL3Byb21pc2UnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgZGF0YTogVFxuICBkb2M6IFRcbiAgZmllbGRzOiAoRmllbGQgfCBUYWJBc0ZpZWxkKVtdXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBpZD86IG51bWJlciB8IHN0cmluZ1xuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3ZlcnJpZGVBY2Nlc3M6IGJvb2xlYW5cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gYXN5bmMgPFQ+KHtcbiAgaWQsXG4gIGNvbGxlY3Rpb24sXG4gIGNvbnRleHQsXG4gIGRhdGEsXG4gIGRvYyxcbiAgZmllbGRzLFxuICBnbG9iYWwsXG4gIG9wZXJhdGlvbixcbiAgb3ZlcnJpZGVBY2Nlc3MsXG4gIHJlcSxcbiAgc2libGluZ0RhdGEsXG4gIHNpYmxpbmdEb2MsXG59OiBBcmdzPFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHByb21pc2VzID0gW11cbiAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgcHJvbWlzZXMucHVzaChcbiAgICAgIHByb21pc2Uoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgfSksXG4gICAgKVxuICB9KVxuICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbn1cbiJdLCJuYW1lcyI6WyJ0cmF2ZXJzZUZpZWxkcyIsImlkIiwiY29sbGVjdGlvbiIsImNvbnRleHQiLCJkYXRhIiwiZG9jIiwiZmllbGRzIiwiZ2xvYmFsIiwib3BlcmF0aW9uIiwib3ZlcnJpZGVBY2Nlc3MiLCJyZXEiLCJzaWJsaW5nRGF0YSIsInNpYmxpbmdEb2MiLCJwcm9taXNlcyIsImZvckVhY2giLCJmaWVsZCIsInB1c2giLCJwcm9taXNlIiwiUHJvbWlzZSIsImFsbCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFzQmFBOzs7ZUFBQUE7Ozt5QkFqQlc7QUFpQmpCLE1BQU1BLGlCQUFpQixPQUFVLEVBQ3RDQyxFQUFFLEVBQ0ZDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLEdBQUcsRUFDSEMsTUFBTSxFQUNOQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsY0FBYyxFQUNkQyxHQUFHLEVBQ0hDLFdBQVcsRUFDWEMsVUFBVSxFQUNGO0lBQ1IsTUFBTUMsV0FBVyxFQUFFO0lBQ25CUCxPQUFPUSxPQUFPLENBQUMsQ0FBQ0M7UUFDZEYsU0FBU0csSUFBSSxDQUNYQyxJQUFBQSxnQkFBTyxFQUFDO1lBQ05oQjtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBVTtZQUNBUjtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztRQUNGO0lBRUo7SUFDQSxNQUFNTSxRQUFRQyxHQUFHLENBQUNOO0FBQ3BCIn0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCwgUmVxdWVzdENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCB7IHByb21pc2UgfSBmcm9tICcuL3Byb21pc2UnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgZGF0YTogVFxuICBkb2M6IFRcbiAgZmllbGRzOiAoRmllbGQgfCBUYWJBc0ZpZWxkKVtdXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBpZD86IG51bWJlciB8IHN0cmluZ1xuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3ZlcnJpZGVBY2Nlc3M6IGJvb2xlYW5cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gYXN5bmMgPFQ+KHtcbiAgaWQsXG4gIGNvbGxlY3Rpb24sXG4gIGNvbnRleHQsXG4gIGRhdGEsXG4gIGRvYyxcbiAgZmllbGRzLFxuICBnbG9iYWwsXG4gIG9wZXJhdGlvbixcbiAgb3ZlcnJpZGVBY2Nlc3MsXG4gIHJlcSxcbiAgc2libGluZ0RhdGEsXG4gIHNpYmxpbmdEb2MsXG59OiBBcmdzPFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHByb21pc2VzID0gW11cbiAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgcHJvbWlzZXMucHVzaChcbiAgICAgIHByb21pc2Uoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgfSksXG4gICAgKVxuICB9KVxuICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbn1cbiJdLCJuYW1lcyI6WyJ0cmF2ZXJzZUZpZWxkcyIsImlkIiwiY29sbGVjdGlvbiIsImNvbnRleHQiLCJkYXRhIiwiZG9jIiwiZmllbGRzIiwiZ2xvYmFsIiwib3BlcmF0aW9uIiwib3ZlcnJpZGVBY2Nlc3MiLCJyZXEiLCJzaWJsaW5nRGF0YSIsInNpYmxpbmdEb2MiLCJwcm9taXNlcyIsImZvckVhY2giLCJmaWVsZCIsInB1c2giLCJwcm9taXNlIiwiUHJvbWlzZSIsImFsbCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBc0JhQTs7O2VBQUFBOzs7eUJBakJXO0FBaUJqQixNQUFNQSxpQkFBaUIsT0FBVSxFQUN0Q0MsRUFBRSxFQUNGQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxHQUFHLEVBQ0hDLE1BQU0sRUFDTkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLGNBQWMsRUFDZEMsR0FBRyxFQUNIQyxXQUFXLEVBQ1hDLFVBQVUsRUFDRjtJQUNSLE1BQU1DLFdBQVcsRUFBRTtJQUNuQlAsT0FBT1EsT0FBTyxDQUFDLENBQUNDO1FBQ2RGLFNBQVNHLElBQUksQ0FDWEMsSUFBQUEsZ0JBQU8sRUFBQztZQUNOaEI7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQVU7WUFDQVI7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7UUFDRjtJQUVKO0lBQ0EsTUFBTU0sUUFBUUMsR0FBRyxDQUFDTjtBQUNwQiJ9
@@ -48,4 +48,4 @@ const mergeBaseFields = (fields, baseFields)=>{
48
48
  };
49
49
  const _default = mergeBaseFields;
50
50
 
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvbWVyZ2VCYXNlRmllbGRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnXG5cbmltcG9ydCB0eXBlIHsgRmllbGQsIEZpZWxkV2l0aFN1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBmaWVsZEhhc1N1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5jb25zdCBtZXJnZUJhc2VGaWVsZHMgPSAoZmllbGRzOiBGaWVsZFtdLCBiYXNlRmllbGRzOiBGaWVsZFtdKTogRmllbGRbXSA9PiB7XG4gIGNvbnN0IG1lcmdlZEZpZWxkcyA9IFsuLi4oZmllbGRzIHx8IFtdKV1cblxuICBiYXNlRmllbGRzLmZvckVhY2goKGJhc2VGaWVsZCkgPT4ge1xuICAgIGxldCBtYXRjaGVkSW5kZXggPSBudWxsXG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShiYXNlRmllbGQpKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IG1lcmdlZEZpZWxkcy5maW5kKChmaWVsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gYmFzZUZpZWxkLm5hbWUpIHtcbiAgICAgICAgICBtYXRjaGVkSW5kZXggPSBpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfSlcblxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoQ29weTogRmllbGQgPSB7IC4uLm1hdGNoIH1cbiAgICAgICAgbWVyZ2VkRmllbGRzLnNwbGljZShtYXRjaGVkSW5kZXgsIDEpXG5cbiAgICAgICAgY29uc3QgbWVyZ2VkRmllbGQgPSBtZXJnZTxGaWVsZD4oYmFzZUZpZWxkLCBtYXRjaENvcHkpXG5cbiAgICAgICAgaWYgKGZpZWxkSGFzU3ViRmllbGRzKGJhc2VGaWVsZCkgJiYgZmllbGRIYXNTdWJGaWVsZHMobWF0Y2hDb3B5KSkge1xuICAgICAgICAgIDsobWVyZ2VkRmllbGQgYXMgRmllbGRXaXRoU3ViRmllbGRzKS5maWVsZHMgPSBtZXJnZUJhc2VGaWVsZHMoXG4gICAgICAgICAgICBtYXRjaENvcHkuZmllbGRzLFxuICAgICAgICAgICAgYmFzZUZpZWxkLmZpZWxkcyxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBtZXJnZWRGaWVsZHMucHVzaChtZXJnZWRGaWVsZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZEZpZWxkcy5wdXNoKGJhc2VGaWVsZClcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIG1lcmdlZEZpZWxkc1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXJnZUJhc2VGaWVsZHNcbiJdLCJuYW1lcyI6WyJtZXJnZUJhc2VGaWVsZHMiLCJmaWVsZHMiLCJiYXNlRmllbGRzIiwibWVyZ2VkRmllbGRzIiwiZm9yRWFjaCIsImJhc2VGaWVsZCIsIm1hdGNoZWRJbmRleCIsImZpZWxkQWZmZWN0c0RhdGEiLCJtYXRjaCIsImZpbmQiLCJmaWVsZCIsImkiLCJuYW1lIiwibWF0Y2hDb3B5Iiwic3BsaWNlIiwibWVyZ2VkRmllbGQiLCJtZXJnZSIsImZpZWxkSGFzU3ViRmllbGRzIiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkE2Q0E7OztlQUFBOzs7a0VBN0NrQjt1QkFJa0M7Ozs7OztBQUVwRCxNQUFNQSxrQkFBa0IsQ0FBQ0MsUUFBaUJDO0lBQ3hDLE1BQU1DLGVBQWU7V0FBS0YsVUFBVSxFQUFFO0tBQUU7SUFFeENDLFdBQVdFLE9BQU8sQ0FBQyxDQUFDQztRQUNsQixJQUFJQyxlQUFlO1FBRW5CLElBQUlDLElBQUFBLHVCQUFnQixFQUFDRixZQUFZO1lBQy9CLE1BQU1HLFFBQVFMLGFBQWFNLElBQUksQ0FBQyxDQUFDQyxPQUFPQztnQkFDdEMsSUFBSUosSUFBQUEsdUJBQWdCLEVBQUNHLFVBQVVBLE1BQU1FLElBQUksS0FBS1AsVUFBVU8sSUFBSSxFQUFFO29CQUM1RE4sZUFBZUs7b0JBQ2YsT0FBTztnQkFDVDtnQkFFQSxPQUFPO1lBQ1Q7WUFFQSxJQUFJSCxPQUFPO2dCQUNULE1BQU1LLFlBQW1CO29CQUFFLEdBQUdMLEtBQUs7Z0JBQUM7Z0JBQ3BDTCxhQUFhVyxNQUFNLENBQUNSLGNBQWM7Z0JBRWxDLE1BQU1TLGNBQWNDLElBQUFBLGtCQUFLLEVBQVFYLFdBQVdRO2dCQUU1QyxJQUFJSSxJQUFBQSx3QkFBaUIsRUFBQ1osY0FBY1ksSUFBQUEsd0JBQWlCLEVBQUNKLFlBQVk7b0JBQzlERSxZQUFtQ2QsTUFBTSxHQUFHRCxnQkFDNUNhLFVBQVVaLE1BQU0sRUFDaEJJLFVBQVVKLE1BQU07Z0JBRXBCO2dCQUVBRSxhQUFhZSxJQUFJLENBQUNIO1lBQ3BCLE9BQU87Z0JBQ0xaLGFBQWFlLElBQUksQ0FBQ2I7WUFDcEI7UUFDRjtJQUNGO0lBRUEsT0FBT0Y7QUFDVDtNQUVBLFdBQWVIIn0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvbWVyZ2VCYXNlRmllbGRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnXG5cbmltcG9ydCB0eXBlIHsgRmllbGQsIEZpZWxkV2l0aFN1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBmaWVsZEhhc1N1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5jb25zdCBtZXJnZUJhc2VGaWVsZHMgPSAoZmllbGRzOiBGaWVsZFtdLCBiYXNlRmllbGRzOiBGaWVsZFtdKTogRmllbGRbXSA9PiB7XG4gIGNvbnN0IG1lcmdlZEZpZWxkcyA9IFsuLi4oZmllbGRzIHx8IFtdKV1cblxuICBiYXNlRmllbGRzLmZvckVhY2goKGJhc2VGaWVsZCkgPT4ge1xuICAgIGxldCBtYXRjaGVkSW5kZXggPSBudWxsXG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShiYXNlRmllbGQpKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IG1lcmdlZEZpZWxkcy5maW5kKChmaWVsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gYmFzZUZpZWxkLm5hbWUpIHtcbiAgICAgICAgICBtYXRjaGVkSW5kZXggPSBpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfSlcblxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoQ29weTogRmllbGQgPSB7IC4uLm1hdGNoIH1cbiAgICAgICAgbWVyZ2VkRmllbGRzLnNwbGljZShtYXRjaGVkSW5kZXgsIDEpXG5cbiAgICAgICAgY29uc3QgbWVyZ2VkRmllbGQgPSBtZXJnZTxGaWVsZD4oYmFzZUZpZWxkLCBtYXRjaENvcHkpXG5cbiAgICAgICAgaWYgKGZpZWxkSGFzU3ViRmllbGRzKGJhc2VGaWVsZCkgJiYgZmllbGRIYXNTdWJGaWVsZHMobWF0Y2hDb3B5KSkge1xuICAgICAgICAgIDsobWVyZ2VkRmllbGQgYXMgRmllbGRXaXRoU3ViRmllbGRzKS5maWVsZHMgPSBtZXJnZUJhc2VGaWVsZHMoXG4gICAgICAgICAgICBtYXRjaENvcHkuZmllbGRzLFxuICAgICAgICAgICAgYmFzZUZpZWxkLmZpZWxkcyxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBtZXJnZWRGaWVsZHMucHVzaChtZXJnZWRGaWVsZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZEZpZWxkcy5wdXNoKGJhc2VGaWVsZClcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIG1lcmdlZEZpZWxkc1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXJnZUJhc2VGaWVsZHNcbiJdLCJuYW1lcyI6WyJtZXJnZUJhc2VGaWVsZHMiLCJmaWVsZHMiLCJiYXNlRmllbGRzIiwibWVyZ2VkRmllbGRzIiwiZm9yRWFjaCIsImJhc2VGaWVsZCIsIm1hdGNoZWRJbmRleCIsImZpZWxkQWZmZWN0c0RhdGEiLCJtYXRjaCIsImZpbmQiLCJmaWVsZCIsImkiLCJuYW1lIiwibWF0Y2hDb3B5Iiwic3BsaWNlIiwibWVyZ2VkRmllbGQiLCJtZXJnZSIsImZpZWxkSGFzU3ViRmllbGRzIiwicHVzaCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBNkNBOzs7ZUFBQTs7O2tFQTdDa0I7dUJBSWtDOzs7Ozs7QUFFcEQsTUFBTUEsa0JBQWtCLENBQUNDLFFBQWlCQztJQUN4QyxNQUFNQyxlQUFlO1dBQUtGLFVBQVUsRUFBRTtLQUFFO0lBRXhDQyxXQUFXRSxPQUFPLENBQUMsQ0FBQ0M7UUFDbEIsSUFBSUMsZUFBZTtRQUVuQixJQUFJQyxJQUFBQSx1QkFBZ0IsRUFBQ0YsWUFBWTtZQUMvQixNQUFNRyxRQUFRTCxhQUFhTSxJQUFJLENBQUMsQ0FBQ0MsT0FBT0M7Z0JBQ3RDLElBQUlKLElBQUFBLHVCQUFnQixFQUFDRyxVQUFVQSxNQUFNRSxJQUFJLEtBQUtQLFVBQVVPLElBQUksRUFBRTtvQkFDNUROLGVBQWVLO29CQUNmLE9BQU87Z0JBQ1Q7Z0JBRUEsT0FBTztZQUNUO1lBRUEsSUFBSUgsT0FBTztnQkFDVCxNQUFNSyxZQUFtQjtvQkFBRSxHQUFHTCxLQUFLO2dCQUFDO2dCQUNwQ0wsYUFBYVcsTUFBTSxDQUFDUixjQUFjO2dCQUVsQyxNQUFNUyxjQUFjQyxJQUFBQSxrQkFBSyxFQUFRWCxXQUFXUTtnQkFFNUMsSUFBSUksSUFBQUEsd0JBQWlCLEVBQUNaLGNBQWNZLElBQUFBLHdCQUFpQixFQUFDSixZQUFZO29CQUM5REUsWUFBbUNkLE1BQU0sR0FBR0QsZ0JBQzVDYSxVQUFVWixNQUFNLEVBQ2hCSSxVQUFVSixNQUFNO2dCQUVwQjtnQkFFQUUsYUFBYWUsSUFBSSxDQUFDSDtZQUNwQixPQUFPO2dCQUNMWixhQUFhZSxJQUFJLENBQUNiO1lBQ3BCO1FBQ0Y7SUFDRjtJQUVBLE9BQU9GO0FBQ1Q7TUFFQSxXQUFlSCJ9
@@ -20,4 +20,4 @@ const _default = [
20
20
  'date'
21
21
  ];
22
22
 
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvc29ydGFibGVGaWVsZFR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFsndGV4dCcsICd0ZXh0YXJlYScsICdjb2RlJywgJ2pzb24nLCAnbnVtYmVyJywgJ2VtYWlsJywgJ3JhZGlvJywgJ3NlbGVjdCcsICdkYXRlJ11cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OytCQUFBOzs7ZUFBQTs7O01BQUEsV0FBZTtJQUFDO0lBQVE7SUFBWTtJQUFRO0lBQVE7SUFBVTtJQUFTO0lBQVM7SUFBVTtDQUFPIn0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvc29ydGFibGVGaWVsZFR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFsndGV4dCcsICd0ZXh0YXJlYScsICdjb2RlJywgJ2pzb24nLCAnbnVtYmVyJywgJ2VtYWlsJywgJ3JhZGlvJywgJ3NlbGVjdCcsICdkYXRlJ11cbiJdLCJuYW1lcyI6W10sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQUFBOzs7ZUFBQTs7O01BQUEsV0FBZTtJQUFDO0lBQVE7SUFBWTtJQUFRO0lBQVE7SUFBVTtJQUFTO0lBQVM7SUFBVTtDQUFPIn0=
@@ -50,6 +50,7 @@ declare const _default: {
50
50
  };
51
51
  editorOptions?: import("monaco-editor").editor.IStandaloneEditorConstructionOptions;
52
52
  };
53
+ jsonSchema?: Record<string, unknown>;
53
54
  type: "json";
54
55
  } & {
55
56
  jsonError?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAQvB,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuCtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAsB1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAqB9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAMtD,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAa/E,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAetD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAO5E,CAAA;AAgCD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAgC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKzD,CAAA;AAqHD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAkB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CA8DtE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAmC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CASxD,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAQvB,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuCtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAsB1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAqB9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAMtD,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CA8D/E,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAetD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAO5E,CAAA;AAgCD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAgC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKzD,CAAA;AAqHD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAkB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CA8DtE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAmC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CASxD,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
@@ -64,6 +64,7 @@ _export(exports, {
64
64
  return upload;
65
65
  }
66
66
  });
67
+ const _ajv = /*#__PURE__*/ _interop_require_default(require("ajv"));
67
68
  const _canUseDOM = /*#__PURE__*/ _interop_require_default(require("../utilities/canUseDOM"));
68
69
  const _getIDType = require("../utilities/getIDType");
69
70
  const _isNumber = require("../utilities/isNumber");
@@ -167,13 +168,53 @@ const code = (value, { required, t })=>{
167
168
  }
168
169
  return true;
169
170
  };
170
- const json = (value, { jsonError, required, t })=>{
171
+ const json = async (value, { jsonError, jsonSchema, required, t })=>{
171
172
  if (required && !value) {
172
173
  return t('validation:required');
173
174
  }
174
175
  if (jsonError !== undefined) {
175
176
  return t('validation:invalidInput');
176
177
  }
178
+ const isNotEmpty = (value)=>{
179
+ if (value === undefined || value === null) {
180
+ return false;
181
+ }
182
+ if (Array.isArray(value) && value.length === 0) {
183
+ return false;
184
+ }
185
+ if (typeof value === 'object' && Object.keys(value).length === 0) {
186
+ return false;
187
+ }
188
+ return true;
189
+ };
190
+ const fetchSchema = ({ uri, schema })=>{
191
+ if (uri && schema) return schema;
192
+ return fetch(uri).then((response)=>{
193
+ if (!response.ok) {
194
+ throw new Error('Network response was not ok');
195
+ }
196
+ return response.json();
197
+ }).then((json)=>{
198
+ const jsonSchemaSanitizations = {
199
+ id: undefined,
200
+ $id: json.id,
201
+ $schema: 'http://json-schema.org/draft-07/schema#'
202
+ };
203
+ return Object.assign(json, jsonSchemaSanitizations);
204
+ });
205
+ };
206
+ if (!_canUseDOM.default && jsonSchema && isNotEmpty(value)) {
207
+ try {
208
+ jsonSchema.schema = await fetchSchema(jsonSchema);
209
+ const { schema } = jsonSchema;
210
+ const ajv = new _ajv.default();
211
+ if (!ajv.validate(schema, value)) {
212
+ return t(ajv.errorsText());
213
+ }
214
+ } catch (error) {
215
+ return t(error.message);
216
+ }
217
+ }
177
218
  return true;
178
219
  };
179
220
  const checkbox = (value, { required, t })=>{
@@ -488,4 +529,4 @@ const _default = {
488
529
  upload
489
530
  };
490
531
 
491
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi9leHBvcnRzL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBSaWNoVGV4dEZpZWxkLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNOdW1iZXInXG5pbXBvcnQgeyBpc1ZhbGlkSUQgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNWYWxpZElEJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgdGV4dDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgVGV4dEZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLFxuICB7IGNvbmZpZywgaGFzTWFueSwgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWF4Um93cywgbWluTGVuZ3RoLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICghcmVxdWlyZWQpIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKGhhc01hbnkgPT09IHRydWUpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxuICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsaWRhdGlvblJlc3VsdCA9PT0gJ3N0cmluZycpIHJldHVybiBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0XG4gIH1cblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG5cbiAgY29uc3Qgc3RyaW5nc1RvVmFsaWRhdGU6IHN0cmluZ1tdID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICBmb3IgKGNvbnN0IHN0cmluZ1ZhbHVlIG9mIHN0cmluZ3NUb1ZhbGlkYXRlKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gc3RyaW5nVmFsdWU/Lmxlbmd0aCB8fCAwXG5cbiAgICBpZiAodHlwZW9mIG1heExlbmd0aCA9PT0gJ251bWJlcicgJiYgbGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpzaG9ydGVyVGhhbk1heCcsIHsgbGFiZWw6IHQoJ3ZhbHVlJyksIG1heExlbmd0aCwgc3RyaW5nVmFsdWUgfSlcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1pbkxlbmd0aCA9PT0gJ251bWJlcicgJiYgbGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWluTGVuZ3RoLCBzdHJpbmdWYWx1ZSB9KVxuICAgIH1cbiAgfVxuXG4gIGlmIChyZXF1aXJlZCkge1xuICAgIGlmICghKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHx8IHZhbHVlPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcGFzc3dvcmQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRGaWVsZD4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsgY29uZmlnLCBtYXhMZW5ndGg6IGZpZWxkTWF4TGVuZ3RoLCBtaW5MZW5ndGgsIHBheWxvYWQsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgbGV0IG1heExlbmd0aDogbnVtYmVyXG5cbiAgaWYgKHR5cGVvZiBjb25maWc/LmRlZmF1bHRNYXhUZXh0TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZW1haWw6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEVtYWlsRmllbGQ+ID0gKHZhbHVlOiBzdHJpbmcsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAoKHZhbHVlICYmICEvXFxTW15cXHNAXSpAXFxTK1xcLlxcUysvLnRlc3QodmFsdWUpKSB8fCAoIXZhbHVlICYmIHJlcXVpcmVkKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVtYWlsQWRkcmVzcycpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdGV4dGFyZWE6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRhcmVhRmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGNvbmZpZywgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGNvbmZpZy5kZWZhdWx0TWF4VGV4dExlbmd0aFxuICBpZiAodHlwZW9mIGZpZWxkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gZmllbGRNYXhMZW5ndGhcbiAgaWYgKHZhbHVlICYmIG1heExlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpzaG9ydGVyVGhhbk1heCcsIHsgbWF4TGVuZ3RoIH0pXG4gIH1cblxuICBpZiAodmFsdWUgJiYgbWluTGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbkxlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nLCB7IG1pbkxlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkICYmICF2YWx1ZSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBjb2RlOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBDb2RlRmllbGQ+ID0gKHZhbHVlOiBzdHJpbmcsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAocmVxdWlyZWQgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBqc29uOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBKU09ORmllbGQgJiB7IGpzb25FcnJvcj86IHN0cmluZyB9PiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgeyBqc29uRXJyb3IsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKHJlcXVpcmVkICYmICF2YWx1ZSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmIChqc29uRXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRJbnB1dCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgY2hlY2tib3g6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIENoZWNrYm94RmllbGQ+ID0gKFxuICB2YWx1ZTogYm9vbGVhbixcbiAgeyByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGlmICgodmFsdWUgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHx8IChyZXF1aXJlZCAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjp0cnVlT3JGYWxzZScpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZGF0ZTogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgRGF0ZUZpZWxkPiA9ICh2YWx1ZSwgeyByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmICh2YWx1ZSAmJiAhaXNOYU4oRGF0ZS5wYXJzZSh2YWx1ZS50b1N0cmluZygpKSkpIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZS1saW5lICovXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmICh2YWx1ZSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOm5vdFZhbGlkRGF0ZScsIHsgdmFsdWUgfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCByaWNoVGV4dDogVmFsaWRhdGU8b2JqZWN0LCB1bmtub3duLCBSaWNoVGV4dEZpZWxkLCBSaWNoVGV4dEZpZWxkPiA9IGFzeW5jIChcbiAgdmFsdWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgZWRpdG9yOiBSaWNoVGV4dEFkYXB0ZXIgPSBvcHRpb25zPy5lZGl0b3JcblxuICByZXR1cm4gYXdhaXQgZWRpdG9yLnZhbGlkYXRlKHZhbHVlLCBvcHRpb25zKVxufVxuXG5jb25zdCB2YWxpZGF0ZUFycmF5TGVuZ3RoOiBhbnkgPSAoXG4gIHZhbHVlLFxuICBvcHRpb25zOiB7XG4gICAgbWF4Um93cz86IG51bWJlclxuICAgIG1pblJvd3M/OiBudW1iZXJcbiAgICByZXF1aXJlZD86IGJvb2xlYW5cbiAgICB0OiAoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB8IHN0cmluZyB9KSA9PiBzdHJpbmdcbiAgfSxcbikgPT4ge1xuICBjb25zdCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0gPSBvcHRpb25zXG5cbiAgY29uc3QgYXJyYXlMZW5ndGggPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmxlbmd0aCA6IDBcblxuICBpZiAoIXJlcXVpcmVkICYmIGFycmF5TGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZVxuXG4gIGlmIChtaW5Sb3dzICYmIGFycmF5TGVuZ3RoIDwgbWluUm93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzQXRMZWFzdCcsIHsgY291bnQ6IG1pblJvd3MsIGxhYmVsOiB0KCdyb3dzJykgfSlcbiAgfVxuXG4gIGlmIChtYXhSb3dzICYmIGFycmF5TGVuZ3RoID4gbWF4Um93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzTm9Nb3JlVGhhbicsIHsgY291bnQ6IG1heFJvd3MsIGxhYmVsOiB0KCdyb3dzJykgfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhYXJyYXlMZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiAxLCBsYWJlbDogdCgncm93JykgfSlcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBudW1iZXI6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIE51bWJlckZpZWxkPiA9IChcbiAgdmFsdWU6IG51bWJlciB8IG51bWJlcltdLFxuICB7IGhhc01hbnksIG1heCwgbWF4Um93cywgbWluLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGlmIChoYXNNYW55ID09PSB0cnVlKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlQXJyYXlMZW5ndGgodmFsdWUsIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSlcbiAgICBpZiAodHlwZW9mIGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvblJlc3VsdFxuICB9XG5cbiAgaWYgKCF2YWx1ZSAmJiAhaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgLy8gaWYgbm8gdmFsdWUgaXMgcHJlc2VudCwgdmFsaWRhdGUgYmFzZWQgb24gcmVxdWlyZWRcbiAgICBpZiAocmVxdWlyZWQpIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICBpZiAoIXJlcXVpcmVkKSByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY29uc3QgbnVtYmVyc1RvVmFsaWRhdGU6IG51bWJlcltdID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICBmb3IgKGNvbnN0IG51bWJlciBvZiBudW1iZXJzVG9WYWxpZGF0ZSkge1xuICAgIGlmICghaXNOdW1iZXIobnVtYmVyKSkgcmV0dXJuIHQoJ3ZhbGlkYXRpb246ZW50ZXJOdW1iZXInKVxuXG4gICAgY29uc3QgbnVtYmVyVmFsdWUgPSBwYXJzZUZsb2F0KG51bWJlciBhcyB1bmtub3duIGFzIHN0cmluZylcblxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyAmJiBudW1iZXJWYWx1ZSA+IG1heCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtYXgsIHZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInICYmIG51bWJlclZhbHVlIDwgbWluKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicsIHsgbGFiZWw6IHQoJ3ZhbHVlJyksIG1pbiwgdmFsdWUgfSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgYXJyYXk6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEFycmF5RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIHJldHVybiB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG59XG5cbmV4cG9ydCBjb25zdCBibG9ja3M6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEJsb2NrRmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIHJldHVybiB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG59XG5cbmNvbnN0IHZhbGlkYXRlRmlsdGVyT3B0aW9uczogVmFsaWRhdGUgPSBhc3luYyAoXG4gIHZhbHVlLFxuICB7IGlkLCBkYXRhLCBmaWx0ZXJPcHRpb25zLCBwYXlsb2FkLCByZWxhdGlvblRvLCByZXEsIHNpYmxpbmdEYXRhLCB0LCB1c2VyIH0sXG4pID0+IHtcbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIGZpbHRlck9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlKSB7XG4gICAgY29uc3Qgb3B0aW9uczoge1xuICAgICAgW2NvbGxlY3Rpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbiAgICB9ID0ge31cblxuICAgIGNvbnN0IGZhbHNlQ29sbGVjdGlvbnM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBjb2xsZWN0aW9ucyA9IHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJyA/IFtyZWxhdGlvblRvXSA6IHJlbGF0aW9uVG9cbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjb2xsZWN0aW9ucy5tYXAoYXN5bmMgKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgb3B0aW9uRmlsdGVyID1cbiAgICAgICAgICAgIHR5cGVvZiBmaWx0ZXJPcHRpb25zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgID8gYXdhaXQgZmlsdGVyT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogZmlsdGVyT3B0aW9uc1xuXG4gICAgICAgICAgaWYgKG9wdGlvbkZpbHRlciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgb3B0aW9uRmlsdGVyID0gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHZhbHVlSURzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW11cblxuICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnZhbHVlKSB7XG4gICAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsLnZhbHVlKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmICh2YWx1ZUlEcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5kV2hlcmUgPSB7XG4gICAgICAgICAgICAgIGFuZDogW3sgaWQ6IHsgaW46IHZhbHVlSURzIH0gfV0sXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25GaWx0ZXIpIGZpbmRXaGVyZS5hbmQucHVzaChvcHRpb25GaWx0ZXIpXG5cbiAgICAgICAgICAgIGlmIChvcHRpb25GaWx0ZXIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIGZhbHNlQ29sbGVjdGlvbnMucHVzaChvcHRpb25GaWx0ZXIpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBheWxvYWQuZmluZCh7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgICAgICBsaW1pdDogMCxcbiAgICAgICAgICAgICAgcGFnaW5hdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgd2hlcmU6IGZpbmRXaGVyZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIG9wdGlvbnNbY29sbGVjdGlvbl0gPSByZXN1bHQuZG9jcy5tYXAoKGRvYykgPT4gZG9jLmlkKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gW11cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHJlcS5wYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICBtc2c6IGBFcnJvciB2YWxpZGF0aW5nIGZpbHRlciBvcHRpb25zIGZvciBjb2xsZWN0aW9uICR7Y29sbGVjdGlvbn1gLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgb3B0aW9uc1tjb2xsZWN0aW9uXSA9IFtdXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSUQ6IG51bWJlciB8IHN0cmluZ1xuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb24gPSByZWxhdGlvblRvXG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIGlmIChmYWxzZUNvbGxlY3Rpb25zLmZpbmQoKHNsdWcpID0+IHJlbGF0aW9uVG8gPT09IHNsdWcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcHRpb25zW2NvbGxlY3Rpb25dLmluZGV4T2YocmVxdWVzdGVkSUQpID09PSAtMVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGludmFsaWRSZWxhdGlvbnNoaXBzLnJlZHVjZSgoZXJyLCBpbnZhbGlkLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9JHtcbiAgICAgICAgICBpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPT09IGkgKyAxID8gJywnIDogJydcbiAgICAgICAgfSBgXG4gICAgICB9LCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb25zJykpIGFzIHN0cmluZ1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdXBsb2FkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBVcGxvYWRGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgb3B0aW9ucykgPT4ge1xuICBpZiAoIXZhbHVlICYmIG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICByZXR1cm4gb3B0aW9ucy50KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBpZEZpZWxkID0gb3B0aW9ucz8uY29uZmlnPy5jb2xsZWN0aW9uc1xuICAgICAgPy5maW5kKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IG9wdGlvbnMucmVsYXRpb25UbylcbiAgICAgID8uZmllbGRzPy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcblxuICAgIGNvbnN0IHR5cGUgPSBnZXRJRFR5cGUoaWRGaWVsZCwgb3B0aW9ucz8ucGF5bG9hZD8uZGI/LmRlZmF1bHRJRFR5cGUpXG5cbiAgICBpZiAoIWlzVmFsaWRJRCh2YWx1ZSwgdHlwZSkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246dmFsaWRVcGxvYWRJRCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IHJlbGF0aW9uc2hpcDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmVsYXRpb25zaGlwRmllbGQ+ID0gYXN5bmMgKFxuICB2YWx1ZTogUmVsYXRpb25zaGlwVmFsdWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBjb25maWcsIG1heFJvd3MsIG1pblJvd3MsIHBheWxvYWQsIHJlbGF0aW9uVG8sIHJlcXVpcmVkLCB0IH0gPSBvcHRpb25zXG5cbiAgaWYgKCghdmFsdWUgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICBpZiAobWluUm93cyAmJiB2YWx1ZS5sZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicsIHsgbGFiZWw6IHQoJ3Jvd3MnKSwgbWluOiBtaW5Sb3dzLCB2YWx1ZTogdmFsdWUubGVuZ3RoIH0pXG4gICAgfVxuXG4gICAgaWYgKG1heFJvd3MgJiYgdmFsdWUubGVuZ3RoID4gbWF4Um93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCdyb3dzJyksIG1heDogbWF4Um93cywgdmFsdWU6IHZhbHVlLmxlbmd0aCB9KVxuICAgIH1cbiAgfVxuXG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uU2x1Zzogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSURcblxuICAgICAgaWYgKHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2xsZWN0aW9uU2x1ZyA9IHJlbGF0aW9uVG9cblxuICAgICAgICAvLyBjdXN0b20gaWRcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgIHJlcXVlc3RlZElEID0gdmFsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsPy5yZWxhdGlvblRvKSB7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcXVlc3RlZElEID09PSBudWxsKSByZXR1cm4gZmFsc2VcblxuICAgICAgY29uc3QgaWRGaWVsZCA9IGNvbmZpZz8uY29sbGVjdGlvbnNcbiAgICAgICAgPy5maW5kKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGNvbGxlY3Rpb25TbHVnKVxuICAgICAgICA/LmZpZWxkcz8uZmluZCgoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpXG5cbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRJRFR5cGUoaWRGaWVsZCwgcGF5bG9hZD8uZGI/LmRlZmF1bHRJRFR5cGUpXG5cbiAgICAgIHJldHVybiAhaXNWYWxpZElEKHJlcXVlc3RlZElELCB0eXBlKVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGBUaGlzIHJlbGF0aW9uc2hpcCBmaWVsZCBoYXMgdGhlIGZvbGxvd2luZyBpbnZhbGlkIHJlbGF0aW9uc2hpcHM6ICR7aW52YWxpZFJlbGF0aW9uc2hpcHNcbiAgICAgICAgLm1hcCgoZXJyLCBpbnZhbGlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX1gXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpfWBcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBTZWxlY3RGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IGhhc01hbnksIG9wdGlvbnMsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKFxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgdmFsdWUuc29tZShcbiAgICAgIChpbnB1dCkgPT5cbiAgICAgICAgIW9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IGlucHV0IHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24/LnZhbHVlID09PSBpbnB1dCksXG4gICAgICAgICksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgIW9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIChoYXNNYW55ICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICh2YWx1ZSBhcyBbXSk/Lmxlbmd0aCA9PT0gMCkpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCByYWRpbzogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmFkaW9GaWVsZD4gPSAodmFsdWUsIHsgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICBjb25zdCB2YWx1ZU1hdGNoZXNPcHRpb24gPSBvcHRpb25zLnNvbWUoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IHZhbHVlIHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24udmFsdWUgPT09IHZhbHVlKSxcbiAgICApXG4gICAgcmV0dXJuIHZhbHVlTWF0Y2hlc09wdGlvbiB8fCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgcmV0dXJuIHJlcXVpcmVkID8gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpIDogdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcG9pbnQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFBvaW50RmllbGQ+ID0gKFxuICB2YWx1ZTogW251bWJlciB8IHN0cmluZywgbnVtYmVyIHwgc3RyaW5nXSA9IFsnJywgJyddLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgbG5nID0gcGFyc2VGbG9hdChTdHJpbmcodmFsdWVbMF0pKVxuICBjb25zdCBsYXQgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVsxXSkpXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICgodmFsdWVbMF0gJiYgdmFsdWVbMV0gJiYgdHlwZW9mIGxuZyAhPT0gJ251bWJlcicgJiYgdHlwZW9mIGxhdCAhPT0gJ251bWJlcicpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obG5nKSB8fFxuICAgICAgTnVtYmVyLmlzTmFOKGxhdCkgfHxcbiAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggIT09IDIpKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc1R3b051bWJlcnMnKVxuICB9XG5cbiAgaWYgKCh2YWx1ZVsxXSAmJiBOdW1iZXIuaXNOYU4obG5nKSkgfHwgKHZhbHVlWzBdICYmIE51bWJlci5pc05hTihsYXQpKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRJbnB1dCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFycmF5LFxuICBibG9ja3MsXG4gIGNoZWNrYm94LFxuICBjb2RlLFxuICBkYXRlLFxuICBlbWFpbCxcbiAganNvbixcbiAgbnVtYmVyLFxuICBwYXNzd29yZCxcbiAgcG9pbnQsXG4gIHJhZGlvLFxuICByZWxhdGlvbnNoaXAsXG4gIHJpY2hUZXh0LFxuICBzZWxlY3QsXG4gIHRleHQsXG4gIHRleHRhcmVhLFxuICB1cGxvYWQsXG59XG4iXSwibmFtZXMiOlsiYXJyYXkiLCJibG9ja3MiLCJjaGVja2JveCIsImNvZGUiLCJkYXRlIiwiZW1haWwiLCJqc29uIiwibnVtYmVyIiwicGFzc3dvcmQiLCJwb2ludCIsInJhZGlvIiwicmVsYXRpb25zaGlwIiwicmljaFRleHQiLCJzZWxlY3QiLCJ0ZXh0IiwidGV4dGFyZWEiLCJ1cGxvYWQiLCJ2YWx1ZSIsImNvbmZpZyIsImhhc01hbnkiLCJtYXhMZW5ndGgiLCJmaWVsZE1heExlbmd0aCIsIm1heFJvd3MiLCJtaW5MZW5ndGgiLCJtaW5Sb3dzIiwicmVxdWlyZWQiLCJ0IiwibGVuZ3RoVmFsaWRhdGlvblJlc3VsdCIsInZhbGlkYXRlQXJyYXlMZW5ndGgiLCJkZWZhdWx0TWF4VGV4dExlbmd0aCIsInN0cmluZ3NUb1ZhbGlkYXRlIiwiQXJyYXkiLCJpc0FycmF5Iiwic3RyaW5nVmFsdWUiLCJsZW5ndGgiLCJsYWJlbCIsInBheWxvYWQiLCJ0ZXN0IiwidW5kZWZpbmVkIiwianNvbkVycm9yIiwiaXNOYU4iLCJEYXRlIiwicGFyc2UiLCJ0b1N0cmluZyIsIm9wdGlvbnMiLCJlZGl0b3IiLCJ2YWxpZGF0ZSIsImFycmF5TGVuZ3RoIiwiY291bnQiLCJtYXgiLCJtaW4iLCJpc051bWJlciIsIm51bWJlcnNUb1ZhbGlkYXRlIiwibnVtYmVyVmFsdWUiLCJwYXJzZUZsb2F0IiwidmFsaWRhdGVGaWx0ZXJPcHRpb25zIiwiaWQiLCJkYXRhIiwiZmlsdGVyT3B0aW9ucyIsInJlbGF0aW9uVG8iLCJyZXEiLCJzaWJsaW5nRGF0YSIsInVzZXIiLCJjYW5Vc2VET00iLCJmYWxzZUNvbGxlY3Rpb25zIiwiY29sbGVjdGlvbnMiLCJ2YWx1ZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiY29sbGVjdGlvbiIsIm9wdGlvbkZpbHRlciIsInZhbHVlSURzIiwiZm9yRWFjaCIsInZhbCIsInB1c2giLCJmaW5kV2hlcmUiLCJhbmQiLCJpbiIsInJlc3VsdCIsImZpbmQiLCJkZXB0aCIsImxpbWl0IiwicGFnaW5hdGlvbiIsIndoZXJlIiwiZG9jcyIsImRvYyIsImVyciIsImxvZ2dlciIsImVycm9yIiwibXNnIiwiaW52YWxpZFJlbGF0aW9uc2hpcHMiLCJmaWx0ZXIiLCJyZXF1ZXN0ZWRJRCIsInNsdWciLCJpbmRleE9mIiwicmVkdWNlIiwiaW52YWxpZCIsImkiLCJKU09OIiwic3RyaW5naWZ5IiwiaWRGaWVsZCIsImZpZWxkcyIsImZpZWxkIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJ0eXBlIiwiZ2V0SURUeXBlIiwiZGIiLCJkZWZhdWx0SURUeXBlIiwiaXNWYWxpZElEIiwiY29sbGVjdGlvblNsdWciLCJqb2luIiwic29tZSIsImlucHV0Iiwib3B0aW9uIiwidmFsdWVNYXRjaGVzT3B0aW9uIiwibG5nIiwiU3RyaW5nIiwibGF0IiwiTnVtYmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQXdQYUEsS0FBSztlQUFMQTs7SUFPQUMsTUFBTTtlQUFOQTs7SUE1R0FDLFFBQVE7ZUFBUkE7O0lBdkJBQyxJQUFJO2VBQUpBOztJQWtDQUMsSUFBSTtlQUFKQTs7SUFzWGIsT0FrQkM7ZUFsQkQ7O0lBdmJhQyxLQUFLO2VBQUxBOztJQXVDQUMsSUFBSTtlQUFKQTs7SUFrRkFDLE1BQU07ZUFBTkE7O0lBakpBQyxRQUFRO2VBQVJBOztJQXdiQUMsS0FBSztlQUFMQTs7SUFYQUMsS0FBSztlQUFMQTs7SUFyR0FDLFlBQVk7ZUFBWkE7O0lBOU5BQyxRQUFRO2VBQVJBOztJQThSQUMsTUFBTTtlQUFOQTs7SUFqYkFDLElBQUk7ZUFBSkE7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
532
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFqdiBmcm9tICdhanYnXG5pbXBvcnQgdHlwZSB7IFJpY2hUZXh0QWRhcHRlciB9IGZyb20gJy4uL2V4cG9ydHMvdHlwZXMnXG5pbXBvcnQgdHlwZSB7XG4gIEFycmF5RmllbGQsXG4gIEJsb2NrRmllbGQsXG4gIENoZWNrYm94RmllbGQsXG4gIENvZGVGaWVsZCxcbiAgRGF0ZUZpZWxkLFxuICBFbWFpbEZpZWxkLFxuICBKU09ORmllbGQsXG4gIE51bWJlckZpZWxkLFxuICBQb2ludEZpZWxkLFxuICBSYWRpb0ZpZWxkLFxuICBSZWxhdGlvbnNoaXBGaWVsZCxcbiAgUmVsYXRpb25zaGlwVmFsdWUsXG4gIFJpY2hUZXh0RmllbGQsXG4gIFNlbGVjdEZpZWxkLFxuICBUZXh0RmllbGQsXG4gIFRleHRhcmVhRmllbGQsXG4gIFVwbG9hZEZpZWxkLFxuICBWYWxpZGF0ZSxcbn0gZnJvbSAnLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCBjYW5Vc2VET00gZnJvbSAnLi4vdXRpbGl0aWVzL2NhblVzZURPTSdcbmltcG9ydCB7IGdldElEVHlwZSB9IGZyb20gJy4uL3V0aWxpdGllcy9nZXRJRFR5cGUnXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCB7IGlzVmFsaWRJRCB9IGZyb20gJy4uL3V0aWxpdGllcy9pc1ZhbGlkSUQnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAnLi9jb25maWcvdHlwZXMnXG5cbmV4cG9ydCBjb25zdCB0ZXh0OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sXG4gIHsgY29uZmlnLCBoYXNNYW55LCBtYXhMZW5ndGg6IGZpZWxkTWF4TGVuZ3RoLCBtYXhSb3dzLCBtaW5MZW5ndGgsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgbGV0IG1heExlbmd0aDogbnVtYmVyXG5cbiAgaWYgKCFyZXF1aXJlZCkge1xuICAgIGlmICghdmFsdWUpIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG4gICAgaWYgKHR5cGVvZiBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0ID09PSAnc3RyaW5nJykgcmV0dXJuIGxlbmd0aFZhbGlkYXRpb25SZXN1bHRcbiAgfVxuXG4gIGlmICh0eXBlb2YgY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGNvbmZpZy5kZWZhdWx0TWF4VGV4dExlbmd0aFxuICBpZiAodHlwZW9mIGZpZWxkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gZmllbGRNYXhMZW5ndGhcblxuICBjb25zdCBzdHJpbmdzVG9WYWxpZGF0ZTogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gIGZvciAoY29uc3Qgc3RyaW5nVmFsdWUgb2Ygc3RyaW5nc1RvVmFsaWRhdGUpIHtcbiAgICBjb25zdCBsZW5ndGggPSBzdHJpbmdWYWx1ZT8ubGVuZ3RoIHx8IDBcblxuICAgIGlmICh0eXBlb2YgbWF4TGVuZ3RoID09PSAnbnVtYmVyJyAmJiBsZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWF4TGVuZ3RoLCBzdHJpbmdWYWx1ZSB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWluTGVuZ3RoID09PSAnbnVtYmVyJyAmJiBsZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtaW5MZW5ndGgsIHN0cmluZ1ZhbHVlIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkKSB7XG4gICAgaWYgKCEodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkgfHwgdmFsdWU/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBwYXNzd29yZDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgVGV4dEZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgeyBjb25maWcsIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG5cbiAgaWYgKHZhbHVlICYmIG1heExlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpzaG9ydGVyVGhhbk1heCcsIHsgbWF4TGVuZ3RoIH0pXG4gIH1cblxuICBpZiAodmFsdWUgJiYgbWluTGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbkxlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nLCB7IG1pbkxlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkICYmICF2YWx1ZSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBlbWFpbDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgRW1haWxGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgeyByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmICgodmFsdWUgJiYgIS9cXFNbXlxcc0BdKkBcXFMrXFwuXFxTKy8udGVzdCh2YWx1ZSkpIHx8ICghdmFsdWUgJiYgcmVxdWlyZWQpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246ZW1haWxBZGRyZXNzJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB0ZXh0YXJlYTogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgVGV4dGFyZWFGaWVsZD4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsgY29uZmlnLCBtYXhMZW5ndGg6IGZpZWxkTWF4TGVuZ3RoLCBtaW5MZW5ndGgsIHBheWxvYWQsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgbGV0IG1heExlbmd0aDogbnVtYmVyXG5cbiAgaWYgKHR5cGVvZiBjb25maWc/LmRlZmF1bHRNYXhUZXh0TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNvZGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIENvZGVGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgeyByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGpzb246IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEpTT05GaWVsZCAmIHsganNvbkVycm9yPzogc3RyaW5nIH0+ID0gYXN5bmMgKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGpzb25FcnJvciwganNvblNjaGVtYSwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKGpzb25FcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIGNvbnN0IGlzTm90RW1wdHkgPSAodmFsdWUpID0+IHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGNvbnN0IGZldGNoU2NoZW1hID0gKHsgdXJpLCBzY2hlbWEgfSkgPT4ge1xuICAgIGlmICh1cmkgJiYgc2NoZW1hKSByZXR1cm4gc2NoZW1hXG4gICAgcmV0dXJuIGZldGNoKHVyaSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIHJlc3BvbnNlIHdhcyBub3Qgb2snKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKClcbiAgICAgIH0pXG4gICAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgICBjb25zdCBqc29uU2NoZW1hU2FuaXRpemF0aW9ucyA9IHtcbiAgICAgICAgICBpZDogdW5kZWZpbmVkLFxuICAgICAgICAgICRpZDoganNvbi5pZCxcbiAgICAgICAgICAkc2NoZW1hOiAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjJyxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihqc29uLCBqc29uU2NoZW1hU2FuaXRpemF0aW9ucylcbiAgICAgIH0pXG4gIH1cblxuICBpZiAoIWNhblVzZURPTSAmJiBqc29uU2NoZW1hICYmIGlzTm90RW1wdHkodmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGpzb25TY2hlbWEuc2NoZW1hID0gYXdhaXQgZmV0Y2hTY2hlbWEoanNvblNjaGVtYSlcbiAgICAgIGNvbnN0IHsgc2NoZW1hIH0gPSBqc29uU2NoZW1hXG4gICAgICBjb25zdCBhanYgPSBuZXcgQWp2KClcblxuICAgICAgaWYgKCFhanYudmFsaWRhdGUoc2NoZW1hLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHQoYWp2LmVycm9yc1RleHQoKSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHQoZXJyb3IubWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgY2hlY2tib3g6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIENoZWNrYm94RmllbGQ+ID0gKFxuICB2YWx1ZTogYm9vbGVhbixcbiAgeyByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGlmICgodmFsdWUgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHx8IChyZXF1aXJlZCAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjp0cnVlT3JGYWxzZScpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZGF0ZTogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgRGF0ZUZpZWxkPiA9ICh2YWx1ZSwgeyByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmICh2YWx1ZSAmJiAhaXNOYU4oRGF0ZS5wYXJzZSh2YWx1ZS50b1N0cmluZygpKSkpIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZS1saW5lICovXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmICh2YWx1ZSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOm5vdFZhbGlkRGF0ZScsIHsgdmFsdWUgfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCByaWNoVGV4dDogVmFsaWRhdGU8b2JqZWN0LCB1bmtub3duLCBSaWNoVGV4dEZpZWxkLCBSaWNoVGV4dEZpZWxkPiA9IGFzeW5jIChcbiAgdmFsdWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgZWRpdG9yOiBSaWNoVGV4dEFkYXB0ZXIgPSBvcHRpb25zPy5lZGl0b3JcblxuICByZXR1cm4gYXdhaXQgZWRpdG9yLnZhbGlkYXRlKHZhbHVlLCBvcHRpb25zKVxufVxuXG5jb25zdCB2YWxpZGF0ZUFycmF5TGVuZ3RoOiBhbnkgPSAoXG4gIHZhbHVlLFxuICBvcHRpb25zOiB7XG4gICAgbWF4Um93cz86IG51bWJlclxuICAgIG1pblJvd3M/OiBudW1iZXJcbiAgICByZXF1aXJlZD86IGJvb2xlYW5cbiAgICB0OiAoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB8IHN0cmluZyB9KSA9PiBzdHJpbmdcbiAgfSxcbikgPT4ge1xuICBjb25zdCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0gPSBvcHRpb25zXG5cbiAgY29uc3QgYXJyYXlMZW5ndGggPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmxlbmd0aCA6IDBcblxuICBpZiAoIXJlcXVpcmVkICYmIGFycmF5TGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZVxuXG4gIGlmIChtaW5Sb3dzICYmIGFycmF5TGVuZ3RoIDwgbWluUm93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzQXRMZWFzdCcsIHsgY291bnQ6IG1pblJvd3MsIGxhYmVsOiB0KCdyb3dzJykgfSlcbiAgfVxuXG4gIGlmIChtYXhSb3dzICYmIGFycmF5TGVuZ3RoID4gbWF4Um93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzTm9Nb3JlVGhhbicsIHsgY291bnQ6IG1heFJvd3MsIGxhYmVsOiB0KCdyb3dzJykgfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhYXJyYXlMZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiAxLCBsYWJlbDogdCgncm93JykgfSlcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBudW1iZXI6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIE51bWJlckZpZWxkPiA9IChcbiAgdmFsdWU6IG51bWJlciB8IG51bWJlcltdLFxuICB7IGhhc01hbnksIG1heCwgbWF4Um93cywgbWluLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGlmIChoYXNNYW55ID09PSB0cnVlKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlQXJyYXlMZW5ndGgodmFsdWUsIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSlcbiAgICBpZiAodHlwZW9mIGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvblJlc3VsdFxuICB9XG5cbiAgaWYgKCF2YWx1ZSAmJiAhaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgLy8gaWYgbm8gdmFsdWUgaXMgcHJlc2VudCwgdmFsaWRhdGUgYmFzZWQgb24gcmVxdWlyZWRcbiAgICBpZiAocmVxdWlyZWQpIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICBpZiAoIXJlcXVpcmVkKSByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY29uc3QgbnVtYmVyc1RvVmFsaWRhdGU6IG51bWJlcltdID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICBmb3IgKGNvbnN0IG51bWJlciBvZiBudW1iZXJzVG9WYWxpZGF0ZSkge1xuICAgIGlmICghaXNOdW1iZXIobnVtYmVyKSkgcmV0dXJuIHQoJ3ZhbGlkYXRpb246ZW50ZXJOdW1iZXInKVxuXG4gICAgY29uc3QgbnVtYmVyVmFsdWUgPSBwYXJzZUZsb2F0KG51bWJlciBhcyB1bmtub3duIGFzIHN0cmluZylcblxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyAmJiBudW1iZXJWYWx1ZSA+IG1heCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtYXgsIHZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInICYmIG51bWJlclZhbHVlIDwgbWluKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicsIHsgbGFiZWw6IHQoJ3ZhbHVlJyksIG1pbiwgdmFsdWUgfSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgYXJyYXk6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEFycmF5RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIHJldHVybiB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG59XG5cbmV4cG9ydCBjb25zdCBibG9ja3M6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEJsb2NrRmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIHJldHVybiB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG59XG5cbmNvbnN0IHZhbGlkYXRlRmlsdGVyT3B0aW9uczogVmFsaWRhdGUgPSBhc3luYyAoXG4gIHZhbHVlLFxuICB7IGlkLCBkYXRhLCBmaWx0ZXJPcHRpb25zLCBwYXlsb2FkLCByZWxhdGlvblRvLCByZXEsIHNpYmxpbmdEYXRhLCB0LCB1c2VyIH0sXG4pID0+IHtcbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIGZpbHRlck9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlKSB7XG4gICAgY29uc3Qgb3B0aW9uczoge1xuICAgICAgW2NvbGxlY3Rpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbiAgICB9ID0ge31cblxuICAgIGNvbnN0IGZhbHNlQ29sbGVjdGlvbnM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBjb2xsZWN0aW9ucyA9IHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJyA/IFtyZWxhdGlvblRvXSA6IHJlbGF0aW9uVG9cbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjb2xsZWN0aW9ucy5tYXAoYXN5bmMgKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgb3B0aW9uRmlsdGVyID1cbiAgICAgICAgICAgIHR5cGVvZiBmaWx0ZXJPcHRpb25zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgID8gYXdhaXQgZmlsdGVyT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogZmlsdGVyT3B0aW9uc1xuXG4gICAgICAgICAgaWYgKG9wdGlvbkZpbHRlciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgb3B0aW9uRmlsdGVyID0gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHZhbHVlSURzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW11cblxuICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnZhbHVlKSB7XG4gICAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsLnZhbHVlKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmICh2YWx1ZUlEcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5kV2hlcmUgPSB7XG4gICAgICAgICAgICAgIGFuZDogW3sgaWQ6IHsgaW46IHZhbHVlSURzIH0gfV0sXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25GaWx0ZXIpIGZpbmRXaGVyZS5hbmQucHVzaChvcHRpb25GaWx0ZXIpXG5cbiAgICAgICAgICAgIGlmIChvcHRpb25GaWx0ZXIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIGZhbHNlQ29sbGVjdGlvbnMucHVzaChvcHRpb25GaWx0ZXIpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBheWxvYWQuZmluZCh7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgICAgICBsaW1pdDogMCxcbiAgICAgICAgICAgICAgcGFnaW5hdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgd2hlcmU6IGZpbmRXaGVyZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIG9wdGlvbnNbY29sbGVjdGlvbl0gPSByZXN1bHQuZG9jcy5tYXAoKGRvYykgPT4gZG9jLmlkKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gW11cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHJlcS5wYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICBtc2c6IGBFcnJvciB2YWxpZGF0aW5nIGZpbHRlciBvcHRpb25zIGZvciBjb2xsZWN0aW9uICR7Y29sbGVjdGlvbn1gLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgb3B0aW9uc1tjb2xsZWN0aW9uXSA9IFtdXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSUQ6IG51bWJlciB8IHN0cmluZ1xuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb24gPSByZWxhdGlvblRvXG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIGlmIChmYWxzZUNvbGxlY3Rpb25zLmZpbmQoKHNsdWcpID0+IHJlbGF0aW9uVG8gPT09IHNsdWcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcHRpb25zW2NvbGxlY3Rpb25dLmluZGV4T2YocmVxdWVzdGVkSUQpID09PSAtMVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGludmFsaWRSZWxhdGlvbnNoaXBzLnJlZHVjZSgoZXJyLCBpbnZhbGlkLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9JHtcbiAgICAgICAgICBpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPT09IGkgKyAxID8gJywnIDogJydcbiAgICAgICAgfSBgXG4gICAgICB9LCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb25zJykpIGFzIHN0cmluZ1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdXBsb2FkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBVcGxvYWRGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgb3B0aW9ucykgPT4ge1xuICBpZiAoIXZhbHVlICYmIG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICByZXR1cm4gb3B0aW9ucy50KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBpZEZpZWxkID0gb3B0aW9ucz8uY29uZmlnPy5jb2xsZWN0aW9uc1xuICAgICAgPy5maW5kKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IG9wdGlvbnMucmVsYXRpb25UbylcbiAgICAgID8uZmllbGRzPy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcblxuICAgIGNvbnN0IHR5cGUgPSBnZXRJRFR5cGUoaWRGaWVsZCwgb3B0aW9ucz8ucGF5bG9hZD8uZGI/LmRlZmF1bHRJRFR5cGUpXG5cbiAgICBpZiAoIWlzVmFsaWRJRCh2YWx1ZSwgdHlwZSkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246dmFsaWRVcGxvYWRJRCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IHJlbGF0aW9uc2hpcDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmVsYXRpb25zaGlwRmllbGQ+ID0gYXN5bmMgKFxuICB2YWx1ZTogUmVsYXRpb25zaGlwVmFsdWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBjb25maWcsIG1heFJvd3MsIG1pblJvd3MsIHBheWxvYWQsIHJlbGF0aW9uVG8sIHJlcXVpcmVkLCB0IH0gPSBvcHRpb25zXG5cbiAgaWYgKCghdmFsdWUgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICBpZiAobWluUm93cyAmJiB2YWx1ZS5sZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicsIHsgbGFiZWw6IHQoJ3Jvd3MnKSwgbWluOiBtaW5Sb3dzLCB2YWx1ZTogdmFsdWUubGVuZ3RoIH0pXG4gICAgfVxuXG4gICAgaWYgKG1heFJvd3MgJiYgdmFsdWUubGVuZ3RoID4gbWF4Um93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCdyb3dzJyksIG1heDogbWF4Um93cywgdmFsdWU6IHZhbHVlLmxlbmd0aCB9KVxuICAgIH1cbiAgfVxuXG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uU2x1Zzogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSURcblxuICAgICAgaWYgKHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2xsZWN0aW9uU2x1ZyA9IHJlbGF0aW9uVG9cblxuICAgICAgICAvLyBjdXN0b20gaWRcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgIHJlcXVlc3RlZElEID0gdmFsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsPy5yZWxhdGlvblRvKSB7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcXVlc3RlZElEID09PSBudWxsKSByZXR1cm4gZmFsc2VcblxuICAgICAgY29uc3QgaWRGaWVsZCA9IGNvbmZpZz8uY29sbGVjdGlvbnNcbiAgICAgICAgPy5maW5kKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGNvbGxlY3Rpb25TbHVnKVxuICAgICAgICA/LmZpZWxkcz8uZmluZCgoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpXG5cbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRJRFR5cGUoaWRGaWVsZCwgcGF5bG9hZD8uZGI/LmRlZmF1bHRJRFR5cGUpXG5cbiAgICAgIHJldHVybiAhaXNWYWxpZElEKHJlcXVlc3RlZElELCB0eXBlKVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGBUaGlzIHJlbGF0aW9uc2hpcCBmaWVsZCBoYXMgdGhlIGZvbGxvd2luZyBpbnZhbGlkIHJlbGF0aW9uc2hpcHM6ICR7aW52YWxpZFJlbGF0aW9uc2hpcHNcbiAgICAgICAgLm1hcCgoZXJyLCBpbnZhbGlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX1gXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpfWBcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBTZWxlY3RGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IGhhc01hbnksIG9wdGlvbnMsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKFxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgdmFsdWUuc29tZShcbiAgICAgIChpbnB1dCkgPT5cbiAgICAgICAgIW9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IGlucHV0IHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24/LnZhbHVlID09PSBpbnB1dCksXG4gICAgICAgICksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgIW9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIChoYXNNYW55ICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICh2YWx1ZSBhcyBbXSk/Lmxlbmd0aCA9PT0gMCkpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCByYWRpbzogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmFkaW9GaWVsZD4gPSAodmFsdWUsIHsgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICBjb25zdCB2YWx1ZU1hdGNoZXNPcHRpb24gPSBvcHRpb25zLnNvbWUoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IHZhbHVlIHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24udmFsdWUgPT09IHZhbHVlKSxcbiAgICApXG4gICAgcmV0dXJuIHZhbHVlTWF0Y2hlc09wdGlvbiB8fCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgcmV0dXJuIHJlcXVpcmVkID8gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpIDogdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcG9pbnQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFBvaW50RmllbGQ+ID0gKFxuICB2YWx1ZTogW251bWJlciB8IHN0cmluZywgbnVtYmVyIHwgc3RyaW5nXSA9IFsnJywgJyddLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgbG5nID0gcGFyc2VGbG9hdChTdHJpbmcodmFsdWVbMF0pKVxuICBjb25zdCBsYXQgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVsxXSkpXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICgodmFsdWVbMF0gJiYgdmFsdWVbMV0gJiYgdHlwZW9mIGxuZyAhPT0gJ251bWJlcicgJiYgdHlwZW9mIGxhdCAhPT0gJ251bWJlcicpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obG5nKSB8fFxuICAgICAgTnVtYmVyLmlzTmFOKGxhdCkgfHxcbiAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggIT09IDIpKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc1R3b051bWJlcnMnKVxuICB9XG5cbiAgaWYgKCh2YWx1ZVsxXSAmJiBOdW1iZXIuaXNOYU4obG5nKSkgfHwgKHZhbHVlWzBdICYmIE51bWJlci5pc05hTihsYXQpKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRJbnB1dCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFycmF5LFxuICBibG9ja3MsXG4gIGNoZWNrYm94LFxuICBjb2RlLFxuICBkYXRlLFxuICBlbWFpbCxcbiAganNvbixcbiAgbnVtYmVyLFxuICBwYXNzd29yZCxcbiAgcG9pbnQsXG4gIHJhZGlvLFxuICByZWxhdGlvbnNoaXAsXG4gIHJpY2hUZXh0LFxuICBzZWxlY3QsXG4gIHRleHQsXG4gIHRleHRhcmVhLFxuICB1cGxvYWQsXG59XG4iXSwibmFtZXMiOlsiYXJyYXkiLCJibG9ja3MiLCJjaGVja2JveCIsImNvZGUiLCJkYXRlIiwiZW1haWwiLCJqc29uIiwibnVtYmVyIiwicGFzc3dvcmQiLCJwb2ludCIsInJhZGlvIiwicmVsYXRpb25zaGlwIiwicmljaFRleHQiLCJzZWxlY3QiLCJ0ZXh0IiwidGV4dGFyZWEiLCJ1cGxvYWQiLCJ2YWx1ZSIsImNvbmZpZyIsImhhc01hbnkiLCJtYXhMZW5ndGgiLCJmaWVsZE1heExlbmd0aCIsIm1heFJvd3MiLCJtaW5MZW5ndGgiLCJtaW5Sb3dzIiwicmVxdWlyZWQiLCJ0IiwibGVuZ3RoVmFsaWRhdGlvblJlc3VsdCIsInZhbGlkYXRlQXJyYXlMZW5ndGgiLCJkZWZhdWx0TWF4VGV4dExlbmd0aCIsInN0cmluZ3NUb1ZhbGlkYXRlIiwiQXJyYXkiLCJpc0FycmF5Iiwic3RyaW5nVmFsdWUiLCJsZW5ndGgiLCJsYWJlbCIsInBheWxvYWQiLCJ0ZXN0IiwidW5kZWZpbmVkIiwianNvbkVycm9yIiwianNvblNjaGVtYSIsImlzTm90RW1wdHkiLCJPYmplY3QiLCJrZXlzIiwiZmV0Y2hTY2hlbWEiLCJ1cmkiLCJzY2hlbWEiLCJmZXRjaCIsInRoZW4iLCJyZXNwb25zZSIsIm9rIiwiRXJyb3IiLCJqc29uU2NoZW1hU2FuaXRpemF0aW9ucyIsImlkIiwiJGlkIiwiJHNjaGVtYSIsImFzc2lnbiIsImNhblVzZURPTSIsImFqdiIsIkFqdiIsInZhbGlkYXRlIiwiZXJyb3JzVGV4dCIsImVycm9yIiwibWVzc2FnZSIsImlzTmFOIiwiRGF0ZSIsInBhcnNlIiwidG9TdHJpbmciLCJvcHRpb25zIiwiZWRpdG9yIiwiYXJyYXlMZW5ndGgiLCJjb3VudCIsIm1heCIsIm1pbiIsImlzTnVtYmVyIiwibnVtYmVyc1RvVmFsaWRhdGUiLCJudW1iZXJWYWx1ZSIsInBhcnNlRmxvYXQiLCJ2YWxpZGF0ZUZpbHRlck9wdGlvbnMiLCJkYXRhIiwiZmlsdGVyT3B0aW9ucyIsInJlbGF0aW9uVG8iLCJyZXEiLCJzaWJsaW5nRGF0YSIsInVzZXIiLCJmYWxzZUNvbGxlY3Rpb25zIiwiY29sbGVjdGlvbnMiLCJ2YWx1ZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiY29sbGVjdGlvbiIsIm9wdGlvbkZpbHRlciIsInZhbHVlSURzIiwiZm9yRWFjaCIsInZhbCIsInB1c2giLCJmaW5kV2hlcmUiLCJhbmQiLCJpbiIsInJlc3VsdCIsImZpbmQiLCJkZXB0aCIsImxpbWl0IiwicGFnaW5hdGlvbiIsIndoZXJlIiwiZG9jcyIsImRvYyIsImVyciIsImxvZ2dlciIsIm1zZyIsImludmFsaWRSZWxhdGlvbnNoaXBzIiwiZmlsdGVyIiwicmVxdWVzdGVkSUQiLCJzbHVnIiwiaW5kZXhPZiIsInJlZHVjZSIsImludmFsaWQiLCJpIiwiSlNPTiIsInN0cmluZ2lmeSIsImlkRmllbGQiLCJmaWVsZHMiLCJmaWVsZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwidHlwZSIsImdldElEVHlwZSIsImRiIiwiZGVmYXVsdElEVHlwZSIsImlzVmFsaWRJRCIsImNvbGxlY3Rpb25TbHVnIiwiam9pbiIsInNvbWUiLCJpbnB1dCIsIm9wdGlvbiIsInZhbHVlTWF0Y2hlc09wdGlvbiIsImxuZyIsIlN0cmluZyIsImxhdCIsIk51bWJlciJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQTBTYUEsS0FBSztlQUFMQTs7SUFPQUMsTUFBTTtlQUFOQTs7SUE1R0FDLFFBQVE7ZUFBUkE7O0lBeEVBQyxJQUFJO2VBQUpBOztJQW1GQUMsSUFBSTtlQUFKQTs7SUFzWGIsT0FrQkM7ZUFsQkQ7O0lBeGVhQyxLQUFLO2VBQUxBOztJQXVDQUMsSUFBSTtlQUFKQTs7SUFtSUFDLE1BQU07ZUFBTkE7O0lBbE1BQyxRQUFRO2VBQVJBOztJQXllQUMsS0FBSztlQUFMQTs7SUFYQUMsS0FBSztlQUFMQTs7SUFyR0FDLFlBQVk7ZUFBWkE7O0lBOU5BQyxRQUFRO2VBQVJBOztJQThSQUMsTUFBTTtlQUFOQTs7SUFsZUFDLElBQUk7ZUFBSkE7O0lBeUVBQyxRQUFRO2VBQVJBOztJQXFVQUMsTUFBTTtlQUFOQTs7OzREQTNhRztrRUF1Qk07MkJBQ0k7MEJBQ0Q7MkJBQ0M7dUJBQ087Ozs7OztBQUUxQixNQUFNRixPQUE4QyxDQUN6REcsT0FDQSxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsV0FBV0MsY0FBYyxFQUFFQyxPQUFPLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLENBQUMsRUFBRTtJQUV4RixJQUFJTjtJQUVKLElBQUksQ0FBQ0ssVUFBVTtRQUNiLElBQUksQ0FBQ1IsT0FBTyxPQUFPO0lBQ3JCO0lBRUEsSUFBSUUsWUFBWSxNQUFNO1FBQ3BCLE1BQU1RLHlCQUF5QkMsb0JBQW9CWCxPQUFPO1lBQUVLO1lBQVNFO1lBQVNDO1lBQVVDO1FBQUU7UUFDMUYsSUFBSSxPQUFPQywyQkFBMkIsVUFBVSxPQUFPQTtJQUN6RDtJQUVBLElBQUksT0FBT1QsUUFBUVcseUJBQXlCLFVBQVVULFlBQVlGLE9BQU9XLG9CQUFvQjtJQUM3RixJQUFJLE9BQU9SLG1CQUFtQixVQUFVRCxZQUFZQztJQUVwRCxNQUFNUyxvQkFBOEJDLE1BQU1DLE9BQU8sQ0FBQ2YsU0FBU0EsUUFBUTtRQUFDQTtLQUFNO0lBRTFFLEtBQUssTUFBTWdCLGVBQWVILGtCQUFtQjtRQUMzQyxNQUFNSSxTQUFTRCxhQUFhQyxVQUFVO1FBRXRDLElBQUksT0FBT2QsY0FBYyxZQUFZYyxTQUFTZCxXQUFXO1lBQ3ZELE9BQU9NLEVBQUUsNkJBQTZCO2dCQUFFUyxPQUFPVCxFQUFFO2dCQUFVTjtnQkFBV2E7WUFBWTtRQUNwRjtRQUVBLElBQUksT0FBT1YsY0FBYyxZQUFZVyxTQUFTWCxXQUFXO1lBQ3ZELE9BQU9HLEVBQUUsNEJBQTRCO2dCQUFFUyxPQUFPVCxFQUFFO2dCQUFVSDtnQkFBV1U7WUFBWTtRQUNuRjtJQUNGO0lBRUEsSUFBSVIsVUFBVTtRQUNaLElBQUksQ0FBRSxDQUFBLE9BQU9SLFVBQVUsWUFBWWMsTUFBTUMsT0FBTyxDQUFDZixNQUFLLEtBQU1BLE9BQU9pQixXQUFXLEdBQUc7WUFDL0UsT0FBT1IsRUFBRTtRQUNYO0lBQ0Y7SUFFQSxPQUFPO0FBQ1Q7QUFFTyxNQUFNbEIsV0FBa0QsQ0FDN0RTLE9BQ0EsRUFBRUMsTUFBTSxFQUFFRSxXQUFXQyxjQUFjLEVBQUVFLFNBQVMsRUFBRWEsT0FBTyxFQUFFWCxRQUFRLEVBQUVDLENBQUMsRUFBRTtJQUV0RSxJQUFJTjtJQUVKLElBQUksT0FBT0YsUUFBUVcseUJBQXlCLFVBQVVULFlBQVlGLE9BQU9XLG9CQUFvQjtJQUM3RixJQUFJLE9BQU9SLG1CQUFtQixVQUFVRCxZQUFZQztJQUVwRCxJQUFJSixTQUFTRyxhQUFhSCxNQUFNaUIsTUFBTSxHQUFHZCxXQUFXO1FBQ2xELE9BQU9NLEVBQUUsNkJBQTZCO1lBQUVOO1FBQVU7SUFDcEQ7SUFFQSxJQUFJSCxTQUFTTSxhQUFhTixNQUFNaUIsTUFBTSxHQUFHWCxXQUFXO1FBQ2xELE9BQU9HLEVBQUUsNEJBQTRCO1lBQUVIO1FBQVU7SUFDbkQ7SUFFQSxJQUFJRSxZQUFZLENBQUNSLE9BQU87UUFDdEIsT0FBT1MsRUFBRTtJQUNYO0lBRUEsT0FBTztBQUNUO0FBRU8sTUFBTXJCLFFBQWdELENBQUNZLE9BQWUsRUFBRVEsUUFBUSxFQUFFQyxDQUFDLEVBQUU7SUFDMUYsSUFBSSxBQUFDVCxTQUFTLENBQUMscUJBQXFCb0IsSUFBSSxDQUFDcEIsVUFBWSxDQUFDQSxTQUFTUSxVQUFXO1FBQ3hFLE9BQU9DLEVBQUU7SUFDWDtJQUVBLE9BQU87QUFDVDtBQUVPLE1BQU1YLFdBQXNELENBQ2pFRSxPQUNBLEVBQUVDLE1BQU0sRUFBRUUsV0FBV0MsY0FBYyxFQUFFRSxTQUFTLEVBQUVhLE9BQU8sRUFBRVgsUUFBUSxFQUFFQyxDQUFDLEVBQUU7SUFFdEUsSUFBSU47SUFFSixJQUFJLE9BQU9GLFFBQVFXLHlCQUF5QixVQUFVVCxZQUFZRixPQUFPVyxvQkFBb0I7SUFDN0YsSUFBSSxPQUFPUixtQkFBbUIsVUFBVUQsWUFBWUM7SUFDcEQsSUFBSUosU0FBU0csYUFBYUgsTUFBTWlCLE1BQU0sR0FBR2QsV0FBVztRQUNsRCxPQUFPTSxFQUFFLDZCQUE2QjtZQUFFTjtRQUFVO0lBQ3BEO0lBRUEsSUFBSUgsU0FBU00sYUFBYU4sTUFBTWlCLE1BQU0sR0FBR1gsV0FBVztRQUNsRCxPQUFPRyxFQUFFLDRCQUE0QjtZQUFFSDtRQUFVO0lBQ25EO0lBRUEsSUFBSUUsWUFBWSxDQUFDUixPQUFPO1FBQ3RCLE9BQU9TLEVBQUU7SUFDWDtJQUVBLE9BQU87QUFDVDtBQUVPLE1BQU12QixPQUE4QyxDQUFDYyxPQUFlLEVBQUVRLFFBQVEsRUFBRUMsQ0FBQyxFQUFFO0lBQ3hGLElBQUlELFlBQVlSLFVBQVVxQixXQUFXO1FBQ25DLE9BQU9aLEVBQUU7SUFDWDtJQUVBLE9BQU87QUFDVDtBQUVPLE1BQU1wQixPQUF1RSxPQUNsRlcsT0FDQSxFQUFFc0IsU0FBUyxFQUFFQyxVQUFVLEVBQUVmLFFBQVEsRUFBRUMsQ0FBQyxFQUFFO0lBRXRDLElBQUlELFlBQVksQ0FBQ1IsT0FBTztRQUN0QixPQUFPUyxFQUFFO0lBQ1g7SUFFQSxJQUFJYSxjQUFjRCxXQUFXO1FBQzNCLE9BQU9aLEVBQUU7SUFDWDtJQUVBLE1BQU1lLGFBQWEsQ0FBQ3hCO1FBQ2xCLElBQUlBLFVBQVVxQixhQUFhckIsVUFBVSxNQUFNO1lBQ3pDLE9BQU87UUFDVDtRQUVBLElBQUljLE1BQU1DLE9BQU8sQ0FBQ2YsVUFBVUEsTUFBTWlCLE1BQU0sS0FBSyxHQUFHO1lBQzlDLE9BQU87UUFDVDtRQUVBLElBQUksT0FBT2pCLFVBQVUsWUFBWXlCLE9BQU9DLElBQUksQ0FBQzFCLE9BQU9pQixNQUFNLEtBQUssR0FBRztZQUNoRSxPQUFPO1FBQ1Q7UUFFQSxPQUFPO0lBQ1Q7SUFFQSxNQUFNVSxjQUFjLENBQUMsRUFBRUMsR0FBRyxFQUFFQyxNQUFNLEVBQUU7UUFDbEMsSUFBSUQsT0FBT0MsUUFBUSxPQUFPQTtRQUMxQixPQUFPQyxNQUFNRixLQUNWRyxJQUFJLENBQUMsQ0FBQ0M7WUFDTCxJQUFJLENBQUNBLFNBQVNDLEVBQUUsRUFBRTtnQkFDaEIsTUFBTSxJQUFJQyxNQUFNO1lBQ2xCO1lBQ0EsT0FBT0YsU0FBUzNDLElBQUk7UUFDdEIsR0FDQzBDLElBQUksQ0FBQyxDQUFDMUM7WUFDTCxNQUFNOEMsMEJBQTBCO2dCQUM5QkMsSUFBSWY7Z0JBQ0pnQixLQUFLaEQsS0FBSytDLEVBQUU7Z0JBQ1pFLFNBQVM7WUFDWDtZQUNBLE9BQU9iLE9BQU9jLE1BQU0sQ0FBQ2xELE1BQU04QztRQUM3QjtJQUNKO0lBRUEsSUFBSSxDQUFDSyxrQkFBUyxJQUFJakIsY0FBY0MsV0FBV3hCLFFBQVE7UUFDakQsSUFBSTtZQUNGdUIsV0FBV00sTUFBTSxHQUFHLE1BQU1GLFlBQVlKO1lBQ3RDLE1BQU0sRUFBRU0sTUFBTSxFQUFFLEdBQUdOO1lBQ25CLE1BQU1rQixNQUFNLElBQUlDLFlBQUc7WUFFbkIsSUFBSSxDQUFDRCxJQUFJRSxRQUFRLENBQUNkLFFBQVE3QixRQUFRO2dCQUNoQyxPQUFPUyxFQUFFZ0MsSUFBSUcsVUFBVTtZQUN6QjtRQUNGLEVBQUUsT0FBT0MsT0FBTztZQUNkLE9BQU9wQyxFQUFFb0MsTUFBTUMsT0FBTztRQUN4QjtJQUNGO0lBRUEsT0FBTztBQUNUO0FBRU8sTUFBTTdELFdBQXNELENBQ2pFZSxPQUNBLEVBQUVRLFFBQVEsRUFBRUMsQ0FBQyxFQUFFO0lBRWYsSUFBSSxBQUFDVCxTQUFTLE9BQU9BLFVBQVUsYUFBZVEsWUFBWSxPQUFPUixVQUFVLFdBQVk7UUFDckYsT0FBT1MsRUFBRTtJQUNYO0lBRUEsT0FBTztBQUNUO0FBRU8sTUFBTXRCLE9BQThDLENBQUNhLE9BQU8sRUFBRVEsUUFBUSxFQUFFQyxDQUFDLEVBQUU7SUFDaEYsSUFBSVQsU0FBUyxDQUFDK0MsTUFBTUMsS0FBS0MsS0FBSyxDQUFDakQsTUFBTWtELFFBQVEsTUFBTTtRQUNqRCx1QkFBdUIsR0FDdkIsT0FBTztJQUNUO0lBRUEsSUFBSWxELE9BQU87UUFDVCxPQUFPUyxFQUFFLDJCQUEyQjtZQUFFVDtRQUFNO0lBQzlDO0lBRUEsSUFBSVEsVUFBVTtRQUNaLE9BQU9DLEVBQUU7SUFDWDtJQUVBLE9BQU87QUFDVDtBQUVPLE1BQU1kLFdBQW9FLE9BQy9FSyxPQUNBbUQ7SUFFQSxNQUFNQyxTQUEwQkQsU0FBU0M7SUFFekMsT0FBTyxNQUFNQSxPQUFPVCxRQUFRLENBQUMzQyxPQUFPbUQ7QUFDdEM7QUFFQSxNQUFNeEMsc0JBQTJCLENBQy9CWCxPQUNBbUQ7SUFPQSxNQUFNLEVBQUU5QyxPQUFPLEVBQUVFLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxDQUFDLEVBQUUsR0FBRzBDO0lBRTFDLE1BQU1FLGNBQWN2QyxNQUFNQyxPQUFPLENBQUNmLFNBQVNBLE1BQU1pQixNQUFNLEdBQUc7SUFFMUQsSUFBSSxDQUFDVCxZQUFZNkMsZ0JBQWdCLEdBQUcsT0FBTztJQUUzQyxJQUFJOUMsV0FBVzhDLGNBQWM5QyxTQUFTO1FBQ3BDLE9BQU9FLEVBQUUsOEJBQThCO1lBQUU2QyxPQUFPL0M7WUFBU1csT0FBT1QsRUFBRTtRQUFRO0lBQzVFO0lBRUEsSUFBSUosV0FBV2dELGNBQWNoRCxTQUFTO1FBQ3BDLE9BQU9JLEVBQUUsaUNBQWlDO1lBQUU2QyxPQUFPakQ7WUFBU2EsT0FBT1QsRUFBRTtRQUFRO0lBQy9FO0lBRUEsSUFBSUQsWUFBWSxDQUFDNkMsYUFBYTtRQUM1QixPQUFPNUMsRUFBRSw4QkFBOEI7WUFBRTZDLE9BQU87WUFBR3BDLE9BQU9ULEVBQUU7UUFBTztJQUNyRTtJQUVBLE9BQU87QUFDVDtBQUVPLE1BQU1uQixTQUFrRCxDQUM3RFUsT0FDQSxFQUFFRSxPQUFPLEVBQUVxRCxHQUFHLEVBQUVsRCxPQUFPLEVBQUVtRCxHQUFHLEVBQUVqRCxPQUFPLEVBQUVDLFFBQVEsRUFBRUMsQ0FBQyxFQUFFO0lBRXBELElBQUlQLFlBQVksTUFBTTtRQUNwQixNQUFNUSx5QkFBeUJDLG9CQUFvQlgsT0FBTztZQUFFSztZQUFTRTtZQUFTQztZQUFVQztRQUFFO1FBQzFGLElBQUksT0FBT0MsMkJBQTJCLFVBQVUsT0FBT0E7SUFDekQ7SUFFQSxJQUFJLENBQUNWLFNBQVMsQ0FBQ3lELElBQUFBLGtCQUFRLEVBQUN6RCxRQUFRO1FBQzlCLHFEQUFxRDtRQUNyRCxJQUFJUSxVQUFVLE9BQU9DLEVBQUU7UUFDdkIsSUFBSSxDQUFDRCxVQUFVLE9BQU87SUFDeEI7SUFFQSxNQUFNa0Qsb0JBQThCNUMsTUFBTUMsT0FBTyxDQUFDZixTQUFTQSxRQUFRO1FBQUNBO0tBQU07SUFFMUUsS0FBSyxNQUFNVixVQUFVb0Usa0JBQW1CO1FBQ3RDLElBQUksQ0FBQ0QsSUFBQUEsa0JBQVEsRUFBQ25FLFNBQVMsT0FBT21CLEVBQUU7UUFFaEMsTUFBTWtELGNBQWNDLFdBQVd0RTtRQUUvQixJQUFJLE9BQU9pRSxRQUFRLFlBQVlJLGNBQWNKLEtBQUs7WUFDaEQsT0FBTzlDLEVBQUUsNkJBQTZCO2dCQUFFUyxPQUFPVCxFQUFFO2dCQUFVOEM7Z0JBQUt2RDtZQUFNO1FBQ3hFO1FBRUEsSUFBSSxPQUFPd0QsUUFBUSxZQUFZRyxjQUFjSCxLQUFLO1lBQ2hELE9BQU8vQyxFQUFFLDBCQUEwQjtnQkFBRVMsT0FBT1QsRUFBRTtnQkFBVStDO2dCQUFLeEQ7WUFBTTtRQUNyRTtJQUNGO0lBRUEsT0FBTztBQUNUO0FBRU8sTUFBTWpCLFFBQWdELENBQzNEaUIsT0FDQSxFQUFFSyxPQUFPLEVBQUVFLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxDQUFDLEVBQUU7SUFFakMsT0FBT0Usb0JBQW9CWCxPQUFPO1FBQUVLO1FBQVNFO1FBQVNDO1FBQVVDO0lBQUU7QUFDcEU7QUFFTyxNQUFNekIsU0FBaUQsQ0FDNURnQixPQUNBLEVBQUVLLE9BQU8sRUFBRUUsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLENBQUMsRUFBRTtJQUVqQyxPQUFPRSxvQkFBb0JYLE9BQU87UUFBRUs7UUFBU0U7UUFBU0M7UUFBVUM7SUFBRTtBQUNwRTtBQUVBLE1BQU1vRCx3QkFBa0MsT0FDdEM3RCxPQUNBLEVBQUVvQyxFQUFFLEVBQUUwQixJQUFJLEVBQUVDLGFBQWEsRUFBRTVDLE9BQU8sRUFBRTZDLFVBQVUsRUFBRUMsR0FBRyxFQUFFQyxXQUFXLEVBQUV6RCxDQUFDLEVBQUUwRCxJQUFJLEVBQUU7SUFFM0UsSUFBSSxDQUFDM0Isa0JBQVMsSUFBSSxPQUFPdUIsa0JBQWtCLGVBQWUvRCxPQUFPO1FBQy9ELE1BQU1tRCxVQUVGLENBQUM7UUFFTCxNQUFNaUIsbUJBQTZCLEVBQUU7UUFDckMsTUFBTUMsY0FBYyxPQUFPTCxlQUFlLFdBQVc7WUFBQ0E7U0FBVyxHQUFHQTtRQUNwRSxNQUFNTSxTQUFTeEQsTUFBTUMsT0FBTyxDQUFDZixTQUFTQSxRQUFRO1lBQUNBO1NBQU07UUFFckQsTUFBTXVFLFFBQVFDLEdBQUcsQ0FDZkgsWUFBWUksR0FBRyxDQUFDLE9BQU9DO1lBQ3JCLElBQUk7Z0JBQ0YsSUFBSUMsZUFDRixPQUFPWixrQkFBa0IsYUFDckIsTUFBTUEsY0FBYztvQkFDbEIzQjtvQkFDQTBCO29CQUNBRSxZQUFZVTtvQkFDWlI7b0JBQ0FDO2dCQUNGLEtBQ0FKO2dCQUVOLElBQUlZLGlCQUFpQixNQUFNO29CQUN6QkEsZUFBZTtnQkFDakI7Z0JBRUEsTUFBTUMsV0FBZ0MsRUFBRTtnQkFFeENOLE9BQU9PLE9BQU8sQ0FBQyxDQUFDQztvQkFDZCxJQUFJLE9BQU9BLFFBQVEsWUFBWUEsS0FBSzlFLE9BQU87d0JBQ3pDNEUsU0FBU0csSUFBSSxDQUFDRCxJQUFJOUUsS0FBSztvQkFDekI7b0JBRUEsSUFBSSxPQUFPOEUsUUFBUSxZQUFZLE9BQU9BLFFBQVEsVUFBVTt3QkFDdERGLFNBQVNHLElBQUksQ0FBQ0Q7b0JBQ2hCO2dCQUNGO2dCQUVBLElBQUlGLFNBQVMzRCxNQUFNLEdBQUcsR0FBRztvQkFDdkIsTUFBTStELFlBQVk7d0JBQ2hCQyxLQUFLOzRCQUFDO2dDQUFFN0MsSUFBSTtvQ0FBRThDLElBQUlOO2dDQUFTOzRCQUFFO3lCQUFFO29CQUNqQztvQkFFQSxJQUFJRCxjQUFjSyxVQUFVQyxHQUFHLENBQUNGLElBQUksQ0FBQ0o7b0JBRXJDLElBQUlBLGlCQUFpQixPQUFPO3dCQUMxQlAsaUJBQWlCVyxJQUFJLENBQUNKO29CQUN4QjtvQkFFQSxNQUFNUSxTQUFTLE1BQU1oRSxRQUFRaUUsSUFBSSxDQUFDO3dCQUNoQ1Y7d0JBQ0FXLE9BQU87d0JBQ1BDLE9BQU87d0JBQ1BDLFlBQVk7d0JBQ1p0Qjt3QkFDQXVCLE9BQU9SO29CQUNUO29CQUVBN0IsT0FBTyxDQUFDdUIsV0FBVyxHQUFHUyxPQUFPTSxJQUFJLENBQUNoQixHQUFHLENBQUMsQ0FBQ2lCLE1BQVFBLElBQUl0RCxFQUFFO2dCQUN2RCxPQUFPO29CQUNMZSxPQUFPLENBQUN1QixXQUFXLEdBQUcsRUFBRTtnQkFDMUI7WUFDRixFQUFFLE9BQU9pQixLQUFLO2dCQUNaMUIsSUFBSTlDLE9BQU8sQ0FBQ3lFLE1BQU0sQ0FBQy9DLEtBQUssQ0FBQztvQkFDdkI4QztvQkFDQUUsS0FBSyxDQUFDLCtDQUErQyxFQUFFbkIsV0FBVyxDQUFDO2dCQUNyRTtnQkFDQXZCLE9BQU8sQ0FBQ3VCLFdBQVcsR0FBRyxFQUFFO1lBQzFCO1FBQ0Y7UUFHRixNQUFNb0IsdUJBQXVCeEIsT0FBT3lCLE1BQU0sQ0FBQyxDQUFDakI7WUFDMUMsSUFBSUo7WUFDSixJQUFJc0I7WUFFSixJQUFJLE9BQU9oQyxlQUFlLFVBQVU7Z0JBQ2xDVSxhQUFhVjtnQkFFYixJQUFJLE9BQU9jLFFBQVEsWUFBWSxPQUFPQSxRQUFRLFVBQVU7b0JBQ3REa0IsY0FBY2xCO2dCQUNoQjtZQUNGO1lBRUEsSUFBSWhFLE1BQU1DLE9BQU8sQ0FBQ2lELGVBQWUsT0FBT2MsUUFBUSxZQUFZQSxLQUFLZCxZQUFZO2dCQUMzRVUsYUFBYUksSUFBSWQsVUFBVTtnQkFDM0JnQyxjQUFjbEIsSUFBSTlFLEtBQUs7WUFDekI7WUFFQSxJQUFJb0UsaUJBQWlCZ0IsSUFBSSxDQUFDLENBQUNhLE9BQVNqQyxlQUFlaUMsT0FBTztnQkFDeEQsT0FBTztZQUNUO1lBRUEsT0FBTzlDLE9BQU8sQ0FBQ3VCLFdBQVcsQ0FBQ3dCLE9BQU8sQ0FBQ0YsaUJBQWlCLENBQUM7UUFDdkQ7UUFFQSxJQUFJRixxQkFBcUI3RSxNQUFNLEdBQUcsR0FBRztZQUNuQyxPQUFPNkUscUJBQXFCSyxNQUFNLENBQUMsQ0FBQ1IsS0FBS1MsU0FBU0M7Z0JBQ2hELE9BQU8sQ0FBQyxFQUFFVixJQUFJLENBQUMsRUFBRVcsS0FBS0MsU0FBUyxDQUFDSCxTQUFTLEVBQ3ZDTixxQkFBcUI3RSxNQUFNLEtBQUtvRixJQUFJLElBQUksTUFBTSxHQUMvQyxDQUFDLENBQUM7WUFDTCxHQUFHNUYsRUFBRTtRQUNQO1FBRUEsT0FBTztJQUNUO0lBRUEsT0FBTztBQUNUO0FBRU8sTUFBTVYsU0FBa0QsQ0FBQ0MsT0FBZW1EO0lBQzdFLElBQUksQ0FBQ25ELFNBQVNtRCxRQUFRM0MsUUFBUSxFQUFFO1FBQzlCLE9BQU8yQyxRQUFRMUMsQ0FBQyxDQUFDO0lBQ25CO0lBRUEsSUFBSSxDQUFDK0Isa0JBQVMsSUFBSSxPQUFPeEMsVUFBVSxlQUFlQSxVQUFVLE1BQU07UUFDaEUsTUFBTXdHLFVBQVVyRCxTQUFTbEQsUUFBUW9FLGFBQzdCZSxLQUFLLENBQUNWLGFBQWVBLFdBQVd1QixJQUFJLEtBQUs5QyxRQUFRYSxVQUFVLEdBQzNEeUMsUUFBUXJCLEtBQUssQ0FBQ3NCLFFBQVVDLElBQUFBLHVCQUFnQixFQUFDRCxVQUFVQSxNQUFNRSxJQUFJLEtBQUs7UUFFdEUsTUFBTUMsT0FBT0MsSUFBQUEsb0JBQVMsRUFBQ04sU0FBU3JELFNBQVNoQyxTQUFTNEYsSUFBSUM7UUFFdEQsSUFBSSxDQUFDQyxJQUFBQSxvQkFBUyxFQUFDakgsT0FBTzZHLE9BQU87WUFDM0IsT0FBTzFELFFBQVExQyxDQUFDLENBQUM7UUFDbkI7SUFDRjtJQUVBLE9BQU9vRCxzQkFBc0I3RCxPQUFPbUQ7QUFDdEM7QUFFTyxNQUFNekQsZUFBOEQsT0FDekVNLE9BQ0FtRDtJQUVBLE1BQU0sRUFBRWxELE1BQU0sRUFBRUksT0FBTyxFQUFFRSxPQUFPLEVBQUVZLE9BQU8sRUFBRTZDLFVBQVUsRUFBRXhELFFBQVEsRUFBRUMsQ0FBQyxFQUFFLEdBQUcwQztJQUV2RSxJQUFJLEFBQUMsQ0FBQSxDQUFDbkQsU0FBVWMsTUFBTUMsT0FBTyxDQUFDZixVQUFVQSxNQUFNaUIsTUFBTSxLQUFLLENBQUMsS0FBTVQsVUFBVTtRQUN4RSxPQUFPQyxFQUFFO0lBQ1g7SUFFQSxJQUFJSyxNQUFNQyxPQUFPLENBQUNmLFVBQVVBLE1BQU1pQixNQUFNLEdBQUcsR0FBRztRQUM1QyxJQUFJVixXQUFXUCxNQUFNaUIsTUFBTSxHQUFHVixTQUFTO1lBQ3JDLE9BQU9FLEVBQUUsMEJBQTBCO2dCQUFFUyxPQUFPVCxFQUFFO2dCQUFTK0MsS0FBS2pEO2dCQUFTUCxPQUFPQSxNQUFNaUIsTUFBTTtZQUFDO1FBQzNGO1FBRUEsSUFBSVosV0FBV0wsTUFBTWlCLE1BQU0sR0FBR1osU0FBUztZQUNyQyxPQUFPSSxFQUFFLDZCQUE2QjtnQkFBRVMsT0FBT1QsRUFBRTtnQkFBUzhDLEtBQUtsRDtnQkFBU0wsT0FBT0EsTUFBTWlCLE1BQU07WUFBQztRQUM5RjtJQUNGO0lBRUEsSUFBSSxDQUFDdUIsa0JBQVMsSUFBSSxPQUFPeEMsVUFBVSxlQUFlQSxVQUFVLE1BQU07UUFDaEUsTUFBTXNFLFNBQVN4RCxNQUFNQyxPQUFPLENBQUNmLFNBQVNBLFFBQVE7WUFBQ0E7U0FBTTtRQUVyRCxNQUFNOEYsdUJBQXVCeEIsT0FBT3lCLE1BQU0sQ0FBQyxDQUFDakI7WUFDMUMsSUFBSW9DO1lBQ0osSUFBSWxCO1lBRUosSUFBSSxPQUFPaEMsZUFBZSxVQUFVO2dCQUNsQ2tELGlCQUFpQmxEO2dCQUVqQixZQUFZO2dCQUNaLElBQUljLEtBQUs7b0JBQ1BrQixjQUFjbEI7Z0JBQ2hCO1lBQ0Y7WUFFQSxJQUFJaEUsTUFBTUMsT0FBTyxDQUFDaUQsZUFBZSxPQUFPYyxRQUFRLFlBQVlBLEtBQUtkLFlBQVk7Z0JBQzNFa0QsaUJBQWlCcEMsSUFBSWQsVUFBVTtnQkFDL0JnQyxjQUFjbEIsSUFBSTlFLEtBQUs7WUFDekI7WUFFQSxJQUFJZ0csZ0JBQWdCLE1BQU0sT0FBTztZQUVqQyxNQUFNUSxVQUFVdkcsUUFBUW9FLGFBQ3BCZSxLQUFLLENBQUNWLGFBQWVBLFdBQVd1QixJQUFJLEtBQUtpQixpQkFDekNULFFBQVFyQixLQUFLLENBQUNzQixRQUFVQyxJQUFBQSx1QkFBZ0IsRUFBQ0QsVUFBVUEsTUFBTUUsSUFBSSxLQUFLO1lBRXRFLE1BQU1DLE9BQU9DLElBQUFBLG9CQUFTLEVBQUNOLFNBQVNyRixTQUFTNEYsSUFBSUM7WUFFN0MsT0FBTyxDQUFDQyxJQUFBQSxvQkFBUyxFQUFDakIsYUFBYWE7UUFDakM7UUFFQSxJQUFJZixxQkFBcUI3RSxNQUFNLEdBQUcsR0FBRztZQUNuQyxPQUFPLENBQUMsaUVBQWlFLEVBQUU2RSxxQkFDeEVyQixHQUFHLENBQUMsQ0FBQ2tCLEtBQUtTO2dCQUNULE9BQU8sQ0FBQyxFQUFFVCxJQUFJLENBQUMsRUFBRVcsS0FBS0MsU0FBUyxDQUFDSCxTQUFTLENBQUM7WUFDNUMsR0FDQ2UsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNqQjtJQUNGO0lBRUEsT0FBT3RELHNCQUFzQjdELE9BQU9tRDtBQUN0QztBQUVPLE1BQU12RCxTQUFrRCxDQUM3REksT0FDQSxFQUFFRSxPQUFPLEVBQUVpRCxPQUFPLEVBQUUzQyxRQUFRLEVBQUVDLENBQUMsRUFBRTtJQUVqQyxJQUNFSyxNQUFNQyxPQUFPLENBQUNmLFVBQ2RBLE1BQU1vSCxJQUFJLENBQ1IsQ0FBQ0MsUUFDQyxDQUFDbEUsUUFBUWlFLElBQUksQ0FDWCxDQUFDRSxTQUFXQSxXQUFXRCxTQUFVLE9BQU9DLFdBQVcsWUFBWUEsUUFBUXRILFVBQVVxSCxTQUd2RjtRQUNBLE9BQU81RyxFQUFFO0lBQ1g7SUFFQSxJQUNFLE9BQU9ULFVBQVUsWUFDakIsQ0FBQ21ELFFBQVFpRSxJQUFJLENBQ1gsQ0FBQ0UsU0FBV0EsV0FBV3RILFNBQVUsT0FBT3NILFdBQVcsWUFBWUEsT0FBT3RILEtBQUssS0FBS0EsUUFFbEY7UUFDQSxPQUFPUyxFQUFFO0lBQ1g7SUFFQSxJQUNFRCxZQUNDLENBQUEsT0FBT1IsVUFBVSxlQUNoQkEsVUFBVSxRQUNURSxXQUFXWSxNQUFNQyxPQUFPLENBQUNmLFVBQVUsQUFBQ0EsT0FBY2lCLFdBQVcsQ0FBQyxHQUNqRTtRQUNBLE9BQU9SLEVBQUU7SUFDWDtJQUVBLE9BQU87QUFDVDtBQUVPLE1BQU1oQixRQUFnRCxDQUFDTyxPQUFPLEVBQUVtRCxPQUFPLEVBQUUzQyxRQUFRLEVBQUVDLENBQUMsRUFBRTtJQUMzRixJQUFJVCxPQUFPO1FBQ1QsTUFBTXVILHFCQUFxQnBFLFFBQVFpRSxJQUFJLENBQ3JDLENBQUNFLFNBQVdBLFdBQVd0SCxTQUFVLE9BQU9zSCxXQUFXLFlBQVlBLE9BQU90SCxLQUFLLEtBQUtBO1FBRWxGLE9BQU91SCxzQkFBc0I5RyxFQUFFO0lBQ2pDO0lBRUEsT0FBT0QsV0FBV0MsRUFBRSx5QkFBeUI7QUFDL0M7QUFFTyxNQUFNakIsUUFBZ0QsQ0FDM0RRLFFBQTRDO0lBQUM7SUFBSTtDQUFHLEVBQ3BELEVBQUVRLFFBQVEsRUFBRUMsQ0FBQyxFQUFFO0lBRWYsTUFBTStHLE1BQU01RCxXQUFXNkQsT0FBT3pILEtBQUssQ0FBQyxFQUFFO0lBQ3RDLE1BQU0wSCxNQUFNOUQsV0FBVzZELE9BQU96SCxLQUFLLENBQUMsRUFBRTtJQUN0QyxJQUNFUSxZQUNDLENBQUEsQUFBQ1IsS0FBSyxDQUFDLEVBQUUsSUFBSUEsS0FBSyxDQUFDLEVBQUUsSUFBSSxPQUFPd0gsUUFBUSxZQUFZLE9BQU9FLFFBQVEsWUFDbEVDLE9BQU81RSxLQUFLLENBQUN5RSxRQUNiRyxPQUFPNUUsS0FBSyxDQUFDMkUsUUFDWjVHLE1BQU1DLE9BQU8sQ0FBQ2YsVUFBVUEsTUFBTWlCLE1BQU0sS0FBSyxDQUFDLEdBQzdDO1FBQ0EsT0FBT1IsRUFBRTtJQUNYO0lBRUEsSUFBSSxBQUFDVCxLQUFLLENBQUMsRUFBRSxJQUFJMkgsT0FBTzVFLEtBQUssQ0FBQ3lFLFFBQVV4SCxLQUFLLENBQUMsRUFBRSxJQUFJMkgsT0FBTzVFLEtBQUssQ0FBQzJFLE1BQU87UUFDdEUsT0FBT2pILEVBQUU7SUFDWDtJQUVBLE9BQU87QUFDVDtNQUVBLFdBQWU7SUFDYjFCO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0FBQ0YifQ==