@payloadcms/richtext-lexical 3.0.0-alpha.18 → 3.0.0-alpha.20

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 (283) hide show
  1. package/components.js +6 -33
  2. package/dist/cell/index.js +29 -80
  3. package/dist/exports/components.js +6 -33
  4. package/dist/field/Field.js +15 -66
  5. package/dist/field/features/align/feature.client.js +21 -31
  6. package/dist/field/features/align/feature.server.js +4 -14
  7. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +4 -14
  8. package/dist/field/features/blockquote/feature.client.js +20 -30
  9. package/dist/field/features/blockquote/feature.server.js +11 -21
  10. package/dist/field/features/blockquote/markdownTransformer.js +9 -19
  11. package/dist/field/features/blocks/component/BlockContent.js +34 -85
  12. package/dist/field/features/blocks/component/FormSavePlugin.js +7 -17
  13. package/dist/field/features/blocks/component/index.js +25 -76
  14. package/dist/field/features/blocks/drawer/index.js +25 -84
  15. package/dist/field/features/blocks/feature.client.js +15 -25
  16. package/dist/field/features/blocks/feature.server.js +16 -26
  17. package/dist/field/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
  18. package/dist/field/features/blocks/nodes/BlocksNode.js +11 -78
  19. package/dist/field/features/blocks/plugin/commands.js +3 -13
  20. package/dist/field/features/blocks/plugin/index.js +20 -71
  21. package/dist/field/features/blocks/populationPromise.js +6 -16
  22. package/dist/field/features/blocks/validate.js +4 -14
  23. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +2 -12
  24. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +4 -14
  25. package/dist/field/features/converters/html/converter/converters/linebreak.js +2 -12
  26. package/dist/field/features/converters/html/converter/converters/paragraph.js +4 -14
  27. package/dist/field/features/converters/html/converter/converters/text.js +10 -20
  28. package/dist/field/features/converters/html/converter/defaultConverters.js +8 -18
  29. package/dist/field/features/converters/html/converter/index.js +3 -21
  30. package/dist/field/features/converters/html/converter/types.js +2 -5
  31. package/dist/field/features/converters/html/feature.server.js +2 -12
  32. package/dist/field/features/converters/html/field/index.js +11 -25
  33. package/dist/field/features/createClientComponent.js +6 -14
  34. package/dist/field/features/createFeaturePropComponent.js +5 -15
  35. package/dist/field/features/debug/testrecorder/feature.client.js +5 -15
  36. package/dist/field/features/debug/testrecorder/feature.server.js +4 -14
  37. package/dist/field/features/debug/testrecorder/plugin/index.js +41 -99
  38. package/dist/field/features/debug/treeview/feature.client.js +5 -15
  39. package/dist/field/features/debug/treeview/feature.server.js +4 -14
  40. package/dist/field/features/debug/treeview/plugin/index.js +8 -59
  41. package/dist/field/features/format/bold/feature.client.js +14 -24
  42. package/dist/field/features/format/bold/feature.server.js +8 -18
  43. package/dist/field/features/format/bold/markdownTransformers.js +5 -29
  44. package/dist/field/features/format/common/floatingSelectToolbarSection.js +2 -12
  45. package/dist/field/features/format/inlinecode/feature.client.js +12 -22
  46. package/dist/field/features/format/inlinecode/feature.server.js +6 -16
  47. package/dist/field/features/format/inlinecode/markdownTransformers.js +2 -12
  48. package/dist/field/features/format/italic/feature.client.js +13 -23
  49. package/dist/field/features/format/italic/feature.server.js +7 -17
  50. package/dist/field/features/format/italic/markdownTransformers.js +3 -21
  51. package/dist/field/features/format/strikethrough/feature.client.js +12 -22
  52. package/dist/field/features/format/strikethrough/feature.server.js +6 -16
  53. package/dist/field/features/format/strikethrough/markdownTransformers.js +2 -12
  54. package/dist/field/features/format/subscript/feature.client.js +10 -20
  55. package/dist/field/features/format/subscript/feature.server.js +4 -14
  56. package/dist/field/features/format/superscript/feature.client.js +10 -20
  57. package/dist/field/features/format/superscript/feature.server.js +4 -14
  58. package/dist/field/features/format/underline/feature.client.js +10 -20
  59. package/dist/field/features/format/underline/feature.server.js +4 -14
  60. package/dist/field/features/heading/feature.client.js +28 -37
  61. package/dist/field/features/heading/feature.server.js +12 -22
  62. package/dist/field/features/heading/markdownTransformer.js +8 -18
  63. package/dist/field/features/indent/feature.client.js +13 -23
  64. package/dist/field/features/indent/feature.server.js +4 -14
  65. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +2 -12
  66. package/dist/field/features/link/drawer/baseFields.js +6 -16
  67. package/dist/field/features/link/drawer/index.js +24 -74
  68. package/dist/field/features/link/drawer/types.js +2 -5
  69. package/dist/field/features/link/feature.client.js +29 -39
  70. package/dist/field/features/link/feature.server.js +22 -32
  71. package/dist/field/features/link/nodes/AutoLinkNode.js +10 -29
  72. package/dist/field/features/link/nodes/LinkNode.js +18 -45
  73. package/dist/field/features/link/nodes/types.js +2 -5
  74. package/dist/field/features/link/plugins/autoLink/index.js +33 -51
  75. package/dist/field/features/link/plugins/clickableLink/index.js +5 -20
  76. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +3 -13
  77. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +64 -114
  78. package/dist/field/features/link/plugins/floatingLinkEditor/index.js +7 -58
  79. package/dist/field/features/link/plugins/floatingLinkEditor/types.js +5 -5
  80. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +6 -14
  81. package/dist/field/features/link/plugins/link/index.js +21 -31
  82. package/dist/field/features/link/populationPromise.js +6 -16
  83. package/dist/field/features/lists/checklist/feature.client.js +21 -31
  84. package/dist/field/features/lists/checklist/feature.server.js +12 -22
  85. package/dist/field/features/lists/checklist/markdownTransformers.js +8 -18
  86. package/dist/field/features/lists/checklist/plugin/index.js +5 -20
  87. package/dist/field/features/lists/common/markdown.js +10 -28
  88. package/dist/field/features/lists/htmlConverter.js +9 -27
  89. package/dist/field/features/lists/orderedlist/feature.client.js +19 -29
  90. package/dist/field/features/lists/orderedlist/feature.server.js +12 -22
  91. package/dist/field/features/lists/orderedlist/markdownTransformer.js +8 -18
  92. package/dist/field/features/lists/plugin/index.js +5 -20
  93. package/dist/field/features/lists/unorderedlist/feature.client.js +19 -29
  94. package/dist/field/features/lists/unorderedlist/feature.server.js +12 -22
  95. package/dist/field/features/lists/unorderedlist/markdownTransformer.js +8 -18
  96. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js +4 -14
  97. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +4 -14
  98. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js +6 -16
  99. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js +4 -14
  100. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +4 -14
  101. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js +6 -16
  102. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js +4 -14
  103. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +4 -14
  104. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js +6 -16
  105. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js +4 -14
  106. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +4 -14
  107. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js +6 -16
  108. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js +4 -14
  109. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +4 -14
  110. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js +6 -16
  111. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js +4 -14
  112. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +4 -14
  113. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js +6 -16
  114. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js +4 -14
  115. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +2 -12
  116. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js +6 -16
  117. package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +16 -26
  118. package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js +5 -29
  119. package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.js +2 -5
  120. package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js +7 -17
  121. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js +9 -19
  122. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +5 -20
  123. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  124. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +10 -73
  125. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +4 -14
  126. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +4 -14
  127. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +6 -16
  128. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js +4 -14
  129. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js +4 -14
  130. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js +6 -16
  131. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js +4 -14
  132. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js +4 -14
  133. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js +6 -16
  134. package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js +4 -14
  135. package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js +4 -14
  136. package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js +6 -16
  137. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js +4 -14
  138. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js +4 -14
  139. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js +6 -16
  140. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js +4 -14
  141. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +4 -14
  142. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js +6 -16
  143. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js +4 -14
  144. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +2 -12
  145. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js +6 -16
  146. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js +4 -14
  147. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js +4 -14
  148. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js +6 -16
  149. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js +4 -14
  150. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +4 -14
  151. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js +6 -16
  152. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js +4 -14
  153. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +2 -12
  154. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js +6 -16
  155. package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js +22 -32
  156. package/dist/field/features/migrations/slateToLexical/converter/index.js +14 -41
  157. package/dist/field/features/migrations/slateToLexical/converter/types.js +2 -5
  158. package/dist/field/features/migrations/slateToLexical/feature.client.js +7 -17
  159. package/dist/field/features/migrations/slateToLexical/feature.server.js +9 -19
  160. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +5 -20
  161. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  162. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +10 -73
  163. package/dist/field/features/paragraph/feature.client.js +16 -26
  164. package/dist/field/features/paragraph/feature.server.js +4 -14
  165. package/dist/field/features/relationship/drawer/commands.js +3 -13
  166. package/dist/field/features/relationship/drawer/index.js +24 -75
  167. package/dist/field/features/relationship/feature.client.js +15 -25
  168. package/dist/field/features/relationship/feature.server.js +8 -18
  169. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts.map +1 -1
  170. package/dist/field/features/relationship/nodes/RelationshipNode.js +8 -71
  171. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +35 -86
  172. package/dist/field/features/relationship/plugins/index.js +22 -80
  173. package/dist/field/features/relationship/populationPromise.js +4 -14
  174. package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js +8 -59
  175. package/dist/field/features/types.js +2 -5
  176. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +36 -84
  177. package/dist/field/features/upload/component/index.js +47 -98
  178. package/dist/field/features/upload/drawer/commands.js +3 -13
  179. package/dist/field/features/upload/drawer/index.js +23 -74
  180. package/dist/field/features/upload/feature.client.js +13 -23
  181. package/dist/field/features/upload/feature.server.js +11 -21
  182. package/dist/field/features/upload/nodes/UploadNode.d.ts.map +1 -1
  183. package/dist/field/features/upload/nodes/UploadNode.js +11 -73
  184. package/dist/field/features/upload/plugin/index.js +22 -81
  185. package/dist/field/features/upload/populationPromise.js +6 -16
  186. package/dist/field/features/upload/validate.js +9 -19
  187. package/dist/field/index.d.ts.map +1 -1
  188. package/dist/field/index.js +23 -75
  189. package/dist/field/lexical/EditorPlugin.js +5 -56
  190. package/dist/field/lexical/LexicalEditor.js +39 -94
  191. package/dist/field/lexical/LexicalProvider.js +15 -66
  192. package/dist/field/lexical/config/client/EditorConfigProvider.js +11 -69
  193. package/dist/field/lexical/config/client/default.js +4 -14
  194. package/dist/field/lexical/config/client/loader.js +5 -12
  195. package/dist/field/lexical/config/client/sanitize.js +3 -21
  196. package/dist/field/lexical/config/server/default.js +44 -68
  197. package/dist/field/lexical/config/server/loader.js +3 -21
  198. package/dist/field/lexical/config/server/sanitize.js +5 -23
  199. package/dist/field/lexical/config/types.js +2 -5
  200. package/dist/field/lexical/nodes/index.js +2 -12
  201. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +19 -70
  202. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +40 -98
  203. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +11 -34
  204. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +55 -105
  205. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js +2 -5
  206. package/dist/field/lexical/plugins/MarkdownShortcut/index.js +7 -58
  207. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +39 -64
  208. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +32 -97
  209. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +3 -21
  210. package/dist/field/lexical/plugins/SlashMenu/index.js +27 -77
  211. package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +8 -16
  212. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +35 -84
  213. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +2 -12
  214. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +2 -12
  215. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +18 -28
  216. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +4 -14
  217. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +52 -102
  218. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +8 -18
  219. package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js +2 -12
  220. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +4 -14
  221. package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js +2 -12
  222. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +2 -12
  223. package/dist/field/lexical/theme/EditorTheme.js +3 -13
  224. package/dist/field/lexical/ui/ContentEditable.js +6 -57
  225. package/dist/field/lexical/ui/icons/AI/index.js +7 -22
  226. package/dist/field/lexical/ui/icons/AlignCenter/index.js +6 -21
  227. package/dist/field/lexical/ui/icons/AlignJustify/index.js +6 -21
  228. package/dist/field/lexical/ui/icons/AlignLeft/index.js +6 -21
  229. package/dist/field/lexical/ui/icons/AlignRight/index.js +6 -21
  230. package/dist/field/lexical/ui/icons/Block/index.js +6 -21
  231. package/dist/field/lexical/ui/icons/Blockquote/index.js +4 -19
  232. package/dist/field/lexical/ui/icons/Bold/index.js +4 -19
  233. package/dist/field/lexical/ui/icons/Checklist/index.js +5 -20
  234. package/dist/field/lexical/ui/icons/Code/index.js +5 -20
  235. package/dist/field/lexical/ui/icons/CodeBlock/index.js +5 -20
  236. package/dist/field/lexical/ui/icons/H1/index.js +4 -19
  237. package/dist/field/lexical/ui/icons/H2/index.js +4 -19
  238. package/dist/field/lexical/ui/icons/H3/index.js +4 -19
  239. package/dist/field/lexical/ui/icons/H4/index.js +4 -19
  240. package/dist/field/lexical/ui/icons/H5/index.js +4 -19
  241. package/dist/field/lexical/ui/icons/H6/index.js +4 -19
  242. package/dist/field/lexical/ui/icons/IndentDecrease/index.js +7 -22
  243. package/dist/field/lexical/ui/icons/IndentIncrease/index.js +7 -22
  244. package/dist/field/lexical/ui/icons/Italic/index.js +4 -19
  245. package/dist/field/lexical/ui/icons/Link/index.js +7 -22
  246. package/dist/field/lexical/ui/icons/OrderedList/index.js +8 -23
  247. package/dist/field/lexical/ui/icons/Relationship/index.js +7 -22
  248. package/dist/field/lexical/ui/icons/Strikethrough/index.js +5 -20
  249. package/dist/field/lexical/ui/icons/Subscript/index.js +4 -19
  250. package/dist/field/lexical/ui/icons/Superscript/index.js +4 -19
  251. package/dist/field/lexical/ui/icons/Text/index.js +4 -19
  252. package/dist/field/lexical/ui/icons/Underline/index.js +5 -20
  253. package/dist/field/lexical/ui/icons/UnorderedList/index.js +9 -24
  254. package/dist/field/lexical/ui/icons/Upload/index.js +6 -21
  255. package/dist/field/lexical/utils/canUseDOM.js +2 -12
  256. package/dist/field/lexical/utils/cloneDeep.js +2 -12
  257. package/dist/field/lexical/utils/environment.js +13 -51
  258. package/dist/field/lexical/utils/getDOMRangeRect.js +2 -12
  259. package/dist/field/lexical/utils/getSelectedNode.js +5 -15
  260. package/dist/field/lexical/utils/guard.js +2 -12
  261. package/dist/field/lexical/utils/invariant.js +2 -12
  262. package/dist/field/lexical/utils/joinClasses.js +2 -12
  263. package/dist/field/lexical/utils/markdown/createBlockNode.js +2 -12
  264. package/dist/field/lexical/utils/nodeFormat.js +17 -61
  265. package/dist/field/lexical/utils/point.js +3 -21
  266. package/dist/field/lexical/utils/rect.js +4 -14
  267. package/dist/field/lexical/utils/setFloatingElemPosition.js +5 -12
  268. package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js +2 -12
  269. package/dist/field/lexical/utils/swipe.js +5 -29
  270. package/dist/field/lexical/utils/url.js +3 -21
  271. package/dist/generateComponentMap.js +10 -25
  272. package/dist/generateSchemaMap.js +4 -14
  273. package/dist/index.d.ts.map +1 -1
  274. package/dist/index.js +102 -490
  275. package/dist/populate/defaultValue.js +3 -21
  276. package/dist/populate/populate.js +2 -12
  277. package/dist/populate/recurseNestedFields.js +4 -14
  278. package/dist/populate/richTextRelationshipPromise.js +3 -21
  279. package/dist/types.js +2 -5
  280. package/dist/useLexicalFeature.js +6 -16
  281. package/dist/validate/index.js +6 -16
  282. package/dist/validate/validateNodes.js +2 -12
  283. package/package.json +9 -8
@@ -1,68 +1,10 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- function _export(target, all) {
7
- for(var name in all)Object.defineProperty(target, name, {
8
- enumerable: true,
9
- get: all[name]
10
- });
11
- }
12
- _export(exports, {
13
- TestRecorderPlugin: function() {
14
- return TestRecorderPlugin;
15
- },
16
- isSelectAll: function() {
17
- return isSelectAll;
18
- }
19
- });
20
- const _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
21
- const _lexical = require("lexical");
22
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
23
- const _environment = require("../../../../lexical/utils/environment");
24
- require("./index.scss");
25
- function _getRequireWildcardCache(nodeInterop) {
26
- if (typeof WeakMap !== "function") return null;
27
- var cacheBabelInterop = new WeakMap();
28
- var cacheNodeInterop = new WeakMap();
29
- return (_getRequireWildcardCache = function(nodeInterop) {
30
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
31
- })(nodeInterop);
32
- }
33
- function _interop_require_wildcard(obj, nodeInterop) {
34
- if (!nodeInterop && obj && obj.__esModule) {
35
- return obj;
36
- }
37
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
38
- return {
39
- default: obj
40
- };
41
- }
42
- var cache = _getRequireWildcardCache(nodeInterop);
43
- if (cache && cache.has(obj)) {
44
- return cache.get(obj);
45
- }
46
- var newObj = {
47
- __proto__: null
48
- };
49
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
50
- for(var key in obj){
51
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
52
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
53
- if (desc && (desc.get || desc.set)) {
54
- Object.defineProperty(newObj, key, desc);
55
- } else {
56
- newObj[key] = obj[key];
57
- }
58
- }
59
- }
60
- newObj.default = obj;
61
- if (cache) {
62
- cache.set(obj, newObj);
63
- }
64
- return newObj;
65
- }
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
+ import { $createParagraphNode, $createTextNode, $getRoot } from 'lexical';
4
+ import * as React from 'react';
5
+ import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
6
+ import { IS_APPLE } from '../../../../lexical/utils/environment';
7
+ import './index.scss';
66
8
  const copy = (text)=>{
67
9
  const textArea = document.createElement('textarea');
68
10
  textArea.value = text || '';
@@ -146,8 +88,8 @@ const formatStep = (step)=>{
146
88
  );`;
147
89
  }
148
90
  };
149
- function isSelectAll(event) {
150
- return event.keyCode === 65 && (_environment.IS_APPLE ? event.metaKey : event.ctrlKey);
91
+ export function isSelectAll(event) {
92
+ return event.keyCode === 65 && (IS_APPLE ? event.metaKey : event.ctrlKey);
151
93
  }
152
94
  // stolen from LexicalSelection-test
153
95
  function sanitizeSelection(selection) {
@@ -188,19 +130,19 @@ const keyPresses = new Set([
188
130
  'ArrowDown'
189
131
  ]);
190
132
  function useTestRecorder(editor) {
191
- const [steps, setSteps] = (0, _react.useState)([]);
192
- const [isRecording, setIsRecording] = (0, _react.useState)(false);
193
- const [, setCurrentInnerHTML] = (0, _react.useState)('');
194
- const [templatedTest, setTemplatedTest] = (0, _react.useState)('');
195
- const previousSelectionRef = (0, _react.useRef)(null);
196
- const skipNextSelectionChangeRef = (0, _react.useRef)(false);
197
- const preRef = (0, _react.useRef)(null);
198
- const getCurrentEditor = (0, _react.useCallback)(()=>{
133
+ const [steps, setSteps] = useState([]);
134
+ const [isRecording, setIsRecording] = useState(false);
135
+ const [, setCurrentInnerHTML] = useState('');
136
+ const [templatedTest, setTemplatedTest] = useState('');
137
+ const previousSelectionRef = useRef(null);
138
+ const skipNextSelectionChangeRef = useRef(false);
139
+ const preRef = useRef(null);
140
+ const getCurrentEditor = useCallback(()=>{
199
141
  return editor;
200
142
  }, [
201
143
  editor
202
144
  ]);
203
- const generateTestContent = (0, _react.useCallback)(()=>{
145
+ const generateTestContent = useCallback(()=>{
204
146
  const rootElement = editor.getRootElement();
205
147
  const browserSelection = window.getSelection();
206
148
  if (rootElement == null || browserSelection == null || browserSelection.anchorNode == null || browserSelection.focusNode == null || !rootElement.contains(browserSelection.anchorNode) || !rootElement.contains(browserSelection.focusNode)) {
@@ -233,7 +175,7 @@ ${steps.map(formatStep).join(`\n`)}
233
175
  ]);
234
176
  // just a wrapper around inserting new actions so that we can
235
177
  // coalesce some actions like insertText/moveNativeSelection
236
- const pushStep = (0, _react.useCallback)((name, value)=>{
178
+ const pushStep = useCallback((name, value)=>{
237
179
  setSteps((currentSteps)=>{
238
180
  // trying to group steps
239
181
  const currentIndex = steps.length - 1;
@@ -277,7 +219,7 @@ ${steps.map(formatStep).join(`\n`)}
277
219
  steps,
278
220
  setSteps
279
221
  ]);
280
- (0, _react.useLayoutEffect)(()=>{
222
+ useLayoutEffect(()=>{
281
223
  const onKeyDown = (event)=>{
282
224
  if (!isRecording) {
283
225
  return;
@@ -321,14 +263,14 @@ ${steps.map(formatStep).join(`\n`)}
321
263
  isRecording,
322
264
  pushStep
323
265
  ]);
324
- (0, _react.useLayoutEffect)(()=>{
266
+ useLayoutEffect(()=>{
325
267
  if (preRef.current) {
326
268
  preRef.current.scrollTo(0, preRef.current.scrollHeight);
327
269
  }
328
270
  }, [
329
271
  generateTestContent
330
272
  ]);
331
- (0, _react.useEffect)(()=>{
273
+ useEffect(()=>{
332
274
  if (steps) {
333
275
  const testContent = generateTestContent();
334
276
  if (testContent !== null) {
@@ -342,7 +284,7 @@ ${steps.map(formatStep).join(`\n`)}
342
284
  generateTestContent,
343
285
  steps
344
286
  ]);
345
- (0, _react.useEffect)(()=>{
287
+ useEffect(()=>{
346
288
  const removeUpdateListener = editor.registerUpdateListener(({ dirtyElements, dirtyLeaves, editorState })=>{
347
289
  if (!isRecording) {
348
290
  return;
@@ -373,7 +315,7 @@ ${steps.map(formatStep).join(`\n`)}
373
315
  pushStep
374
316
  ]);
375
317
  // save innerHTML
376
- (0, _react.useEffect)(()=>{
318
+ useEffect(()=>{
377
319
  if (!isRecording) {
378
320
  return;
379
321
  }
@@ -389,13 +331,13 @@ ${steps.map(formatStep).join(`\n`)}
389
331
  isRecording
390
332
  ]);
391
333
  // clear editor and start recording
392
- const toggleEditorSelection = (0, _react.useCallback)((currentEditor)=>{
334
+ const toggleEditorSelection = useCallback((currentEditor)=>{
393
335
  if (!isRecording) {
394
336
  currentEditor.update(()=>{
395
- const root = (0, _lexical.$getRoot)();
337
+ const root = $getRoot();
396
338
  root.clear();
397
- const text = (0, _lexical.$createTextNode)();
398
- root.append((0, _lexical.$createParagraphNode)().append(text));
339
+ const text = $createTextNode();
340
+ root.append($createParagraphNode().append(text));
399
341
  text.select();
400
342
  });
401
343
  setSteps([]);
@@ -404,7 +346,7 @@ ${steps.map(formatStep).join(`\n`)}
404
346
  }, [
405
347
  isRecording
406
348
  ]);
407
- const onSnapshotClick = (0, _react.useCallback)(()=>{
349
+ const onSnapshotClick = useCallback(()=>{
408
350
  if (!isRecording) {
409
351
  return;
410
352
  }
@@ -435,17 +377,17 @@ ${steps.map(formatStep).join(`\n`)}
435
377
  isRecording,
436
378
  getCurrentEditor
437
379
  ]);
438
- const onCopyClick = (0, _react.useCallback)(()=>{
380
+ const onCopyClick = useCallback(()=>{
439
381
  copy(generateTestContent());
440
382
  }, [
441
383
  generateTestContent
442
384
  ]);
443
- const onDownloadClick = (0, _react.useCallback)(()=>{
385
+ const onDownloadClick = useCallback(()=>{
444
386
  download('test.js', generateTestContent());
445
387
  }, [
446
388
  generateTestContent
447
389
  ]);
448
- const button = /*#__PURE__*/ _react.createElement("button", {
390
+ const button = /*#__PURE__*/ React.createElement("button", {
449
391
  className: `editor-dev-button ${isRecording ? 'active' : ''}`,
450
392
  id: "test-recorder-button",
451
393
  onClick: (e)=>{
@@ -455,11 +397,11 @@ ${steps.map(formatStep).join(`\n`)}
455
397
  title: isRecording ? 'Disable test recorder' : 'Enable test recorder',
456
398
  type: "button"
457
399
  }, isRecording ? 'Disable test recorder' : 'Enable test recorder');
458
- const output = isRecording ? /*#__PURE__*/ _react.createElement("div", {
400
+ const output = isRecording ? /*#__PURE__*/ React.createElement("div", {
459
401
  className: "test-recorder-output"
460
- }, /*#__PURE__*/ _react.createElement("div", {
402
+ }, /*#__PURE__*/ React.createElement("div", {
461
403
  className: "test-recorder-toolbar"
462
- }, /*#__PURE__*/ _react.createElement("button", {
404
+ }, /*#__PURE__*/ React.createElement("button", {
463
405
  className: "test-recorder-button",
464
406
  id: "test-recorder-button-snapshot",
465
407
  onClick: (e)=>{
@@ -468,7 +410,7 @@ ${steps.map(formatStep).join(`\n`)}
468
410
  },
469
411
  title: "Insert snapshot",
470
412
  type: "button"
471
- }, "Insert Snapshot"), /*#__PURE__*/ _react.createElement("button", {
413
+ }, "Insert Snapshot"), /*#__PURE__*/ React.createElement("button", {
472
414
  className: "test-recorder-button",
473
415
  id: "test-recorder-button-copy",
474
416
  onClick: (e)=>{
@@ -477,7 +419,7 @@ ${steps.map(formatStep).join(`\n`)}
477
419
  },
478
420
  title: "Copy to clipboard",
479
421
  type: "button"
480
- }, "Copy"), /*#__PURE__*/ _react.createElement("button", {
422
+ }, "Copy"), /*#__PURE__*/ React.createElement("button", {
481
423
  className: "test-recorder-button",
482
424
  id: "test-recorder-button-download",
483
425
  onClick: (e)=>{
@@ -486,7 +428,7 @@ ${steps.map(formatStep).join(`\n`)}
486
428
  },
487
429
  title: "Download as a file",
488
430
  type: "button"
489
- }, "Download")), /*#__PURE__*/ _react.createElement("pre", {
431
+ }, "Download")), /*#__PURE__*/ React.createElement("pre", {
490
432
  id: "test-recorder",
491
433
  ref: preRef
492
434
  }, templatedTest)) : null;
@@ -495,10 +437,10 @@ ${steps.map(formatStep).join(`\n`)}
495
437
  output
496
438
  ];
497
439
  }
498
- const TestRecorderPlugin = ()=>{
499
- const [editor] = (0, _LexicalComposerContext.useLexicalComposerContext)();
440
+ export const TestRecorderPlugin = ()=>{
441
+ const [editor] = useLexicalComposerContext();
500
442
  const [testRecorderButton, testRecorderOutput] = useTestRecorder(editor);
501
- return /*#__PURE__*/ _react.createElement(_react.Fragment, null, /*#__PURE__*/ _react.createElement("p", null, "HI"), testRecorderButton, testRecorderOutput, /*#__PURE__*/ _react.createElement("p", null, "DONE"));
443
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("p", null, "HI"), testRecorderButton, testRecorderOutput, /*#__PURE__*/ React.createElement("p", null, "DONE"));
502
444
  };
503
445
 
504
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9kZWJ1Zy90ZXN0cmVjb3JkZXIvcGx1Z2luL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgQmFzZVNlbGVjdGlvbiwgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgJGNyZWF0ZVBhcmFncmFwaE5vZGUsICRjcmVhdGVUZXh0Tm9kZSwgJGdldFJvb3QgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgSVNfQVBQTEUgfSBmcm9tICcuLi8uLi8uLi8uLi9sZXhpY2FsL3V0aWxzL2Vudmlyb25tZW50J1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmNvbnN0IGNvcHkgPSAodGV4dDogbnVsbCB8IHN0cmluZykgPT4ge1xuICBjb25zdCB0ZXh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJylcbiAgdGV4dEFyZWEudmFsdWUgPSB0ZXh0IHx8ICcnXG4gIHRleHRBcmVhLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xuICB0ZXh0QXJlYS5zdHlsZS5vcGFjaXR5ID0gJzAnXG4gIGRvY3VtZW50LmJvZHk/LmFwcGVuZENoaWxkKHRleHRBcmVhKVxuICB0ZXh0QXJlYS5mb2N1cygpXG4gIHRleHRBcmVhLnNlbGVjdCgpXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2cocmVzdWx0KVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gIH1cbiAgZG9jdW1lbnQuYm9keT8ucmVtb3ZlQ2hpbGQodGV4dEFyZWEpXG59XG5cbmNvbnN0IGRvd25sb2FkID0gKGZpbGVuYW1lOiBzdHJpbmcsIHRleHQ6IG51bGwgfCBzdHJpbmcpID0+IHtcbiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsICdkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KHRleHQgfHwgJycpKVxuICBhLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSlcbiAgYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG4gIGRvY3VtZW50LmJvZHk/LmFwcGVuZENoaWxkKGEpXG4gIGEuY2xpY2soKVxuICBkb2N1bWVudC5ib2R5Py5yZW1vdmVDaGlsZChhKVxufVxuXG5jb25zdCBmb3JtYXRTdGVwID0gKHN0ZXA6IFN0ZXApID0+IHtcbiAgY29uc3QgZm9ybWF0T25lU3RlcCA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBTdGVwWyd2YWx1ZSddKSA9PiB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlICdjbGljayc6IHtcbiAgICAgICAgcmV0dXJuIGAgICAgICBhd2FpdCBwYWdlLm1vdXNlLmNsaWNrKCR7dmFsdWUueH0sICR7dmFsdWUueX0pO2BcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ByZXNzJzoge1xuICAgICAgICByZXR1cm4gYCAgICAgIGF3YWl0IHBhZ2Uua2V5Ym9hcmQucHJlc3MoJyR7dmFsdWV9Jyk7YFxuICAgICAgfVxuICAgICAgY2FzZSAna2V5ZG93bic6IHtcbiAgICAgICAgcmV0dXJuIGAgICAgICBhd2FpdCBwYWdlLmtleWJvYXJkLmtleWRvd24oJyR7dmFsdWV9Jyk7YFxuICAgICAgfVxuICAgICAgY2FzZSAna2V5dXAnOiB7XG4gICAgICAgIHJldHVybiBgICAgICAgYXdhaXQgcGFnZS5rZXlib2FyZC5rZXl1cCgnJHt2YWx1ZX0nKTtgXG4gICAgICB9XG4gICAgICBjYXNlICd0eXBlJzoge1xuICAgICAgICByZXR1cm4gYCAgICAgIGF3YWl0IHBhZ2Uua2V5Ym9hcmQudHlwZSgnJHt2YWx1ZX0nKTtgXG4gICAgICB9XG4gICAgICBjYXNlICdzZWxlY3RBbGwnOiB7XG4gICAgICAgIHJldHVybiBgICAgICAgYXdhaXQgc2VsZWN0QWxsKHBhZ2UpO2BcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3NuYXBzaG90Jzoge1xuICAgICAgICByZXR1cm4gYCAgICAgIGF3YWl0IGFzc2VydEhUTUxTbmFwc2hvdChwYWdlKTtcbiAgICAgIGF3YWl0IGFzc2VydFNlbGVjdGlvbihwYWdlLCB7XG4gICAgICAgIGFuY2hvclBhdGg6IFske3ZhbHVlLmFuY2hvclBhdGgudG9TdHJpbmcoKX1dLFxuICAgICAgICBhbmNob3JPZmZzZXQ6ICR7dmFsdWUuYW5jaG9yT2Zmc2V0fSxcbiAgICAgICAgZm9jdXNQYXRoOiBbJHt2YWx1ZS5mb2N1c1BhdGgudG9TdHJpbmcoKX1dLFxuICAgICAgICBmb2N1c09mZnNldDogJHt2YWx1ZS5mb2N1c09mZnNldH0sXG4gICAgICB9KTtcbmBcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBgYFxuICAgIH1cbiAgfVxuICBjb25zdCBmb3JtYXR0ZWRTdGVwID0gZm9ybWF0T25lU3RlcChzdGVwLm5hbWUsIHN0ZXAudmFsdWUpXG4gIHN3aXRjaCAoc3RlcC5jb3VudCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBmb3JtYXR0ZWRTdGVwXG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIFtmb3JtYXR0ZWRTdGVwLCBmb3JtYXR0ZWRTdGVwXS5qb2luKGBcXG5gKVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYCAgICAgIGF3YWl0IHJlcGVhdCgke3N0ZXAuY291bnR9LCBhc3luYyAoKSA9PiB7XG4gICR7Zm9ybWF0dGVkU3RlcH1cbiAgICAgICk7YFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdEFsbChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXZlbnQua2V5Q29kZSA9PT0gNjUgJiYgKElTX0FQUExFID8gZXZlbnQubWV0YUtleSA6IGV2ZW50LmN0cmxLZXkpXG59XG5cbi8vIHN0b2xlbiBmcm9tIExleGljYWxTZWxlY3Rpb24tdGVzdFxuZnVuY3Rpb24gc2FuaXRpemVTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZWxlY3Rpb24pIHtcbiAgY29uc3QgeyBhbmNob3JOb2RlLCBmb2N1c05vZGUgfSA9IHNlbGVjdGlvblxuICBsZXQgeyBhbmNob3JPZmZzZXQsIGZvY3VzT2Zmc2V0IH0gPSBzZWxlY3Rpb25cbiAgaWYgKGFuY2hvck9mZnNldCAhPT0gMCkge1xuICAgIGFuY2hvck9mZnNldC0tXG4gIH1cbiAgaWYgKGZvY3VzT2Zmc2V0ICE9PSAwKSB7XG4gICAgZm9jdXNPZmZzZXQtLVxuICB9XG4gIHJldHVybiB7IGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwgZm9jdXNOb2RlLCBmb2N1c09mZnNldCB9XG59XG5cbmZ1bmN0aW9uIGdldFBhdGhGcm9tTm9kZVRvRWRpdG9yKG5vZGU6IE5vZGUsIHJvb3RFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgbGV0IGN1cnJlbnROb2RlOiBOb2RlIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG5vZGVcbiAgY29uc3QgcGF0aCA9IFtdXG4gIHdoaWxlIChjdXJyZW50Tm9kZSAhPT0gcm9vdEVsZW1lbnQpIHtcbiAgICBpZiAoY3VycmVudE5vZGUgIT09IG51bGwgJiYgY3VycmVudE5vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGF0aC51bnNoaWZ0KFxuICAgICAgICBBcnJheS5mcm9tKGN1cnJlbnROb2RlPy5wYXJlbnROb2RlPy5jaGlsZE5vZGVzID8/IFtdKS5pbmRleE9mKGN1cnJlbnROb2RlIGFzIENoaWxkTm9kZSksXG4gICAgICApXG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGU/LnBhcmVudE5vZGVcbiAgfVxuICByZXR1cm4gcGF0aFxufVxuXG5jb25zdCBrZXlQcmVzc2VzID0gbmV3IFNldChbXG4gICdFbnRlcicsXG4gICdCYWNrc3BhY2UnLFxuICAnRGVsZXRlJyxcbiAgJ0VzY2FwZScsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93RG93bicsXG5dKVxuXG50eXBlIFN0ZXAgPSB7XG4gIGNvdW50OiBudW1iZXJcbiAgbmFtZTogc3RyaW5nXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHZhbHVlOiBhbnlcbn1cblxudHlwZSBTdGVwcyA9IFN0ZXBbXVxuXG5mdW5jdGlvbiB1c2VUZXN0UmVjb3JkZXIoZWRpdG9yOiBMZXhpY2FsRWRpdG9yKTogW0pTWC5FbGVtZW50LCBKU1guRWxlbWVudCB8IG51bGxdIHtcbiAgY29uc3QgW3N0ZXBzLCBzZXRTdGVwc10gPSB1c2VTdGF0ZTxTdGVwcz4oW10pXG4gIGNvbnN0IFtpc1JlY29yZGluZywgc2V0SXNSZWNvcmRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFssIHNldEN1cnJlbnRJbm5lckhUTUxdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0ZW1wbGF0ZWRUZXN0LCBzZXRUZW1wbGF0ZWRUZXN0XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBwcmV2aW91c1NlbGVjdGlvblJlZiA9IHVzZVJlZjxCYXNlU2VsZWN0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3Qgc2tpcE5leHRTZWxlY3Rpb25DaGFuZ2VSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHByZVJlZiA9IHVzZVJlZjxIVE1MUHJlRWxlbWVudD4obnVsbClcblxuICBjb25zdCBnZXRDdXJyZW50RWRpdG9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJldHVybiBlZGl0b3JcbiAgfSwgW2VkaXRvcl0pXG5cbiAgY29uc3QgZ2VuZXJhdGVUZXN0Q29udGVudCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgY29uc3QgYnJvd3NlclNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuXG4gICAgaWYgKFxuICAgICAgcm9vdEVsZW1lbnQgPT0gbnVsbCB8fFxuICAgICAgYnJvd3NlclNlbGVjdGlvbiA9PSBudWxsIHx8XG4gICAgICBicm93c2VyU2VsZWN0aW9uLmFuY2hvck5vZGUgPT0gbnVsbCB8fFxuICAgICAgYnJvd3NlclNlbGVjdGlvbi5mb2N1c05vZGUgPT0gbnVsbCB8fFxuICAgICAgIXJvb3RFbGVtZW50LmNvbnRhaW5zKGJyb3dzZXJTZWxlY3Rpb24uYW5jaG9yTm9kZSkgfHxcbiAgICAgICFyb290RWxlbWVudC5jb250YWlucyhicm93c2VyU2VsZWN0aW9uLmZvY3VzTm9kZSlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIGBcbmltcG9ydCB7XG4gIGluaXRpYWxpemVFMkUsXG4gIGFzc2VydEhUTUxTbmFwc2hvdCxcbiAgYXNzZXJ0U2VsZWN0aW9uLFxuICByZXBlYXQsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7c2VsZWN0QWxsfSBmcm9tICcuLi9rZXlib2FyZFNob3J0Y3V0cyc7XG5pbXBvcnQgeyBSYW5nZVNlbGVjdGlvbiB9IGZyb20gJ2xleGljYWwnO1xuaW1wb3J0IHsgTm9kZVNlbGVjdGlvbiB9IGZyb20gJ2xleGljYWwnO1xuXG5kZXNjcmliZSgnVGVzdCBjYXNlJywgKCkgPT4ge1xuICBpbml0aWFsaXplRTJFKChlMmUpID0+IHtcbiAgICBpdCgnU2hvdWxkIHBhc3MgdGhpcyB0ZXN0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qge3BhZ2V9ID0gZTJlO1xuXG4gICAgICBhd2FpdCBwYWdlLmZvY3VzKCdkaXZbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScpO1xuJHtzdGVwcy5tYXAoZm9ybWF0U3RlcCkuam9pbihgXFxuYCl9XG4gICAgfSk7XG59KTtcbiAgICBgXG4gIH0sIFtlZGl0b3IsIHN0ZXBzXSlcblxuICAvLyBqdXN0IGEgd3JhcHBlciBhcm91bmQgaW5zZXJ0aW5nIG5ldyBhY3Rpb25zIHNvIHRoYXQgd2UgY2FuXG4gIC8vIGNvYWxlc2NlIHNvbWUgYWN0aW9ucyBsaWtlIGluc2VydFRleHQvbW92ZU5hdGl2ZVNlbGVjdGlvblxuICBjb25zdCBwdXNoU3RlcCA9IHVzZUNhbGxiYWNrKFxuICAgIChuYW1lOiBzdHJpbmcsIHZhbHVlOiBTdGVwWyd2YWx1ZSddKSA9PiB7XG4gICAgICBzZXRTdGVwcygoY3VycmVudFN0ZXBzKSA9PiB7XG4gICAgICAgIC8vIHRyeWluZyB0byBncm91cCBzdGVwc1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBzdGVwcy5sZW5ndGggLSAxXG4gICAgICAgIGNvbnN0IGxhc3RTdGVwID0gc3RlcHNbY3VycmVudEluZGV4XVxuICAgICAgICBpZiAobGFzdFN0ZXApIHtcbiAgICAgICAgICBpZiAobGFzdFN0ZXAubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICd0eXBlJykge1xuICAgICAgICAgICAgICAvLyBmb3IgdHlwaW5nIGV2ZW50cyB3ZSBqdXN0IGFwcGVuZCB0aGUgdGV4dFxuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIC4uLnN0ZXBzLnNsaWNlKDAsIGN1cnJlbnRJbmRleCksXG4gICAgICAgICAgICAgICAgeyAuLi5sYXN0U3RlcCwgdmFsdWU6IGxhc3RTdGVwLnZhbHVlICsgdmFsdWUgfSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gZm9yIG90aGVyIGV2ZW50cyB3ZSBidW1wIHRoZSBjb3VudGVyIGlmIHRoZWlyIHZhbHVlcyBhcmUgdGhlIHNhbWVcbiAgICAgICAgICAgICAgaWYgKGxhc3RTdGVwLnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uc3RlcHMuc2xpY2UoMCwgY3VycmVudEluZGV4KSwgeyAuLi5sYXN0U3RlcCwgY291bnQ6IGxhc3RTdGVwLmNvdW50ICsgMSB9XVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvdWxkIG5vdCBncm91cCwganVzdCBhcHBlbmQgYSBuZXcgb25lXG4gICAgICAgIHJldHVybiBbLi4uY3VycmVudFN0ZXBzLCB7IG5hbWUsIGNvdW50OiAxLCB2YWx1ZSB9XVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtzdGVwcywgc2V0U3RlcHNdLFxuICApXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbktleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmICghaXNSZWNvcmRpbmcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBrZXkgPSBldmVudC5rZXlcbiAgICAgIGlmIChpc1NlbGVjdEFsbChldmVudCkpIHtcbiAgICAgICAgcHVzaFN0ZXAoJ3NlbGVjdEFsbCcsICcnKVxuICAgICAgfSBlbHNlIGlmIChrZXlQcmVzc2VzLmhhcyhrZXkpKSB7XG4gICAgICAgIHB1c2hTdGVwKCdwcmVzcycsIGV2ZW50LmtleSlcbiAgICAgIH0gZWxzZSBpZiAoWy4uLmtleV0ubGVuZ3RoID4gMSkge1xuICAgICAgICBwdXNoU3RlcCgna2V5ZG93bicsIGV2ZW50LmtleSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHB1c2hTdGVwKCd0eXBlJywgZXZlbnQua2V5KVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9uS2V5VXAgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmICghaXNSZWNvcmRpbmcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBrZXkgPSBldmVudC5rZXlcbiAgICAgIGlmICgha2V5UHJlc3Nlcy5oYXMoa2V5KSAmJiBbLi4ua2V5XS5sZW5ndGggPiAxKSB7XG4gICAgICAgIHB1c2hTdGVwKCdrZXl1cCcsIGV2ZW50LmtleSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZWRpdG9yLnJlZ2lzdGVyUm9vdExpc3RlbmVyKFxuICAgICAgKHJvb3RFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwsIHByZXZSb290RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmIChwcmV2Um9vdEVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICBwcmV2Um9vdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bilcbiAgICAgICAgICBwcmV2Um9vdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBvbktleVVwKVxuICAgICAgICB9XG4gICAgICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJvb3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pXG4gICAgICAgICAgcm9vdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBvbktleVVwKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIClcbiAgfSwgW2VkaXRvciwgaXNSZWNvcmRpbmcsIHB1c2hTdGVwXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcmVSZWYuY3VycmVudCkge1xuICAgICAgcHJlUmVmLmN1cnJlbnQuc2Nyb2xsVG8oMCwgcHJlUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0KVxuICAgIH1cbiAgfSwgW2dlbmVyYXRlVGVzdENvbnRlbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0ZXBzKSB7XG4gICAgICBjb25zdCB0ZXN0Q29udGVudCA9IGdlbmVyYXRlVGVzdENvbnRlbnQoKVxuICAgICAgaWYgKHRlc3RDb250ZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHNldFRlbXBsYXRlZFRlc3QodGVzdENvbnRlbnQpXG4gICAgICB9XG4gICAgICBpZiAocHJlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcHJlUmVmLmN1cnJlbnQuc2Nyb2xsVG8oMCwgcHJlUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2dlbmVyYXRlVGVzdENvbnRlbnQsIHN0ZXBzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJlbW92ZVVwZGF0ZUxpc3RlbmVyID0gZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoXG4gICAgICAoeyBkaXJ0eUVsZW1lbnRzLCBkaXJ0eUxlYXZlcywgZWRpdG9yU3RhdGUgfSkgPT4ge1xuICAgICAgICBpZiAoIWlzUmVjb3JkaW5nKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IGVkaXRvclN0YXRlLl9zZWxlY3Rpb25cbiAgICAgICAgY29uc3QgcHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvblJlZi5jdXJyZW50XG4gICAgICAgIGNvbnN0IHNraXBOZXh0U2VsZWN0aW9uQ2hhbmdlID0gc2tpcE5leHRTZWxlY3Rpb25DaGFuZ2VSZWYuY3VycmVudFxuICAgICAgICBpZiAocHJldmlvdXNTZWxlY3Rpb24gIT09IGN1cnJlbnRTZWxlY3Rpb24pIHtcbiAgICAgICAgICBpZiAoZGlydHlMZWF2ZXMuc2l6ZSA9PT0gMCAmJiBkaXJ0eUVsZW1lbnRzLnNpemUgPT09IDAgJiYgIXNraXBOZXh0U2VsZWN0aW9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCBicm93c2VyU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGJyb3dzZXJTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICAgKGJyb3dzZXJTZWxlY3Rpb24uYW5jaG9yTm9kZSA9PSBudWxsIHx8IGJyb3dzZXJTZWxlY3Rpb24uZm9jdXNOb2RlID09IG51bGwpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uUmVmLmN1cnJlbnQgPSBjdXJyZW50U2VsZWN0aW9uXG4gICAgICAgIH1cbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb25DaGFuZ2VSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIGNvbnN0IHRlc3RDb250ZW50ID0gZ2VuZXJhdGVUZXN0Q29udGVudCgpXG4gICAgICAgIGlmICh0ZXN0Q29udGVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHNldFRlbXBsYXRlZFRlc3QodGVzdENvbnRlbnQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKVxuICAgIHJldHVybiByZW1vdmVVcGRhdGVMaXN0ZW5lclxuICB9LCBbZWRpdG9yLCBnZW5lcmF0ZVRlc3RDb250ZW50LCBpc1JlY29yZGluZywgcHVzaFN0ZXBdKVxuXG4gIC8vIHNhdmUgaW5uZXJIVE1MXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc1JlY29yZGluZykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHJlbW92ZVVwZGF0ZUxpc3RlbmVyID0gZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgICAgaWYgKHJvb3RFbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHNldEN1cnJlbnRJbm5lckhUTUwocm9vdEVsZW1lbnQ/LmlubmVySFRNTClcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiByZW1vdmVVcGRhdGVMaXN0ZW5lclxuICB9LCBbZWRpdG9yLCBpc1JlY29yZGluZ10pXG5cbiAgLy8gY2xlYXIgZWRpdG9yIGFuZCBzdGFydCByZWNvcmRpbmdcbiAgY29uc3QgdG9nZ2xlRWRpdG9yU2VsZWN0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKGN1cnJlbnRFZGl0b3I6IExleGljYWxFZGl0b3IpID0+IHtcbiAgICAgIGlmICghaXNSZWNvcmRpbmcpIHtcbiAgICAgICAgY3VycmVudEVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvb3QgPSAkZ2V0Um9vdCgpXG4gICAgICAgICAgcm9vdC5jbGVhcigpXG4gICAgICAgICAgY29uc3QgdGV4dCA9ICRjcmVhdGVUZXh0Tm9kZSgpXG4gICAgICAgICAgcm9vdC5hcHBlbmQoJGNyZWF0ZVBhcmFncmFwaE5vZGUoKS5hcHBlbmQodGV4dCkpXG4gICAgICAgICAgdGV4dC5zZWxlY3QoKVxuICAgICAgICB9KVxuICAgICAgICBzZXRTdGVwcyhbXSlcbiAgICAgIH1cbiAgICAgIHNldElzUmVjb3JkaW5nKChjdXJyZW50SXNSZWNvcmRpbmcpID0+ICFjdXJyZW50SXNSZWNvcmRpbmcpXG4gICAgfSxcbiAgICBbaXNSZWNvcmRpbmddLFxuICApXG5cbiAgY29uc3Qgb25TbmFwc2hvdENsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghaXNSZWNvcmRpbmcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBicm93c2VyU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgaWYgKFxuICAgICAgYnJvd3NlclNlbGVjdGlvbiA9PT0gbnVsbCB8fFxuICAgICAgYnJvd3NlclNlbGVjdGlvbi5hbmNob3JOb2RlID09IG51bGwgfHxcbiAgICAgIGJyb3dzZXJTZWxlY3Rpb24uZm9jdXNOb2RlID09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCB7IGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwgZm9jdXNOb2RlLCBmb2N1c09mZnNldCB9ID0gc2FuaXRpemVTZWxlY3Rpb24oYnJvd3NlclNlbGVjdGlvbilcbiAgICBjb25zdCByb290RWxlbWVudCA9IGdldEN1cnJlbnRFZGl0b3IoKS5nZXRSb290RWxlbWVudCgpXG4gICAgbGV0IGFuY2hvclBhdGhcbiAgICBpZiAoYW5jaG9yTm9kZSAhPT0gbnVsbCkge1xuICAgICAgYW5jaG9yUGF0aCA9IGdldFBhdGhGcm9tTm9kZVRvRWRpdG9yKGFuY2hvck5vZGUsIHJvb3RFbGVtZW50KVxuICAgIH1cbiAgICBsZXQgZm9jdXNQYXRoXG4gICAgaWYgKGZvY3VzTm9kZSAhPT0gbnVsbCkge1xuICAgICAgZm9jdXNQYXRoID0gZ2V0UGF0aEZyb21Ob2RlVG9FZGl0b3IoZm9jdXNOb2RlLCByb290RWxlbWVudClcbiAgICB9XG4gICAgcHVzaFN0ZXAoJ3NuYXBzaG90Jywge1xuICAgICAgYW5jaG9yTm9kZSxcbiAgICAgIGFuY2hvck9mZnNldCxcbiAgICAgIGFuY2hvclBhdGgsXG4gICAgICBmb2N1c05vZGUsXG4gICAgICBmb2N1c09mZnNldCxcbiAgICAgIGZvY3VzUGF0aCxcbiAgICB9KVxuICB9LCBbcHVzaFN0ZXAsIGlzUmVjb3JkaW5nLCBnZXRDdXJyZW50RWRpdG9yXSlcblxuICBjb25zdCBvbkNvcHlDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb3B5KGdlbmVyYXRlVGVzdENvbnRlbnQoKSlcbiAgfSwgW2dlbmVyYXRlVGVzdENvbnRlbnRdKVxuXG4gIGNvbnN0IG9uRG93bmxvYWRDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkb3dubG9hZCgndGVzdC5qcycsIGdlbmVyYXRlVGVzdENvbnRlbnQoKSlcbiAgfSwgW2dlbmVyYXRlVGVzdENvbnRlbnRdKVxuXG4gIGNvbnN0IGJ1dHRvbiA9IChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9e2BlZGl0b3ItZGV2LWJ1dHRvbiAke2lzUmVjb3JkaW5nID8gJ2FjdGl2ZScgOiAnJ31gfVxuICAgICAgaWQ9XCJ0ZXN0LXJlY29yZGVyLWJ1dHRvblwiXG4gICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICB0b2dnbGVFZGl0b3JTZWxlY3Rpb24oZ2V0Q3VycmVudEVkaXRvcigpKVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIH19XG4gICAgICB0aXRsZT17aXNSZWNvcmRpbmcgPyAnRGlzYWJsZSB0ZXN0IHJlY29yZGVyJyA6ICdFbmFibGUgdGVzdCByZWNvcmRlcid9XG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICB7aXNSZWNvcmRpbmcgPyAnRGlzYWJsZSB0ZXN0IHJlY29yZGVyJyA6ICdFbmFibGUgdGVzdCByZWNvcmRlcid9XG4gICAgPC9idXR0b24+XG4gIClcbiAgY29uc3Qgb3V0cHV0ID0gaXNSZWNvcmRpbmcgPyAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXN0LXJlY29yZGVyLW91dHB1dFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXN0LXJlY29yZGVyLXRvb2xiYXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cInRlc3QtcmVjb3JkZXItYnV0dG9uXCJcbiAgICAgICAgICBpZD1cInRlc3QtcmVjb3JkZXItYnV0dG9uLXNuYXBzaG90XCJcbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgb25TbmFwc2hvdENsaWNrKClcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIH19XG4gICAgICAgICAgdGl0bGU9XCJJbnNlcnQgc25hcHNob3RcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgSW5zZXJ0IFNuYXBzaG90XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGVzdC1yZWNvcmRlci1idXR0b25cIlxuICAgICAgICAgIGlkPVwidGVzdC1yZWNvcmRlci1idXR0b24tY29weVwiXG4gICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgIG9uQ29weUNsaWNrKClcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIH19XG4gICAgICAgICAgdGl0bGU9XCJDb3B5IHRvIGNsaXBib2FyZFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICBDb3B5XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGVzdC1yZWNvcmRlci1idXR0b25cIlxuICAgICAgICAgIGlkPVwidGVzdC1yZWNvcmRlci1idXR0b24tZG93bmxvYWRcIlxuICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICBvbkRvd25sb2FkQ2xpY2soKVxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgfX1cbiAgICAgICAgICB0aXRsZT1cIkRvd25sb2FkIGFzIGEgZmlsZVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICBEb3dubG9hZFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHByZSBpZD1cInRlc3QtcmVjb3JkZXJcIiByZWY9e3ByZVJlZn0+XG4gICAgICAgIHt0ZW1wbGF0ZWRUZXN0fVxuICAgICAgPC9wcmU+XG4gICAgPC9kaXY+XG4gICkgOiBudWxsXG5cbiAgcmV0dXJuIFtidXR0b24sIG91dHB1dF1cbn1cbmV4cG9ydCBjb25zdCBUZXN0UmVjb3JkZXJQbHVnaW46IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICBjb25zdCBbdGVzdFJlY29yZGVyQnV0dG9uLCB0ZXN0UmVjb3JkZXJPdXRwdXRdID0gdXNlVGVzdFJlY29yZGVyKGVkaXRvcilcblxuICByZXR1cm4gKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxwPkhJPC9wPlxuICAgICAge3Rlc3RSZWNvcmRlckJ1dHRvbn1cbiAgICAgIHt0ZXN0UmVjb3JkZXJPdXRwdXR9XG4gICAgICA8cD5ET05FPC9wPlxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJUZXN0UmVjb3JkZXJQbHVnaW4iLCJpc1NlbGVjdEFsbCIsImNvcHkiLCJ0ZXh0IiwidGV4dEFyZWEiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ2YWx1ZSIsInN0eWxlIiwicG9zaXRpb24iLCJvcGFjaXR5IiwiYm9keSIsImFwcGVuZENoaWxkIiwiZm9jdXMiLCJzZWxlY3QiLCJyZXN1bHQiLCJleGVjQ29tbWFuZCIsImNvbnNvbGUiLCJsb2ciLCJlcnJvciIsInJlbW92ZUNoaWxkIiwiZG93bmxvYWQiLCJmaWxlbmFtZSIsImEiLCJzZXRBdHRyaWJ1dGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJkaXNwbGF5IiwiY2xpY2siLCJmb3JtYXRTdGVwIiwic3RlcCIsImZvcm1hdE9uZVN0ZXAiLCJuYW1lIiwieCIsInkiLCJhbmNob3JQYXRoIiwidG9TdHJpbmciLCJhbmNob3JPZmZzZXQiLCJmb2N1c1BhdGgiLCJmb2N1c09mZnNldCIsImZvcm1hdHRlZFN0ZXAiLCJjb3VudCIsImpvaW4iLCJldmVudCIsImtleUNvZGUiLCJJU19BUFBMRSIsIm1ldGFLZXkiLCJjdHJsS2V5Iiwic2FuaXRpemVTZWxlY3Rpb24iLCJzZWxlY3Rpb24iLCJhbmNob3JOb2RlIiwiZm9jdXNOb2RlIiwiZ2V0UGF0aEZyb21Ob2RlVG9FZGl0b3IiLCJub2RlIiwicm9vdEVsZW1lbnQiLCJjdXJyZW50Tm9kZSIsInBhdGgiLCJ1bmRlZmluZWQiLCJ1bnNoaWZ0IiwiQXJyYXkiLCJmcm9tIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJpbmRleE9mIiwia2V5UHJlc3NlcyIsIlNldCIsInVzZVRlc3RSZWNvcmRlciIsImVkaXRvciIsInN0ZXBzIiwic2V0U3RlcHMiLCJ1c2VTdGF0ZSIsImlzUmVjb3JkaW5nIiwic2V0SXNSZWNvcmRpbmciLCJzZXRDdXJyZW50SW5uZXJIVE1MIiwidGVtcGxhdGVkVGVzdCIsInNldFRlbXBsYXRlZFRlc3QiLCJwcmV2aW91c1NlbGVjdGlvblJlZiIsInVzZVJlZiIsInNraXBOZXh0U2VsZWN0aW9uQ2hhbmdlUmVmIiwicHJlUmVmIiwiZ2V0Q3VycmVudEVkaXRvciIsInVzZUNhbGxiYWNrIiwiZ2VuZXJhdGVUZXN0Q29udGVudCIsImdldFJvb3RFbGVtZW50IiwiYnJvd3NlclNlbGVjdGlvbiIsIndpbmRvdyIsImdldFNlbGVjdGlvbiIsImNvbnRhaW5zIiwibWFwIiwicHVzaFN0ZXAiLCJjdXJyZW50U3RlcHMiLCJjdXJyZW50SW5kZXgiLCJsZW5ndGgiLCJsYXN0U3RlcCIsInNsaWNlIiwidXNlTGF5b3V0RWZmZWN0Iiwib25LZXlEb3duIiwia2V5IiwiaGFzIiwib25LZXlVcCIsInJlZ2lzdGVyUm9vdExpc3RlbmVyIiwicHJldlJvb3RFbGVtZW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjdXJyZW50Iiwic2Nyb2xsVG8iLCJzY3JvbGxIZWlnaHQiLCJ1c2VFZmZlY3QiLCJ0ZXN0Q29udGVudCIsInJlbW92ZVVwZGF0ZUxpc3RlbmVyIiwicmVnaXN0ZXJVcGRhdGVMaXN0ZW5lciIsImRpcnR5RWxlbWVudHMiLCJkaXJ0eUxlYXZlcyIsImVkaXRvclN0YXRlIiwiY3VycmVudFNlbGVjdGlvbiIsIl9zZWxlY3Rpb24iLCJwcmV2aW91c1NlbGVjdGlvbiIsInNraXBOZXh0U2VsZWN0aW9uQ2hhbmdlIiwic2l6ZSIsImlubmVySFRNTCIsInRvZ2dsZUVkaXRvclNlbGVjdGlvbiIsImN1cnJlbnRFZGl0b3IiLCJ1cGRhdGUiLCJyb290IiwiJGdldFJvb3QiLCJjbGVhciIsIiRjcmVhdGVUZXh0Tm9kZSIsImFwcGVuZCIsIiRjcmVhdGVQYXJhZ3JhcGhOb2RlIiwiY3VycmVudElzUmVjb3JkaW5nIiwib25TbmFwc2hvdENsaWNrIiwib25Db3B5Q2xpY2siLCJvbkRvd25sb2FkQ2xpY2siLCJidXR0b24iLCJjbGFzc05hbWUiLCJpZCIsIm9uQ2xpY2siLCJlIiwicHJldmVudERlZmF1bHQiLCJ0aXRsZSIsInR5cGUiLCJvdXRwdXQiLCJkaXYiLCJwcmUiLCJyZWYiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwidGVzdFJlY29yZGVyQnV0dG9uIiwidGVzdFJlY29yZGVyT3V0cHV0IiwiUmVhY3QiLCJGcmFnbWVudCIsInAiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7SUE0YmFBLGtCQUFrQjtlQUFsQkE7O0lBcldHQyxXQUFXO2VBQVhBOzs7d0NBcEYwQjt5QkFDc0I7K0RBQ3pDOzZCQUdFO1FBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFUCxNQUFNQyxPQUFPLENBQUNDO0lBQ1osTUFBTUMsV0FBV0MsU0FBU0MsYUFBYSxDQUFDO0lBQ3hDRixTQUFTRyxLQUFLLEdBQUdKLFFBQVE7SUFDekJDLFNBQVNJLEtBQUssQ0FBQ0MsUUFBUSxHQUFHO0lBQzFCTCxTQUFTSSxLQUFLLENBQUNFLE9BQU8sR0FBRztJQUN6QkwsU0FBU00sSUFBSSxFQUFFQyxZQUFZUjtJQUMzQkEsU0FBU1MsS0FBSztJQUNkVCxTQUFTVSxNQUFNO0lBQ2YsSUFBSTtRQUNGLE1BQU1DLFNBQVNWLFNBQVNXLFdBQVcsQ0FBQztRQUNwQyxzQ0FBc0M7UUFDdENDLFFBQVFDLEdBQUcsQ0FBQ0g7SUFDZCxFQUFFLE9BQU9JLE9BQU87UUFDZEYsUUFBUUUsS0FBSyxDQUFDQTtJQUNoQjtJQUNBZCxTQUFTTSxJQUFJLEVBQUVTLFlBQVloQjtBQUM3QjtBQUVBLE1BQU1pQixXQUFXLENBQUNDLFVBQWtCbkI7SUFDbEMsTUFBTW9CLElBQUlsQixTQUFTQyxhQUFhLENBQUM7SUFDakNpQixFQUFFQyxZQUFZLENBQUMsUUFBUSxtQ0FBbUNDLG1CQUFtQnRCLFFBQVE7SUFDckZvQixFQUFFQyxZQUFZLENBQUMsWUFBWUY7SUFDM0JDLEVBQUVmLEtBQUssQ0FBQ2tCLE9BQU8sR0FBRztJQUNsQnJCLFNBQVNNLElBQUksRUFBRUMsWUFBWVc7SUFDM0JBLEVBQUVJLEtBQUs7SUFDUHRCLFNBQVNNLElBQUksRUFBRVMsWUFBWUc7QUFDN0I7QUFFQSxNQUFNSyxhQUFhLENBQUNDO0lBQ2xCLE1BQU1DLGdCQUFnQixDQUFDQyxNQUFjeEI7UUFDbkMsT0FBUXdCO1lBQ04sS0FBSztnQkFBUztvQkFDWixPQUFPLENBQUMsNkJBQTZCLEVBQUV4QixNQUFNeUIsQ0FBQyxDQUFDLEVBQUUsRUFBRXpCLE1BQU0wQixDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNoRTtZQUNBLEtBQUs7Z0JBQVM7b0JBQ1osT0FBTyxDQUFDLGlDQUFpQyxFQUFFMUIsTUFBTSxHQUFHLENBQUM7Z0JBQ3ZEO1lBQ0EsS0FBSztnQkFBVztvQkFDZCxPQUFPLENBQUMsbUNBQW1DLEVBQUVBLE1BQU0sR0FBRyxDQUFDO2dCQUN6RDtZQUNBLEtBQUs7Z0JBQVM7b0JBQ1osT0FBTyxDQUFDLGlDQUFpQyxFQUFFQSxNQUFNLEdBQUcsQ0FBQztnQkFDdkQ7WUFDQSxLQUFLO2dCQUFRO29CQUNYLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRUEsTUFBTSxHQUFHLENBQUM7Z0JBQ3REO1lBQ0EsS0FBSztnQkFBYTtvQkFDaEIsT0FBTyxDQUFDLDRCQUE0QixDQUFDO2dCQUN2QztZQUNBLEtBQUs7Z0JBQVk7b0JBQ2YsT0FBTyxDQUFDOztxQkFFSyxFQUFFQSxNQUFNMkIsVUFBVSxDQUFDQyxRQUFRLEdBQUc7c0JBQzdCLEVBQUU1QixNQUFNNkIsWUFBWSxDQUFDO29CQUN2QixFQUFFN0IsTUFBTThCLFNBQVMsQ0FBQ0YsUUFBUSxHQUFHO3FCQUM1QixFQUFFNUIsTUFBTStCLFdBQVcsQ0FBQzs7QUFFekMsQ0FBQztnQkFDSztZQUNBO2dCQUNFLE9BQU8sQ0FBQyxDQUFDO1FBQ2I7SUFDRjtJQUNBLE1BQU1DLGdCQUFnQlQsY0FBY0QsS0FBS0UsSUFBSSxFQUFFRixLQUFLdEIsS0FBSztJQUN6RCxPQUFRc0IsS0FBS1csS0FBSztRQUNoQixLQUFLO1lBQ0gsT0FBT0Q7UUFDVCxLQUFLO1lBQ0gsT0FBTztnQkFBQ0E7Z0JBQWVBO2FBQWMsQ0FBQ0UsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pEO1lBQ0UsT0FBTyxDQUFDLG1CQUFtQixFQUFFWixLQUFLVyxLQUFLLENBQUM7RUFDNUMsRUFBRUQsY0FBYztRQUNWLENBQUM7SUFDUDtBQUNGO0FBRU8sU0FBU3RDLFlBQVl5QyxLQUFvQjtJQUM5QyxPQUFPQSxNQUFNQyxPQUFPLEtBQUssTUFBT0MsQ0FBQUEscUJBQVEsR0FBR0YsTUFBTUcsT0FBTyxHQUFHSCxNQUFNSSxPQUFPLEFBQUQ7QUFDekU7QUFFQSxvQ0FBb0M7QUFDcEMsU0FBU0Msa0JBQWtCQyxTQUFvQjtJQUM3QyxNQUFNLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxFQUFFLEdBQUdGO0lBQ2xDLElBQUksRUFBRVosWUFBWSxFQUFFRSxXQUFXLEVBQUUsR0FBR1U7SUFDcEMsSUFBSVosaUJBQWlCLEdBQUc7UUFDdEJBO0lBQ0Y7SUFDQSxJQUFJRSxnQkFBZ0IsR0FBRztRQUNyQkE7SUFDRjtJQUNBLE9BQU87UUFBRVc7UUFBWWI7UUFBY2M7UUFBV1o7SUFBWTtBQUM1RDtBQUVBLFNBQVNhLHdCQUF3QkMsSUFBVSxFQUFFQyxXQUErQjtJQUMxRSxJQUFJQyxjQUF1Q0Y7SUFDM0MsTUFBTUcsT0FBTyxFQUFFO0lBQ2YsTUFBT0QsZ0JBQWdCRCxZQUFhO1FBQ2xDLElBQUlDLGdCQUFnQixRQUFRQSxnQkFBZ0JFLFdBQVc7WUFDckRELEtBQUtFLE9BQU8sQ0FDVkMsTUFBTUMsSUFBSSxDQUFDTCxhQUFhTSxZQUFZQyxjQUFjLEVBQUUsRUFBRUMsT0FBTyxDQUFDUjtRQUVsRTtRQUNBQSxjQUFjQSxhQUFhTTtJQUM3QjtJQUNBLE9BQU9MO0FBQ1Q7QUFFQSxNQUFNUSxhQUFhLElBQUlDLElBQUk7SUFDekI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBV0QsU0FBU0MsZ0JBQWdCQyxNQUFxQjtJQUM1QyxNQUFNLENBQUNDLE9BQU9DLFNBQVMsR0FBR0MsSUFBQUEsZUFBUSxFQUFRLEVBQUU7SUFDNUMsTUFBTSxDQUFDQyxhQUFhQyxlQUFlLEdBQUdGLElBQUFBLGVBQVEsRUFBQztJQUMvQyxNQUFNLEdBQUdHLG9CQUFvQixHQUFHSCxJQUFBQSxlQUFRLEVBQUM7SUFDekMsTUFBTSxDQUFDSSxlQUFlQyxpQkFBaUIsR0FBR0wsSUFBQUEsZUFBUSxFQUFDO0lBQ25ELE1BQU1NLHVCQUF1QkMsSUFBQUEsYUFBTSxFQUF1QjtJQUMxRCxNQUFNQyw2QkFBNkJELElBQUFBLGFBQU0sRUFBQztJQUMxQyxNQUFNRSxTQUFTRixJQUFBQSxhQUFNLEVBQWlCO0lBRXRDLE1BQU1HLG1CQUFtQkMsSUFBQUEsa0JBQVcsRUFBQztRQUNuQyxPQUFPZDtJQUNULEdBQUc7UUFBQ0E7S0FBTztJQUVYLE1BQU1lLHNCQUFzQkQsSUFBQUEsa0JBQVcsRUFBQztRQUN0QyxNQUFNM0IsY0FBY2EsT0FBT2dCLGNBQWM7UUFDekMsTUFBTUMsbUJBQW1CQyxPQUFPQyxZQUFZO1FBRTVDLElBQ0VoQyxlQUFlLFFBQ2Y4QixvQkFBb0IsUUFDcEJBLGlCQUFpQmxDLFVBQVUsSUFBSSxRQUMvQmtDLGlCQUFpQmpDLFNBQVMsSUFBSSxRQUM5QixDQUFDRyxZQUFZaUMsUUFBUSxDQUFDSCxpQkFBaUJsQyxVQUFVLEtBQ2pELENBQUNJLFlBQVlpQyxRQUFRLENBQUNILGlCQUFpQmpDLFNBQVMsR0FDaEQ7WUFDQSxPQUFPO1FBQ1Q7UUFFQSxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJaLEVBQUVpQixNQUFNb0IsR0FBRyxDQUFDM0QsWUFBWWEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7OztJQUcvQixDQUFDO0lBQ0gsR0FBRztRQUFDeUI7UUFBUUM7S0FBTTtJQUVsQiw2REFBNkQ7SUFDN0QsNERBQTREO0lBQzVELE1BQU1xQixXQUFXUixJQUFBQSxrQkFBVyxFQUMxQixDQUFDakQsTUFBY3hCO1FBQ2I2RCxTQUFTLENBQUNxQjtZQUNSLHdCQUF3QjtZQUN4QixNQUFNQyxlQUFldkIsTUFBTXdCLE1BQU0sR0FBRztZQUNwQyxNQUFNQyxXQUFXekIsS0FBSyxDQUFDdUIsYUFBYTtZQUNwQyxJQUFJRSxVQUFVO2dCQUNaLElBQUlBLFNBQVM3RCxJQUFJLEtBQUtBLE1BQU07b0JBQzFCLElBQUlBLFNBQVMsUUFBUTt3QkFDbkIsNENBQTRDO3dCQUM1QyxPQUFPOytCQUNGb0MsTUFBTTBCLEtBQUssQ0FBQyxHQUFHSDs0QkFDbEI7Z0NBQUUsR0FBR0UsUUFBUTtnQ0FBRXJGLE9BQU9xRixTQUFTckYsS0FBSyxHQUFHQTs0QkFBTTt5QkFDOUM7b0JBQ0gsT0FBTzt3QkFDTCxvRUFBb0U7d0JBQ3BFLElBQUlxRixTQUFTckYsS0FBSyxLQUFLQSxPQUFPOzRCQUM1QixPQUFPO21DQUFJNEQsTUFBTTBCLEtBQUssQ0FBQyxHQUFHSDtnQ0FBZTtvQ0FBRSxHQUFHRSxRQUFRO29DQUFFcEQsT0FBT29ELFNBQVNwRCxLQUFLLEdBQUc7Z0NBQUU7NkJBQUU7d0JBQ3RGO29CQUNGO2dCQUNGO1lBQ0Y7WUFDQSx5Q0FBeUM7WUFDekMsT0FBTzttQkFBSWlEO2dCQUFjO29CQUFFMUQ7b0JBQU1TLE9BQU87b0JBQUdqQztnQkFBTTthQUFFO1FBQ3JEO0lBQ0YsR0FDQTtRQUFDNEQ7UUFBT0M7S0FBUztJQUduQjBCLElBQUFBLHNCQUFlLEVBQUM7UUFDZCxNQUFNQyxZQUFZLENBQUNyRDtZQUNqQixJQUFJLENBQUM0QixhQUFhO2dCQUNoQjtZQUNGO1lBQ0EsTUFBTTBCLE1BQU10RCxNQUFNc0QsR0FBRztZQUNyQixJQUFJL0YsWUFBWXlDLFFBQVE7Z0JBQ3RCOEMsU0FBUyxhQUFhO1lBQ3hCLE9BQU8sSUFBSXpCLFdBQVdrQyxHQUFHLENBQUNELE1BQU07Z0JBQzlCUixTQUFTLFNBQVM5QyxNQUFNc0QsR0FBRztZQUM3QixPQUFPLElBQUk7bUJBQUlBO2FBQUksQ0FBQ0wsTUFBTSxHQUFHLEdBQUc7Z0JBQzlCSCxTQUFTLFdBQVc5QyxNQUFNc0QsR0FBRztZQUMvQixPQUFPO2dCQUNMUixTQUFTLFFBQVE5QyxNQUFNc0QsR0FBRztZQUM1QjtRQUNGO1FBRUEsTUFBTUUsVUFBVSxDQUFDeEQ7WUFDZixJQUFJLENBQUM0QixhQUFhO2dCQUNoQjtZQUNGO1lBQ0EsTUFBTTBCLE1BQU10RCxNQUFNc0QsR0FBRztZQUNyQixJQUFJLENBQUNqQyxXQUFXa0MsR0FBRyxDQUFDRCxRQUFRO21CQUFJQTthQUFJLENBQUNMLE1BQU0sR0FBRyxHQUFHO2dCQUMvQ0gsU0FBUyxTQUFTOUMsTUFBTXNELEdBQUc7WUFDN0I7UUFDRjtRQUVBLE9BQU85QixPQUFPaUMsb0JBQW9CLENBQ2hDLENBQUM5QyxhQUFpQytDO1lBQ2hDLElBQUlBLG9CQUFvQixNQUFNO2dCQUM1QkEsZ0JBQWdCQyxtQkFBbUIsQ0FBQyxXQUFXTjtnQkFDL0NLLGdCQUFnQkMsbUJBQW1CLENBQUMsU0FBU0g7WUFDL0M7WUFDQSxJQUFJN0MsZ0JBQWdCLE1BQU07Z0JBQ3hCQSxZQUFZaUQsZ0JBQWdCLENBQUMsV0FBV1A7Z0JBQ3hDMUMsWUFBWWlELGdCQUFnQixDQUFDLFNBQVNKO1lBQ3hDO1FBQ0Y7SUFFSixHQUFHO1FBQUNoQztRQUFRSTtRQUFha0I7S0FBUztJQUVsQ00sSUFBQUEsc0JBQWUsRUFBQztRQUNkLElBQUloQixPQUFPeUIsT0FBTyxFQUFFO1lBQ2xCekIsT0FBT3lCLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDLEdBQUcxQixPQUFPeUIsT0FBTyxDQUFDRSxZQUFZO1FBQ3hEO0lBQ0YsR0FBRztRQUFDeEI7S0FBb0I7SUFFeEJ5QixJQUFBQSxnQkFBUyxFQUFDO1FBQ1IsSUFBSXZDLE9BQU87WUFDVCxNQUFNd0MsY0FBYzFCO1lBQ3BCLElBQUkwQixnQkFBZ0IsTUFBTTtnQkFDeEJqQyxpQkFBaUJpQztZQUNuQjtZQUNBLElBQUk3QixPQUFPeUIsT0FBTyxFQUFFO2dCQUNsQnpCLE9BQU95QixPQUFPLENBQUNDLFFBQVEsQ0FBQyxHQUFHMUIsT0FBT3lCLE9BQU8sQ0FBQ0UsWUFBWTtZQUN4RDtRQUNGO0lBQ0YsR0FBRztRQUFDeEI7UUFBcUJkO0tBQU07SUFFL0J1QyxJQUFBQSxnQkFBUyxFQUFDO1FBQ1IsTUFBTUUsdUJBQXVCMUMsT0FBTzJDLHNCQUFzQixDQUN4RCxDQUFDLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxFQUFFQyxXQUFXLEVBQUU7WUFDMUMsSUFBSSxDQUFDMUMsYUFBYTtnQkFDaEI7WUFDRjtZQUNBLE1BQU0yQyxtQkFBbUJELFlBQVlFLFVBQVU7WUFDL0MsTUFBTUMsb0JBQW9CeEMscUJBQXFCNEIsT0FBTztZQUN0RCxNQUFNYSwwQkFBMEJ2QywyQkFBMkIwQixPQUFPO1lBQ2xFLElBQUlZLHNCQUFzQkYsa0JBQWtCO2dCQUMxQyxJQUFJRixZQUFZTSxJQUFJLEtBQUssS0FBS1AsY0FBY08sSUFBSSxLQUFLLEtBQUssQ0FBQ0QseUJBQXlCO29CQUNsRixNQUFNakMsbUJBQW1CQyxPQUFPQyxZQUFZO29CQUM1QyxJQUNFRixvQkFDQ0EsQ0FBQUEsaUJBQWlCbEMsVUFBVSxJQUFJLFFBQVFrQyxpQkFBaUJqQyxTQUFTLElBQUksSUFBRyxHQUN6RTt3QkFDQTtvQkFDRjtnQkFDRjtnQkFDQXlCLHFCQUFxQjRCLE9BQU8sR0FBR1U7WUFDakM7WUFDQXBDLDJCQUEyQjBCLE9BQU8sR0FBRztZQUNyQyxNQUFNSSxjQUFjMUI7WUFDcEIsSUFBSTBCLGdCQUFnQixNQUFNO2dCQUN4QmpDLGlCQUFpQmlDO1lBQ25CO1FBQ0Y7UUFFRixPQUFPQztJQUNULEdBQUc7UUFBQzFDO1FBQVFlO1FBQXFCWDtRQUFha0I7S0FBUztJQUV2RCxpQkFBaUI7SUFDakJrQixJQUFBQSxnQkFBUyxFQUFDO1FBQ1IsSUFBSSxDQUFDcEMsYUFBYTtZQUNoQjtRQUNGO1FBQ0EsTUFBTXNDLHVCQUF1QjFDLE9BQU8yQyxzQkFBc0IsQ0FBQztZQUN6RCxNQUFNeEQsY0FBY2EsT0FBT2dCLGNBQWM7WUFDekMsSUFBSTdCLGdCQUFnQixNQUFNO2dCQUN4Qm1CLG9CQUFvQm5CLGFBQWFpRTtZQUNuQztRQUNGO1FBQ0EsT0FBT1Y7SUFDVCxHQUFHO1FBQUMxQztRQUFRSTtLQUFZO0lBRXhCLG1DQUFtQztJQUNuQyxNQUFNaUQsd0JBQXdCdkMsSUFBQUEsa0JBQVcsRUFDdkMsQ0FBQ3dDO1FBQ0MsSUFBSSxDQUFDbEQsYUFBYTtZQUNoQmtELGNBQWNDLE1BQU0sQ0FBQztnQkFDbkIsTUFBTUMsT0FBT0MsSUFBQUEsaUJBQVE7Z0JBQ3JCRCxLQUFLRSxLQUFLO2dCQUNWLE1BQU16SCxPQUFPMEgsSUFBQUEsd0JBQWU7Z0JBQzVCSCxLQUFLSSxNQUFNLENBQUNDLElBQUFBLDZCQUFvQixJQUFHRCxNQUFNLENBQUMzSDtnQkFDMUNBLEtBQUtXLE1BQU07WUFDYjtZQUNBc0QsU0FBUyxFQUFFO1FBQ2I7UUFDQUcsZUFBZSxDQUFDeUQscUJBQXVCLENBQUNBO0lBQzFDLEdBQ0E7UUFBQzFEO0tBQVk7SUFHZixNQUFNMkQsa0JBQWtCakQsSUFBQUEsa0JBQVcsRUFBQztRQUNsQyxJQUFJLENBQUNWLGFBQWE7WUFDaEI7UUFDRjtRQUNBLE1BQU1hLG1CQUFtQkMsT0FBT0MsWUFBWTtRQUM1QyxJQUNFRixxQkFBcUIsUUFDckJBLGlCQUFpQmxDLFVBQVUsSUFBSSxRQUMvQmtDLGlCQUFpQmpDLFNBQVMsSUFBSSxNQUM5QjtZQUNBO1FBQ0Y7UUFDQSxNQUFNLEVBQUVELFVBQVUsRUFBRWIsWUFBWSxFQUFFYyxTQUFTLEVBQUVaLFdBQVcsRUFBRSxHQUFHUyxrQkFBa0JvQztRQUMvRSxNQUFNOUIsY0FBYzBCLG1CQUFtQkcsY0FBYztRQUNyRCxJQUFJaEQ7UUFDSixJQUFJZSxlQUFlLE1BQU07WUFDdkJmLGFBQWFpQix3QkFBd0JGLFlBQVlJO1FBQ25EO1FBQ0EsSUFBSWhCO1FBQ0osSUFBSWEsY0FBYyxNQUFNO1lBQ3RCYixZQUFZYyx3QkFBd0JELFdBQVdHO1FBQ2pEO1FBQ0FtQyxTQUFTLFlBQVk7WUFDbkJ2QztZQUNBYjtZQUNBRjtZQUNBZ0I7WUFDQVo7WUFDQUQ7UUFDRjtJQUNGLEdBQUc7UUFBQ21EO1FBQVVsQjtRQUFhUztLQUFpQjtJQUU1QyxNQUFNbUQsY0FBY2xELElBQUFBLGtCQUFXLEVBQUM7UUFDOUI5RSxLQUFLK0U7SUFDUCxHQUFHO1FBQUNBO0tBQW9CO0lBRXhCLE1BQU1rRCxrQkFBa0JuRCxJQUFBQSxrQkFBVyxFQUFDO1FBQ2xDM0QsU0FBUyxXQUFXNEQ7SUFDdEIsR0FBRztRQUFDQTtLQUFvQjtJQUV4QixNQUFNbUQsdUJBQ0oscUJBQUNBO1FBQ0NDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRS9ELGNBQWMsV0FBVyxHQUFHLENBQUM7UUFDN0RnRSxJQUFHO1FBQ0hDLFNBQVMsQ0FBQ0M7WUFDUmpCLHNCQUFzQnhDO1lBQ3RCeUQsRUFBRUMsY0FBYztRQUNsQjtRQUNBQyxPQUFPcEUsY0FBYywwQkFBMEI7UUFDL0NxRSxNQUFLO09BRUpyRSxjQUFjLDBCQUEwQjtJQUc3QyxNQUFNc0UsU0FBU3RFLDRCQUNiLHFCQUFDdUU7UUFBSVIsV0FBVTtxQkFDYixxQkFBQ1E7UUFBSVIsV0FBVTtxQkFDYixxQkFBQ0Q7UUFDQ0MsV0FBVTtRQUNWQyxJQUFHO1FBQ0hDLFNBQVMsQ0FBQ0M7WUFDUlA7WUFDQU8sRUFBRUMsY0FBYztRQUNsQjtRQUNBQyxPQUFNO1FBQ05DLE1BQUs7T0FDTixrQ0FHRCxxQkFBQ1A7UUFDQ0MsV0FBVTtRQUNWQyxJQUFHO1FBQ0hDLFNBQVMsQ0FBQ0M7WUFDUk47WUFDQU0sRUFBRUMsY0FBYztRQUNsQjtRQUNBQyxPQUFNO1FBQ05DLE1BQUs7T0FDTix1QkFHRCxxQkFBQ1A7UUFDQ0MsV0FBVTtRQUNWQyxJQUFHO1FBQ0hDLFNBQVMsQ0FBQ0M7WUFDUkw7WUFDQUssRUFBRUMsY0FBYztRQUNsQjtRQUNBQyxPQUFNO1FBQ05DLE1BQUs7T0FDTiw0QkFJSCxxQkFBQ0c7UUFBSVIsSUFBRztRQUFnQlMsS0FBS2pFO09BQzFCTCxrQkFHSDtJQUVKLE9BQU87UUFBQzJEO1FBQVFRO0tBQU87QUFDekI7QUFDTyxNQUFNNUkscUJBQStCO0lBQzFDLE1BQU0sQ0FBQ2tFLE9BQU8sR0FBRzhFLElBQUFBLGlEQUF5QjtJQUMxQyxNQUFNLENBQUNDLG9CQUFvQkMsbUJBQW1CLEdBQUdqRixnQkFBZ0JDO0lBRWpFLHFCQUNFLHFCQUFDaUYsT0FBTUMsUUFBUSxzQkFDYixxQkFBQ0MsV0FBRSxPQUNGSixvQkFDQUMsa0NBQ0QscUJBQUNHLFdBQUU7QUFHVCJ9
446
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9kZWJ1Zy90ZXN0cmVjb3JkZXIvcGx1Z2luL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgQmFzZVNlbGVjdGlvbiwgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgJGNyZWF0ZVBhcmFncmFwaE5vZGUsICRjcmVhdGVUZXh0Tm9kZSwgJGdldFJvb3QgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgSVNfQVBQTEUgfSBmcm9tICcuLi8uLi8uLi8uLi9sZXhpY2FsL3V0aWxzL2Vudmlyb25tZW50J1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmNvbnN0IGNvcHkgPSAodGV4dDogbnVsbCB8IHN0cmluZykgPT4ge1xuICBjb25zdCB0ZXh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJylcbiAgdGV4dEFyZWEudmFsdWUgPSB0ZXh0IHx8ICcnXG4gIHRleHRBcmVhLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xuICB0ZXh0QXJlYS5zdHlsZS5vcGFjaXR5ID0gJzAnXG4gIGRvY3VtZW50LmJvZHk/LmFwcGVuZENoaWxkKHRleHRBcmVhKVxuICB0ZXh0QXJlYS5mb2N1cygpXG4gIHRleHRBcmVhLnNlbGVjdCgpXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2cocmVzdWx0KVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gIH1cbiAgZG9jdW1lbnQuYm9keT8ucmVtb3ZlQ2hpbGQodGV4dEFyZWEpXG59XG5cbmNvbnN0IGRvd25sb2FkID0gKGZpbGVuYW1lOiBzdHJpbmcsIHRleHQ6IG51bGwgfCBzdHJpbmcpID0+IHtcbiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsICdkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KHRleHQgfHwgJycpKVxuICBhLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSlcbiAgYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG4gIGRvY3VtZW50LmJvZHk/LmFwcGVuZENoaWxkKGEpXG4gIGEuY2xpY2soKVxuICBkb2N1bWVudC5ib2R5Py5yZW1vdmVDaGlsZChhKVxufVxuXG5jb25zdCBmb3JtYXRTdGVwID0gKHN0ZXA6IFN0ZXApID0+IHtcbiAgY29uc3QgZm9ybWF0T25lU3RlcCA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBTdGVwWyd2YWx1ZSddKSA9PiB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlICdjbGljayc6IHtcbiAgICAgICAgcmV0dXJuIGAgICAgICBhd2FpdCBwYWdlLm1vdXNlLmNsaWNrKCR7dmFsdWUueH0sICR7dmFsdWUueX0pO2BcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ByZXNzJzoge1xuICAgICAgICByZXR1cm4gYCAgICAgIGF3YWl0IHBhZ2Uua2V5Ym9hcmQucHJlc3MoJyR7dmFsdWV9Jyk7YFxuICAgICAgfVxuICAgICAgY2FzZSAna2V5ZG93bic6IHtcbiAgICAgICAgcmV0dXJuIGAgICAgICBhd2FpdCBwYWdlLmtleWJvYXJkLmtleWRvd24oJyR7dmFsdWV9Jyk7YFxuICAgICAgfVxuICAgICAgY2FzZSAna2V5dXAnOiB7XG4gICAgICAgIHJldHVybiBgICAgICAgYXdhaXQgcGFnZS5rZXlib2FyZC5rZXl1cCgnJHt2YWx1ZX0nKTtgXG4gICAgICB9XG4gICAgICBjYXNlICd0eXBlJzoge1xuICAgICAgICByZXR1cm4gYCAgICAgIGF3YWl0IHBhZ2Uua2V5Ym9hcmQudHlwZSgnJHt2YWx1ZX0nKTtgXG4gICAgICB9XG4gICAgICBjYXNlICdzZWxlY3RBbGwnOiB7XG4gICAgICAgIHJldHVybiBgICAgICAgYXdhaXQgc2VsZWN0QWxsKHBhZ2UpO2BcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3NuYXBzaG90Jzoge1xuICAgICAgICByZXR1cm4gYCAgICAgIGF3YWl0IGFzc2VydEhUTUxTbmFwc2hvdChwYWdlKTtcbiAgICAgIGF3YWl0IGFzc2VydFNlbGVjdGlvbihwYWdlLCB7XG4gICAgICAgIGFuY2hvclBhdGg6IFske3ZhbHVlLmFuY2hvclBhdGgudG9TdHJpbmcoKX1dLFxuICAgICAgICBhbmNob3JPZmZzZXQ6ICR7dmFsdWUuYW5jaG9yT2Zmc2V0fSxcbiAgICAgICAgZm9jdXNQYXRoOiBbJHt2YWx1ZS5mb2N1c1BhdGgudG9TdHJpbmcoKX1dLFxuICAgICAgICBmb2N1c09mZnNldDogJHt2YWx1ZS5mb2N1c09mZnNldH0sXG4gICAgICB9KTtcbmBcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBgYFxuICAgIH1cbiAgfVxuICBjb25zdCBmb3JtYXR0ZWRTdGVwID0gZm9ybWF0T25lU3RlcChzdGVwLm5hbWUsIHN0ZXAudmFsdWUpXG4gIHN3aXRjaCAoc3RlcC5jb3VudCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBmb3JtYXR0ZWRTdGVwXG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIFtmb3JtYXR0ZWRTdGVwLCBmb3JtYXR0ZWRTdGVwXS5qb2luKGBcXG5gKVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYCAgICAgIGF3YWl0IHJlcGVhdCgke3N0ZXAuY291bnR9LCBhc3luYyAoKSA9PiB7XG4gICR7Zm9ybWF0dGVkU3RlcH1cbiAgICAgICk7YFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdEFsbChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXZlbnQua2V5Q29kZSA9PT0gNjUgJiYgKElTX0FQUExFID8gZXZlbnQubWV0YUtleSA6IGV2ZW50LmN0cmxLZXkpXG59XG5cbi8vIHN0b2xlbiBmcm9tIExleGljYWxTZWxlY3Rpb24tdGVzdFxuZnVuY3Rpb24gc2FuaXRpemVTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZWxlY3Rpb24pIHtcbiAgY29uc3QgeyBhbmNob3JOb2RlLCBmb2N1c05vZGUgfSA9IHNlbGVjdGlvblxuICBsZXQgeyBhbmNob3JPZmZzZXQsIGZvY3VzT2Zmc2V0IH0gPSBzZWxlY3Rpb25cbiAgaWYgKGFuY2hvck9mZnNldCAhPT0gMCkge1xuICAgIGFuY2hvck9mZnNldC0tXG4gIH1cbiAgaWYgKGZvY3VzT2Zmc2V0ICE9PSAwKSB7XG4gICAgZm9jdXNPZmZzZXQtLVxuICB9XG4gIHJldHVybiB7IGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwgZm9jdXNOb2RlLCBmb2N1c09mZnNldCB9XG59XG5cbmZ1bmN0aW9uIGdldFBhdGhGcm9tTm9kZVRvRWRpdG9yKG5vZGU6IE5vZGUsIHJvb3RFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgbGV0IGN1cnJlbnROb2RlOiBOb2RlIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG5vZGVcbiAgY29uc3QgcGF0aCA9IFtdXG4gIHdoaWxlIChjdXJyZW50Tm9kZSAhPT0gcm9vdEVsZW1lbnQpIHtcbiAgICBpZiAoY3VycmVudE5vZGUgIT09IG51bGwgJiYgY3VycmVudE5vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGF0aC51bnNoaWZ0KFxuICAgICAgICBBcnJheS5mcm9tKGN1cnJlbnROb2RlPy5wYXJlbnROb2RlPy5jaGlsZE5vZGVzID8/IFtdKS5pbmRleE9mKGN1cnJlbnROb2RlIGFzIENoaWxkTm9kZSksXG4gICAgICApXG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGU/LnBhcmVudE5vZGVcbiAgfVxuICByZXR1cm4gcGF0aFxufVxuXG5jb25zdCBrZXlQcmVzc2VzID0gbmV3IFNldChbXG4gICdFbnRlcicsXG4gICdCYWNrc3BhY2UnLFxuICAnRGVsZXRlJyxcbiAgJ0VzY2FwZScsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93RG93bicsXG5dKVxuXG50eXBlIFN0ZXAgPSB7XG4gIGNvdW50OiBudW1iZXJcbiAgbmFtZTogc3RyaW5nXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHZhbHVlOiBhbnlcbn1cblxudHlwZSBTdGVwcyA9IFN0ZXBbXVxuXG5mdW5jdGlvbiB1c2VUZXN0UmVjb3JkZXIoZWRpdG9yOiBMZXhpY2FsRWRpdG9yKTogW0pTWC5FbGVtZW50LCBKU1guRWxlbWVudCB8IG51bGxdIHtcbiAgY29uc3QgW3N0ZXBzLCBzZXRTdGVwc10gPSB1c2VTdGF0ZTxTdGVwcz4oW10pXG4gIGNvbnN0IFtpc1JlY29yZGluZywgc2V0SXNSZWNvcmRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFssIHNldEN1cnJlbnRJbm5lckhUTUxdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0ZW1wbGF0ZWRUZXN0LCBzZXRUZW1wbGF0ZWRUZXN0XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBwcmV2aW91c1NlbGVjdGlvblJlZiA9IHVzZVJlZjxCYXNlU2VsZWN0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3Qgc2tpcE5leHRTZWxlY3Rpb25DaGFuZ2VSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHByZVJlZiA9IHVzZVJlZjxIVE1MUHJlRWxlbWVudD4obnVsbClcblxuICBjb25zdCBnZXRDdXJyZW50RWRpdG9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJldHVybiBlZGl0b3JcbiAgfSwgW2VkaXRvcl0pXG5cbiAgY29uc3QgZ2VuZXJhdGVUZXN0Q29udGVudCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgY29uc3QgYnJvd3NlclNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuXG4gICAgaWYgKFxuICAgICAgcm9vdEVsZW1lbnQgPT0gbnVsbCB8fFxuICAgICAgYnJvd3NlclNlbGVjdGlvbiA9PSBudWxsIHx8XG4gICAgICBicm93c2VyU2VsZWN0aW9uLmFuY2hvck5vZGUgPT0gbnVsbCB8fFxuICAgICAgYnJvd3NlclNlbGVjdGlvbi5mb2N1c05vZGUgPT0gbnVsbCB8fFxuICAgICAgIXJvb3RFbGVtZW50LmNvbnRhaW5zKGJyb3dzZXJTZWxlY3Rpb24uYW5jaG9yTm9kZSkgfHxcbiAgICAgICFyb290RWxlbWVudC5jb250YWlucyhicm93c2VyU2VsZWN0aW9uLmZvY3VzTm9kZSlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIGBcbmltcG9ydCB7XG4gIGluaXRpYWxpemVFMkUsXG4gIGFzc2VydEhUTUxTbmFwc2hvdCxcbiAgYXNzZXJ0U2VsZWN0aW9uLFxuICByZXBlYXQsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7c2VsZWN0QWxsfSBmcm9tICcuLi9rZXlib2FyZFNob3J0Y3V0cyc7XG5pbXBvcnQgeyBSYW5nZVNlbGVjdGlvbiB9IGZyb20gJ2xleGljYWwnO1xuaW1wb3J0IHsgTm9kZVNlbGVjdGlvbiB9IGZyb20gJ2xleGljYWwnO1xuXG5kZXNjcmliZSgnVGVzdCBjYXNlJywgKCkgPT4ge1xuICBpbml0aWFsaXplRTJFKChlMmUpID0+IHtcbiAgICBpdCgnU2hvdWxkIHBhc3MgdGhpcyB0ZXN0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qge3BhZ2V9ID0gZTJlO1xuXG4gICAgICBhd2FpdCBwYWdlLmZvY3VzKCdkaXZbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScpO1xuJHtzdGVwcy5tYXAoZm9ybWF0U3RlcCkuam9pbihgXFxuYCl9XG4gICAgfSk7XG59KTtcbiAgICBgXG4gIH0sIFtlZGl0b3IsIHN0ZXBzXSlcblxuICAvLyBqdXN0IGEgd3JhcHBlciBhcm91bmQgaW5zZXJ0aW5nIG5ldyBhY3Rpb25zIHNvIHRoYXQgd2UgY2FuXG4gIC8vIGNvYWxlc2NlIHNvbWUgYWN0aW9ucyBsaWtlIGluc2VydFRleHQvbW92ZU5hdGl2ZVNlbGVjdGlvblxuICBjb25zdCBwdXNoU3RlcCA9IHVzZUNhbGxiYWNrKFxuICAgIChuYW1lOiBzdHJpbmcsIHZhbHVlOiBTdGVwWyd2YWx1ZSddKSA9PiB7XG4gICAgICBzZXRTdGVwcygoY3VycmVudFN0ZXBzKSA9PiB7XG4gICAgICAgIC8vIHRyeWluZyB0byBncm91cCBzdGVwc1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBzdGVwcy5sZW5ndGggLSAxXG4gICAgICAgIGNvbnN0IGxhc3RTdGVwID0gc3RlcHNbY3VycmVudEluZGV4XVxuICAgICAgICBpZiAobGFzdFN0ZXApIHtcbiAgICAgICAgICBpZiAobGFzdFN0ZXAubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICd0eXBlJykge1xuICAgICAgICAgICAgICAvLyBmb3IgdHlwaW5nIGV2ZW50cyB3ZSBqdXN0IGFwcGVuZCB0aGUgdGV4dFxuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIC4uLnN0ZXBzLnNsaWNlKDAsIGN1cnJlbnRJbmRleCksXG4gICAgICAgICAgICAgICAgeyAuLi5sYXN0U3RlcCwgdmFsdWU6IGxhc3RTdGVwLnZhbHVlICsgdmFsdWUgfSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gZm9yIG90aGVyIGV2ZW50cyB3ZSBidW1wIHRoZSBjb3VudGVyIGlmIHRoZWlyIHZhbHVlcyBhcmUgdGhlIHNhbWVcbiAgICAgICAgICAgICAgaWYgKGxhc3RTdGVwLnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uc3RlcHMuc2xpY2UoMCwgY3VycmVudEluZGV4KSwgeyAuLi5sYXN0U3RlcCwgY291bnQ6IGxhc3RTdGVwLmNvdW50ICsgMSB9XVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvdWxkIG5vdCBncm91cCwganVzdCBhcHBlbmQgYSBuZXcgb25lXG4gICAgICAgIHJldHVybiBbLi4uY3VycmVudFN0ZXBzLCB7IG5hbWUsIGNvdW50OiAxLCB2YWx1ZSB9XVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtzdGVwcywgc2V0U3RlcHNdLFxuICApXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbktleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmICghaXNSZWNvcmRpbmcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBrZXkgPSBldmVudC5rZXlcbiAgICAgIGlmIChpc1NlbGVjdEFsbChldmVudCkpIHtcbiAgICAgICAgcHVzaFN0ZXAoJ3NlbGVjdEFsbCcsICcnKVxuICAgICAgfSBlbHNlIGlmIChrZXlQcmVzc2VzLmhhcyhrZXkpKSB7XG4gICAgICAgIHB1c2hTdGVwKCdwcmVzcycsIGV2ZW50LmtleSlcbiAgICAgIH0gZWxzZSBpZiAoWy4uLmtleV0ubGVuZ3RoID4gMSkge1xuICAgICAgICBwdXNoU3RlcCgna2V5ZG93bicsIGV2ZW50LmtleSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHB1c2hTdGVwKCd0eXBlJywgZXZlbnQua2V5KVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9uS2V5VXAgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmICghaXNSZWNvcmRpbmcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBrZXkgPSBldmVudC5rZXlcbiAgICAgIGlmICgha2V5UHJlc3Nlcy5oYXMoa2V5KSAmJiBbLi4ua2V5XS5sZW5ndGggPiAxKSB7XG4gICAgICAgIHB1c2hTdGVwKCdrZXl1cCcsIGV2ZW50LmtleSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZWRpdG9yLnJlZ2lzdGVyUm9vdExpc3RlbmVyKFxuICAgICAgKHJvb3RFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwsIHByZXZSb290RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmIChwcmV2Um9vdEVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICBwcmV2Um9vdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bilcbiAgICAgICAgICBwcmV2Um9vdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBvbktleVVwKVxuICAgICAgICB9XG4gICAgICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJvb3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pXG4gICAgICAgICAgcm9vdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBvbktleVVwKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIClcbiAgfSwgW2VkaXRvciwgaXNSZWNvcmRpbmcsIHB1c2hTdGVwXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcmVSZWYuY3VycmVudCkge1xuICAgICAgcHJlUmVmLmN1cnJlbnQuc2Nyb2xsVG8oMCwgcHJlUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0KVxuICAgIH1cbiAgfSwgW2dlbmVyYXRlVGVzdENvbnRlbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0ZXBzKSB7XG4gICAgICBjb25zdCB0ZXN0Q29udGVudCA9IGdlbmVyYXRlVGVzdENvbnRlbnQoKVxuICAgICAgaWYgKHRlc3RDb250ZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHNldFRlbXBsYXRlZFRlc3QodGVzdENvbnRlbnQpXG4gICAgICB9XG4gICAgICBpZiAocHJlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcHJlUmVmLmN1cnJlbnQuc2Nyb2xsVG8oMCwgcHJlUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2dlbmVyYXRlVGVzdENvbnRlbnQsIHN0ZXBzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJlbW92ZVVwZGF0ZUxpc3RlbmVyID0gZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoXG4gICAgICAoeyBkaXJ0eUVsZW1lbnRzLCBkaXJ0eUxlYXZlcywgZWRpdG9yU3RhdGUgfSkgPT4ge1xuICAgICAgICBpZiAoIWlzUmVjb3JkaW5nKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IGVkaXRvclN0YXRlLl9zZWxlY3Rpb25cbiAgICAgICAgY29uc3QgcHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvblJlZi5jdXJyZW50XG4gICAgICAgIGNvbnN0IHNraXBOZXh0U2VsZWN0aW9uQ2hhbmdlID0gc2tpcE5leHRTZWxlY3Rpb25DaGFuZ2VSZWYuY3VycmVudFxuICAgICAgICBpZiAocHJldmlvdXNTZWxlY3Rpb24gIT09IGN1cnJlbnRTZWxlY3Rpb24pIHtcbiAgICAgICAgICBpZiAoZGlydHlMZWF2ZXMuc2l6ZSA9PT0gMCAmJiBkaXJ0eUVsZW1lbnRzLnNpemUgPT09IDAgJiYgIXNraXBOZXh0U2VsZWN0aW9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCBicm93c2VyU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGJyb3dzZXJTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICAgKGJyb3dzZXJTZWxlY3Rpb24uYW5jaG9yTm9kZSA9PSBudWxsIHx8IGJyb3dzZXJTZWxlY3Rpb24uZm9jdXNOb2RlID09IG51bGwpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uUmVmLmN1cnJlbnQgPSBjdXJyZW50U2VsZWN0aW9uXG4gICAgICAgIH1cbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb25DaGFuZ2VSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIGNvbnN0IHRlc3RDb250ZW50ID0gZ2VuZXJhdGVUZXN0Q29udGVudCgpXG4gICAgICAgIGlmICh0ZXN0Q29udGVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHNldFRlbXBsYXRlZFRlc3QodGVzdENvbnRlbnQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKVxuICAgIHJldHVybiByZW1vdmVVcGRhdGVMaXN0ZW5lclxuICB9LCBbZWRpdG9yLCBnZW5lcmF0ZVRlc3RDb250ZW50LCBpc1JlY29yZGluZywgcHVzaFN0ZXBdKVxuXG4gIC8vIHNhdmUgaW5uZXJIVE1MXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc1JlY29yZGluZykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHJlbW92ZVVwZGF0ZUxpc3RlbmVyID0gZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgICAgaWYgKHJvb3RFbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHNldEN1cnJlbnRJbm5lckhUTUwocm9vdEVsZW1lbnQ/LmlubmVySFRNTClcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiByZW1vdmVVcGRhdGVMaXN0ZW5lclxuICB9LCBbZWRpdG9yLCBpc1JlY29yZGluZ10pXG5cbiAgLy8gY2xlYXIgZWRpdG9yIGFuZCBzdGFydCByZWNvcmRpbmdcbiAgY29uc3QgdG9nZ2xlRWRpdG9yU2VsZWN0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKGN1cnJlbnRFZGl0b3I6IExleGljYWxFZGl0b3IpID0+IHtcbiAgICAgIGlmICghaXNSZWNvcmRpbmcpIHtcbiAgICAgICAgY3VycmVudEVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvb3QgPSAkZ2V0Um9vdCgpXG4gICAgICAgICAgcm9vdC5jbGVhcigpXG4gICAgICAgICAgY29uc3QgdGV4dCA9ICRjcmVhdGVUZXh0Tm9kZSgpXG4gICAgICAgICAgcm9vdC5hcHBlbmQoJGNyZWF0ZVBhcmFncmFwaE5vZGUoKS5hcHBlbmQodGV4dCkpXG4gICAgICAgICAgdGV4dC5zZWxlY3QoKVxuICAgICAgICB9KVxuICAgICAgICBzZXRTdGVwcyhbXSlcbiAgICAgIH1cbiAgICAgIHNldElzUmVjb3JkaW5nKChjdXJyZW50SXNSZWNvcmRpbmcpID0+ICFjdXJyZW50SXNSZWNvcmRpbmcpXG4gICAgfSxcbiAgICBbaXNSZWNvcmRpbmddLFxuICApXG5cbiAgY29uc3Qgb25TbmFwc2hvdENsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghaXNSZWNvcmRpbmcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBicm93c2VyU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgaWYgKFxuICAgICAgYnJvd3NlclNlbGVjdGlvbiA9PT0gbnVsbCB8fFxuICAgICAgYnJvd3NlclNlbGVjdGlvbi5hbmNob3JOb2RlID09IG51bGwgfHxcbiAgICAgIGJyb3dzZXJTZWxlY3Rpb24uZm9jdXNOb2RlID09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCB7IGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwgZm9jdXNOb2RlLCBmb2N1c09mZnNldCB9ID0gc2FuaXRpemVTZWxlY3Rpb24oYnJvd3NlclNlbGVjdGlvbilcbiAgICBjb25zdCByb290RWxlbWVudCA9IGdldEN1cnJlbnRFZGl0b3IoKS5nZXRSb290RWxlbWVudCgpXG4gICAgbGV0IGFuY2hvclBhdGhcbiAgICBpZiAoYW5jaG9yTm9kZSAhPT0gbnVsbCkge1xuICAgICAgYW5jaG9yUGF0aCA9IGdldFBhdGhGcm9tTm9kZVRvRWRpdG9yKGFuY2hvck5vZGUsIHJvb3RFbGVtZW50KVxuICAgIH1cbiAgICBsZXQgZm9jdXNQYXRoXG4gICAgaWYgKGZvY3VzTm9kZSAhPT0gbnVsbCkge1xuICAgICAgZm9jdXNQYXRoID0gZ2V0UGF0aEZyb21Ob2RlVG9FZGl0b3IoZm9jdXNOb2RlLCByb290RWxlbWVudClcbiAgICB9XG4gICAgcHVzaFN0ZXAoJ3NuYXBzaG90Jywge1xuICAgICAgYW5jaG9yTm9kZSxcbiAgICAgIGFuY2hvck9mZnNldCxcbiAgICAgIGFuY2hvclBhdGgsXG4gICAgICBmb2N1c05vZGUsXG4gICAgICBmb2N1c09mZnNldCxcbiAgICAgIGZvY3VzUGF0aCxcbiAgICB9KVxuICB9LCBbcHVzaFN0ZXAsIGlzUmVjb3JkaW5nLCBnZXRDdXJyZW50RWRpdG9yXSlcblxuICBjb25zdCBvbkNvcHlDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb3B5KGdlbmVyYXRlVGVzdENvbnRlbnQoKSlcbiAgfSwgW2dlbmVyYXRlVGVzdENvbnRlbnRdKVxuXG4gIGNvbnN0IG9uRG93bmxvYWRDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkb3dubG9hZCgndGVzdC5qcycsIGdlbmVyYXRlVGVzdENvbnRlbnQoKSlcbiAgfSwgW2dlbmVyYXRlVGVzdENvbnRlbnRdKVxuXG4gIGNvbnN0IGJ1dHRvbiA9IChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9e2BlZGl0b3ItZGV2LWJ1dHRvbiAke2lzUmVjb3JkaW5nID8gJ2FjdGl2ZScgOiAnJ31gfVxuICAgICAgaWQ9XCJ0ZXN0LXJlY29yZGVyLWJ1dHRvblwiXG4gICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICB0b2dnbGVFZGl0b3JTZWxlY3Rpb24oZ2V0Q3VycmVudEVkaXRvcigpKVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIH19XG4gICAgICB0aXRsZT17aXNSZWNvcmRpbmcgPyAnRGlzYWJsZSB0ZXN0IHJlY29yZGVyJyA6ICdFbmFibGUgdGVzdCByZWNvcmRlcid9XG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICB7aXNSZWNvcmRpbmcgPyAnRGlzYWJsZSB0ZXN0IHJlY29yZGVyJyA6ICdFbmFibGUgdGVzdCByZWNvcmRlcid9XG4gICAgPC9idXR0b24+XG4gIClcbiAgY29uc3Qgb3V0cHV0ID0gaXNSZWNvcmRpbmcgPyAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXN0LXJlY29yZGVyLW91dHB1dFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXN0LXJlY29yZGVyLXRvb2xiYXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cInRlc3QtcmVjb3JkZXItYnV0dG9uXCJcbiAgICAgICAgICBpZD1cInRlc3QtcmVjb3JkZXItYnV0dG9uLXNuYXBzaG90XCJcbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgb25TbmFwc2hvdENsaWNrKClcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIH19XG4gICAgICAgICAgdGl0bGU9XCJJbnNlcnQgc25hcHNob3RcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgSW5zZXJ0IFNuYXBzaG90XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGVzdC1yZWNvcmRlci1idXR0b25cIlxuICAgICAgICAgIGlkPVwidGVzdC1yZWNvcmRlci1idXR0b24tY29weVwiXG4gICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgIG9uQ29weUNsaWNrKClcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIH19XG4gICAgICAgICAgdGl0bGU9XCJDb3B5IHRvIGNsaXBib2FyZFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICBDb3B5XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGVzdC1yZWNvcmRlci1idXR0b25cIlxuICAgICAgICAgIGlkPVwidGVzdC1yZWNvcmRlci1idXR0b24tZG93bmxvYWRcIlxuICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICBvbkRvd25sb2FkQ2xpY2soKVxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgfX1cbiAgICAgICAgICB0aXRsZT1cIkRvd25sb2FkIGFzIGEgZmlsZVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICBEb3dubG9hZFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHByZSBpZD1cInRlc3QtcmVjb3JkZXJcIiByZWY9e3ByZVJlZn0+XG4gICAgICAgIHt0ZW1wbGF0ZWRUZXN0fVxuICAgICAgPC9wcmU+XG4gICAgPC9kaXY+XG4gICkgOiBudWxsXG5cbiAgcmV0dXJuIFtidXR0b24sIG91dHB1dF1cbn1cbmV4cG9ydCBjb25zdCBUZXN0UmVjb3JkZXJQbHVnaW46IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICBjb25zdCBbdGVzdFJlY29yZGVyQnV0dG9uLCB0ZXN0UmVjb3JkZXJPdXRwdXRdID0gdXNlVGVzdFJlY29yZGVyKGVkaXRvcilcblxuICByZXR1cm4gKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxwPkhJPC9wPlxuICAgICAge3Rlc3RSZWNvcmRlckJ1dHRvbn1cbiAgICAgIHt0ZXN0UmVjb3JkZXJPdXRwdXR9XG4gICAgICA8cD5ET05FPC9wPlxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiJGNyZWF0ZVBhcmFncmFwaE5vZGUiLCIkY3JlYXRlVGV4dE5vZGUiLCIkZ2V0Um9vdCIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIklTX0FQUExFIiwiY29weSIsInRleHQiLCJ0ZXh0QXJlYSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInZhbHVlIiwic3R5bGUiLCJwb3NpdGlvbiIsIm9wYWNpdHkiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJmb2N1cyIsInNlbGVjdCIsInJlc3VsdCIsImV4ZWNDb21tYW5kIiwiY29uc29sZSIsImxvZyIsImVycm9yIiwicmVtb3ZlQ2hpbGQiLCJkb3dubG9hZCIsImZpbGVuYW1lIiwiYSIsInNldEF0dHJpYnV0ZSIsImVuY29kZVVSSUNvbXBvbmVudCIsImRpc3BsYXkiLCJjbGljayIsImZvcm1hdFN0ZXAiLCJzdGVwIiwiZm9ybWF0T25lU3RlcCIsIm5hbWUiLCJ4IiwieSIsImFuY2hvclBhdGgiLCJ0b1N0cmluZyIsImFuY2hvck9mZnNldCIsImZvY3VzUGF0aCIsImZvY3VzT2Zmc2V0IiwiZm9ybWF0dGVkU3RlcCIsImNvdW50Iiwiam9pbiIsImlzU2VsZWN0QWxsIiwiZXZlbnQiLCJrZXlDb2RlIiwibWV0YUtleSIsImN0cmxLZXkiLCJzYW5pdGl6ZVNlbGVjdGlvbiIsInNlbGVjdGlvbiIsImFuY2hvck5vZGUiLCJmb2N1c05vZGUiLCJnZXRQYXRoRnJvbU5vZGVUb0VkaXRvciIsIm5vZGUiLCJyb290RWxlbWVudCIsImN1cnJlbnROb2RlIiwicGF0aCIsInVuZGVmaW5lZCIsInVuc2hpZnQiLCJBcnJheSIsImZyb20iLCJwYXJlbnROb2RlIiwiY2hpbGROb2RlcyIsImluZGV4T2YiLCJrZXlQcmVzc2VzIiwiU2V0IiwidXNlVGVzdFJlY29yZGVyIiwiZWRpdG9yIiwic3RlcHMiLCJzZXRTdGVwcyIsImlzUmVjb3JkaW5nIiwic2V0SXNSZWNvcmRpbmciLCJzZXRDdXJyZW50SW5uZXJIVE1MIiwidGVtcGxhdGVkVGVzdCIsInNldFRlbXBsYXRlZFRlc3QiLCJwcmV2aW91c1NlbGVjdGlvblJlZiIsInNraXBOZXh0U2VsZWN0aW9uQ2hhbmdlUmVmIiwicHJlUmVmIiwiZ2V0Q3VycmVudEVkaXRvciIsImdlbmVyYXRlVGVzdENvbnRlbnQiLCJnZXRSb290RWxlbWVudCIsImJyb3dzZXJTZWxlY3Rpb24iLCJ3aW5kb3ciLCJnZXRTZWxlY3Rpb24iLCJjb250YWlucyIsIm1hcCIsInB1c2hTdGVwIiwiY3VycmVudFN0ZXBzIiwiY3VycmVudEluZGV4IiwibGVuZ3RoIiwibGFzdFN0ZXAiLCJzbGljZSIsIm9uS2V5RG93biIsImtleSIsImhhcyIsIm9uS2V5VXAiLCJyZWdpc3RlclJvb3RMaXN0ZW5lciIsInByZXZSb290RWxlbWVudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiY3VycmVudCIsInNjcm9sbFRvIiwic2Nyb2xsSGVpZ2h0IiwidGVzdENvbnRlbnQiLCJyZW1vdmVVcGRhdGVMaXN0ZW5lciIsInJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIiLCJkaXJ0eUVsZW1lbnRzIiwiZGlydHlMZWF2ZXMiLCJlZGl0b3JTdGF0ZSIsImN1cnJlbnRTZWxlY3Rpb24iLCJfc2VsZWN0aW9uIiwicHJldmlvdXNTZWxlY3Rpb24iLCJza2lwTmV4dFNlbGVjdGlvbkNoYW5nZSIsInNpemUiLCJpbm5lckhUTUwiLCJ0b2dnbGVFZGl0b3JTZWxlY3Rpb24iLCJjdXJyZW50RWRpdG9yIiwidXBkYXRlIiwicm9vdCIsImNsZWFyIiwiYXBwZW5kIiwiY3VycmVudElzUmVjb3JkaW5nIiwib25TbmFwc2hvdENsaWNrIiwib25Db3B5Q2xpY2siLCJvbkRvd25sb2FkQ2xpY2siLCJidXR0b24iLCJjbGFzc05hbWUiLCJpZCIsIm9uQ2xpY2siLCJlIiwicHJldmVudERlZmF1bHQiLCJ0aXRsZSIsInR5cGUiLCJvdXRwdXQiLCJkaXYiLCJwcmUiLCJyZWYiLCJUZXN0UmVjb3JkZXJQbHVnaW4iLCJ0ZXN0UmVjb3JkZXJCdXR0b24iLCJ0ZXN0UmVjb3JkZXJPdXRwdXQiLCJGcmFnbWVudCIsInAiXSwibWFwcGluZ3MiOiJBQUFBO0FBR0EsU0FBU0EseUJBQXlCLFFBQVEsd0NBQXVDO0FBQ2pGLFNBQVNDLG9CQUFvQixFQUFFQyxlQUFlLEVBQUVDLFFBQVEsUUFBUSxVQUFTO0FBQ3pFLFlBQVlDLFdBQVcsUUFBTztBQUM5QixTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsZUFBZSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxRQUFPO0FBRWpGLFNBQVNDLFFBQVEsUUFBUSx3Q0FBdUM7QUFDaEUsT0FBTyxlQUFjO0FBRXJCLE1BQU1DLE9BQU8sQ0FBQ0M7SUFDWixNQUFNQyxXQUFXQyxTQUFTQyxhQUFhLENBQUM7SUFDeENGLFNBQVNHLEtBQUssR0FBR0osUUFBUTtJQUN6QkMsU0FBU0ksS0FBSyxDQUFDQyxRQUFRLEdBQUc7SUFDMUJMLFNBQVNJLEtBQUssQ0FBQ0UsT0FBTyxHQUFHO0lBQ3pCTCxTQUFTTSxJQUFJLEVBQUVDLFlBQVlSO0lBQzNCQSxTQUFTUyxLQUFLO0lBQ2RULFNBQVNV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
@@ -1,16 +1,6 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "TreeViewFeatureClientComponent", {
7
- enumerable: true,
8
- get: function() {
9
- return TreeViewFeatureClientComponent;
10
- }
11
- });
12
- const _createClientComponent = require("../../createClientComponent");
13
- const _plugin = require("./plugin");
2
+ import { createClientComponent } from '../../createClientComponent';
3
+ import { TreeViewPlugin } from './plugin';
14
4
  const TreeViewFeatureClient = (props)=>{
15
5
  return {
16
6
  clientFeatureProps: props,
@@ -18,13 +8,13 @@ const TreeViewFeatureClient = (props)=>{
18
8
  clientFeatureProps: props,
19
9
  plugins: [
20
10
  {
21
- Component: _plugin.TreeViewPlugin,
11
+ Component: TreeViewPlugin,
22
12
  position: 'bottom'
23
13
  }
24
14
  ]
25
15
  })
26
16
  };
27
17
  };
28
- const TreeViewFeatureClientComponent = (0, _createClientComponent.createClientComponent)(TreeViewFeatureClient);
18
+ export const TreeViewFeatureClientComponent = createClientComponent(TreeViewFeatureClient);
29
19
 
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9kZWJ1Zy90cmVldmlldy9mZWF0dXJlLmNsaWVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVQcm92aWRlclByb3ZpZGVyQ2xpZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5cbmltcG9ydCB7IGNyZWF0ZUNsaWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NyZWF0ZUNsaWVudENvbXBvbmVudCdcbmltcG9ydCB7IFRyZWVWaWV3UGx1Z2luIH0gZnJvbSAnLi9wbHVnaW4nXG5cbmNvbnN0IFRyZWVWaWV3RmVhdHVyZUNsaWVudDogRmVhdHVyZVByb3ZpZGVyUHJvdmlkZXJDbGllbnQ8dW5kZWZpbmVkPiA9IChwcm9wcykgPT4ge1xuICByZXR1cm4ge1xuICAgIGNsaWVudEZlYXR1cmVQcm9wczogcHJvcHMsXG4gICAgZmVhdHVyZTogKCkgPT4gKHtcbiAgICAgIGNsaWVudEZlYXR1cmVQcm9wczogcHJvcHMsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBDb21wb25lbnQ6IFRyZWVWaWV3UGx1Z2luLFxuICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSksXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFRyZWVWaWV3RmVhdHVyZUNsaWVudENvbXBvbmVudCA9IGNyZWF0ZUNsaWVudENvbXBvbmVudChUcmVlVmlld0ZlYXR1cmVDbGllbnQpXG4iXSwibmFtZXMiOlsiVHJlZVZpZXdGZWF0dXJlQ2xpZW50Q29tcG9uZW50IiwiVHJlZVZpZXdGZWF0dXJlQ2xpZW50IiwicHJvcHMiLCJjbGllbnRGZWF0dXJlUHJvcHMiLCJmZWF0dXJlIiwicGx1Z2lucyIsIkNvbXBvbmVudCIsIlRyZWVWaWV3UGx1Z2luIiwicG9zaXRpb24iLCJjcmVhdGVDbGllbnRDb21wb25lbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OzsrQkFxQmFBOzs7ZUFBQUE7Ozt1Q0FsQnlCO3dCQUNQO0FBRS9CLE1BQU1DLHdCQUFrRSxDQUFDQztJQUN2RSxPQUFPO1FBQ0xDLG9CQUFvQkQ7UUFDcEJFLFNBQVMsSUFBTyxDQUFBO2dCQUNkRCxvQkFBb0JEO2dCQUNwQkcsU0FBUztvQkFDUDt3QkFDRUMsV0FBV0Msc0JBQWM7d0JBQ3pCQyxVQUFVO29CQUNaO2lCQUNEO1lBQ0gsQ0FBQTtJQUNGO0FBQ0Y7QUFFTyxNQUFNUixpQ0FBaUNTLElBQUFBLDRDQUFxQixFQUFDUiJ9
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9kZWJ1Zy90cmVldmlldy9mZWF0dXJlLmNsaWVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVQcm92aWRlclByb3ZpZGVyQ2xpZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5cbmltcG9ydCB7IGNyZWF0ZUNsaWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NyZWF0ZUNsaWVudENvbXBvbmVudCdcbmltcG9ydCB7IFRyZWVWaWV3UGx1Z2luIH0gZnJvbSAnLi9wbHVnaW4nXG5cbmNvbnN0IFRyZWVWaWV3RmVhdHVyZUNsaWVudDogRmVhdHVyZVByb3ZpZGVyUHJvdmlkZXJDbGllbnQ8dW5kZWZpbmVkPiA9IChwcm9wcykgPT4ge1xuICByZXR1cm4ge1xuICAgIGNsaWVudEZlYXR1cmVQcm9wczogcHJvcHMsXG4gICAgZmVhdHVyZTogKCkgPT4gKHtcbiAgICAgIGNsaWVudEZlYXR1cmVQcm9wczogcHJvcHMsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBDb21wb25lbnQ6IFRyZWVWaWV3UGx1Z2luLFxuICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSksXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFRyZWVWaWV3RmVhdHVyZUNsaWVudENvbXBvbmVudCA9IGNyZWF0ZUNsaWVudENvbXBvbmVudChUcmVlVmlld0ZlYXR1cmVDbGllbnQpXG4iXSwibmFtZXMiOlsiY3JlYXRlQ2xpZW50Q29tcG9uZW50IiwiVHJlZVZpZXdQbHVnaW4iLCJUcmVlVmlld0ZlYXR1cmVDbGllbnQiLCJwcm9wcyIsImNsaWVudEZlYXR1cmVQcm9wcyIsImZlYXR1cmUiLCJwbHVnaW5zIiwiQ29tcG9uZW50IiwicG9zaXRpb24iLCJUcmVlVmlld0ZlYXR1cmVDbGllbnRDb21wb25lbnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBR0EsU0FBU0EscUJBQXFCLFFBQVEsOEJBQTZCO0FBQ25FLFNBQVNDLGNBQWMsUUFBUSxXQUFVO0FBRXpDLE1BQU1DLHdCQUFrRSxDQUFDQztJQUN2RSxPQUFPO1FBQ0xDLG9CQUFvQkQ7UUFDcEJFLFNBQVMsSUFBTyxDQUFBO2dCQUNkRCxvQkFBb0JEO2dCQUNwQkcsU0FBUztvQkFDUDt3QkFDRUMsV0FBV047d0JBQ1hPLFVBQVU7b0JBQ1o7aUJBQ0Q7WUFDSCxDQUFBO0lBQ0Y7QUFDRjtBQUVBLE9BQU8sTUFBTUMsaUNBQWlDVCxzQkFBc0JFLHVCQUFzQiJ9
@@ -1,19 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "TreeViewFeature", {
6
- enumerable: true,
7
- get: function() {
8
- return TreeViewFeature;
9
- }
10
- });
11
- const _featureclient = require("./feature.client");
12
- const TreeViewFeature = (props)=>{
1
+ import { TreeViewFeatureClientComponent } from './feature.client';
2
+ export const TreeViewFeature = (props)=>{
13
3
  return {
14
4
  feature: ()=>{
15
5
  return {
16
- ClientComponent: _featureclient.TreeViewFeatureClientComponent,
6
+ ClientComponent: TreeViewFeatureClientComponent,
17
7
  serverFeatureProps: props
18
8
  };
19
9
  },
@@ -22,4 +12,4 @@ const TreeViewFeature = (props)=>{
22
12
  };
23
13
  };
24
14
 
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9kZWJ1Zy90cmVldmlldy9mZWF0dXJlLnNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmVQcm92aWRlclByb3ZpZGVyU2VydmVyIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5cbmltcG9ydCB7IFRyZWVWaWV3RmVhdHVyZUNsaWVudENvbXBvbmVudCB9IGZyb20gJy4vZmVhdHVyZS5jbGllbnQnXG5cbmV4cG9ydCBjb25zdCBUcmVlVmlld0ZlYXR1cmU6IEZlYXR1cmVQcm92aWRlclByb3ZpZGVyU2VydmVyPHVuZGVmaW5lZCwgdW5kZWZpbmVkPiA9IChwcm9wcykgPT4ge1xuICByZXR1cm4ge1xuICAgIGZlYXR1cmU6ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIENsaWVudENvbXBvbmVudDogVHJlZVZpZXdGZWF0dXJlQ2xpZW50Q29tcG9uZW50LFxuICAgICAgICBzZXJ2ZXJGZWF0dXJlUHJvcHM6IHByb3BzLFxuICAgICAgfVxuICAgIH0sXG4gICAga2V5OiAndHJlZXZpZXcnLFxuICAgIHNlcnZlckZlYXR1cmVQcm9wczogcHJvcHMsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJUcmVlVmlld0ZlYXR1cmUiLCJwcm9wcyIsImZlYXR1cmUiLCJDbGllbnRDb21wb25lbnQiLCJUcmVlVmlld0ZlYXR1cmVDbGllbnRDb21wb25lbnQiLCJzZXJ2ZXJGZWF0dXJlUHJvcHMiLCJrZXkiXSwibWFwcGluZ3MiOiI7Ozs7K0JBSWFBOzs7ZUFBQUE7OzsrQkFGa0M7QUFFeEMsTUFBTUEsa0JBQXVFLENBQUNDO0lBQ25GLE9BQU87UUFDTEMsU0FBUztZQUNQLE9BQU87Z0JBQ0xDLGlCQUFpQkMsNkNBQThCO2dCQUMvQ0Msb0JBQW9CSjtZQUN0QjtRQUNGO1FBQ0FLLEtBQUs7UUFDTEQsb0JBQW9CSjtJQUN0QjtBQUNGIn0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9kZWJ1Zy90cmVldmlldy9mZWF0dXJlLnNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmVQcm92aWRlclByb3ZpZGVyU2VydmVyIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5cbmltcG9ydCB7IFRyZWVWaWV3RmVhdHVyZUNsaWVudENvbXBvbmVudCB9IGZyb20gJy4vZmVhdHVyZS5jbGllbnQnXG5cbmV4cG9ydCBjb25zdCBUcmVlVmlld0ZlYXR1cmU6IEZlYXR1cmVQcm92aWRlclByb3ZpZGVyU2VydmVyPHVuZGVmaW5lZCwgdW5kZWZpbmVkPiA9IChwcm9wcykgPT4ge1xuICByZXR1cm4ge1xuICAgIGZlYXR1cmU6ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIENsaWVudENvbXBvbmVudDogVHJlZVZpZXdGZWF0dXJlQ2xpZW50Q29tcG9uZW50LFxuICAgICAgICBzZXJ2ZXJGZWF0dXJlUHJvcHM6IHByb3BzLFxuICAgICAgfVxuICAgIH0sXG4gICAga2V5OiAndHJlZXZpZXcnLFxuICAgIHNlcnZlckZlYXR1cmVQcm9wczogcHJvcHMsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJUcmVlVmlld0ZlYXR1cmVDbGllbnRDb21wb25lbnQiLCJUcmVlVmlld0ZlYXR1cmUiLCJwcm9wcyIsImZlYXR1cmUiLCJDbGllbnRDb21wb25lbnQiLCJzZXJ2ZXJGZWF0dXJlUHJvcHMiLCJrZXkiXSwibWFwcGluZ3MiOiJBQUVBLFNBQVNBLDhCQUE4QixRQUFRLG1CQUFrQjtBQUVqRSxPQUFPLE1BQU1DLGtCQUF1RSxDQUFDQztJQUNuRixPQUFPO1FBQ0xDLFNBQVM7WUFDUCxPQUFPO2dCQUNMQyxpQkFBaUJKO2dCQUNqQkssb0JBQW9CSDtZQUN0QjtRQUNGO1FBQ0FJLEtBQUs7UUFDTEQsb0JBQW9CSDtJQUN0QjtBQUNGLEVBQUMifQ==
@@ -1,62 +1,11 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "TreeViewPlugin", {
7
- enumerable: true,
8
- get: function() {
9
- return TreeViewPlugin;
10
- }
11
- });
12
- const _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
13
- const _LexicalTreeView = require("@lexical/react/LexicalTreeView");
14
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
15
- require("./index.scss");
16
- function _getRequireWildcardCache(nodeInterop) {
17
- if (typeof WeakMap !== "function") return null;
18
- var cacheBabelInterop = new WeakMap();
19
- var cacheNodeInterop = new WeakMap();
20
- return (_getRequireWildcardCache = function(nodeInterop) {
21
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
22
- })(nodeInterop);
23
- }
24
- function _interop_require_wildcard(obj, nodeInterop) {
25
- if (!nodeInterop && obj && obj.__esModule) {
26
- return obj;
27
- }
28
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
29
- return {
30
- default: obj
31
- };
32
- }
33
- var cache = _getRequireWildcardCache(nodeInterop);
34
- if (cache && cache.has(obj)) {
35
- return cache.get(obj);
36
- }
37
- var newObj = {
38
- __proto__: null
39
- };
40
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
41
- for(var key in obj){
42
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
43
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
44
- if (desc && (desc.get || desc.set)) {
45
- Object.defineProperty(newObj, key, desc);
46
- } else {
47
- newObj[key] = obj[key];
48
- }
49
- }
50
- }
51
- newObj.default = obj;
52
- if (cache) {
53
- cache.set(obj, newObj);
54
- }
55
- return newObj;
56
- }
57
- function TreeViewPlugin() {
58
- const [editor] = (0, _LexicalComposerContext.useLexicalComposerContext)();
59
- return /*#__PURE__*/ _react.createElement(_LexicalTreeView.TreeView, {
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
+ import { TreeView } from '@lexical/react/LexicalTreeView';
4
+ import * as React from 'react';
5
+ import './index.scss';
6
+ export function TreeViewPlugin() {
7
+ const [editor] = useLexicalComposerContext();
8
+ return /*#__PURE__*/ React.createElement(TreeView, {
60
9
  editor: editor,
61
10
  timeTravelButtonClassName: "debug-timetravel-button",
62
11
  timeTravelPanelButtonClassName: "debug-timetravel-panel-button",
@@ -67,4 +16,4 @@ function TreeViewPlugin() {
67
16
  });
68
17
  }
69
18
 
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9kZWJ1Zy90cmVldmlldy9wbHVnaW4vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBUcmVlVmlldyB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxUcmVlVmlldydcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuZXhwb3J0IGZ1bmN0aW9uIFRyZWVWaWV3UGx1Z2luKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIHJldHVybiAoXG4gICAgPFRyZWVWaWV3XG4gICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgIHRpbWVUcmF2ZWxCdXR0b25DbGFzc05hbWU9XCJkZWJ1Zy10aW1ldHJhdmVsLWJ1dHRvblwiXG4gICAgICB0aW1lVHJhdmVsUGFuZWxCdXR0b25DbGFzc05hbWU9XCJkZWJ1Zy10aW1ldHJhdmVsLXBhbmVsLWJ1dHRvblwiXG4gICAgICB0aW1lVHJhdmVsUGFuZWxDbGFzc05hbWU9XCJkZWJ1Zy10aW1ldHJhdmVsLXBhbmVsXCJcbiAgICAgIHRpbWVUcmF2ZWxQYW5lbFNsaWRlckNsYXNzTmFtZT1cImRlYnVnLXRpbWV0cmF2ZWwtcGFuZWwtc2xpZGVyXCJcbiAgICAgIHRyZWVUeXBlQnV0dG9uQ2xhc3NOYW1lPVwiZGVidWctdHJlZXR5cGUtYnV0dG9uXCJcbiAgICAgIHZpZXdDbGFzc05hbWU9XCJ0cmVlLXZpZXctb3V0cHV0XCJcbiAgICAvPlxuICApXG59XG4iXSwibmFtZXMiOlsiVHJlZVZpZXdQbHVnaW4iLCJlZGl0b3IiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiVHJlZVZpZXciLCJ0aW1lVHJhdmVsQnV0dG9uQ2xhc3NOYW1lIiwidGltZVRyYXZlbFBhbmVsQnV0dG9uQ2xhc3NOYW1lIiwidGltZVRyYXZlbFBhbmVsQ2xhc3NOYW1lIiwidGltZVRyYXZlbFBhbmVsU2xpZGVyQ2xhc3NOYW1lIiwidHJlZVR5cGVCdXR0b25DbGFzc05hbWUiLCJ2aWV3Q2xhc3NOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBT2dCQTs7O2VBQUFBOzs7d0NBTjBCO2lDQUNqQjsrREFDRjtRQUVoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0E7SUFDZCxNQUFNLENBQUNDLE9BQU8sR0FBR0MsSUFBQUEsaURBQXlCO0lBQzFDLHFCQUNFLHFCQUFDQyx5QkFBUTtRQUNQRixRQUFRQTtRQUNSRywyQkFBMEI7UUFDMUJDLGdDQUErQjtRQUMvQkMsMEJBQXlCO1FBQ3pCQyxnQ0FBK0I7UUFDL0JDLHlCQUF3QjtRQUN4QkMsZUFBYzs7QUFHcEIifQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9kZWJ1Zy90cmVldmlldy9wbHVnaW4vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBUcmVlVmlldyB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxUcmVlVmlldydcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuZXhwb3J0IGZ1bmN0aW9uIFRyZWVWaWV3UGx1Z2luKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIHJldHVybiAoXG4gICAgPFRyZWVWaWV3XG4gICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgIHRpbWVUcmF2ZWxCdXR0b25DbGFzc05hbWU9XCJkZWJ1Zy10aW1ldHJhdmVsLWJ1dHRvblwiXG4gICAgICB0aW1lVHJhdmVsUGFuZWxCdXR0b25DbGFzc05hbWU9XCJkZWJ1Zy10aW1ldHJhdmVsLXBhbmVsLWJ1dHRvblwiXG4gICAgICB0aW1lVHJhdmVsUGFuZWxDbGFzc05hbWU9XCJkZWJ1Zy10aW1ldHJhdmVsLXBhbmVsXCJcbiAgICAgIHRpbWVUcmF2ZWxQYW5lbFNsaWRlckNsYXNzTmFtZT1cImRlYnVnLXRpbWV0cmF2ZWwtcGFuZWwtc2xpZGVyXCJcbiAgICAgIHRyZWVUeXBlQnV0dG9uQ2xhc3NOYW1lPVwiZGVidWctdHJlZXR5cGUtYnV0dG9uXCJcbiAgICAgIHZpZXdDbGFzc05hbWU9XCJ0cmVlLXZpZXctb3V0cHV0XCJcbiAgICAvPlxuICApXG59XG4iXSwibmFtZXMiOlsidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsIlRyZWVWaWV3IiwiUmVhY3QiLCJUcmVlVmlld1BsdWdpbiIsImVkaXRvciIsInRpbWVUcmF2ZWxCdXR0b25DbGFzc05hbWUiLCJ0aW1lVHJhdmVsUGFuZWxCdXR0b25DbGFzc05hbWUiLCJ0aW1lVHJhdmVsUGFuZWxDbGFzc05hbWUiLCJ0aW1lVHJhdmVsUGFuZWxTbGlkZXJDbGFzc05hbWUiLCJ0cmVlVHlwZUJ1dHRvbkNsYXNzTmFtZSIsInZpZXdDbGFzc05hbWUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsU0FBU0EseUJBQXlCLFFBQVEsd0NBQXVDO0FBQ2pGLFNBQVNDLFFBQVEsUUFBUSxpQ0FBZ0M7QUFDekQsWUFBWUMsV0FBVyxRQUFPO0FBRTlCLE9BQU8sZUFBYztBQUVyQixPQUFPLFNBQVNDO0lBQ2QsTUFBTSxDQUFDQyxPQUFPLEdBQUdKO0lBQ2pCLHFCQUNFLG9CQUFDQztRQUNDRyxRQUFRQTtRQUNSQywyQkFBMEI7UUFDMUJDLGdDQUErQjtRQUMvQkMsMEJBQXlCO1FBQ3pCQyxnQ0FBK0I7UUFDL0JDLHlCQUF3QjtRQUN4QkMsZUFBYzs7QUFHcEIifQ==