obsidian-dev-utils 88.7.0 → 89.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (679) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/demo-vault-helper/main.js +20 -23
  3. package/dist/integration-test-plugin/main.js +2218 -1734
  4. package/dist/lib/cjs/__merged.cjs +57 -35
  5. package/dist/lib/cjs/__merged.d.cts +12 -10
  6. package/dist/lib/cjs/abort-controller.cjs +15 -22
  7. package/dist/lib/cjs/array.cjs +27 -26
  8. package/dist/lib/cjs/array.d.cts +25 -7
  9. package/dist/lib/cjs/async-events.cjs +87 -91
  10. package/dist/lib/cjs/async-events.d.cts +50 -50
  11. package/dist/lib/cjs/async.cjs +80 -80
  12. package/dist/lib/cjs/async.d.cts +23 -23
  13. package/dist/lib/cjs/beeper.cjs +11 -15
  14. package/dist/lib/cjs/blob.cjs +14 -25
  15. package/dist/lib/cjs/codemirror/index.cjs +11 -15
  16. package/dist/lib/cjs/codemirror/state-field-spec.cjs +11 -15
  17. package/dist/lib/cjs/debug-controller.cjs +11 -15
  18. package/dist/lib/cjs/debug.cjs +24 -32
  19. package/dist/lib/cjs/debug.d.cts +1 -1
  20. package/dist/lib/cjs/disposable.cjs +59 -43
  21. package/dist/lib/cjs/disposable.d.cts +27 -8
  22. package/dist/lib/cjs/enum.cjs +11 -15
  23. package/dist/lib/cjs/error.cjs +28 -33
  24. package/dist/lib/cjs/function.cjs +30 -34
  25. package/dist/lib/cjs/function.d.cts +26 -26
  26. package/dist/lib/cjs/generated-during-build.cjs +12 -16
  27. package/dist/lib/cjs/html-element.cjs +84 -89
  28. package/dist/lib/cjs/html-element.d.cts +15 -15
  29. package/dist/lib/cjs/index.cjs +11 -15
  30. package/dist/lib/cjs/integration-test-setup.cjs +11 -15
  31. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +11 -15
  32. package/dist/lib/cjs/jest-setup.cjs +11 -15
  33. package/dist/lib/cjs/library.cjs +11 -15
  34. package/dist/lib/cjs/object-utils.cjs +120 -117
  35. package/dist/lib/cjs/object-utils.d.cts +27 -27
  36. package/dist/lib/cjs/obsidian/@types/dataview/data-model/value.d.cts +1 -1
  37. package/dist/lib/cjs/obsidian/@types/dataview/expression/field.d.cts +1 -1
  38. package/dist/lib/cjs/obsidian/@types/dataview/expression/functions.d.cts +4 -4
  39. package/dist/lib/cjs/obsidian/active-file-provider.cjs +11 -15
  40. package/dist/lib/cjs/obsidian/app.cjs +11 -15
  41. package/dist/lib/cjs/obsidian/async-with-notice.cjs +28 -32
  42. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +2 -2
  43. package/dist/lib/cjs/obsidian/attachment-path.cjs +20 -24
  44. package/dist/lib/cjs/obsidian/attachment-path.d.cts +5 -5
  45. package/dist/lib/cjs/obsidian/backlink.cjs +12 -16
  46. package/dist/lib/cjs/obsidian/bases-view-registrar.cjs +11 -15
  47. package/dist/lib/cjs/obsidian/callout.cjs +27 -26
  48. package/dist/lib/cjs/obsidian/callout.d.cts +9 -3
  49. package/dist/lib/cjs/obsidian/canvas.cjs +13 -16
  50. package/dist/lib/cjs/obsidian/case-insensitive-file-index.cjs +18 -20
  51. package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +11 -15
  52. package/dist/lib/cjs/obsidian/code-block-markdown-information.d.cts +2 -2
  53. package/dist/lib/cjs/obsidian/code-block-reg-exp.cjs +11 -15
  54. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +18 -16
  55. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +5 -0
  56. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +56 -31
  57. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +42 -8
  58. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +11 -15
  59. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +10 -0
  60. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +26 -30
  61. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +8 -8
  62. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +12 -16
  63. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +12 -16
  64. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +13 -17
  65. package/dist/lib/cjs/obsidian/command-handlers/index.cjs +11 -15
  66. package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.cjs +11 -15
  67. package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.cjs +11 -15
  68. package/dist/lib/cjs/obsidian/command-handlers/unlock-active-note-command-handler.cjs +11 -15
  69. package/dist/lib/cjs/obsidian/command-registrar.cjs +11 -15
  70. package/dist/lib/cjs/obsidian/community-plugins.cjs +28 -25
  71. package/dist/lib/cjs/obsidian/community-plugins.d.cts +19 -5
  72. package/dist/lib/cjs/obsidian/components/abort-signal-component.cjs +11 -15
  73. package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +11 -15
  74. package/dist/lib/cjs/obsidian/components/all-windows-event-component.d.cts +4 -4
  75. package/dist/lib/cjs/obsidian/components/async-error-handler-component.cjs +13 -16
  76. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +11 -15
  77. package/dist/lib/cjs/obsidian/components/case-insensitive-file-index-component.cjs +11 -15
  78. package/dist/lib/cjs/obsidian/components/component-ex.cjs +26 -28
  79. package/dist/lib/cjs/obsidian/components/component-ex.d.cts +3 -3
  80. package/dist/lib/cjs/obsidian/components/console-debug-component.cjs +14 -18
  81. package/dist/lib/cjs/obsidian/components/console-debug-component.d.cts +2 -2
  82. package/dist/lib/cjs/obsidian/components/disposable-component.cjs +11 -15
  83. package/dist/lib/cjs/obsidian/components/embed-extensions-component.cjs +11 -15
  84. package/dist/lib/cjs/obsidian/components/generate-markdown-link-default-params-component.cjs +11 -15
  85. package/dist/lib/cjs/obsidian/components/index.cjs +14 -15
  86. package/dist/lib/cjs/obsidian/components/index.d.cts +1 -0
  87. package/dist/lib/cjs/obsidian/components/layout-ready-component.cjs +11 -15
  88. package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.cjs +11 -15
  89. package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +29 -33
  90. package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +55 -55
  91. package/dist/lib/cjs/obsidian/components/notebook-navigator-menu-event-registrar-component.cjs +297 -0
  92. package/dist/lib/cjs/obsidian/components/notebook-navigator-menu-event-registrar-component.d.cts +139 -0
  93. package/dist/lib/cjs/obsidian/components/plugin-context-component.cjs +11 -15
  94. package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +28 -31
  95. package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +26 -30
  96. package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +8 -8
  97. package/dist/lib/cjs/obsidian/components/plugin-settings-tab-component.cjs +11 -15
  98. package/dist/lib/cjs/obsidian/components/pointer-position-component.cjs +13 -17
  99. package/dist/lib/cjs/obsidian/components/registry-component.cjs +11 -15
  100. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +72 -62
  101. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.d.cts +12 -1
  102. package/dist/lib/cjs/obsidian/components/syntax-highlighting-component.cjs +16 -20
  103. package/dist/lib/cjs/obsidian/components/syntax-highlighting-component.d.cts +8 -8
  104. package/dist/lib/cjs/obsidian/constructors/get-dom-events-handlers-constructor.cjs +14 -18
  105. package/dist/lib/cjs/obsidian/constructors/index.cjs +11 -15
  106. package/dist/lib/cjs/obsidian/css-class.cjs +11 -15
  107. package/dist/lib/cjs/obsidian/data-handler.cjs +11 -15
  108. package/dist/lib/cjs/obsidian/dataview-link.cjs +13 -17
  109. package/dist/lib/cjs/obsidian/dataview.cjs +35 -41
  110. package/dist/lib/cjs/obsidian/dataview.d.cts +2 -2
  111. package/dist/lib/cjs/obsidian/demo-vault-helper.cjs +13 -17
  112. package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +22 -26
  113. package/dist/lib/cjs/obsidian/desktop-trusted-input.cjs +23 -21
  114. package/dist/lib/cjs/obsidian/editor-extension-registrar.cjs +11 -15
  115. package/dist/lib/cjs/obsidian/editor-suggest-registrar.cjs +11 -15
  116. package/dist/lib/cjs/obsidian/editor.cjs +17 -19
  117. package/dist/lib/cjs/obsidian/events.cjs +12 -16
  118. package/dist/lib/cjs/obsidian/events.d.cts +2 -2
  119. package/dist/lib/cjs/obsidian/extensions-registrar.cjs +11 -15
  120. package/dist/lib/cjs/obsidian/file-change.cjs +76 -80
  121. package/dist/lib/cjs/obsidian/file-change.d.cts +3 -3
  122. package/dist/lib/cjs/obsidian/file-manager.cjs +33 -22
  123. package/dist/lib/cjs/obsidian/file-manager.d.cts +20 -1
  124. package/dist/lib/cjs/obsidian/file-system.cjs +15 -19
  125. package/dist/lib/cjs/obsidian/file-system.d.cts +3 -3
  126. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +11 -15
  127. package/dist/lib/cjs/obsidian/frontmatter.cjs +15 -19
  128. package/dist/lib/cjs/obsidian/hover-link-source-registrar.cjs +11 -15
  129. package/dist/lib/cjs/obsidian/html-element.cjs +13 -17
  130. package/dist/lib/cjs/obsidian/html-element.d.cts +2 -2
  131. package/dist/lib/cjs/obsidian/i18n/custom-type-options.cjs +11 -15
  132. package/dist/lib/cjs/obsidian/i18n/default-translations.cjs +11 -15
  133. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +13 -16
  134. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +7 -0
  135. package/dist/lib/cjs/obsidian/i18n/index.cjs +11 -15
  136. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +11 -15
  137. package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +11 -15
  138. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +11 -15
  139. package/dist/lib/cjs/obsidian/index.cjs +14 -15
  140. package/dist/lib/cjs/obsidian/index.d.cts +1 -0
  141. package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +11 -15
  142. package/dist/lib/cjs/obsidian/link-update-progress.cjs +11 -15
  143. package/dist/lib/cjs/obsidian/link.cjs +91 -81
  144. package/dist/lib/cjs/obsidian/link.d.cts +22 -22
  145. package/dist/lib/cjs/obsidian/logger.cjs +21 -25
  146. package/dist/lib/cjs/obsidian/logger.d.cts +5 -5
  147. package/dist/lib/cjs/obsidian/loop.cjs +14 -18
  148. package/dist/lib/cjs/obsidian/loop.d.cts +1 -1
  149. package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.cjs +12 -16
  150. package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.d.cts +3 -3
  151. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +35 -40
  152. package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +3 -3
  153. package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.cjs +12 -16
  154. package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.d.cts +3 -3
  155. package/dist/lib/cjs/obsidian/markdown-view.cjs +11 -15
  156. package/dist/lib/cjs/obsidian/markdown.cjs +22 -24
  157. package/dist/lib/cjs/obsidian/menu-event-registrar.cjs +11 -15
  158. package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +1 -1
  159. package/dist/lib/cjs/obsidian/metadata-cache.cjs +16 -20
  160. package/dist/lib/cjs/obsidian/metadata-cache.d.cts +2 -2
  161. package/dist/lib/cjs/obsidian/modals/alert.cjs +11 -15
  162. package/dist/lib/cjs/obsidian/modals/confirm.cjs +11 -15
  163. package/dist/lib/cjs/obsidian/modals/index.cjs +11 -15
  164. package/dist/lib/cjs/obsidian/modals/minimizable-modal.cjs +28 -32
  165. package/dist/lib/cjs/obsidian/modals/modal.cjs +11 -15
  166. package/dist/lib/cjs/obsidian/modals/prompt.cjs +11 -15
  167. package/dist/lib/cjs/obsidian/modals/select-item.cjs +16 -20
  168. package/dist/lib/cjs/obsidian/modals/select-item.d.cts +1 -1
  169. package/dist/lib/cjs/obsidian/modals/select-option.cjs +11 -15
  170. package/dist/lib/cjs/obsidian/modals/suggest-modal-command-builder.cjs +26 -28
  171. package/dist/lib/cjs/obsidian/modals/suggest-modal-command-builder.d.cts +5 -5
  172. package/dist/lib/cjs/obsidian/notebook-navigator.cjs +155 -0
  173. package/dist/lib/cjs/obsidian/notebook-navigator.d.cts +132 -0
  174. package/dist/lib/cjs/obsidian/obsidian-protocol-handler-registrar.cjs +11 -15
  175. package/dist/lib/cjs/obsidian/obsidian-settings.cjs +11 -15
  176. package/dist/lib/cjs/obsidian/parse-link.cjs +61 -62
  177. package/dist/lib/cjs/obsidian/parse-link.d.cts +4 -4
  178. package/dist/lib/cjs/obsidian/path-settings.cjs +27 -25
  179. package/dist/lib/cjs/obsidian/pdf.cjs +13 -17
  180. package/dist/lib/cjs/obsidian/pdf.d.cts +2 -2
  181. package/dist/lib/cjs/obsidian/plugin/index.cjs +11 -15
  182. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +11 -15
  183. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +156 -52
  184. package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +17 -21
  185. package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +2 -2
  186. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.cjs +20 -24
  187. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.d.cts +11 -9
  188. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +29 -33
  189. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +33 -16
  190. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +11 -1
  191. package/dist/lib/cjs/obsidian/plugin-cli-handler-registrar.cjs +11 -15
  192. package/dist/lib/cjs/obsidian/popovers/field-popover.cjs +11 -15
  193. package/dist/lib/cjs/obsidian/popovers/index.cjs +11 -15
  194. package/dist/lib/cjs/obsidian/popovers/popover-anchor.cjs +14 -18
  195. package/dist/lib/cjs/obsidian/popovers/popover-anchor.d.cts +2 -2
  196. package/dist/lib/cjs/obsidian/popovers/popover.cjs +19 -23
  197. package/dist/lib/cjs/obsidian/queue.cjs +16 -20
  198. package/dist/lib/cjs/obsidian/queue.d.cts +2 -2
  199. package/dist/lib/cjs/obsidian/react/app-context.cjs +11 -15
  200. package/dist/lib/cjs/obsidian/react/index.cjs +11 -15
  201. package/dist/lib/cjs/obsidian/reference.cjs +11 -15
  202. package/dist/lib/cjs/obsidian/resource-lock.cjs +157 -78
  203. package/dist/lib/cjs/obsidian/resource-lock.d.cts +5 -0
  204. package/dist/lib/cjs/obsidian/resource-url.cjs +12 -16
  205. package/dist/lib/cjs/obsidian/ribbon-icon-registrar.cjs +11 -15
  206. package/dist/lib/cjs/obsidian/ribbon-icon-registrar.d.cts +2 -2
  207. package/dist/lib/cjs/obsidian/setting-components/checkbox-component.cjs +18 -22
  208. package/dist/lib/cjs/obsidian/setting-components/checkbox-component.d.cts +5 -5
  209. package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.cjs +28 -31
  210. package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.d.cts +2 -2
  211. package/dist/lib/cjs/obsidian/setting-components/date-component.cjs +14 -18
  212. package/dist/lib/cjs/obsidian/setting-components/date-component.d.cts +2 -2
  213. package/dist/lib/cjs/obsidian/setting-components/date-time-component.cjs +14 -18
  214. package/dist/lib/cjs/obsidian/setting-components/date-time-component.d.cts +2 -2
  215. package/dist/lib/cjs/obsidian/setting-components/email-component.cjs +14 -18
  216. package/dist/lib/cjs/obsidian/setting-components/email-component.d.cts +2 -2
  217. package/dist/lib/cjs/obsidian/setting-components/file-component.cjs +11 -15
  218. package/dist/lib/cjs/obsidian/setting-components/index.cjs +11 -15
  219. package/dist/lib/cjs/obsidian/setting-components/month-component.cjs +14 -18
  220. package/dist/lib/cjs/obsidian/setting-components/month-component.d.cts +2 -2
  221. package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.cjs +17 -21
  222. package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.d.cts +2 -2
  223. package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.cjs +14 -18
  224. package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.d.cts +2 -2
  225. package/dist/lib/cjs/obsidian/setting-components/multiple-file-component.cjs +12 -16
  226. package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.cjs +15 -19
  227. package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.d.cts +2 -2
  228. package/dist/lib/cjs/obsidian/setting-components/number-component.cjs +14 -18
  229. package/dist/lib/cjs/obsidian/setting-components/number-component.d.cts +2 -2
  230. package/dist/lib/cjs/obsidian/setting-components/password-component.cjs +14 -18
  231. package/dist/lib/cjs/obsidian/setting-components/password-component.d.cts +2 -2
  232. package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.cjs +16 -20
  233. package/dist/lib/cjs/obsidian/setting-components/setting-component-wrapper.d.cts +2 -2
  234. package/dist/lib/cjs/obsidian/setting-components/telephone-component.cjs +14 -18
  235. package/dist/lib/cjs/obsidian/setting-components/telephone-component.d.cts +2 -2
  236. package/dist/lib/cjs/obsidian/setting-components/text-based-component.cjs +16 -20
  237. package/dist/lib/cjs/obsidian/setting-components/text-based-component.d.cts +2 -2
  238. package/dist/lib/cjs/obsidian/setting-components/time-component.cjs +14 -18
  239. package/dist/lib/cjs/obsidian/setting-components/time-component.d.cts +2 -2
  240. package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.cjs +15 -19
  241. package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.d.cts +2 -2
  242. package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.cjs +16 -20
  243. package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.d.cts +2 -2
  244. package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.cjs +18 -22
  245. package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.d.cts +2 -2
  246. package/dist/lib/cjs/obsidian/setting-components/typed-range-text-component.cjs +11 -15
  247. package/dist/lib/cjs/obsidian/setting-components/typed-text-component.cjs +16 -19
  248. package/dist/lib/cjs/obsidian/setting-components/typed-text-component.d.cts +4 -4
  249. package/dist/lib/cjs/obsidian/setting-components/url-component.cjs +14 -18
  250. package/dist/lib/cjs/obsidian/setting-components/url-component.d.cts +2 -2
  251. package/dist/lib/cjs/obsidian/setting-components/validator-component.cjs +45 -49
  252. package/dist/lib/cjs/obsidian/setting-components/validator-component.d.cts +2 -2
  253. package/dist/lib/cjs/obsidian/setting-components/value-component-with-change-tracking.cjs +11 -15
  254. package/dist/lib/cjs/obsidian/setting-components/week-component.cjs +14 -18
  255. package/dist/lib/cjs/obsidian/setting-components/week-component.d.cts +2 -2
  256. package/dist/lib/cjs/obsidian/setting-ex.cjs +76 -80
  257. package/dist/lib/cjs/obsidian/setting-ex.d.cts +42 -42
  258. package/dist/lib/cjs/obsidian/setting-group-ex.cjs +14 -18
  259. package/dist/lib/cjs/obsidian/setting-group-ex.d.cts +2 -2
  260. package/dist/lib/cjs/obsidian/status-bar-item-registrar.cjs +11 -15
  261. package/dist/lib/cjs/obsidian/validation.cjs +11 -15
  262. package/dist/lib/cjs/obsidian/vault-delete.cjs +23 -20
  263. package/dist/lib/cjs/obsidian/vault-delete.d.cts +16 -2
  264. package/dist/lib/cjs/obsidian/vault-transaction.cjs +17 -18
  265. package/dist/lib/cjs/obsidian/vault.cjs +81 -63
  266. package/dist/lib/cjs/obsidian/vault.d.cts +32 -11
  267. package/dist/lib/cjs/obsidian/view-registrar.cjs +11 -15
  268. package/dist/lib/cjs/obsidian/workspace.cjs +12 -16
  269. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +11 -15
  270. package/dist/lib/cjs/path.cjs +18 -22
  271. package/dist/lib/cjs/path.d.cts +1 -1
  272. package/dist/lib/cjs/reg-exp.cjs +38 -35
  273. package/dist/lib/cjs/reg-exp.d.cts +4 -4
  274. package/dist/lib/cjs/script-utils/build.cjs +21 -25
  275. package/dist/lib/cjs/script-utils/build.d.cts +1 -1
  276. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +24 -28
  277. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +36 -34
  278. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +11 -15
  279. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +20 -24
  280. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +13 -17
  281. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +16 -20
  282. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +11 -15
  283. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +11 -15
  284. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +6 -2
  285. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +32 -36
  286. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +11 -15
  287. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +11 -15
  288. package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +11 -15
  289. package/dist/lib/cjs/script-utils/bundlers/index.cjs +11 -15
  290. package/dist/lib/cjs/script-utils/check-project-types.cjs +13 -17
  291. package/dist/lib/cjs/script-utils/check-project-types.d.cts +12 -4
  292. package/dist/lib/cjs/script-utils/cli-utils.cjs +39 -47
  293. package/dist/lib/cjs/script-utils/cli-utils.d.cts +6 -6
  294. package/dist/lib/cjs/script-utils/code-generator.cjs +11 -15
  295. package/dist/lib/cjs/script-utils/commitlint-config.cjs +11 -15
  296. package/dist/lib/cjs/script-utils/demo-vault-coverage.cjs +22 -23
  297. package/dist/lib/cjs/script-utils/demo-vault.cjs +11 -15
  298. package/dist/lib/cjs/script-utils/env-toggle.cjs +13 -17
  299. package/dist/lib/cjs/script-utils/exec.cjs +40 -44
  300. package/dist/lib/cjs/script-utils/exec.d.cts +4 -4
  301. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +12 -16
  302. package/dist/lib/cjs/script-utils/formatters/index.cjs +11 -15
  303. package/dist/lib/cjs/script-utils/fs.cjs +13 -17
  304. package/dist/lib/cjs/script-utils/git.cjs +11 -15
  305. package/dist/lib/cjs/script-utils/index.cjs +11 -15
  306. package/dist/lib/cjs/script-utils/json.cjs +15 -19
  307. package/dist/lib/cjs/script-utils/json.d.cts +2 -2
  308. package/dist/lib/cjs/script-utils/linters/cspell.cjs +12 -16
  309. package/dist/lib/cjs/script-utils/linters/eslint-agnostic-core-boundary.cjs +11 -15
  310. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +402 -16
  311. package/dist/lib/cjs/script-utils/linters/eslint-no-restricted-syntax.cjs +11 -15
  312. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +11 -15
  313. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +27 -31
  314. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +3 -1
  315. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.cjs +27 -31
  316. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.d.cts +3 -1
  317. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +21 -25
  318. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.d.cts +3 -1
  319. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +11 -15
  320. package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.cjs +109 -113
  321. package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +3 -1
  322. package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.cjs +13 -17
  323. package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.d.cts +3 -1
  324. package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.cjs +21 -25
  325. package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.cts +3 -1
  326. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +51 -55
  327. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.d.cts +9 -3
  328. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.cjs +25 -27
  329. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.d.cts +6 -2
  330. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +33 -37
  331. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.d.cts +3 -1
  332. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +11 -15
  333. package/dist/lib/cjs/script-utils/linters/eslint.cjs +14 -18
  334. package/dist/lib/cjs/script-utils/linters/index.cjs +14 -15
  335. package/dist/lib/cjs/script-utils/linters/index.d.cts +1 -0
  336. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +18 -17
  337. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.d.cts +2 -2
  338. package/dist/lib/cjs/script-utils/linters/markdownlint-ignores.cjs +138 -0
  339. package/dist/lib/cjs/script-utils/linters/markdownlint-ignores.d.cts +35 -0
  340. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +20 -23
  341. package/dist/lib/cjs/script-utils/linters/over-exposure.cjs +18 -22
  342. package/dist/lib/cjs/script-utils/linters/over-exposure.d.cts +54 -18
  343. package/dist/lib/cjs/script-utils/nano-staged-config.cjs +11 -15
  344. package/dist/lib/cjs/script-utils/npm-publish.cjs +11 -15
  345. package/dist/lib/cjs/script-utils/npm-run.cjs +20 -17
  346. package/dist/lib/cjs/script-utils/npm-run.d.cts +16 -2
  347. package/dist/lib/cjs/script-utils/npm.cjs +21 -25
  348. package/dist/lib/cjs/script-utils/npm.d.cts +11 -11
  349. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +11 -15
  350. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +165 -55
  351. package/dist/lib/cjs/script-utils/root.cjs +11 -15
  352. package/dist/lib/cjs/script-utils/test-runners/index.cjs +16 -17
  353. package/dist/lib/cjs/script-utils/test-runners/index.d.cts +1 -0
  354. package/dist/lib/cjs/script-utils/test-runners/integration-test-plugin.cjs +11 -15
  355. package/dist/lib/cjs/script-utils/test-runners/vitest-config.cjs +325 -0
  356. package/dist/lib/cjs/script-utils/test-runners/vitest-config.d.cts +118 -0
  357. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +11 -15
  358. package/dist/lib/cjs/script-utils/validate-declarations.cjs +11 -15
  359. package/dist/lib/cjs/script-utils/version.cjs +62 -63
  360. package/dist/lib/cjs/script-utils/version.d.cts +21 -21
  361. package/dist/lib/cjs/script-utils/warnings-as-errors.cjs +11 -15
  362. package/dist/lib/cjs/setup.cjs +11 -15
  363. package/dist/lib/cjs/setup.d.cts +1 -1
  364. package/dist/lib/cjs/strict-proxy.cjs +30 -34
  365. package/dist/lib/cjs/strict-proxy.d.cts +2 -2
  366. package/dist/lib/cjs/string.cjs +90 -93
  367. package/dist/lib/cjs/string.d.cts +60 -60
  368. package/dist/lib/cjs/transformers/date-transformer.cjs +11 -15
  369. package/dist/lib/cjs/transformers/duration-transformer.cjs +11 -15
  370. package/dist/lib/cjs/transformers/group-transformer.cjs +11 -15
  371. package/dist/lib/cjs/transformers/index.cjs +11 -15
  372. package/dist/lib/cjs/transformers/map-transformer.cjs +12 -16
  373. package/dist/lib/cjs/transformers/set-transformer.cjs +12 -16
  374. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +11 -15
  375. package/dist/lib/cjs/transformers/transformer.cjs +11 -15
  376. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +12 -16
  377. package/dist/lib/cjs/transformers/typed-transformer.cjs +11 -15
  378. package/dist/lib/cjs/two-way-map.cjs +11 -15
  379. package/dist/lib/cjs/type-guards.cjs +16 -20
  380. package/dist/lib/cjs/type-guards.d.cts +6 -6
  381. package/dist/lib/cjs/type.cjs +13 -17
  382. package/dist/lib/cjs/type.d.cts +2 -2
  383. package/dist/lib/cjs/url.cjs +18 -22
  384. package/dist/lib/cjs/url.d.cts +4 -4
  385. package/dist/lib/cjs/value-provider.cjs +15 -19
  386. package/dist/lib/cjs/value-provider.d.cts +6 -6
  387. package/dist/lib/cjs/value-wrapper.cjs +11 -15
  388. package/dist/lib/cjs/vitest-setup.cjs +11 -15
  389. package/dist/lib/esm/__merged.d.mts +12 -10
  390. package/dist/lib/esm/__merged.mjs +51 -23
  391. package/dist/lib/esm/abort-controller.mjs +5 -8
  392. package/dist/lib/esm/array.d.mts +25 -7
  393. package/dist/lib/esm/array.mjs +16 -12
  394. package/dist/lib/esm/async-events.d.mts +50 -50
  395. package/dist/lib/esm/async-events.mjs +81 -78
  396. package/dist/lib/esm/async.d.mts +23 -23
  397. package/dist/lib/esm/async.mjs +70 -66
  398. package/dist/lib/esm/blob.mjs +4 -11
  399. package/dist/lib/esm/debug.d.mts +1 -1
  400. package/dist/lib/esm/debug.mjs +14 -18
  401. package/dist/lib/esm/disposable.d.mts +27 -8
  402. package/dist/lib/esm/disposable.mjs +47 -29
  403. package/dist/lib/esm/error.mjs +18 -19
  404. package/dist/lib/esm/function.d.mts +26 -26
  405. package/dist/lib/esm/function.mjs +20 -20
  406. package/dist/lib/esm/generated-during-build.mjs +1 -1
  407. package/dist/lib/esm/html-element.d.mts +15 -15
  408. package/dist/lib/esm/html-element.mjs +74 -75
  409. package/dist/lib/esm/object-utils.d.mts +27 -27
  410. package/dist/lib/esm/object-utils.mjs +109 -102
  411. package/dist/lib/esm/obsidian/@types/dataview/data-model/value.d.mts +1 -1
  412. package/dist/lib/esm/obsidian/@types/dataview/expression/field.d.mts +1 -1
  413. package/dist/lib/esm/obsidian/@types/dataview/expression/functions.d.mts +4 -4
  414. package/dist/lib/esm/obsidian/app.mjs +1 -1
  415. package/dist/lib/esm/obsidian/async-with-notice.d.mts +2 -2
  416. package/dist/lib/esm/obsidian/async-with-notice.mjs +18 -18
  417. package/dist/lib/esm/obsidian/attachment-path.d.mts +5 -5
  418. package/dist/lib/esm/obsidian/attachment-path.mjs +10 -10
  419. package/dist/lib/esm/obsidian/backlink.mjs +2 -2
  420. package/dist/lib/esm/obsidian/callout.d.mts +9 -3
  421. package/dist/lib/esm/obsidian/callout.mjs +17 -12
  422. package/dist/lib/esm/obsidian/canvas.mjs +3 -2
  423. package/dist/lib/esm/obsidian/case-insensitive-file-index.mjs +8 -6
  424. package/dist/lib/esm/obsidian/code-block-markdown-information.d.mts +2 -2
  425. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +5 -0
  426. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +8 -2
  427. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +42 -8
  428. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +46 -17
  429. package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +10 -0
  430. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +1 -1
  431. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +8 -8
  432. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +16 -16
  433. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -2
  434. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -2
  435. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +3 -3
  436. package/dist/lib/esm/obsidian/community-plugins.d.mts +19 -5
  437. package/dist/lib/esm/obsidian/community-plugins.mjs +17 -11
  438. package/dist/lib/esm/obsidian/components/all-windows-event-component.d.mts +4 -4
  439. package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +1 -1
  440. package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +3 -2
  441. package/dist/lib/esm/obsidian/components/component-ex.d.mts +3 -3
  442. package/dist/lib/esm/obsidian/components/component-ex.mjs +16 -14
  443. package/dist/lib/esm/obsidian/components/console-debug-component.d.mts +2 -2
  444. package/dist/lib/esm/obsidian/components/console-debug-component.mjs +4 -4
  445. package/dist/lib/esm/obsidian/components/index.d.mts +1 -0
  446. package/dist/lib/esm/obsidian/components/index.mjs +3 -1
  447. package/dist/lib/esm/obsidian/components/menu-event-registrar-component.mjs +5 -5
  448. package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +55 -55
  449. package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +19 -19
  450. package/dist/lib/esm/obsidian/components/notebook-navigator-menu-event-registrar-component.d.mts +139 -0
  451. package/dist/lib/esm/obsidian/components/notebook-navigator-menu-event-registrar-component.mjs +196 -0
  452. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +18 -17
  453. package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +8 -8
  454. package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +18 -18
  455. package/dist/lib/esm/obsidian/components/pointer-position-component.mjs +3 -3
  456. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.d.mts +12 -1
  457. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +62 -48
  458. package/dist/lib/esm/obsidian/components/syntax-highlighting-component.d.mts +8 -8
  459. package/dist/lib/esm/obsidian/components/syntax-highlighting-component.mjs +6 -6
  460. package/dist/lib/esm/obsidian/constructors/get-dom-events-handlers-constructor.mjs +4 -4
  461. package/dist/lib/esm/obsidian/data-handler.mjs +1 -1
  462. package/dist/lib/esm/obsidian/dataview-link.mjs +3 -3
  463. package/dist/lib/esm/obsidian/dataview.d.mts +2 -2
  464. package/dist/lib/esm/obsidian/dataview.mjs +25 -27
  465. package/dist/lib/esm/obsidian/demo-vault-helper.mjs +4 -3
  466. package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +12 -12
  467. package/dist/lib/esm/obsidian/desktop-trusted-input.mjs +13 -7
  468. package/dist/lib/esm/obsidian/editor.mjs +7 -5
  469. package/dist/lib/esm/obsidian/events.d.mts +2 -2
  470. package/dist/lib/esm/obsidian/events.mjs +2 -2
  471. package/dist/lib/esm/obsidian/file-change.d.mts +3 -3
  472. package/dist/lib/esm/obsidian/file-change.mjs +67 -67
  473. package/dist/lib/esm/obsidian/file-manager.d.mts +20 -1
  474. package/dist/lib/esm/obsidian/file-manager.mjs +22 -8
  475. package/dist/lib/esm/obsidian/file-system.d.mts +3 -3
  476. package/dist/lib/esm/obsidian/file-system.mjs +4 -4
  477. package/dist/lib/esm/obsidian/frontmatter.mjs +5 -5
  478. package/dist/lib/esm/obsidian/html-element.d.mts +2 -2
  479. package/dist/lib/esm/obsidian/html-element.mjs +3 -3
  480. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +7 -0
  481. package/dist/lib/esm/obsidian/i18n/i18n.mjs +3 -2
  482. package/dist/lib/esm/obsidian/index.d.mts +1 -0
  483. package/dist/lib/esm/obsidian/index.mjs +3 -1
  484. package/dist/lib/esm/obsidian/link.d.mts +22 -22
  485. package/dist/lib/esm/obsidian/link.mjs +76 -62
  486. package/dist/lib/esm/obsidian/logger.d.mts +5 -5
  487. package/dist/lib/esm/obsidian/logger.mjs +11 -11
  488. package/dist/lib/esm/obsidian/loop.d.mts +1 -1
  489. package/dist/lib/esm/obsidian/loop.mjs +4 -4
  490. package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.d.mts +3 -3
  491. package/dist/lib/esm/obsidian/markdown-code-block-processor-registrar.mjs +2 -2
  492. package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +3 -3
  493. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +25 -26
  494. package/dist/lib/esm/obsidian/markdown-post-processor-registrar.d.mts +3 -3
  495. package/dist/lib/esm/obsidian/markdown-post-processor-registrar.mjs +2 -2
  496. package/dist/lib/esm/obsidian/markdown.mjs +12 -10
  497. package/dist/lib/esm/obsidian/menu-event-registrar.d.mts +1 -1
  498. package/dist/lib/esm/obsidian/metadata-cache.d.mts +2 -2
  499. package/dist/lib/esm/obsidian/metadata-cache.mjs +6 -6
  500. package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
  501. package/dist/lib/esm/obsidian/modals/minimizable-modal.mjs +18 -18
  502. package/dist/lib/esm/obsidian/modals/select-item.d.mts +1 -1
  503. package/dist/lib/esm/obsidian/modals/select-item.mjs +6 -6
  504. package/dist/lib/esm/obsidian/modals/suggest-modal-command-builder.d.mts +5 -5
  505. package/dist/lib/esm/obsidian/modals/suggest-modal-command-builder.mjs +16 -14
  506. package/dist/lib/esm/obsidian/notebook-navigator.d.mts +132 -0
  507. package/dist/lib/esm/obsidian/notebook-navigator.mjs +49 -0
  508. package/dist/lib/esm/obsidian/parse-link.d.mts +4 -4
  509. package/dist/lib/esm/obsidian/parse-link.mjs +51 -48
  510. package/dist/lib/esm/obsidian/path-settings.mjs +17 -11
  511. package/dist/lib/esm/obsidian/pdf.d.mts +2 -2
  512. package/dist/lib/esm/obsidian/pdf.mjs +3 -3
  513. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +156 -52
  514. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +1 -1
  515. package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +2 -2
  516. package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +7 -7
  517. package/dist/lib/esm/obsidian/plugin/plugin-event-source.d.mts +11 -9
  518. package/dist/lib/esm/obsidian/plugin/plugin-event-source.mjs +10 -10
  519. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +20 -20
  520. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +11 -1
  521. package/dist/lib/esm/obsidian/plugin/plugin.mjs +23 -2
  522. package/dist/lib/esm/obsidian/popovers/popover-anchor.d.mts +2 -2
  523. package/dist/lib/esm/obsidian/popovers/popover-anchor.mjs +4 -4
  524. package/dist/lib/esm/obsidian/popovers/popover.mjs +9 -9
  525. package/dist/lib/esm/obsidian/queue.d.mts +2 -2
  526. package/dist/lib/esm/obsidian/queue.mjs +6 -6
  527. package/dist/lib/esm/obsidian/resource-lock.d.mts +5 -0
  528. package/dist/lib/esm/obsidian/resource-lock.mjs +147 -64
  529. package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
  530. package/dist/lib/esm/obsidian/ribbon-icon-registrar.d.mts +2 -2
  531. package/dist/lib/esm/obsidian/ribbon-icon-registrar.mjs +1 -1
  532. package/dist/lib/esm/obsidian/setting-components/checkbox-component.d.mts +5 -5
  533. package/dist/lib/esm/obsidian/setting-components/checkbox-component.mjs +8 -8
  534. package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.d.mts +2 -2
  535. package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.mjs +18 -17
  536. package/dist/lib/esm/obsidian/setting-components/date-component.d.mts +2 -2
  537. package/dist/lib/esm/obsidian/setting-components/date-component.mjs +4 -4
  538. package/dist/lib/esm/obsidian/setting-components/date-time-component.d.mts +2 -2
  539. package/dist/lib/esm/obsidian/setting-components/date-time-component.mjs +4 -4
  540. package/dist/lib/esm/obsidian/setting-components/email-component.d.mts +2 -2
  541. package/dist/lib/esm/obsidian/setting-components/email-component.mjs +4 -4
  542. package/dist/lib/esm/obsidian/setting-components/month-component.d.mts +2 -2
  543. package/dist/lib/esm/obsidian/setting-components/month-component.mjs +4 -4
  544. package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.d.mts +2 -2
  545. package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.mjs +7 -7
  546. package/dist/lib/esm/obsidian/setting-components/multiple-email-component.d.mts +2 -2
  547. package/dist/lib/esm/obsidian/setting-components/multiple-email-component.mjs +4 -4
  548. package/dist/lib/esm/obsidian/setting-components/multiple-file-component.mjs +2 -2
  549. package/dist/lib/esm/obsidian/setting-components/multiple-text-component.d.mts +2 -2
  550. package/dist/lib/esm/obsidian/setting-components/multiple-text-component.mjs +5 -5
  551. package/dist/lib/esm/obsidian/setting-components/number-component.d.mts +2 -2
  552. package/dist/lib/esm/obsidian/setting-components/number-component.mjs +4 -4
  553. package/dist/lib/esm/obsidian/setting-components/password-component.d.mts +2 -2
  554. package/dist/lib/esm/obsidian/setting-components/password-component.mjs +4 -4
  555. package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.d.mts +2 -2
  556. package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.mjs +6 -6
  557. package/dist/lib/esm/obsidian/setting-components/telephone-component.d.mts +2 -2
  558. package/dist/lib/esm/obsidian/setting-components/telephone-component.mjs +4 -4
  559. package/dist/lib/esm/obsidian/setting-components/text-based-component.d.mts +2 -2
  560. package/dist/lib/esm/obsidian/setting-components/text-based-component.mjs +6 -6
  561. package/dist/lib/esm/obsidian/setting-components/time-component.d.mts +2 -2
  562. package/dist/lib/esm/obsidian/setting-components/time-component.mjs +4 -4
  563. package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.d.mts +2 -2
  564. package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.mjs +5 -5
  565. package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.d.mts +2 -2
  566. package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.mjs +6 -6
  567. package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.d.mts +2 -2
  568. package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.mjs +8 -8
  569. package/dist/lib/esm/obsidian/setting-components/typed-text-component.d.mts +4 -4
  570. package/dist/lib/esm/obsidian/setting-components/typed-text-component.mjs +6 -5
  571. package/dist/lib/esm/obsidian/setting-components/url-component.d.mts +2 -2
  572. package/dist/lib/esm/obsidian/setting-components/url-component.mjs +4 -4
  573. package/dist/lib/esm/obsidian/setting-components/validator-component.d.mts +2 -2
  574. package/dist/lib/esm/obsidian/setting-components/validator-component.mjs +35 -35
  575. package/dist/lib/esm/obsidian/setting-components/week-component.d.mts +2 -2
  576. package/dist/lib/esm/obsidian/setting-components/week-component.mjs +4 -4
  577. package/dist/lib/esm/obsidian/setting-ex.d.mts +42 -42
  578. package/dist/lib/esm/obsidian/setting-ex.mjs +66 -66
  579. package/dist/lib/esm/obsidian/setting-group-ex.d.mts +2 -2
  580. package/dist/lib/esm/obsidian/setting-group-ex.mjs +4 -4
  581. package/dist/lib/esm/obsidian/vault-delete.d.mts +16 -2
  582. package/dist/lib/esm/obsidian/vault-delete.mjs +12 -6
  583. package/dist/lib/esm/obsidian/vault-transaction.mjs +8 -4
  584. package/dist/lib/esm/obsidian/vault.d.mts +32 -11
  585. package/dist/lib/esm/obsidian/vault.mjs +67 -47
  586. package/dist/lib/esm/obsidian/view-registrar.mjs +1 -1
  587. package/dist/lib/esm/obsidian/workspace.mjs +2 -2
  588. package/dist/lib/esm/path.d.mts +1 -1
  589. package/dist/lib/esm/path.mjs +7 -7
  590. package/dist/lib/esm/reg-exp.d.mts +4 -4
  591. package/dist/lib/esm/reg-exp.mjs +28 -21
  592. package/dist/lib/esm/script-utils/build.d.mts +1 -1
  593. package/dist/lib/esm/script-utils/build.mjs +15 -12
  594. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +14 -14
  595. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +26 -20
  596. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +10 -10
  597. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +3 -3
  598. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +6 -6
  599. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +6 -2
  600. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
  601. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +20 -20
  602. package/dist/lib/esm/script-utils/check-project-types.d.mts +12 -4
  603. package/dist/lib/esm/script-utils/check-project-types.mjs +3 -3
  604. package/dist/lib/esm/script-utils/cli-utils.d.mts +6 -6
  605. package/dist/lib/esm/script-utils/cli-utils.mjs +29 -33
  606. package/dist/lib/esm/script-utils/demo-vault-coverage.mjs +12 -9
  607. package/dist/lib/esm/script-utils/env-toggle.mjs +3 -3
  608. package/dist/lib/esm/script-utils/exec.d.mts +4 -4
  609. package/dist/lib/esm/script-utils/exec.mjs +32 -32
  610. package/dist/lib/esm/script-utils/formatters/dprint.mjs +2 -2
  611. package/dist/lib/esm/script-utils/fs.mjs +3 -3
  612. package/dist/lib/esm/script-utils/json.d.mts +2 -2
  613. package/dist/lib/esm/script-utils/json.mjs +5 -5
  614. package/dist/lib/esm/script-utils/linters/cspell.mjs +2 -2
  615. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +392 -2
  616. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +3 -1
  617. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +17 -17
  618. package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.d.mts +3 -1
  619. package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.mjs +17 -17
  620. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.d.mts +3 -1
  621. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +11 -11
  622. package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.d.mts +3 -1
  623. package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.mjs +99 -99
  624. package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.d.mts +3 -1
  625. package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.mjs +3 -3
  626. package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.mts +3 -1
  627. package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-result-members.mjs +11 -11
  628. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.d.mts +9 -3
  629. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +41 -41
  630. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.d.mts +6 -2
  631. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.mjs +15 -13
  632. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.d.mts +3 -1
  633. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +23 -23
  634. package/dist/lib/esm/script-utils/linters/eslint.mjs +4 -4
  635. package/dist/lib/esm/script-utils/linters/index.d.mts +1 -0
  636. package/dist/lib/esm/script-utils/linters/index.mjs +3 -1
  637. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.d.mts +2 -2
  638. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +8 -3
  639. package/dist/lib/esm/script-utils/linters/markdownlint-ignores.d.mts +35 -0
  640. package/dist/lib/esm/script-utils/linters/markdownlint-ignores.mjs +33 -0
  641. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +13 -9
  642. package/dist/lib/esm/script-utils/linters/over-exposure.d.mts +54 -18
  643. package/dist/lib/esm/script-utils/linters/over-exposure.mjs +8 -8
  644. package/dist/lib/esm/script-utils/npm-run.d.mts +16 -2
  645. package/dist/lib/esm/script-utils/npm-run.mjs +9 -3
  646. package/dist/lib/esm/script-utils/npm.d.mts +11 -11
  647. package/dist/lib/esm/script-utils/npm.mjs +11 -11
  648. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +165 -55
  649. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +1 -1
  650. package/dist/lib/esm/script-utils/test-runners/index.d.mts +1 -0
  651. package/dist/lib/esm/script-utils/test-runners/index.mjs +4 -2
  652. package/dist/lib/esm/script-utils/test-runners/vitest-config.d.mts +118 -0
  653. package/dist/lib/esm/script-utils/test-runners/vitest-config.mjs +210 -0
  654. package/dist/lib/esm/script-utils/validate-declarations.mjs +1 -1
  655. package/dist/lib/esm/script-utils/version.d.mts +21 -21
  656. package/dist/lib/esm/script-utils/version.mjs +48 -45
  657. package/dist/lib/esm/setup.d.mts +1 -1
  658. package/dist/lib/esm/setup.mjs +1 -1
  659. package/dist/lib/esm/strict-proxy.d.mts +2 -2
  660. package/dist/lib/esm/strict-proxy.mjs +20 -20
  661. package/dist/lib/esm/string.d.mts +60 -60
  662. package/dist/lib/esm/string.mjs +80 -79
  663. package/dist/lib/esm/transformers/map-transformer.mjs +2 -2
  664. package/dist/lib/esm/transformers/set-transformer.mjs +2 -2
  665. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +2 -2
  666. package/dist/lib/esm/type-guards.d.mts +6 -6
  667. package/dist/lib/esm/type-guards.mjs +6 -6
  668. package/dist/lib/esm/type.d.mts +2 -2
  669. package/dist/lib/esm/type.mjs +3 -3
  670. package/dist/lib/esm/url.d.mts +4 -4
  671. package/dist/lib/esm/url.mjs +8 -8
  672. package/dist/lib/esm/value-provider.d.mts +6 -6
  673. package/dist/lib/esm/value-provider.mjs +5 -5
  674. package/dist/templates/scripts/vitest-config.ts +2 -88
  675. package/obsidian/components/notebook-navigator-menu-event-registrar-component/package.json +6 -0
  676. package/obsidian/notebook-navigator/package.json +6 -0
  677. package/package.json +17 -33
  678. package/script-utils/linters/markdownlint-ignores/package.json +6 -0
  679. package/script-utils/test-runners/vitest-config/package.json +6 -0
@@ -77,8 +77,9 @@ async function getCanvasReferences(app, pathOrFile) {
77
77
  }
78
78
  break;
79
79
  }
80
- default:
80
+ default: {
81
81
  break;
82
+ }
82
83
  }
83
84
  }
84
85
  return references;
@@ -86,4 +87,4 @@ async function getCanvasReferences(app, pathOrFile) {
86
87
  export {
87
88
  getCanvasReferences
88
89
  };
89
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NhbnZhcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIGEgdXRpbGl0eSBmdW5jdGlvbiBmb3IgZXh0cmFjdGluZyByZWZlcmVuY2VzIGZyb20gYSBjYW52YXMgKGAuY2FudmFzYCkgZmlsZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgQ2FudmFzRGF0YSB9IGZyb20gJ29ic2lkaWFuL2NhbnZhcy5kLnRzJztcblxuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIENhbnZhc0ZpbGVOb2RlUmVmZXJlbmNlLFxuICBDYW52YXNSZWZlcmVuY2UsXG4gIENhbnZhc1RleHROb2RlUmVmZXJlbmNlXG59IGZyb20gJy4vcmVmZXJlbmNlLnRzJztcblxuaW1wb3J0IHsgZml4RnJvbnRtYXR0ZXJNYXJrZG93bkxpbmtzIH0gZnJvbSAnLi9saW5rLnRzJztcbmltcG9ydCB7XG4gIGdldExpbmtzLFxuICBwYXJzZU1ldGFkYXRhXG59IGZyb20gJy4vbWV0YWRhdGEtY2FjaGUudHMnO1xuaW1wb3J0IHsgcmVhZFNhZmUgfSBmcm9tICcuL3ZhdWx0LnRzJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgb3V0Z29pbmcgcmVmZXJlbmNlcyBvZiBhIGNhbnZhcyAoYC5jYW52YXNgKSBmaWxlLlxuICpcbiAqIE9ic2lkaWFuIGRvZXMgbm90IGluZGV4IGNhbnZhcyBsaW5rcyBpbnRvIHRoZSBwZXItZmlsZSBtZXRhZGF0YSBjYWNoZSwgc28gYSBjYW52YXMgZmlsZSdzXG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9DYWNoZWRNZXRhZGF0YSB8IENhY2hlZE1ldGFkYXRhfSBpcyBlbXB0eSBhbmQgdGhlXG4gKiB1c3VhbCBjYWNoZS1iYXNlZCByZWFkZXJzIHJldHVybiBub3RoaW5nIGZvciBpdC4gVGhpcyBoZWxwZXIgcmVhZHMgdGhlIGNhbnZhcyBKU09OIGRpcmVjdGx5IGFuZCByZXR1cm5zXG4gKiBib3RoIGl0cyBmaWxlLW5vZGUgbGlua3MgYW5kIGl0cyB0ZXh0LW5vZGUgZW1iZWRzIGFzIHtAbGluayBDYW52YXNSZWZlcmVuY2V9cy5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgcmVmZXJlbmNlcyBjYXJyeSB0aGUgYG5vZGVJbmRleGAvYHR5cGVgIChhbmQsIGZvciB0ZXh0IG5vZGVzLCB0aGUgYG9yaWdpbmFsUmVmZXJlbmNlYCkgdGhhdFxuICogdGhlIGNhbnZhcy1hd2FyZSB3cml0ZSBwYXRoIG5lZWRzLCBzbyBhIGNvbnN1bWVyIGNhbiBtb3ZlIGEgY2FudmFzLXJlZmVyZW5jZWQgYXR0YWNobWVudCBhbmQgcmV3cml0ZSB0aGVcbiAqIGNhbnZhcyBieSBjb21wb3NpbmcgYHJlZmVyZW5jZVRvRmlsZUNoYW5nZWAgKGZyb20gYC4vcmVmZXJlbmNlLnRzYCkgd2l0aCBgYXBwbHlGaWxlQ2hhbmdlc2AgKGZyb21cbiAqIGAuL2ZpbGUtY2hhbmdlLnRzYCkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBjYW52YXMgZmlsZSAob3IgaXRzIHBhdGgpIHRvIGV4dHJhY3QgcmVmZXJlbmNlcyBmcm9tLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgY2FudmFzIHJlZmVyZW5jZXMsIG9yIGFuIGVtcHR5IGFycmF5IHdoZW4gdGhlIGZpbGUgaXNcbiAqIG1pc3Npbmcgb3IgaXRzIGNvbnRlbnQgaXMgbm90IHZhbGlkIGNhbnZhcyBKU09OLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q2FudmFzUmVmZXJlbmNlcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q2FudmFzUmVmZXJlbmNlW10+IHtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmIChjb250ZW50ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxDYW52YXNEYXRhOiBudWxsIHwgUGFydGlhbDxDYW52YXNEYXRhPjtcbiAgdHJ5IHtcbiAgICBwYXJ0aWFsQ2FudmFzRGF0YSA9IEpTT04ucGFyc2UoY29udGVudCkgYXMgbnVsbCB8IFBhcnRpYWw8Q2FudmFzRGF0YT47XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGNhbnZhc0RhdGEgPSBwYXJ0aWFsQ2FudmFzRGF0YT8ubm9kZXNcbiAgICA/IHBhcnRpYWxDYW52YXNEYXRhIGFzIENhbnZhc0RhdGFcbiAgICA6IHtcbiAgICAgIGVkZ2VzOiBbXSxcbiAgICAgIG5vZGVzOiBbXVxuICAgIH07XG5cbiAgY29uc3QgcmVmZXJlbmNlczogQ2FudmFzUmVmZXJlbmNlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IFtub2RlSW5kZXgsIG5vZGVdIG9mIGNhbnZhc0RhdGEubm9kZXMuZW50cmllcygpKSB7XG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2ZpbGUnOiB7XG4gICAgICAgIGNvbnN0IGNhbnZhc0ZpbGVOb2RlUmVmZXJlbmNlOiBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSA9IHtcbiAgICAgICAgICBpc0NhbnZhczogdHJ1ZSxcbiAgICAgICAgICBrZXk6IGBub2Rlcy4ke1N0cmluZyhub2RlSW5kZXgpfS5maWxlYCxcbiAgICAgICAgICBsaW5rOiBub2RlLmZpbGUsXG4gICAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICAgIG9yaWdpbmFsOiBub2RlLmZpbGUsXG4gICAgICAgICAgdHlwZTogJ2ZpbGUnXG4gICAgICAgIH07XG4gICAgICAgIHJlZmVyZW5jZXMucHVzaChjYW52YXNGaWxlTm9kZVJlZmVyZW5jZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndGV4dCc6IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBwYXJzZU1ldGFkYXRhKGFwcCwgbm9kZS50ZXh0KTtcbiAgICAgICAgaWYgKGFwcC5wbHVnaW5zLmdldFBsdWdpbignZnJvbnRtYXR0ZXItbWFya2Rvd24tbGlua3MnKSkge1xuICAgICAgICAgIGZpeEZyb250bWF0dGVyTWFya2Rvd25MaW5rcyhtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGlua3MgPSBnZXRMaW5rcyh7IGNhY2hlOiBtZXRhZGF0YSB9KTtcbiAgICAgICAgZm9yIChjb25zdCBbbGlua0luZGV4LCBsaW5rXSBvZiBsaW5rcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICBjb25zdCBjYW52YXNUZXh0Tm9kZVJlZmVyZW5jZTogQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2UgPSB7XG4gICAgICAgICAgICBpc0NhbnZhczogdHJ1ZSxcbiAgICAgICAgICAgIGtleTogYG5vZGVzLiR7U3RyaW5nKG5vZGVJbmRleCl9LnRleHQuJHtTdHJpbmcobGlua0luZGV4KX1gLFxuICAgICAgICAgICAgbGluazogbGluay5saW5rLFxuICAgICAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICAgICAgb3JpZ2luYWw6IGxpbmsub3JpZ2luYWwsXG4gICAgICAgICAgICBvcmlnaW5hbFJlZmVyZW5jZTogbGluayxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0J1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmVmZXJlbmNlcy5wdXNoKGNhbnZhc1RleHROb2RlUmVmZXJlbmNlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWZlcmVuY2VzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsU0FBUyxtQ0FBbUM7QUFDNUM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGdCQUFnQjtBQW9CekIsZUFBc0Isb0JBQW9CLEtBQVUsWUFBb0Q7QUFDdEcsUUFBTSxVQUFVLE1BQU0sU0FBUyxLQUFLLFVBQVU7QUFDOUMsTUFBSSxZQUFZLE1BQU07QUFDcEIsV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUVBLE1BQUk7QUFDSixNQUFJO0FBQ0Ysd0JBQW9CLEtBQUssTUFBTSxPQUFPO0FBQUEsRUFDeEMsUUFBUTtBQUNOLFdBQU8sQ0FBQztBQUFBLEVBQ1Y7QUFFQSxRQUFNLGFBQWEsbUJBQW1CLFFBQ2xDLG9CQUNBO0FBQUEsSUFDQSxPQUFPLENBQUM7QUFBQSxJQUNSLE9BQU8sQ0FBQztBQUFBLEVBQ1Y7QUFFRixRQUFNLGFBQWdDLENBQUM7QUFFdkMsYUFBVyxDQUFDLFdBQVcsSUFBSSxLQUFLLFdBQVcsTUFBTSxRQUFRLEdBQUc7QUFDMUQsWUFBUSxLQUFLLE1BQU07QUFBQSxNQUNqQixLQUFLLFFBQVE7QUFDWCxjQUFNLDBCQUFtRDtBQUFBLFVBQ3ZELFVBQVU7QUFBQSxVQUNWLEtBQUssU0FBUyxPQUFPLFNBQVMsQ0FBQztBQUFBLFVBQy9CLE1BQU0sS0FBSztBQUFBLFVBQ1g7QUFBQSxVQUNBLFVBQVUsS0FBSztBQUFBLFVBQ2YsTUFBTTtBQUFBLFFBQ1I7QUFDQSxtQkFBVyxLQUFLLHVCQUF1QjtBQUN2QztBQUFBLE1BQ0Y7QUFBQSxNQUNBLEtBQUssUUFBUTtBQUNYLGNBQU0sV0FBVyxNQUFNLGNBQWMsS0FBSyxLQUFLLElBQUk7QUFDbkQsWUFBSSxJQUFJLFFBQVEsVUFBVSw0QkFBNEIsR0FBRztBQUN2RCxzQ0FBNEIsUUFBUTtBQUFBLFFBQ3RDO0FBQ0EsY0FBTSxRQUFRLFNBQVMsRUFBRSxPQUFPLFNBQVMsQ0FBQztBQUMxQyxtQkFBVyxDQUFDLFdBQVcsSUFBSSxLQUFLLE1BQU0sUUFBUSxHQUFHO0FBQy9DLGdCQUFNLDBCQUFtRDtBQUFBLFlBQ3ZELFVBQVU7QUFBQSxZQUNWLEtBQUssU0FBUyxPQUFPLFNBQVMsQ0FBQyxTQUFTLE9BQU8sU0FBUyxDQUFDO0FBQUEsWUFDekQsTUFBTSxLQUFLO0FBQUEsWUFDWDtBQUFBLFlBQ0EsVUFBVSxLQUFLO0FBQUEsWUFDZixtQkFBbUI7QUFBQSxZQUNuQixNQUFNO0FBQUEsVUFDUjtBQUNBLHFCQUFXLEtBQUssdUJBQXVCO0FBQUEsUUFDekM7QUFDQTtBQUFBLE1BQ0Y7QUFBQSxNQUNBO0FBQ0U7QUFBQSxJQUNKO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
90
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NhbnZhcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIGEgdXRpbGl0eSBmdW5jdGlvbiBmb3IgZXh0cmFjdGluZyByZWZlcmVuY2VzIGZyb20gYSBjYW52YXMgKGAuY2FudmFzYCkgZmlsZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgQ2FudmFzRGF0YSB9IGZyb20gJ29ic2lkaWFuL2NhbnZhcy5kLnRzJztcblxuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIENhbnZhc0ZpbGVOb2RlUmVmZXJlbmNlLFxuICBDYW52YXNSZWZlcmVuY2UsXG4gIENhbnZhc1RleHROb2RlUmVmZXJlbmNlXG59IGZyb20gJy4vcmVmZXJlbmNlLnRzJztcblxuaW1wb3J0IHsgZml4RnJvbnRtYXR0ZXJNYXJrZG93bkxpbmtzIH0gZnJvbSAnLi9saW5rLnRzJztcbmltcG9ydCB7XG4gIGdldExpbmtzLFxuICBwYXJzZU1ldGFkYXRhXG59IGZyb20gJy4vbWV0YWRhdGEtY2FjaGUudHMnO1xuaW1wb3J0IHsgcmVhZFNhZmUgfSBmcm9tICcuL3ZhdWx0LnRzJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgb3V0Z29pbmcgcmVmZXJlbmNlcyBvZiBhIGNhbnZhcyAoYC5jYW52YXNgKSBmaWxlLlxuICpcbiAqIE9ic2lkaWFuIGRvZXMgbm90IGluZGV4IGNhbnZhcyBsaW5rcyBpbnRvIHRoZSBwZXItZmlsZSBtZXRhZGF0YSBjYWNoZSwgc28gYSBjYW52YXMgZmlsZSdzXG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9DYWNoZWRNZXRhZGF0YSB8IENhY2hlZE1ldGFkYXRhfSBpcyBlbXB0eSBhbmQgdGhlXG4gKiB1c3VhbCBjYWNoZS1iYXNlZCByZWFkZXJzIHJldHVybiBub3RoaW5nIGZvciBpdC4gVGhpcyBoZWxwZXIgcmVhZHMgdGhlIGNhbnZhcyBKU09OIGRpcmVjdGx5IGFuZCByZXR1cm5zXG4gKiBib3RoIGl0cyBmaWxlLW5vZGUgbGlua3MgYW5kIGl0cyB0ZXh0LW5vZGUgZW1iZWRzIGFzIHtAbGluayBDYW52YXNSZWZlcmVuY2V9cy5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgcmVmZXJlbmNlcyBjYXJyeSB0aGUgYG5vZGVJbmRleGAvYHR5cGVgIChhbmQsIGZvciB0ZXh0IG5vZGVzLCB0aGUgYG9yaWdpbmFsUmVmZXJlbmNlYCkgdGhhdFxuICogdGhlIGNhbnZhcy1hd2FyZSB3cml0ZSBwYXRoIG5lZWRzLCBzbyBhIGNvbnN1bWVyIGNhbiBtb3ZlIGEgY2FudmFzLXJlZmVyZW5jZWQgYXR0YWNobWVudCBhbmQgcmV3cml0ZSB0aGVcbiAqIGNhbnZhcyBieSBjb21wb3NpbmcgYHJlZmVyZW5jZVRvRmlsZUNoYW5nZWAgKGZyb20gYC4vcmVmZXJlbmNlLnRzYCkgd2l0aCBgYXBwbHlGaWxlQ2hhbmdlc2AgKGZyb21cbiAqIGAuL2ZpbGUtY2hhbmdlLnRzYCkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBjYW52YXMgZmlsZSAob3IgaXRzIHBhdGgpIHRvIGV4dHJhY3QgcmVmZXJlbmNlcyBmcm9tLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgY2FudmFzIHJlZmVyZW5jZXMsIG9yIGFuIGVtcHR5IGFycmF5IHdoZW4gdGhlIGZpbGUgaXNcbiAqIG1pc3Npbmcgb3IgaXRzIGNvbnRlbnQgaXMgbm90IHZhbGlkIGNhbnZhcyBKU09OLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q2FudmFzUmVmZXJlbmNlcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q2FudmFzUmVmZXJlbmNlW10+IHtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmIChjb250ZW50ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxDYW52YXNEYXRhOiBudWxsIHwgUGFydGlhbDxDYW52YXNEYXRhPjtcbiAgdHJ5IHtcbiAgICBwYXJ0aWFsQ2FudmFzRGF0YSA9IEpTT04ucGFyc2UoY29udGVudCkgYXMgbnVsbCB8IFBhcnRpYWw8Q2FudmFzRGF0YT47XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGNhbnZhc0RhdGEgPSBwYXJ0aWFsQ2FudmFzRGF0YT8ubm9kZXNcbiAgICA/IHBhcnRpYWxDYW52YXNEYXRhIGFzIENhbnZhc0RhdGFcbiAgICA6IHtcbiAgICAgIGVkZ2VzOiBbXSxcbiAgICAgIG5vZGVzOiBbXVxuICAgIH07XG5cbiAgY29uc3QgcmVmZXJlbmNlczogQ2FudmFzUmVmZXJlbmNlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IFtub2RlSW5kZXgsIG5vZGVdIG9mIGNhbnZhc0RhdGEubm9kZXMuZW50cmllcygpKSB7XG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2ZpbGUnOiB7XG4gICAgICAgIGNvbnN0IGNhbnZhc0ZpbGVOb2RlUmVmZXJlbmNlOiBDYW52YXNGaWxlTm9kZVJlZmVyZW5jZSA9IHtcbiAgICAgICAgICBpc0NhbnZhczogdHJ1ZSxcbiAgICAgICAgICBrZXk6IGBub2Rlcy4ke1N0cmluZyhub2RlSW5kZXgpfS5maWxlYCxcbiAgICAgICAgICBsaW5rOiBub2RlLmZpbGUsXG4gICAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICAgIG9yaWdpbmFsOiBub2RlLmZpbGUsXG4gICAgICAgICAgdHlwZTogJ2ZpbGUnXG4gICAgICAgIH07XG4gICAgICAgIHJlZmVyZW5jZXMucHVzaChjYW52YXNGaWxlTm9kZVJlZmVyZW5jZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndGV4dCc6IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBwYXJzZU1ldGFkYXRhKGFwcCwgbm9kZS50ZXh0KTtcbiAgICAgICAgaWYgKGFwcC5wbHVnaW5zLmdldFBsdWdpbignZnJvbnRtYXR0ZXItbWFya2Rvd24tbGlua3MnKSkge1xuICAgICAgICAgIGZpeEZyb250bWF0dGVyTWFya2Rvd25MaW5rcyhtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGlua3MgPSBnZXRMaW5rcyh7IGNhY2hlOiBtZXRhZGF0YSB9KTtcbiAgICAgICAgZm9yIChjb25zdCBbbGlua0luZGV4LCBsaW5rXSBvZiBsaW5rcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICBjb25zdCBjYW52YXNUZXh0Tm9kZVJlZmVyZW5jZTogQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2UgPSB7XG4gICAgICAgICAgICBpc0NhbnZhczogdHJ1ZSxcbiAgICAgICAgICAgIGtleTogYG5vZGVzLiR7U3RyaW5nKG5vZGVJbmRleCl9LnRleHQuJHtTdHJpbmcobGlua0luZGV4KX1gLFxuICAgICAgICAgICAgbGluazogbGluay5saW5rLFxuICAgICAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICAgICAgb3JpZ2luYWw6IGxpbmsub3JpZ2luYWwsXG4gICAgICAgICAgICBvcmlnaW5hbFJlZmVyZW5jZTogbGluayxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0J1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmVmZXJlbmNlcy5wdXNoKGNhbnZhc1RleHROb2RlUmVmZXJlbmNlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxTQUFTLG1DQUFtQztBQUM1QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZ0JBQWdCO0FBb0J6QixlQUFzQixvQkFBb0IsS0FBVSxZQUFvRDtBQUN0RyxRQUFNLFVBQVUsTUFBTSxTQUFTLEtBQUssVUFBVTtBQUM5QyxNQUFJLFlBQVksTUFBTTtBQUNwQixXQUFPLENBQUM7QUFBQSxFQUNWO0FBRUEsTUFBSTtBQUNKLE1BQUk7QUFDRix3QkFBb0IsS0FBSyxNQUFNLE9BQU87QUFBQSxFQUN4QyxRQUFRO0FBQ04sV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUVBLFFBQU0sYUFBYSxtQkFBbUIsUUFDbEMsb0JBQ0E7QUFBQSxJQUNBLE9BQU8sQ0FBQztBQUFBLElBQ1IsT0FBTyxDQUFDO0FBQUEsRUFDVjtBQUVGLFFBQU0sYUFBZ0MsQ0FBQztBQUV2QyxhQUFXLENBQUMsV0FBVyxJQUFJLEtBQUssV0FBVyxNQUFNLFFBQVEsR0FBRztBQUMxRCxZQUFRLEtBQUssTUFBTTtBQUFBLE1BQ2pCLEtBQUssUUFBUTtBQUNYLGNBQU0sMEJBQW1EO0FBQUEsVUFDdkQsVUFBVTtBQUFBLFVBQ1YsS0FBSyxTQUFTLE9BQU8sU0FBUyxDQUFDO0FBQUEsVUFDL0IsTUFBTSxLQUFLO0FBQUEsVUFDWDtBQUFBLFVBQ0EsVUFBVSxLQUFLO0FBQUEsVUFDZixNQUFNO0FBQUEsUUFDUjtBQUNBLG1CQUFXLEtBQUssdUJBQXVCO0FBQ3ZDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsS0FBSyxRQUFRO0FBQ1gsY0FBTSxXQUFXLE1BQU0sY0FBYyxLQUFLLEtBQUssSUFBSTtBQUNuRCxZQUFJLElBQUksUUFBUSxVQUFVLDRCQUE0QixHQUFHO0FBQ3ZELHNDQUE0QixRQUFRO0FBQUEsUUFDdEM7QUFDQSxjQUFNLFFBQVEsU0FBUyxFQUFFLE9BQU8sU0FBUyxDQUFDO0FBQzFDLG1CQUFXLENBQUMsV0FBVyxJQUFJLEtBQUssTUFBTSxRQUFRLEdBQUc7QUFDL0MsZ0JBQU0sMEJBQW1EO0FBQUEsWUFDdkQsVUFBVTtBQUFBLFlBQ1YsS0FBSyxTQUFTLE9BQU8sU0FBUyxDQUFDLFNBQVMsT0FBTyxTQUFTLENBQUM7QUFBQSxZQUN6RCxNQUFNLEtBQUs7QUFBQSxZQUNYO0FBQUEsWUFDQSxVQUFVLEtBQUs7QUFBQSxZQUNmLG1CQUFtQjtBQUFBLFlBQ25CLE1BQU07QUFBQSxVQUNSO0FBQ0EscUJBQVcsS0FBSyx1QkFBdUI7QUFBQSxRQUN6QztBQUNBO0FBQUEsTUFDRjtBQUFBLE1BQ0EsU0FBUztBQUNQO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -21,6 +21,7 @@ if you want to view the source, please visit the github repository of this plugi
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
24
+ import { snapshot } from "../array.mjs";
24
25
  import { getObsidianDevUtilsState } from "../obsidian-dev-utils-state.mjs";
25
26
  const STATE_KEY = "caseInsensitiveFileIndex";
26
27
  class CaseInsensitiveFileIndex {
@@ -52,7 +53,7 @@ class CaseInsensitiveFileIndex {
52
53
  const key = path.toLowerCase();
53
54
  this.map.delete(key);
54
55
  const descendantPrefix = `${key}/`;
55
- for (const existingKey of Array.from(this.map.keys())) {
56
+ for (const existingKey of snapshot(this.map.keys())) {
56
57
  if (existingKey.startsWith(descendantPrefix)) {
57
58
  this.map.delete(existingKey);
58
59
  }
@@ -94,11 +95,12 @@ class CaseInsensitiveFileIndex {
94
95
  this.map.set(newKey, newAbstractFile);
95
96
  const oldDescendantPrefix = `${oldKey}/`;
96
97
  const newDescendantPrefix = `${newKey}/`;
97
- for (const [existingKey, existingValue] of Array.from(this.map.entries())) {
98
- if (existingKey.startsWith(oldDescendantPrefix)) {
99
- this.map.delete(existingKey);
100
- this.map.set(newDescendantPrefix + existingKey.slice(oldDescendantPrefix.length), existingValue);
98
+ for (const [existingKey, existingValue] of snapshot(this.map)) {
99
+ if (!existingKey.startsWith(oldDescendantPrefix)) {
100
+ continue;
101
101
  }
102
+ this.map.delete(existingKey);
103
+ this.map.set(newDescendantPrefix + existingKey.slice(oldDescendantPrefix.length), existingValue);
102
104
  }
103
105
  }
104
106
  }
@@ -124,4 +126,4 @@ export {
124
126
  setCaseInsensitiveFileIndex,
125
127
  unsetCaseInsensitiveFileIndex
126
128
  };
127
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIGFuIG9wdC1pbiBPKDEpIGNhc2UtaW5zZW5zaXRpdmUgcmVzb2x2ZXIgZm9yIE9ic2lkaWFuIHZhdWx0cy5cbiAqXG4gKiBPYnNpZGlhbidzIG5hdGl2ZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9WYXVsdCB8IFZhdWx0fSByZXNvbHZlc1xuICogYSBzdHJpbmcgcGF0aCBjYXNlLWluc2Vuc2l0aXZlbHkgKHRoZSBXaW5kb3dzL21hY09TIGRlZmF1bHQpIGluIE8oMSkgb24gYSBoaXQgYnV0IHdpdGggYW5cbiAqIE8odmF1bHQpIHNjYW4gb24gYSBtaXNzLiBUaGUgbWlzcyBjYXNlIGlzIHRoZSBob3Qgb25lIGR1cmluZyBkZWxldGlvbiBjYXNjYWRlcywgd2hlcmUgZXh0ZW5zaW9uXG4gKiBjaGVja3MgYW5kIGNhY2hlIGxvb2t1cHMgYXJlIHBlcmZvcm1lZCBvbiBhbHJlYWR5LXJlbW92ZWQgcGF0aHMuIFRoaXMgbW9kdWxlIGJhY2tzIHRoZVxuICogY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXAgd2l0aCBhIGBsb3dlcmNhc2UtcGF0aCBcdTIxOTIgVEFic3RyYWN0RmlsZWAgaW5kZXggc28gbWlzc2VzIGFyZSBPKDEpIHRvby5cbiAqXG4gKiBUaGUgaW5kZXggaXMgZXhwbGljaXRseSBvcHQtaW46IGEgY29uc3VtZXIgaW5zdGFsbHMgaXQgYnkgbG9hZGluZyBhXG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9Db21wb25lbnQgfCBDb21wb25lbnR9IHRoYXQga2VlcHMgaXQgaW5cbiAqIHN5bmMgd2l0aCBgY3JlYXRlYC9gZGVsZXRlYC9gcmVuYW1lYCBldmVudHMgKHNlZSBgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4Q29tcG9uZW50YCkuIFVudGlsIHRoZW4sXG4gKiB0aGUgcmVzb2x1dGlvbiBsYXllciBmYWxscyBiYWNrIHRvIHRoZSBuYXRpdmUgKE8odmF1bHQpLW9uLW1pc3MpIGxvb2t1cCwgc28gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnLi4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcblxuY29uc3QgU1RBVEVfS0VZID0gJ2Nhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCc7XG5cbi8qKlxuICogQW4gTygxKSBjYXNlLWluc2Vuc2l0aXZlIGluZGV4IG9mIHRoZSBsb2FkZWQgZmlsZXMgYW5kIGZvbGRlcnMgb2YgYSBzaW5nbGUgdmF1bHQuXG4gKlxuICogVGhlIGluZGV4IG1hcHMgdGhlIGxvd2VyY2FzZWQgcGF0aCBvZiBlYWNoIGFic3RyYWN0IGZpbGUgdG8gdGhlIGFic3RyYWN0IGZpbGUgaXRzZWxmLiBJdCBpcyBrZXB0XG4gKiBpbiBzeW5jIGJ5IGFuIG93bmluZyBjb21wb25lbnQgdGhhdCBmb3J3YXJkcyBgY3JlYXRlYC9gZGVsZXRlYC9gcmVuYW1lYCB2YXVsdCBldmVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgge1xuICBwcml2YXRlIHJlYWRvbmx5IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBUQWJzdHJhY3RGaWxlPigpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBpbmRleC5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZSB3aG9zZSB2YXVsdCB0aGlzIGluZGV4IG1pcnJvcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IGFwcDogQXBwKSB7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBhYnN0cmFjdCBmaWxlIHRvIHRoZSBpbmRleC5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGQoYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5tYXAuc2V0KGFic3RyYWN0RmlsZS5wYXRoLnRvTG93ZXJDYXNlKCksIGFic3RyYWN0RmlsZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgYWJzdHJhY3QgZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0aCBmcm9tIHRoZSBpbmRleCwgYWxvbmcgd2l0aCBhbGwgb2YgaXRzIGRlc2NlbmRhbnRzXG4gICAqIChmb3IgZm9sZGVyIGRlbGV0aW9ucywgd2hlcmUgT2JzaWRpYW4gcmVtb3ZlcyB0aGUgd2hvbGUgc3VidHJlZSkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGFic3RyYWN0IGZpbGUgdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHVibGljIGRlbGV0ZShwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBwYXRoLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5tYXAuZGVsZXRlKGtleSk7XG4gICAgY29uc3QgZGVzY2VuZGFudFByZWZpeCA9IGAke2tleX0vYDtcbiAgICBmb3IgKGNvbnN0IGV4aXN0aW5nS2V5IG9mIEFycmF5LmZyb20odGhpcy5tYXAua2V5cygpKSkge1xuICAgICAgaWYgKGV4aXN0aW5nS2V5LnN0YXJ0c1dpdGgoZGVzY2VuZGFudFByZWZpeCkpIHtcbiAgICAgICAgdGhpcy5tYXAuZGVsZXRlKGV4aXN0aW5nS2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYW4gYWJzdHJhY3QgZmlsZSBieSBpdHMgcGF0aCwgY2FzZS1pbnNlbnNpdGl2ZWx5LCBpbiBPKDEpLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHJlc29sdmUuXG4gICAqIEByZXR1cm5zIFRoZSBhYnN0cmFjdCBmaWxlIGlmIGZvdW5kLCBvdGhlcndpc2UgYG51bGxgLlxuICAgKi9cbiAgcHVibGljIGdldChwYXRoOiBzdHJpbmcpOiBudWxsIHwgVEFic3RyYWN0RmlsZSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmdldChwYXRoLnRvTG93ZXJDYXNlKCkpID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhpcyBpbmRleCBtaXJyb3JzIHRoZSBnaXZlbiBhcHBsaWNhdGlvbidzIHZhdWx0LlxuICAgKlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlIHRvIGNoZWNrIGFnYWluc3QuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGlzIGluZGV4IGJlbG9uZ3MgdG8gdGhlIGdpdmVuIGFwcGxpY2F0aW9uLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBvd25zQXBwKGFwcDogQXBwKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXBwID09PSBhcHA7XG4gIH1cblxuICAvKipcbiAgICogUmUta2V5cyBhbiBhYnN0cmFjdCBmaWxlIChhbmQsIGZvciBmb2xkZXJzLCBhbGwgb2YgaXRzIGRlc2NlbmRhbnRzKSBhZnRlciBhIHJlbmFtZS5cbiAgICpcbiAgICogT2JzaWRpYW4gZmlyZXMgYSBzaW5nbGUgYHJlbmFtZWAgZXZlbnQgZm9yIHRoZSByZW5hbWVkIGFic3RyYWN0IGZpbGUgYW5kIHVwZGF0ZXMgaXRzXG4gICAqIGRlc2NlbmRhbnRzJyBwYXRocyBpbiBwbGFjZSB3aXRob3V0IGZpcmluZyBwZXItZGVzY2VuZGFudCBldmVudHMsIHNvIGRlc2NlbmRhbnQga2V5cyBhcmVcbiAgICogcmVjb21wdXRlZCBoZXJlIGJ5IHN3YXBwaW5nIHRoZSBvbGQgcGF0aCBwcmVmaXggZm9yIHRoZSBuZXcgb25lLiBIYW5kbGVzIGNhc2Utb25seSByZW5hbWVzICh0aGVcbiAgICogb2xkIGFuZCBuZXcga2V5cyBjb2luY2lkZSkuXG4gICAqXG4gICAqIEBwYXJhbSBvbGRQYXRoIC0gVGhlIHBhdGggdGhlIGFic3RyYWN0IGZpbGUgaGFkIGJlZm9yZSB0aGUgcmVuYW1lLlxuICAgKiBAcGFyYW0gbmV3QWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgd2l0aCBpdHMgdXBkYXRlZCAocG9zdC1yZW5hbWUpIHBhdGguXG4gICAqL1xuICBwdWJsaWMgcmVuYW1lKG9sZFBhdGg6IHN0cmluZywgbmV3QWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkS2V5ID0gb2xkUGF0aC50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IG5ld0tleSA9IG5ld0Fic3RyYWN0RmlsZS5wYXRoLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5tYXAuZGVsZXRlKG9sZEtleSk7XG4gICAgdGhpcy5tYXAuc2V0KG5ld0tleSwgbmV3QWJzdHJhY3RGaWxlKTtcblxuICAgIGNvbnN0IG9sZERlc2NlbmRhbnRQcmVmaXggPSBgJHtvbGRLZXl9L2A7XG4gICAgY29uc3QgbmV3RGVzY2VuZGFudFByZWZpeCA9IGAke25ld0tleX0vYDtcbiAgICBmb3IgKGNvbnN0IFtleGlzdGluZ0tleSwgZXhpc3RpbmdWYWx1ZV0gb2YgQXJyYXkuZnJvbSh0aGlzLm1hcC5lbnRyaWVzKCkpKSB7XG4gICAgICBpZiAoZXhpc3RpbmdLZXkuc3RhcnRzV2l0aChvbGREZXNjZW5kYW50UHJlZml4KSkge1xuICAgICAgICB0aGlzLm1hcC5kZWxldGUoZXhpc3RpbmdLZXkpO1xuICAgICAgICB0aGlzLm1hcC5zZXQobmV3RGVzY2VuZGFudFByZWZpeCArIGV4aXN0aW5nS2V5LnNsaWNlKG9sZERlc2NlbmRhbnRQcmVmaXgubGVuZ3RoKSwgZXhpc3RpbmdWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBpbnN0YWxsZWQgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIGluZGV4IGZvciB0aGUgZ2l2ZW4gYXBwbGljYXRpb24sIGlmIGFueS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlIHdob3NlIGluZGV4IHRvIHJldHJpZXZlLlxuICogQHJldHVybnMgVGhlIGluZGV4IGlmIG9uZSBpcyBpbnN0YWxsZWQgZm9yIHRoaXMgYXBwbGljYXRpb24sIG90aGVyd2lzZSBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgoYXBwOiBBcHApOiBDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXggfCBudWxsIHtcbiAgY29uc3QgaW5kZXggPSBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGU8Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4IHwgbnVsbD4oU1RBVEVfS0VZLCBudWxsKS52YWx1ZTtcbiAgaWYgKGluZGV4Py5vd25zQXBwKGFwcCkpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogSW5zdGFsbHMgYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgaW5kZXggYXMgdGhlIGFjdGl2ZSByZXNvbHZlci5cbiAqXG4gKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggdG8gaW5zdGFsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleChpbmRleDogQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KTogdm9pZCB7XG4gIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZTxDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXggfCBudWxsPihTVEFURV9LRVksIG51bGwpLnZhbHVlID0gaW5kZXg7XG59XG5cbi8qKlxuICogVW5pbnN0YWxscyBhIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBpbmRleCwgYnV0IG9ubHkgaWYgaXQgaXMgdGhlIGN1cnJlbnRseS1pbnN0YWxsZWQgb25lLlxuICpcbiAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCB0byB1bmluc3RhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnNldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleChpbmRleDogQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KTogdm9pZCB7XG4gIGNvbnN0IHdyYXBwZXIgPSBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGU8Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4IHwgbnVsbD4oU1RBVEVfS0VZLCBudWxsKTtcbiAgaWYgKHdyYXBwZXIudmFsdWUgPT09IGluZGV4KSB7XG4gICAgd3JhcHBlci52YWx1ZSA9IG51bGw7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBLFNBQVMsZ0NBQWdDO0FBRXpDLE1BQU0sWUFBWTtBQVFYLE1BQU0seUJBQXlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUTdCLFlBQStCLEtBQVU7QUFBVjtBQUFBLEVBQ3RDO0FBQUEsRUFEc0M7QUFBQSxFQVByQixNQUFNLG9CQUFJLElBQTJCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBZS9DLElBQUksY0FBbUM7QUFDNUMsU0FBSyxJQUFJLElBQUksYUFBYSxLQUFLLFlBQVksR0FBRyxZQUFZO0FBQUEsRUFDNUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLE9BQU8sTUFBb0I7QUFDaEMsVUFBTSxNQUFNLEtBQUssWUFBWTtBQUM3QixTQUFLLElBQUksT0FBTyxHQUFHO0FBQ25CLFVBQU0sbUJBQW1CLEdBQUcsR0FBRztBQUMvQixlQUFXLGVBQWUsTUFBTSxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRztBQUNyRCxVQUFJLFlBQVksV0FBVyxnQkFBZ0IsR0FBRztBQUM1QyxhQUFLLElBQUksT0FBTyxXQUFXO0FBQUEsTUFDN0I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sSUFBSSxNQUFvQztBQUM3QyxXQUFPLEtBQUssSUFBSSxJQUFJLEtBQUssWUFBWSxDQUFDLEtBQUs7QUFBQSxFQUM3QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sUUFBUSxLQUFtQjtBQUNoQyxXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBYU8sT0FBTyxTQUFpQixpQkFBc0M7QUFDbkUsVUFBTSxTQUFTLFFBQVEsWUFBWTtBQUNuQyxVQUFNLFNBQVMsZ0JBQWdCLEtBQUssWUFBWTtBQUNoRCxTQUFLLElBQUksT0FBTyxNQUFNO0FBQ3RCLFNBQUssSUFBSSxJQUFJLFFBQVEsZUFBZTtBQUVwQyxVQUFNLHNCQUFzQixHQUFHLE1BQU07QUFDckMsVUFBTSxzQkFBc0IsR0FBRyxNQUFNO0FBQ3JDLGVBQVcsQ0FBQyxhQUFhLGFBQWEsS0FBSyxNQUFNLEtBQUssS0FBSyxJQUFJLFFBQVEsQ0FBQyxHQUFHO0FBQ3pFLFVBQUksWUFBWSxXQUFXLG1CQUFtQixHQUFHO0FBQy9DLGFBQUssSUFBSSxPQUFPLFdBQVc7QUFDM0IsYUFBSyxJQUFJLElBQUksc0JBQXNCLFlBQVksTUFBTSxvQkFBb0IsTUFBTSxHQUFHLGFBQWE7QUFBQSxNQUNqRztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFRTyxTQUFTLDRCQUE0QixLQUEyQztBQUNyRixRQUFNLFFBQVEseUJBQTBELFdBQVcsSUFBSSxFQUFFO0FBQ3pGLE1BQUksT0FBTyxRQUFRLEdBQUcsR0FBRztBQUN2QixXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU87QUFDVDtBQU9PLFNBQVMsNEJBQTRCLE9BQXVDO0FBQ2pGLDJCQUEwRCxXQUFXLElBQUksRUFBRSxRQUFRO0FBQ3JGO0FBT08sU0FBUyw4QkFBOEIsT0FBdUM7QUFDbkYsUUFBTSxVQUFVLHlCQUEwRCxXQUFXLElBQUk7QUFDekYsTUFBSSxRQUFRLFVBQVUsT0FBTztBQUMzQixZQUFRLFFBQVE7QUFBQSxFQUNsQjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
129
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIGFuIG9wdC1pbiBPKDEpIGNhc2UtaW5zZW5zaXRpdmUgcmVzb2x2ZXIgZm9yIE9ic2lkaWFuIHZhdWx0cy5cbiAqXG4gKiBPYnNpZGlhbidzIG5hdGl2ZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9WYXVsdCB8IFZhdWx0fSByZXNvbHZlc1xuICogYSBzdHJpbmcgcGF0aCBjYXNlLWluc2Vuc2l0aXZlbHkgKHRoZSBXaW5kb3dzL21hY09TIGRlZmF1bHQpIGluIE8oMSkgb24gYSBoaXQgYnV0IHdpdGggYW5cbiAqIE8odmF1bHQpIHNjYW4gb24gYSBtaXNzLiBUaGUgbWlzcyBjYXNlIGlzIHRoZSBob3Qgb25lIGR1cmluZyBkZWxldGlvbiBjYXNjYWRlcywgd2hlcmUgZXh0ZW5zaW9uXG4gKiBjaGVja3MgYW5kIGNhY2hlIGxvb2t1cHMgYXJlIHBlcmZvcm1lZCBvbiBhbHJlYWR5LXJlbW92ZWQgcGF0aHMuIFRoaXMgbW9kdWxlIGJhY2tzIHRoZVxuICogY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXAgd2l0aCBhIGBsb3dlcmNhc2UtcGF0aCBcdTIxOTIgVEFic3RyYWN0RmlsZWAgaW5kZXggc28gbWlzc2VzIGFyZSBPKDEpIHRvby5cbiAqXG4gKiBUaGUgaW5kZXggaXMgZXhwbGljaXRseSBvcHQtaW46IGEgY29uc3VtZXIgaW5zdGFsbHMgaXQgYnkgbG9hZGluZyBhXG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9Db21wb25lbnQgfCBDb21wb25lbnR9IHRoYXQga2VlcHMgaXQgaW5cbiAqIHN5bmMgd2l0aCBgY3JlYXRlYC9gZGVsZXRlYC9gcmVuYW1lYCBldmVudHMgKHNlZSBgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4Q29tcG9uZW50YCkuIFVudGlsIHRoZW4sXG4gKiB0aGUgcmVzb2x1dGlvbiBsYXllciBmYWxscyBiYWNrIHRvIHRoZSBuYXRpdmUgKE8odmF1bHQpLW9uLW1pc3MpIGxvb2t1cCwgc28gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgc25hcHNob3QgfSBmcm9tICcuLi9hcnJheS50cyc7XG5pbXBvcnQgeyBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUgfSBmcm9tICcuLi9vYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHMnO1xuXG5jb25zdCBTVEFURV9LRVkgPSAnY2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4JztcblxuLyoqXG4gKiBBbiBPKDEpIGNhc2UtaW5zZW5zaXRpdmUgaW5kZXggb2YgdGhlIGxvYWRlZCBmaWxlcyBhbmQgZm9sZGVycyBvZiBhIHNpbmdsZSB2YXVsdC5cbiAqXG4gKiBUaGUgaW5kZXggbWFwcyB0aGUgbG93ZXJjYXNlZCBwYXRoIG9mIGVhY2ggYWJzdHJhY3QgZmlsZSB0byB0aGUgYWJzdHJhY3QgZmlsZSBpdHNlbGYuIEl0IGlzIGtlcHRcbiAqIGluIHN5bmMgYnkgYW4gb3duaW5nIGNvbXBvbmVudCB0aGF0IGZvcndhcmRzIGBjcmVhdGVgL2BkZWxldGVgL2ByZW5hbWVgIHZhdWx0IGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFRBYnN0cmFjdEZpbGU+KCk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlIHdob3NlIHZhdWx0IHRoaXMgaW5kZXggbWlycm9ycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHApIHt9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gYWJzdHJhY3QgZmlsZSB0byB0aGUgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkKGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IHZvaWQge1xuICAgIHRoaXMubWFwLnNldChhYnN0cmFjdEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpLCBhYnN0cmFjdEZpbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGFic3RyYWN0IGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggZnJvbSB0aGUgaW5kZXgsIGFsb25nIHdpdGggYWxsIG9mIGl0cyBkZXNjZW5kYW50c1xuICAgKiAoZm9yIGZvbGRlciBkZWxldGlvbnMsIHdoZXJlIE9ic2lkaWFuIHJlbW92ZXMgdGhlIHdob2xlIHN1YnRyZWUpLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBhYnN0cmFjdCBmaWxlIHRvIHJlbW92ZS5cbiAgICovXG4gIHB1YmxpYyBkZWxldGUocGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gcGF0aC50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMubWFwLmRlbGV0ZShrZXkpO1xuICAgIGNvbnN0IGRlc2NlbmRhbnRQcmVmaXggPSBgJHtrZXl9L2A7XG4gICAgZm9yIChjb25zdCBleGlzdGluZ0tleSBvZiBzbmFwc2hvdCh0aGlzLm1hcC5rZXlzKCkpKSB7XG4gICAgICBpZiAoZXhpc3RpbmdLZXkuc3RhcnRzV2l0aChkZXNjZW5kYW50UHJlZml4KSkge1xuICAgICAgICB0aGlzLm1hcC5kZWxldGUoZXhpc3RpbmdLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiBhYnN0cmFjdCBmaWxlIGJ5IGl0cyBwYXRoLCBjYXNlLWluc2Vuc2l0aXZlbHksIGluIE8oMSkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gcmVzb2x2ZS5cbiAgICogQHJldHVybnMgVGhlIGFic3RyYWN0IGZpbGUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gICAqL1xuICBwdWJsaWMgZ2V0KHBhdGg6IHN0cmluZyk6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KHBhdGgudG9Mb3dlckNhc2UoKSkgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGlzIGluZGV4IG1pcnJvcnMgdGhlIGdpdmVuIGFwcGxpY2F0aW9uJ3MgdmF1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UgdG8gY2hlY2sgYWdhaW5zdC5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoaXMgaW5kZXggYmVsb25ncyB0byB0aGUgZ2l2ZW4gYXBwbGljYXRpb24sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIG93bnNBcHAoYXBwOiBBcHApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHAgPT09IGFwcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1rZXlzIGFuIGFic3RyYWN0IGZpbGUgKGFuZCwgZm9yIGZvbGRlcnMsIGFsbCBvZiBpdHMgZGVzY2VuZGFudHMpIGFmdGVyIGEgcmVuYW1lLlxuICAgKlxuICAgKiBPYnNpZGlhbiBmaXJlcyBhIHNpbmdsZSBgcmVuYW1lYCBldmVudCBmb3IgdGhlIHJlbmFtZWQgYWJzdHJhY3QgZmlsZSBhbmQgdXBkYXRlcyBpdHNcbiAgICogZGVzY2VuZGFudHMnIHBhdGhzIGluIHBsYWNlIHdpdGhvdXQgZmlyaW5nIHBlci1kZXNjZW5kYW50IGV2ZW50cywgc28gZGVzY2VuZGFudCBrZXlzIGFyZVxuICAgKiByZWNvbXB1dGVkIGhlcmUgYnkgc3dhcHBpbmcgdGhlIG9sZCBwYXRoIHByZWZpeCBmb3IgdGhlIG5ldyBvbmUuIEhhbmRsZXMgY2FzZS1vbmx5IHJlbmFtZXMgKHRoZVxuICAgKiBvbGQgYW5kIG5ldyBrZXlzIGNvaW5jaWRlKS5cbiAgICpcbiAgICogQHBhcmFtIG9sZFBhdGggLSBUaGUgcGF0aCB0aGUgYWJzdHJhY3QgZmlsZSBoYWQgYmVmb3JlIHRoZSByZW5hbWUuXG4gICAqIEBwYXJhbSBuZXdBYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB3aXRoIGl0cyB1cGRhdGVkIChwb3N0LXJlbmFtZSkgcGF0aC5cbiAgICovXG4gIHB1YmxpYyByZW5hbWUob2xkUGF0aDogc3RyaW5nLCBuZXdBYnN0cmFjdEZpbGU6IFRBYnN0cmFjdEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBvbGRLZXkgPSBvbGRQYXRoLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbmV3S2V5ID0gbmV3QWJzdHJhY3RGaWxlLnBhdGgudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLm1hcC5kZWxldGUob2xkS2V5KTtcbiAgICB0aGlzLm1hcC5zZXQobmV3S2V5LCBuZXdBYnN0cmFjdEZpbGUpO1xuXG4gICAgY29uc3Qgb2xkRGVzY2VuZGFudFByZWZpeCA9IGAke29sZEtleX0vYDtcbiAgICBjb25zdCBuZXdEZXNjZW5kYW50UHJlZml4ID0gYCR7bmV3S2V5fS9gO1xuICAgIGZvciAoY29uc3QgW2V4aXN0aW5nS2V5LCBleGlzdGluZ1ZhbHVlXSBvZiBzbmFwc2hvdCh0aGlzLm1hcCkpIHtcbiAgICAgIGlmICghZXhpc3RpbmdLZXkuc3RhcnRzV2l0aChvbGREZXNjZW5kYW50UHJlZml4KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tYXAuZGVsZXRlKGV4aXN0aW5nS2V5KTtcbiAgICAgIHRoaXMubWFwLnNldChuZXdEZXNjZW5kYW50UHJlZml4ICsgZXhpc3RpbmdLZXkuc2xpY2Uob2xkRGVzY2VuZGFudFByZWZpeC5sZW5ndGgpLCBleGlzdGluZ1ZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGluc3RhbGxlZCBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgaW5kZXggZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiwgaWYgYW55LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hvc2UgaW5kZXggdG8gcmV0cmlldmUuXG4gKiBAcmV0dXJucyBUaGUgaW5kZXggaWYgb25lIGlzIGluc3RhbGxlZCBmb3IgdGhpcyBhcHBsaWNhdGlvbiwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleChhcHA6IEFwcCk6IENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB8IG51bGwge1xuICBjb25zdCBpbmRleCA9IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZTxDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXggfCBudWxsPihTVEFURV9LRVksIG51bGwpLnZhbHVlO1xuICBpZiAoaW5kZXg/Lm93bnNBcHAoYXBwKSkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBJbnN0YWxscyBhIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBpbmRleCBhcyB0aGUgYWN0aXZlIHJlc29sdmVyLlxuICpcbiAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCB0byBpbnN0YWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KGluZGV4OiBDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgpOiB2b2lkIHtcbiAgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlPENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB8IG51bGw+KFNUQVRFX0tFWSwgbnVsbCkudmFsdWUgPSBpbmRleDtcbn1cblxuLyoqXG4gKiBVbmluc3RhbGxzIGEgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIGluZGV4LCBidXQgb25seSBpZiBpdCBpcyB0aGUgY3VycmVudGx5LWluc3RhbGxlZCBvbmUuXG4gKlxuICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IHRvIHVuaW5zdGFsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuc2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KGluZGV4OiBDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgpOiB2b2lkIHtcbiAgY29uc3Qgd3JhcHBlciA9IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZTxDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXggfCBudWxsPihTVEFURV9LRVksIG51bGwpO1xuICBpZiAod3JhcHBlci52YWx1ZSA9PT0gaW5kZXgpIHtcbiAgICB3cmFwcGVyLnZhbHVlID0gbnVsbDtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkEsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxnQ0FBZ0M7QUFFekMsTUFBTSxZQUFZO0FBUVgsTUFBTSx5QkFBeUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRN0IsWUFBK0IsS0FBVTtBQUFWO0FBQUEsRUFBVztBQUFBLEVBQVg7QUFBQSxFQVByQixNQUFNLG9CQUFJLElBQTJCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBYy9DLElBQUksY0FBbUM7QUFDNUMsU0FBSyxJQUFJLElBQUksYUFBYSxLQUFLLFlBQVksR0FBRyxZQUFZO0FBQUEsRUFDNUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLE9BQU8sTUFBb0I7QUFDaEMsVUFBTSxNQUFNLEtBQUssWUFBWTtBQUM3QixTQUFLLElBQUksT0FBTyxHQUFHO0FBQ25CLFVBQU0sbUJBQW1CLEdBQUcsR0FBRztBQUMvQixlQUFXLGVBQWUsU0FBUyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUc7QUFDbkQsVUFBSSxZQUFZLFdBQVcsZ0JBQWdCLEdBQUc7QUFDNUMsYUFBSyxJQUFJLE9BQU8sV0FBVztBQUFBLE1BQzdCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLElBQUksTUFBb0M7QUFDN0MsV0FBTyxLQUFLLElBQUksSUFBSSxLQUFLLFlBQVksQ0FBQyxLQUFLO0FBQUEsRUFDN0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLFFBQVEsS0FBbUI7QUFDaEMsV0FBTyxLQUFLLFFBQVE7QUFBQSxFQUN0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWFPLE9BQU8sU0FBaUIsaUJBQXNDO0FBQ25FLFVBQU0sU0FBUyxRQUFRLFlBQVk7QUFDbkMsVUFBTSxTQUFTLGdCQUFnQixLQUFLLFlBQVk7QUFDaEQsU0FBSyxJQUFJLE9BQU8sTUFBTTtBQUN0QixTQUFLLElBQUksSUFBSSxRQUFRLGVBQWU7QUFFcEMsVUFBTSxzQkFBc0IsR0FBRyxNQUFNO0FBQ3JDLFVBQU0sc0JBQXNCLEdBQUcsTUFBTTtBQUNyQyxlQUFXLENBQUMsYUFBYSxhQUFhLEtBQUssU0FBUyxLQUFLLEdBQUcsR0FBRztBQUM3RCxVQUFJLENBQUMsWUFBWSxXQUFXLG1CQUFtQixHQUFHO0FBQ2hEO0FBQUEsTUFDRjtBQUVBLFdBQUssSUFBSSxPQUFPLFdBQVc7QUFDM0IsV0FBSyxJQUFJLElBQUksc0JBQXNCLFlBQVksTUFBTSxvQkFBb0IsTUFBTSxHQUFHLGFBQWE7QUFBQSxJQUNqRztBQUFBLEVBQ0Y7QUFDRjtBQVFPLFNBQVMsNEJBQTRCLEtBQTJDO0FBQ3JGLFFBQU0sUUFBUSx5QkFBMEQsV0FBVyxJQUFJLEVBQUU7QUFDekYsTUFBSSxPQUFPLFFBQVEsR0FBRyxHQUFHO0FBQ3ZCLFdBQU87QUFBQSxFQUNUO0FBQ0EsU0FBTztBQUNUO0FBT08sU0FBUyw0QkFBNEIsT0FBdUM7QUFDakYsMkJBQTBELFdBQVcsSUFBSSxFQUFFLFFBQVE7QUFDckY7QUFPTyxTQUFTLDhCQUE4QixPQUF1QztBQUNuRixRQUFNLFVBQVUseUJBQTBELFdBQVcsSUFBSTtBQUN6RixNQUFJLFFBQVEsVUFBVSxPQUFPO0FBQzNCLFlBQVEsUUFBUTtBQUFBLEVBQ2xCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -12,7 +12,7 @@ export interface CodeBlockMarkdownInformation {
12
12
  /**
13
13
  * Arguments of the code block.
14
14
  */
15
- args: string[];
15
+ $arguments: string[];
16
16
  /**
17
17
  * An end delimiter of the code block.
18
18
  */
@@ -36,7 +36,7 @@ export interface CodeBlockMarkdownInformation {
36
36
  /**
37
37
  * Raw arguments string of the code block.
38
38
  */
39
- rawArgsStr: string;
39
+ rawArgumentsString: string;
40
40
  /**
41
41
  * A section information of the code block.
42
42
  */
@@ -176,6 +176,7 @@ export declare abstract class AbstractFileCommandHandler extends GlobalCommandHa
176
176
  private readonly _filesMenuItemName?;
177
177
  private readonly _filesMenuSection?;
178
178
  private readonly _filesMenuSubmenuIcon?;
179
+ private _registrationShouldAddCommandToSubmenu?;
179
180
  private readonly _shouldAddCommandToSubmenu?;
180
181
  /**
181
182
  * Creates a new abstract file command handler.
@@ -240,6 +241,10 @@ export declare abstract class AbstractFileCommandHandler extends GlobalCommandHa
240
241
  /**
241
242
  * Gets whether to add the command to a submenu.
242
243
  *
244
+ * The registration context wins over the constructor value: a menu surface that already wraps every
245
+ * contributed item in a plugin-titled parent entry forces this off, because a section submenu
246
+ * declared here would make `Menu.sort()` nest a second plugin-titled entry inside the first.
247
+ *
243
248
  * @returns Whether to add to a submenu.
244
249
  */
245
250
  protected shouldAddCommandToSubmenu(): boolean | undefined;
@@ -91,6 +91,7 @@ class AbstractFileCommandHandler extends GlobalCommandHandler {
91
91
  _filesMenuItemName;
92
92
  _filesMenuSection;
93
93
  _filesMenuSubmenuIcon;
94
+ _registrationShouldAddCommandToSubmenu;
94
95
  _shouldAddCommandToSubmenu;
95
96
  /**
96
97
  * Creates a new abstract file command handler.
@@ -115,6 +116,7 @@ class AbstractFileCommandHandler extends GlobalCommandHandler {
115
116
  async onRegistered(context) {
116
117
  await super.onRegistered(context);
117
118
  this._activeFileProvider = context.activeFileProvider;
119
+ this._registrationShouldAddCommandToSubmenu = context.shouldAddCommandToSubmenu;
118
120
  context.menuEventRegistrar.registerFileMenuEventHandler((menu, abstractFile, source, leaf) => {
119
121
  this.handleAbstractFileMenu({
120
122
  abstractFile,
@@ -202,10 +204,14 @@ class AbstractFileCommandHandler extends GlobalCommandHandler {
202
204
  /**
203
205
  * Gets whether to add the command to a submenu.
204
206
  *
207
+ * The registration context wins over the constructor value: a menu surface that already wraps every
208
+ * contributed item in a plugin-titled parent entry forces this off, because a section submenu
209
+ * declared here would make `Menu.sort()` nest a second plugin-titled entry inside the first.
210
+ *
205
211
  * @returns Whether to add to a submenu.
206
212
  */
207
213
  shouldAddCommandToSubmenu() {
208
- return this._shouldAddCommandToSubmenu;
214
+ return this._registrationShouldAddCommandToSubmenu ?? this._shouldAddCommandToSubmenu;
209
215
  }
210
216
  /**
211
217
  * Checks whether the command should appear in the single-file context menu.
@@ -301,4 +307,4 @@ class AbstractFileCommandHandler extends GlobalCommandHandler {
301
307
  export {
302
308
  AbstractFileCommandHandler
303
309
  };
304
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21tYW5kIGhhbmRsZXIgZm9yIGFic3RyYWN0IGZpbGUgY29tbWFuZHMgd2l0aCBmaWxlL2ZpbGVzIG1lbnUgaW50ZWdyYXRpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBJY29uTmFtZSxcbiAgTWVudSxcbiAgVEFic3RyYWN0RmlsZSxcbiAgV29ya3NwYWNlTGVhZlxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IEFjdGl2ZUZpbGVQcm92aWRlciB9IGZyb20gJy4uL2FjdGl2ZS1maWxlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcyxcbiAgQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0XG59IGZyb20gJy4vY29tbWFuZC1oYW5kbGVyLnRzJztcblxuaW1wb3J0IHtcbiAgY2hhaW4sXG4gIGNvbnZlcnRBc3luY1RvU3luY1xufSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IEdsb2JhbENvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9nbG9iYWwtY29tbWFuZC1oYW5kbGVyLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBhbiBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaGFuZGxlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zIGV4dGVuZHMgQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgaXRlbSBuYW1lIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVNZW51SXRlbU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVNZW51U2VjdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGljb24gdG8gdXNlIGluIHRoZSBzaW5nbGUtZmlsZSBtZW51IHN1Ym1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlTWVudVN1Ym1lbnVJY29uPzogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpdGVtIG5hbWUgdG8gdXNlIGluIHRoZSBtdWx0aS1maWxlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlc01lbnVJdGVtTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHNlY3Rpb24gdG8gdXNlIGluIHRoZSBtdWx0aS1maWxlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlc01lbnVTZWN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiB0byB1c2UgaW4gdGhlIG11bHRpLWZpbGUgbWVudSBzdWJtZW51LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXNNZW51U3VibWVudUljb24/OiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgdGhlIGNvbW1hbmQgdG8gYSBzdWJtZW51LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBZGRDb21tYW5kVG9TdWJtZW51PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXIuaGFuZGxlQWJzdHJhY3RGaWxlTWVudX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJIYW5kbGVBYnN0cmFjdEZpbGVNZW51UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG9yIGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogVGhlIHdvcmtzcGFjZSBsZWFmLCBpZiBhdmFpbGFibGUuXG4gICAqL1xuICByZWFkb25seSBsZWFmPzogdW5kZWZpbmVkIHwgV29ya3NwYWNlTGVhZjtcblxuICAvKipcbiAgICogVGhlIG1lbnUgdG8gYWRkIGl0ZW1zIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVudTogTWVudTtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXIuaGFuZGxlQWJzdHJhY3RGaWxlc01lbnV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVySGFuZGxlQWJzdHJhY3RGaWxlc01lbnVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZpbGVzIG9yIGZvbGRlcnMuXG4gICAqL1xuICByZWFkb25seSBhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW107XG5cbiAgLyoqXG4gICAqIFRoZSB3b3Jrc3BhY2UgbGVhZiwgaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGVhZj86IHVuZGVmaW5lZCB8IFdvcmtzcGFjZUxlYWY7XG5cbiAgLyoqXG4gICAqIFRoZSBtZW51IHRvIGFkZCBpdGVtcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IG1lbnU6IE1lbnU7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyLnNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJTaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZpbGUgb3IgZm9sZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya3NwYWNlIGxlYWYsIGlmIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGxlYWY/OiB1bmRlZmluZWQgfCBXb3Jrc3BhY2VMZWFmO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIG9mIHRoZSBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlci5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZXNNZW51fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlclNob3VsZEFkZFRvQWJzdHJhY3RGaWxlc01lbnVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZpbGVzIG9yIGZvbGRlcnMuXG4gICAqL1xuICByZWFkb25seSBhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW107XG5cbiAgLyoqXG4gICAqIFRoZSB3b3Jrc3BhY2UgbGVhZiwgaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGVhZj86IHVuZGVmaW5lZCB8IFdvcmtzcGFjZUxlYWY7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29tbWFuZCBoYW5kbGVyIGZvciBhYnN0cmFjdCBmaWxlIGNvbW1hbmRzLlxuICpcbiAqIEhhbmRsZXMgYm90aCBzaW5nbGUtZmlsZSBhbmQgbXVsdGktZmlsZSBjb250ZXh0IG1lbnVzLlxuICogU3ViY2xhc3NlcyBvdmVycmlkZSB7QGxpbmsgY2FuRXhlY3V0ZUFic3RyYWN0RmlsZX0gYW5kIHtAbGluayBleGVjdXRlQWJzdHJhY3RGaWxlfS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyIGV4dGVuZHMgR2xvYmFsQ29tbWFuZEhhbmRsZXIge1xuICAvKipcbiAgICogR2V0IHRoZSBhY3RpdmUgZmlsZSBwcm92aWRlci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFjdGl2ZSBmaWxlIHByb3ZpZGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBhY3RpdmVGaWxlUHJvdmlkZXIoKTogQWN0aXZlRmlsZVByb3ZpZGVyIHtcbiAgICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUodGhpcy5fYWN0aXZlRmlsZVByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpdGVtIG5hbWUgdG8gdXNlIGluIHRoZSBzaW5nbGUtZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSBuYW1lLCBvciBgdW5kZWZpbmVkYCB0byB1c2UgdGhlIGNvbW1hbmQgbmFtZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZU1lbnVJdGVtTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWxlTWVudUl0ZW1OYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNlY3Rpb24gdG8gdXNlIGluIHRoZSBzaW5nbGUtZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc2VjdGlvbiBuYW1lLCBvciBgdW5kZWZpbmVkYCB0byB1c2UgdGhlIHBsdWdpbiBuYW1lLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaWxlTWVudVNlY3Rpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZU1lbnVTZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGljb24gdG8gdXNlIGluIHRoZSBzaW5nbGUtZmlsZSBtZW51IHN1Ym1lbnUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBpY29uLCBvciBgdW5kZWZpbmVkYCBmb3Igbm8gaWNvbi5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZU1lbnVTdWJtZW51SWNvbigpOiBJY29uTmFtZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVNZW51U3VibWVudUljb247XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaXRlbSBuYW1lIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSBuYW1lLCBvciBgdW5kZWZpbmVkYCB0byBmYWxsIGJhY2sgdG8gc2luZ2xlLWZpbGUgaXRlbSBuYW1lLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaWxlc01lbnVJdGVtTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWxlc01lbnVJdGVtTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzZWN0aW9uIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc2VjdGlvbiBuYW1lLCBvciBgdW5kZWZpbmVkYCB0byBmYWxsIGJhY2sgdG8gc2luZ2xlLWZpbGUgc2VjdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZXNNZW51U2VjdGlvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWxlc01lbnVTZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGljb24gdG8gdXNlIGluIHRoZSBtdWx0aS1maWxlIG1lbnUgc3VibWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGljb24sIG9yIGB1bmRlZmluZWRgIHRvIGZhbGwgYmFjayB0byBzaW5nbGUtZmlsZSBzdWJtZW51IGljb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVzTWVudVN1Ym1lbnVJY29uKCk6IEljb25OYW1lIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXNNZW51U3VibWVudUljb247XG4gIH1cblxuICBwcml2YXRlIF9hY3RpdmVGaWxlUHJvdmlkZXI/OiBBY3RpdmVGaWxlUHJvdmlkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVNZW51SXRlbU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVNZW51U2VjdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZU1lbnVTdWJtZW51SWNvbj86IEljb25OYW1lIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWxlc01lbnVJdGVtTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZXNNZW51U2VjdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZXNNZW51U3VibWVudUljb24/OiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaGFuZGxlci5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWJzdHJhY3QgZmlsZSBjb21tYW5kIGhhbmRsZXIuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIocGFyYW1zKTtcbiAgICB0aGlzLl9maWxlTWVudUl0ZW1OYW1lID0gcGFyYW1zLmZpbGVNZW51SXRlbU5hbWU7XG4gICAgdGhpcy5fZmlsZU1lbnVTZWN0aW9uID0gcGFyYW1zLmZpbGVNZW51U2VjdGlvbjtcbiAgICB0aGlzLl9maWxlTWVudVN1Ym1lbnVJY29uID0gcGFyYW1zLmZpbGVNZW51U3VibWVudUljb247XG4gICAgdGhpcy5fZmlsZXNNZW51SXRlbU5hbWUgPSBwYXJhbXMuZmlsZXNNZW51SXRlbU5hbWU7XG4gICAgdGhpcy5fZmlsZXNNZW51U2VjdGlvbiA9IHBhcmFtcy5maWxlc01lbnVTZWN0aW9uO1xuICAgIHRoaXMuX2ZpbGVzTWVudVN1Ym1lbnVJY29uID0gcGFyYW1zLmZpbGVzTWVudVN1Ym1lbnVJY29uO1xuICAgIHRoaXMuX3Nob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnUgPSBwYXJhbXMuc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgZmlsZS1tZW51IGFuZCBmaWxlcy1tZW51IGV2ZW50IGhhbmRsZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSByZWdpc3RyYXRpb24gY29udGV4dC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvblJlZ2lzdGVyZWQoY29udGV4dDogQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIub25SZWdpc3RlcmVkKGNvbnRleHQpO1xuICAgIHRoaXMuX2FjdGl2ZUZpbGVQcm92aWRlciA9IGNvbnRleHQuYWN0aXZlRmlsZVByb3ZpZGVyO1xuICAgIGNvbnRleHQubWVudUV2ZW50UmVnaXN0cmFyLnJlZ2lzdGVyRmlsZU1lbnVFdmVudEhhbmRsZXIoKG1lbnUsIGFic3RyYWN0RmlsZSwgc291cmNlLCBsZWFmKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUFic3RyYWN0RmlsZU1lbnUoe1xuICAgICAgICBhYnN0cmFjdEZpbGUsXG4gICAgICAgIGxlYWYsXG4gICAgICAgIG1lbnUsXG4gICAgICAgIHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29udGV4dC5tZW51RXZlbnRSZWdpc3RyYXIucmVnaXN0ZXJGaWxlc01lbnVFdmVudEhhbmRsZXIoKG1lbnUsIGFic3RyYWN0RmlsZXMsIHNvdXJjZSwgbGVhZikgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVBYnN0cmFjdEZpbGVzTWVudSh7XG4gICAgICAgIGFic3RyYWN0RmlsZXMsXG4gICAgICAgIGxlYWYsXG4gICAgICAgIG1lbnUsXG4gICAgICAgIHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgZnJvbSB0aGUgY29tbWFuZCBwYWxldHRlLlxuICAgKiBVc2VzIHRoZSBhY3RpdmUgZmlsZSBhcyB0aGUgdGFyZ2V0LlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNob3VsZEFkZFRvQ29tbWFuZFBhbGV0dGUoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUZpbGUgPSB0aGlzLmdldEFjdGl2ZUZpbGUoKTtcbiAgICByZXR1cm4gISFhY3RpdmVGaWxlICYmIHRoaXMuY2FuRXhlY3V0ZUFic3RyYWN0RmlsZShhY3RpdmVGaWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZSBmb3IgYSBzaW5nbGUgYWJzdHJhY3QgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIF9hYnN0cmFjdEZpbGUgLSBUaGUgZmlsZSBvciBmb2xkZXIuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FuRXhlY3V0ZUFic3RyYWN0RmlsZShfYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgZm9yIG11bHRpcGxlIGFic3RyYWN0IGZpbGVzLlxuICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGNoZWNrcyBlYWNoIGZpbGUgaW5kaXZpZHVhbGx5LlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlcyAtIFRoZSBmaWxlcyBvciBmb2xkZXJzLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNhbkV4ZWN1dGVBYnN0cmFjdEZpbGVzKGFic3RyYWN0RmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGVzLmxlbmd0aCA+IDAgJiYgYWJzdHJhY3RGaWxlcy5ldmVyeSgoZikgPT4gdGhpcy5jYW5FeGVjdXRlQWJzdHJhY3RGaWxlKGYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZCBmcm9tIHRoZSBjb21tYW5kIHBhbGV0dGUgdXNpbmcgdGhlIGFjdGl2ZSBmaWxlLlxuICAgKlxuICAgKiBAcmV0dXJucyBgUHJvbWlzYWJsZTx2b2lkPmAgdGhhdCByZXNvbHZlcyB3aGVuIGNvbW1hbmQgaGFkIGJlZW4gZXhlY3V0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZXhlY3V0ZSgpOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBhY3RpdmVGaWxlID0gdGhpcy5nZXRBY3RpdmVGaWxlKCk7XG4gICAgaWYgKGFjdGl2ZUZpbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVBYnN0cmFjdEZpbGUoYWN0aXZlRmlsZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjb21tYW5kIGZvciBhIHNpbmdsZSBhYnN0cmFjdCBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGZpbGUgb3IgZm9sZGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4ZWN1dGVBYnN0cmFjdEZpbGUoYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlKTogUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGNvbW1hbmQgZm9yIG11bHRpcGxlIGFic3RyYWN0IGZpbGVzLlxuICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGV4ZWN1dGVzIHNlcXVlbnRpYWxseS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgZmlsZXMgb3IgZm9sZGVycy5cbiAgICogQHJldHVybnMgYFByb21pc2FibGU8dm9pZD5gIHRoYXQgcmVzb2x2ZXMgd2hlbiBhbGwgYWJzdHJhY3QgZmlsZXMgaGF2ZSBiZWVuIGV4ZWN1dGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGV4ZWN1dGVBYnN0cmFjdEZpbGVzKGFic3RyYWN0RmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IFByb21pc2FibGU8dm9pZD4ge1xuICAgIGxldCBwcm9taXNlOiBudWxsIHwgUHJvbWlzZTx2b2lkPiA9IG51bGw7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGFic3RyYWN0RmlsZXMpIHtcbiAgICAgIHByb21pc2UgPSBjaGFpbihwcm9taXNlLCAoKSA9PiB0aGlzLmV4ZWN1dGVBYnN0cmFjdEZpbGUoZmlsZSkpO1xuICAgIH1cblxuICAgIGlmIChwcm9taXNlKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYWN0aXZlIGZpbGUsIGlmIGFueSwgdG8gdXNlIGFzIHRoZSB0YXJnZXQgd2hlbiBleGVjdXRpbmcgZnJvbSB0aGUgY29tbWFuZCBwYWxldHRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgYWN0aXZlIGZpbGUgb3IgYG51bGxgIGlmIG5vbmUgaXMgYWN0aXZlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldEFjdGl2ZUZpbGUoKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUZpbGVQcm92aWRlci5nZXRBY3RpdmVGaWxlKCkgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHdoZXRoZXIgdG8gYWRkIHRoZSBjb21tYW5kIHRvIGEgc3VibWVudS5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0byBhZGQgdG8gYSBzdWJtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnUoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGFwcGVhciBpbiB0aGUgc2luZ2xlLWZpbGUgY29udGV4dCBtZW51LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBzaW5nbGUtZmlsZSBtZW51IGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRvIGFkZCB0byB0aGUgZmlsZSBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudShwYXJhbXM6IEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyU2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVNZW51UGFyYW1zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBhYnN0cmFjdEZpbGU6IF9hYnN0cmFjdEZpbGUsIGxlYWY6IF9sZWFmLCBzb3VyY2U6IF9zb3VyY2UgfSA9IHBhcmFtcztcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGFwcGVhciBpbiB0aGUgbXVsdGktZmlsZSBjb250ZXh0IG1lbnUuXG4gICAqIERlZmF1bHQgaW1wbGVtZW50YXRpb24gY2hlY2tzIGVhY2ggZmlsZSBpbmRpdmlkdWFsbHkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIG11bHRpLWZpbGUgbWVudSBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0byBhZGQgdG8gdGhlIGZpbGVzIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVzTWVudShwYXJhbXM6IEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyU2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVzTWVudVBhcmFtcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwYXJhbXMuYWJzdHJhY3RGaWxlcy5ldmVyeSgoZikgPT5cbiAgICAgIHRoaXMuc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVNZW51KHtcbiAgICAgICAgYWJzdHJhY3RGaWxlOiBmLFxuICAgICAgICBsZWFmOiBwYXJhbXMubGVhZixcbiAgICAgICAgc291cmNlOiBwYXJhbXMuc291cmNlXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGFwcGVhciBpbiB0aGUgY29tbWFuZCBwYWxldHRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRvIGFkZCB0byB0aGUgY29tbWFuZCBwYWxldHRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZEFkZFRvQ29tbWFuZFBhbGV0dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFic3RyYWN0RmlsZU1lbnUocGFyYW1zOiBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlckhhbmRsZUFic3RyYWN0RmlsZU1lbnVQYXJhbXMpOiB2b2lkIHtcbiAgICBjb25zdCB7XG4gICAgICBhYnN0cmFjdEZpbGUsXG4gICAgICBsZWFmLFxuICAgICAgbWVudSxcbiAgICAgIHNvdXJjZVxuICAgIH0gPSBwYXJhbXM7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVNZW51KHtcbiAgICAgICAgYWJzdHJhY3RGaWxlLFxuICAgICAgICBsZWFmLFxuICAgICAgICBzb3VyY2VcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhbkV4ZWN1dGVBYnN0cmFjdEZpbGUoYWJzdHJhY3RGaWxlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmZpbGVNZW51U2VjdGlvbiA/PyB0aGlzLnBsdWdpbk5hbWU7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudSgpKSB7XG4gICAgICBtZW51LnNldFNlY3Rpb25TdWJtZW51KHNlY3Rpb24sIHtcbiAgICAgICAgaWNvbjogdGhpcy5maWxlTWVudVN1Ym1lbnVJY29uID8/ICcnLFxuICAgICAgICB0aXRsZTogc2VjdGlvblxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICBpdGVtXG4gICAgICAgIC5zZXRUaXRsZSh0aGlzLmZpbGVNZW51SXRlbU5hbWUgPz8gdGhpcy5uYW1lKVxuICAgICAgICAuc2V0SWNvbih0aGlzLmljb24pXG4gICAgICAgIC5zZXRTZWN0aW9uKHNlY3Rpb24pXG4gICAgICAgIC5vbkNsaWNrKGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKSA9PiB0aGlzLmV4ZWN1dGVBYnN0cmFjdEZpbGUoYWJzdHJhY3RGaWxlKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBYnN0cmFjdEZpbGVzTWVudShwYXJhbXM6IEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVySGFuZGxlQWJzdHJhY3RGaWxlc01lbnVQYXJhbXMpOiB2b2lkIHtcbiAgICBjb25zdCB7XG4gICAgICBhYnN0cmFjdEZpbGVzLFxuICAgICAgbGVhZixcbiAgICAgIG1lbnUsXG4gICAgICBzb3VyY2VcbiAgICB9ID0gcGFyYW1zO1xuICAgIGlmIChcbiAgICAgICF0aGlzLnNob3VsZEFkZFRvQWJzdHJhY3RGaWxlc01lbnUoe1xuICAgICAgICBhYnN0cmFjdEZpbGVzLFxuICAgICAgICBsZWFmLFxuICAgICAgICBzb3VyY2VcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhbkV4ZWN1dGVBYnN0cmFjdEZpbGVzKGFic3RyYWN0RmlsZXMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZmlsZXNNZW51U2VjdGlvbiA/PyB0aGlzLmZpbGVNZW51U2VjdGlvbiA/PyB0aGlzLnBsdWdpbk5hbWU7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudSgpKSB7XG4gICAgICBtZW51LnNldFNlY3Rpb25TdWJtZW51KHNlY3Rpb24sIHtcbiAgICAgICAgaWNvbjogdGhpcy5maWxlc01lbnVTdWJtZW51SWNvbiA/PyB0aGlzLmZpbGVNZW51U3VibWVudUljb24gPz8gJycsXG4gICAgICAgIHRpdGxlOiBzZWN0aW9uXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBtZW51LmFkZEl0ZW0oKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW1cbiAgICAgICAgLnNldFRpdGxlKHRoaXMuZmlsZXNNZW51SXRlbU5hbWUgPz8gdGhpcy5maWxlTWVudUl0ZW1OYW1lID8/IHRoaXMubmFtZSlcbiAgICAgICAgLnNldEljb24odGhpcy5pY29uKVxuICAgICAgICAuc2V0U2VjdGlvbihzZWN0aW9uKVxuICAgICAgICAub25DbGljayhjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCkgPT4gdGhpcy5leGVjdXRlQWJzdHJhY3RGaWxlcyhhYnN0cmFjdEZpbGVzKSkpO1xuICAgIH0pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsNEJBQTRCO0FBNEk5QixNQUFlLG1DQUFtQyxxQkFBcUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNNUUsSUFBYyxxQkFBeUM7QUFDckQsV0FBTyxrQkFBa0IsS0FBSyxtQkFBbUI7QUFBQSxFQUNuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQWMsbUJBQXVDO0FBQ25ELFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFjLGtCQUFzQztBQUNsRCxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBYyxzQkFBNEM7QUFDeEQsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQWMsb0JBQXdDO0FBQ3BELFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFjLG1CQUF1QztBQUNuRCxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFB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
310
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21tYW5kIGhhbmRsZXIgZm9yIGFic3RyYWN0IGZpbGUgY29tbWFuZHMgd2l0aCBmaWxlL2ZpbGVzIG1lbnUgaW50ZWdyYXRpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBJY29uTmFtZSxcbiAgTWVudSxcbiAgVEFic3RyYWN0RmlsZSxcbiAgV29ya3NwYWNlTGVhZlxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IEFjdGl2ZUZpbGVQcm92aWRlciB9IGZyb20gJy4uL2FjdGl2ZS1maWxlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcyxcbiAgQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0XG59IGZyb20gJy4vY29tbWFuZC1oYW5kbGVyLnRzJztcblxuaW1wb3J0IHtcbiAgY2hhaW4sXG4gIGNvbnZlcnRBc3luY1RvU3luY1xufSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IEdsb2JhbENvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9nbG9iYWwtY29tbWFuZC1oYW5kbGVyLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBhbiBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaGFuZGxlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zIGV4dGVuZHMgQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgaXRlbSBuYW1lIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVNZW51SXRlbU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVNZW51U2VjdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGljb24gdG8gdXNlIGluIHRoZSBzaW5nbGUtZmlsZSBtZW51IHN1Ym1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlTWVudVN1Ym1lbnVJY29uPzogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpdGVtIG5hbWUgdG8gdXNlIGluIHRoZSBtdWx0aS1maWxlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlc01lbnVJdGVtTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHNlY3Rpb24gdG8gdXNlIGluIHRoZSBtdWx0aS1maWxlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlc01lbnVTZWN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiB0byB1c2UgaW4gdGhlIG11bHRpLWZpbGUgbWVudSBzdWJtZW51LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXNNZW51U3VibWVudUljb24/OiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgdGhlIGNvbW1hbmQgdG8gYSBzdWJtZW51LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBZGRDb21tYW5kVG9TdWJtZW51PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXIuaGFuZGxlQWJzdHJhY3RGaWxlTWVudX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJIYW5kbGVBYnN0cmFjdEZpbGVNZW51UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG9yIGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogVGhlIHdvcmtzcGFjZSBsZWFmLCBpZiBhdmFpbGFibGUuXG4gICAqL1xuICByZWFkb25seSBsZWFmPzogdW5kZWZpbmVkIHwgV29ya3NwYWNlTGVhZjtcblxuICAvKipcbiAgICogVGhlIG1lbnUgdG8gYWRkIGl0ZW1zIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVudTogTWVudTtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXIuaGFuZGxlQWJzdHJhY3RGaWxlc01lbnV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVySGFuZGxlQWJzdHJhY3RGaWxlc01lbnVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZpbGVzIG9yIGZvbGRlcnMuXG4gICAqL1xuICByZWFkb25seSBhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW107XG5cbiAgLyoqXG4gICAqIFRoZSB3b3Jrc3BhY2UgbGVhZiwgaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGVhZj86IHVuZGVmaW5lZCB8IFdvcmtzcGFjZUxlYWY7XG5cbiAgLyoqXG4gICAqIFRoZSBtZW51IHRvIGFkZCBpdGVtcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IG1lbnU6IE1lbnU7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyLnNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJTaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZpbGUgb3IgZm9sZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya3NwYWNlIGxlYWYsIGlmIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGxlYWY/OiB1bmRlZmluZWQgfCBXb3Jrc3BhY2VMZWFmO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIG9mIHRoZSBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlci5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZXNNZW51fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlclNob3VsZEFkZFRvQWJzdHJhY3RGaWxlc01lbnVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZpbGVzIG9yIGZvbGRlcnMuXG4gICAqL1xuICByZWFkb25seSBhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW107XG5cbiAgLyoqXG4gICAqIFRoZSB3b3Jrc3BhY2UgbGVhZiwgaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGVhZj86IHVuZGVmaW5lZCB8IFdvcmtzcGFjZUxlYWY7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29tbWFuZCBoYW5kbGVyIGZvciBhYnN0cmFjdCBmaWxlIGNvbW1hbmRzLlxuICpcbiAqIEhhbmRsZXMgYm90aCBzaW5nbGUtZmlsZSBhbmQgbXVsdGktZmlsZSBjb250ZXh0IG1lbnVzLlxuICogU3ViY2xhc3NlcyBvdmVycmlkZSB7QGxpbmsgY2FuRXhlY3V0ZUFic3RyYWN0RmlsZX0gYW5kIHtAbGluayBleGVjdXRlQWJzdHJhY3RGaWxlfS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyIGV4dGVuZHMgR2xvYmFsQ29tbWFuZEhhbmRsZXIge1xuICAvKipcbiAgICogR2V0IHRoZSBhY3RpdmUgZmlsZSBwcm92aWRlci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFjdGl2ZSBmaWxlIHByb3ZpZGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBhY3RpdmVGaWxlUHJvdmlkZXIoKTogQWN0aXZlRmlsZVByb3ZpZGVyIHtcbiAgICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUodGhpcy5fYWN0aXZlRmlsZVByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpdGVtIG5hbWUgdG8gdXNlIGluIHRoZSBzaW5nbGUtZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSBuYW1lLCBvciBgdW5kZWZpbmVkYCB0byB1c2UgdGhlIGNvbW1hbmQgbmFtZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZU1lbnVJdGVtTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWxlTWVudUl0ZW1OYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNlY3Rpb24gdG8gdXNlIGluIHRoZSBzaW5nbGUtZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc2VjdGlvbiBuYW1lLCBvciBgdW5kZWZpbmVkYCB0byB1c2UgdGhlIHBsdWdpbiBuYW1lLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaWxlTWVudVNlY3Rpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZU1lbnVTZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGljb24gdG8gdXNlIGluIHRoZSBzaW5nbGUtZmlsZSBtZW51IHN1Ym1lbnUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBpY29uLCBvciBgdW5kZWZpbmVkYCBmb3Igbm8gaWNvbi5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZU1lbnVTdWJtZW51SWNvbigpOiBJY29uTmFtZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVNZW51U3VibWVudUljb247XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaXRlbSBuYW1lIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSBuYW1lLCBvciBgdW5kZWZpbmVkYCB0byBmYWxsIGJhY2sgdG8gc2luZ2xlLWZpbGUgaXRlbSBuYW1lLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaWxlc01lbnVJdGVtTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWxlc01lbnVJdGVtTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzZWN0aW9uIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc2VjdGlvbiBuYW1lLCBvciBgdW5kZWZpbmVkYCB0byBmYWxsIGJhY2sgdG8gc2luZ2xlLWZpbGUgc2VjdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZXNNZW51U2VjdGlvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWxlc01lbnVTZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGljb24gdG8gdXNlIGluIHRoZSBtdWx0aS1maWxlIG1lbnUgc3VibWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGljb24sIG9yIGB1bmRlZmluZWRgIHRvIGZhbGwgYmFjayB0byBzaW5nbGUtZmlsZSBzdWJtZW51IGljb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVzTWVudVN1Ym1lbnVJY29uKCk6IEljb25OYW1lIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXNNZW51U3VibWVudUljb247XG4gIH1cblxuICBwcml2YXRlIF9hY3RpdmVGaWxlUHJvdmlkZXI/OiBBY3RpdmVGaWxlUHJvdmlkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVNZW51SXRlbU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVNZW51U2VjdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZU1lbnVTdWJtZW51SWNvbj86IEljb25OYW1lIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWxlc01lbnVJdGVtTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZXNNZW51U2VjdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZXNNZW51U3VibWVudUljb24/OiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9yZWdpc3RyYXRpb25TaG91bGRBZGRDb21tYW5kVG9TdWJtZW51PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYWJzdHJhY3QgZmlsZSBjb21tYW5kIGhhbmRsZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGFic3RyYWN0IGZpbGUgY29tbWFuZCBoYW5kbGVyLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gICAgdGhpcy5fZmlsZU1lbnVJdGVtTmFtZSA9IHBhcmFtcy5maWxlTWVudUl0ZW1OYW1lO1xuICAgIHRoaXMuX2ZpbGVNZW51U2VjdGlvbiA9IHBhcmFtcy5maWxlTWVudVNlY3Rpb247XG4gICAgdGhpcy5fZmlsZU1lbnVTdWJtZW51SWNvbiA9IHBhcmFtcy5maWxlTWVudVN1Ym1lbnVJY29uO1xuICAgIHRoaXMuX2ZpbGVzTWVudUl0ZW1OYW1lID0gcGFyYW1zLmZpbGVzTWVudUl0ZW1OYW1lO1xuICAgIHRoaXMuX2ZpbGVzTWVudVNlY3Rpb24gPSBwYXJhbXMuZmlsZXNNZW51U2VjdGlvbjtcbiAgICB0aGlzLl9maWxlc01lbnVTdWJtZW51SWNvbiA9IHBhcmFtcy5maWxlc01lbnVTdWJtZW51SWNvbjtcbiAgICB0aGlzLl9zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51ID0gcGFyYW1zLnNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGZpbGUtbWVudSBhbmQgZmlsZXMtbWVudSBldmVudCBoYW5kbGVycy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgcmVnaXN0cmF0aW9uIGNvbnRleHQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgb25SZWdpc3RlcmVkKGNvbnRleHQ6IENvbW1hbmRIYW5kbGVyUmVnaXN0cmF0aW9uQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLm9uUmVnaXN0ZXJlZChjb250ZXh0KTtcbiAgICB0aGlzLl9hY3RpdmVGaWxlUHJvdmlkZXIgPSBjb250ZXh0LmFjdGl2ZUZpbGVQcm92aWRlcjtcbiAgICB0aGlzLl9yZWdpc3RyYXRpb25TaG91bGRBZGRDb21tYW5kVG9TdWJtZW51ID0gY29udGV4dC5zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51O1xuICAgIGNvbnRleHQubWVudUV2ZW50UmVnaXN0cmFyLnJlZ2lzdGVyRmlsZU1lbnVFdmVudEhhbmRsZXIoKG1lbnUsIGFic3RyYWN0RmlsZSwgc291cmNlLCBsZWFmKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUFic3RyYWN0RmlsZU1lbnUoe1xuICAgICAgICBhYnN0cmFjdEZpbGUsXG4gICAgICAgIGxlYWYsXG4gICAgICAgIG1lbnUsXG4gICAgICAgIHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29udGV4dC5tZW51RXZlbnRSZWdpc3RyYXIucmVnaXN0ZXJGaWxlc01lbnVFdmVudEhhbmRsZXIoKG1lbnUsIGFic3RyYWN0RmlsZXMsIHNvdXJjZSwgbGVhZikgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVBYnN0cmFjdEZpbGVzTWVudSh7XG4gICAgICAgIGFic3RyYWN0RmlsZXMsXG4gICAgICAgIGxlYWYsXG4gICAgICAgIG1lbnUsXG4gICAgICAgIHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgZnJvbSB0aGUgY29tbWFuZCBwYWxldHRlLlxuICAgKiBVc2VzIHRoZSBhY3RpdmUgZmlsZSBhcyB0aGUgdGFyZ2V0LlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNob3VsZEFkZFRvQ29tbWFuZFBhbGV0dGUoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUZpbGUgPSB0aGlzLmdldEFjdGl2ZUZpbGUoKTtcbiAgICByZXR1cm4gISFhY3RpdmVGaWxlICYmIHRoaXMuY2FuRXhlY3V0ZUFic3RyYWN0RmlsZShhY3RpdmVGaWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZSBmb3IgYSBzaW5nbGUgYWJzdHJhY3QgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIF9hYnN0cmFjdEZpbGUgLSBUaGUgZmlsZSBvciBmb2xkZXIuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FuRXhlY3V0ZUFic3RyYWN0RmlsZShfYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgZm9yIG11bHRpcGxlIGFic3RyYWN0IGZpbGVzLlxuICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGNoZWNrcyBlYWNoIGZpbGUgaW5kaXZpZHVhbGx5LlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlcyAtIFRoZSBmaWxlcyBvciBmb2xkZXJzLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNhbkV4ZWN1dGVBYnN0cmFjdEZpbGVzKGFic3RyYWN0RmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGVzLmxlbmd0aCA+IDAgJiYgYWJzdHJhY3RGaWxlcy5ldmVyeSgoZikgPT4gdGhpcy5jYW5FeGVjdXRlQWJzdHJhY3RGaWxlKGYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZCBmcm9tIHRoZSBjb21tYW5kIHBhbGV0dGUgdXNpbmcgdGhlIGFjdGl2ZSBmaWxlLlxuICAgKlxuICAgKiBAcmV0dXJucyBgUHJvbWlzYWJsZTx2b2lkPmAgdGhhdCByZXNvbHZlcyB3aGVuIGNvbW1hbmQgaGFkIGJlZW4gZXhlY3V0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZXhlY3V0ZSgpOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBhY3RpdmVGaWxlID0gdGhpcy5nZXRBY3RpdmVGaWxlKCk7XG4gICAgaWYgKGFjdGl2ZUZpbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVBYnN0cmFjdEZpbGUoYWN0aXZlRmlsZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjb21tYW5kIGZvciBhIHNpbmdsZSBhYnN0cmFjdCBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGZpbGUgb3IgZm9sZGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4ZWN1dGVBYnN0cmFjdEZpbGUoYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlKTogUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGNvbW1hbmQgZm9yIG11bHRpcGxlIGFic3RyYWN0IGZpbGVzLlxuICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGV4ZWN1dGVzIHNlcXVlbnRpYWxseS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgZmlsZXMgb3IgZm9sZGVycy5cbiAgICogQHJldHVybnMgYFByb21pc2FibGU8dm9pZD5gIHRoYXQgcmVzb2x2ZXMgd2hlbiBhbGwgYWJzdHJhY3QgZmlsZXMgaGF2ZSBiZWVuIGV4ZWN1dGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGV4ZWN1dGVBYnN0cmFjdEZpbGVzKGFic3RyYWN0RmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IFByb21pc2FibGU8dm9pZD4ge1xuICAgIGxldCBwcm9taXNlOiBudWxsIHwgUHJvbWlzZTx2b2lkPiA9IG51bGw7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGFic3RyYWN0RmlsZXMpIHtcbiAgICAgIHByb21pc2UgPSBjaGFpbihwcm9taXNlLCAoKSA9PiB0aGlzLmV4ZWN1dGVBYnN0cmFjdEZpbGUoZmlsZSkpO1xuICAgIH1cblxuICAgIGlmIChwcm9taXNlKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYWN0aXZlIGZpbGUsIGlmIGFueSwgdG8gdXNlIGFzIHRoZSB0YXJnZXQgd2hlbiBleGVjdXRpbmcgZnJvbSB0aGUgY29tbWFuZCBwYWxldHRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgYWN0aXZlIGZpbGUgb3IgYG51bGxgIGlmIG5vbmUgaXMgYWN0aXZlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldEFjdGl2ZUZpbGUoKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUZpbGVQcm92aWRlci5nZXRBY3RpdmVGaWxlKCkgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHdoZXRoZXIgdG8gYWRkIHRoZSBjb21tYW5kIHRvIGEgc3VibWVudS5cbiAgICpcbiAgICogVGhlIHJlZ2lzdHJhdGlvbiBjb250ZXh0IHdpbnMgb3ZlciB0aGUgY29uc3RydWN0b3IgdmFsdWU6IGEgbWVudSBzdXJmYWNlIHRoYXQgYWxyZWFkeSB3cmFwcyBldmVyeVxuICAgKiBjb250cmlidXRlZCBpdGVtIGluIGEgcGx1Z2luLXRpdGxlZCBwYXJlbnQgZW50cnkgZm9yY2VzIHRoaXMgb2ZmLCBiZWNhdXNlIGEgc2VjdGlvbiBzdWJtZW51XG4gICAqIGRlY2xhcmVkIGhlcmUgd291bGQgbWFrZSBgTWVudS5zb3J0KClgIG5lc3QgYSBzZWNvbmQgcGx1Z2luLXRpdGxlZCBlbnRyeSBpbnNpZGUgdGhlIGZpcnN0LlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRvIGFkZCB0byBhIHN1Ym1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudSgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0cmF0aW9uU2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudSA/PyB0aGlzLl9zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBhcHBlYXIgaW4gdGhlIHNpbmdsZS1maWxlIGNvbnRleHQgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgc2luZ2xlLWZpbGUgbWVudSBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0byBhZGQgdG8gdGhlIGZpbGUgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUocGFyYW1zOiBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlclNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudVBhcmFtcyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgYWJzdHJhY3RGaWxlOiBfYWJzdHJhY3RGaWxlLCBsZWFmOiBfbGVhZiwgc291cmNlOiBfc291cmNlIH0gPSBwYXJhbXM7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBhcHBlYXIgaW4gdGhlIG11bHRpLWZpbGUgY29udGV4dCBtZW51LlxuICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGNoZWNrcyBlYWNoIGZpbGUgaW5kaXZpZHVhbGx5LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBtdWx0aS1maWxlIG1lbnUgY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdG8gYWRkIHRvIHRoZSBmaWxlcyBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZEFkZFRvQWJzdHJhY3RGaWxlc01lbnUocGFyYW1zOiBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlclNob3VsZEFkZFRvQWJzdHJhY3RGaWxlc01lbnVQYXJhbXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcGFyYW1zLmFic3RyYWN0RmlsZXMuZXZlcnkoKGYpID0+XG4gICAgICB0aGlzLnNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudSh7XG4gICAgICAgIGFic3RyYWN0RmlsZTogZixcbiAgICAgICAgbGVhZjogcGFyYW1zLmxlYWYsXG4gICAgICAgIHNvdXJjZTogcGFyYW1zLnNvdXJjZVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBhcHBlYXIgaW4gdGhlIGNvbW1hbmQgcGFsZXR0ZS5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0byBhZGQgdG8gdGhlIGNvbW1hbmQgcGFsZXR0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG91bGRBZGRUb0NvbW1hbmRQYWxldHRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBYnN0cmFjdEZpbGVNZW51KHBhcmFtczogQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJIYW5kbGVBYnN0cmFjdEZpbGVNZW51UGFyYW1zKTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgYWJzdHJhY3RGaWxlLFxuICAgICAgbGVhZixcbiAgICAgIG1lbnUsXG4gICAgICBzb3VyY2VcbiAgICB9ID0gcGFyYW1zO1xuICAgIGlmIChcbiAgICAgICF0aGlzLnNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudSh7XG4gICAgICAgIGFic3RyYWN0RmlsZSxcbiAgICAgICAgbGVhZixcbiAgICAgICAgc291cmNlXG4gICAgICB9KVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jYW5FeGVjdXRlQWJzdHJhY3RGaWxlKGFic3RyYWN0RmlsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5maWxlTWVudVNlY3Rpb24gPz8gdGhpcy5wbHVnaW5OYW1lO1xuICAgIGlmICh0aGlzLnNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnUoKSkge1xuICAgICAgbWVudS5zZXRTZWN0aW9uU3VibWVudShzZWN0aW9uLCB7XG4gICAgICAgIGljb246IHRoaXMuZmlsZU1lbnVTdWJtZW51SWNvbiA/PyAnJyxcbiAgICAgICAgdGl0bGU6IHNlY3Rpb25cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIG1lbnUuYWRkSXRlbSgoaXRlbSkgPT4ge1xuICAgICAgaXRlbVxuICAgICAgICAuc2V0VGl0bGUodGhpcy5maWxlTWVudUl0ZW1OYW1lID8/IHRoaXMubmFtZSlcbiAgICAgICAgLnNldEljb24odGhpcy5pY29uKVxuICAgICAgICAuc2V0U2VjdGlvbihzZWN0aW9uKVxuICAgICAgICAub25DbGljayhjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCkgPT4gdGhpcy5leGVjdXRlQWJzdHJhY3RGaWxlKGFic3RyYWN0RmlsZSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWJzdHJhY3RGaWxlc01lbnUocGFyYW1zOiBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlckhhbmRsZUFic3RyYWN0RmlsZXNNZW51UGFyYW1zKTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgYWJzdHJhY3RGaWxlcyxcbiAgICAgIGxlYWYsXG4gICAgICBtZW51LFxuICAgICAgc291cmNlXG4gICAgfSA9IHBhcmFtcztcbiAgICBpZiAoXG4gICAgICAhdGhpcy5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZXNNZW51KHtcbiAgICAgICAgYWJzdHJhY3RGaWxlcyxcbiAgICAgICAgbGVhZixcbiAgICAgICAgc291cmNlXG4gICAgICB9KVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jYW5FeGVjdXRlQWJzdHJhY3RGaWxlcyhhYnN0cmFjdEZpbGVzKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmZpbGVzTWVudVNlY3Rpb24gPz8gdGhpcy5maWxlTWVudVNlY3Rpb24gPz8gdGhpcy5wbHVnaW5OYW1lO1xuICAgIGlmICh0aGlzLnNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnUoKSkge1xuICAgICAgbWVudS5zZXRTZWN0aW9uU3VibWVudShzZWN0aW9uLCB7XG4gICAgICAgIGljb246IHRoaXMuZmlsZXNNZW51U3VibWVudUljb24gPz8gdGhpcy5maWxlTWVudVN1Ym1lbnVJY29uID8/ICcnLFxuICAgICAgICB0aXRsZTogc2VjdGlvblxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICBpdGVtXG4gICAgICAgIC5zZXRUaXRsZSh0aGlzLmZpbGVzTWVudUl0ZW1OYW1lID8/IHRoaXMuZmlsZU1lbnVJdGVtTmFtZSA/PyB0aGlzLm5hbWUpXG4gICAgICAgIC5zZXRJY29uKHRoaXMuaWNvbilcbiAgICAgICAgLnNldFNlY3Rpb24oc2VjdGlvbilcbiAgICAgICAgLm9uQ2xpY2soY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpID0+IHRoaXMuZXhlY3V0ZUFic3RyYWN0RmlsZXMoYWJzdHJhY3RGaWxlcykpKTtcbiAgICB9KTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLDRCQUE0QjtBQTRJOUIs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QUFBQSxNQUNoQztBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixDQUFDLEdBQ0Q7QUFDQTtBQUFBLElBQ0Y7QUFFQSxRQUFJLENBQUMsS0FBSyx1QkFBdUIsWUFBWSxHQUFHO0FBQzlDO0FBQUEsSUFDRjtBQUVBLFVBQU0sVUFBVSxLQUFLLG1CQUFtQixLQUFLO0FBQzdDLFFBQUksS0FBSywwQkFBMEIsR0FBRztBQUNwQyxXQUFLLGtCQUFrQixTQUFTO0FBQUEsUUFDOUIsTUFBTSxLQUFLLHVCQUF1QjtBQUFBLFFBQ2xDLE9BQU87QUFBQSxNQUNULENBQUM7QUFBQSxJQUNIO0FBRUEsU0FBSyxRQUFRLENBQUMsU0FBUztBQUNyQixXQUNHLFNBQVMsS0FBSyxvQkFBb0IsS0FBSyxJQUFJLEVBQzNDLFFBQVEsS0FBSyxJQUFJLEVBQ2pCLFdBQVcsT0FBTyxFQUNsQixRQUFRLG1CQUFtQixZQUFZLEtBQUssb0JBQW9CLFlBQVksQ0FBQyxDQUFDO0FBQUEsSUFDbkYsQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQUVRLHdCQUF3QixRQUF1RTtBQUNyRyxVQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsSUFBSTtBQUNKLFFBQ0UsQ0FBQyxLQUFLLDZCQUE2QjtBQUFBLE1BQ2pDO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLENBQUMsR0FDRDtBQUNBO0FBQUEsSUFDRjtBQUVBLFFBQUksQ0FBQyxLQUFLLHdCQUF3QixhQUFhLEdBQUc7QUFDaEQ7QUFBQSxJQUNGO0FBRUEsVUFBTSxVQUFVLEtBQUssb0JBQW9CLEtBQUssbUJBQW1CLEtBQUs7QUFDdEUsUUFBSSxLQUFLLDBCQUEwQixHQUFHO0FBQ3BDLFdBQUssa0JBQWtCLFNBQVM7QUFBQSxRQUM5QixNQUFNLEtBQUssd0JBQXdCLEtBQUssdUJBQXVCO0FBQUEsUUFDL0QsT0FBTztBQUFBLE1BQ1QsQ0FBQztBQUFBLElBQ0g7QUFFQSxTQUFLLFFBQVEsQ0FBQyxTQUFTO0FBQ3JCLFdBQ0csU0FBUyxLQUFLLHFCQUFxQixLQUFLLG9CQUFvQixLQUFLLElBQUksRUFDckUsUUFBUSxLQUFLLElBQUksRUFDakIsV0FBVyxPQUFPLEVBQ2xCLFFBQVEsbUJBQW1CLFlBQVksS0FBSyxxQkFBcUIsYUFBYSxDQUFDLENBQUM7QUFBQSxJQUNyRixDQUFDO0FBQUEsRUFDSDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -10,8 +10,20 @@ import type { CommandRegistrar } from '../command-registrar.mjs';
10
10
  import type { MenuEventRegistrar } from '../menu-event-registrar.mjs';
11
11
  import type { CommandHandler } from './command-handler.mjs';
12
12
  import { ComponentEx } from '../components/component-ex.mjs';
13
+ /**
14
+ * Builds a fresh set of {@link CommandHandler}s.
15
+ *
16
+ * A factory rather than a ready-made array because {@link CommandHandlerComponent} registers the same
17
+ * handlers against several menu surfaces, and a handler carries per-registration state (its
18
+ * active-file provider, its plugin name, and whatever a subclass records in
19
+ * {@link CommandHandler.onRegistered}) — so every surface needs its own instances.
20
+ *
21
+ * @returns The command handlers to register.
22
+ */
23
+ export type CommandHandlerFactory = () => CommandHandler[];
13
24
  interface CommandHandlerComponentConstructorParams {
14
25
  readonly activeFileProvider: ActiveFileProvider;
26
+ readonly additionalMenuEventRegistrars?: readonly MenuEventRegistrar[] | undefined;
15
27
  readonly commandRegistrar: CommandRegistrar;
16
28
  readonly menuEventRegistrar: MenuEventRegistrar;
17
29
  readonly pluginName: string;
@@ -23,12 +35,20 @@ interface CommandHandlerComponentConstructorParams {
23
35
  * needed while the component is alive); dispose the returned {@link DisposableEx} to unregister exactly
24
36
  * those handlers — including any menu events they registered — or let the component unload to remove every
25
37
  * command still registered through it.
38
+ *
39
+ * The same handlers are fed to every menu surface the component knows about: Obsidian's own workspace
40
+ * events, plus each additional {@link MenuEventRegistrar} bridging another plugin's menus.
26
41
  */
27
42
  export declare class CommandHandlerComponent extends ComponentEx {
28
43
  /**
29
44
  * Provider for accessing the currently active file.
30
45
  */
31
46
  protected readonly activeFileProvider: ActiveFileProvider;
47
+ /**
48
+ * Registrars for menu surfaces that build their own plugin-titled parent entry, and therefore take
49
+ * the handlers with their section submenu forced off.
50
+ */
51
+ protected readonly additionalMenuEventRegistrars: readonly MenuEventRegistrar[];
32
52
  /**
33
53
  * Registrar used to add and remove commands with Obsidian.
34
54
  */
@@ -48,15 +68,29 @@ export declare class CommandHandlerComponent extends ComponentEx {
48
68
  */
49
69
  constructor(params: CommandHandlerComponentConstructorParams);
50
70
  /**
51
- * Registers the given command handlers with Obsidian and provides each its own runtime registration
52
- * context. Each handler's command is added immediately; the returned {@link DisposableEx} removes the
53
- * commands registered by this call — and any menu events those handlers registered via their context's
54
- * {@link MenuEventRegistrar} — when disposed. Any command still registered when the component unloads is
55
- * removed automatically.
71
+ * Builds the command handlers and registers them with Obsidian, giving each its own runtime
72
+ * registration context. Each handler's command is added immediately; the returned
73
+ * {@link DisposableEx} removes the commands registered by this call — and any menu events those
74
+ * handlers registered via their context's {@link MenuEventRegistrar} — when disposed. Any command
75
+ * still registered when the component unloads is removed automatically.
76
+ *
77
+ * The factory is invoked once more for every additional menu surface, so a plugin declares its
78
+ * handlers ONCE and all surfaces are fed. Those extra passes add no commands — the palette already
79
+ * has every command from the first pass.
80
+ *
81
+ * @param commandHandlerFactory - Builds a fresh set of command handlers, once per menu surface.
82
+ * @returns A {@link DisposableEx} that unregisters the handlers (commands + menu events) registered by this call.
83
+ */
84
+ registerCommandHandlers(commandHandlerFactory: CommandHandlerFactory): DisposableEx;
85
+ /**
86
+ * Hands a command handler its registration context, scoped so that disposing the returned scope
87
+ * unregisters exactly the menu events that handler registered.
56
88
  *
57
- * @param commandHandlers - The command handlers to register.
58
- * @returns A {@link DisposableEx} that unregisters the handlers (commands + menu events) passed to this call.
89
+ * @param commandHandler - The command handler to register.
90
+ * @param menuEventRegistrar - The menu surface the handler registers its menu events with.
91
+ * @param shouldAddCommandToSubmenu - Overrides the handler's own value, or `undefined` to leave it alone.
92
+ * @returns The handler's menu-event scope.
59
93
  */
60
- registerCommandHandlers(commandHandlers: CommandHandler[]): DisposableEx;
94
+ private registerMenuEventHandlers;
61
95
  }
62
96
  export {};
@@ -64,6 +64,11 @@ class CommandHandlerComponent extends ComponentEx {
64
64
  * Provider for accessing the currently active file.
65
65
  */
66
66
  activeFileProvider;
67
+ /**
68
+ * Registrars for menu surfaces that build their own plugin-titled parent entry, and therefore take
69
+ * the handlers with their section submenu forced off.
70
+ */
71
+ additionalMenuEventRegistrars;
67
72
  /**
68
73
  * Registrar used to add and remove commands with Obsidian.
69
74
  */
@@ -85,31 +90,31 @@ class CommandHandlerComponent extends ComponentEx {
85
90
  super();
86
91
  this.activeFileProvider = params.activeFileProvider;
87
92
  this.menuEventRegistrar = params.menuEventRegistrar;
93
+ this.additionalMenuEventRegistrars = params.additionalMenuEventRegistrars ?? [];
88
94
  this.commandRegistrar = params.commandRegistrar;
89
95
  this.pluginName = params.pluginName;
90
96
  }
91
97
  /**
92
- * Registers the given command handlers with Obsidian and provides each its own runtime registration
93
- * context. Each handler's command is added immediately; the returned {@link DisposableEx} removes the
94
- * commands registered by this call — and any menu events those handlers registered via their context's
95
- * {@link MenuEventRegistrar} — when disposed. Any command still registered when the component unloads is
96
- * removed automatically.
98
+ * Builds the command handlers and registers them with Obsidian, giving each its own runtime
99
+ * registration context. Each handler's command is added immediately; the returned
100
+ * {@link DisposableEx} removes the commands registered by this call — and any menu events those
101
+ * handlers registered via their context's {@link MenuEventRegistrar} — when disposed. Any command
102
+ * still registered when the component unloads is removed automatically.
97
103
  *
98
- * @param commandHandlers - The command handlers to register.
99
- * @returns A {@link DisposableEx} that unregisters the handlers (commands + menu events) passed to this call.
104
+ * The factory is invoked once more for every additional menu surface, so a plugin declares its
105
+ * handlers ONCE and all surfaces are fed. Those extra passes add no commands the palette already
106
+ * has every command from the first pass.
107
+ *
108
+ * @param commandHandlerFactory - Builds a fresh set of command handlers, once per menu surface.
109
+ * @returns A {@link DisposableEx} that unregisters the handlers (commands + menu events) registered by this call.
100
110
  */
101
- registerCommandHandlers(commandHandlers) {
111
+ registerCommandHandlers(commandHandlerFactory) {
102
112
  const disposables = [];
103
- for (const commandHandler of commandHandlers) {
113
+ for (const commandHandler of commandHandlerFactory()) {
104
114
  const command = commandHandler.buildCommand();
105
115
  const commandId = command.id;
106
116
  this.commandRegistrar.addCommand(command);
107
- const menuEventScope = new CommandMenuEventScope(this.menuEventRegistrar);
108
- const context = {
109
- activeFileProvider: this.activeFileProvider,
110
- menuEventRegistrar: menuEventScope,
111
- pluginName: this.pluginName
112
- };
117
+ const menuEventScope = this.registerMenuEventHandlers(commandHandler, this.menuEventRegistrar);
113
118
  const disposable = new CallbackDisposable({
114
119
  callback: () => {
115
120
  this.commandRegistrar.removeCommand(commandId);
@@ -117,12 +122,36 @@ class CommandHandlerComponent extends ComponentEx {
117
122
  }
118
123
  });
119
124
  disposables.push(this.registerDisposable(disposable));
120
- invokeAsyncSafely(() => commandHandler.onRegistered(context));
125
+ }
126
+ for (const additionalMenuEventRegistrar of this.additionalMenuEventRegistrars) {
127
+ for (const commandHandler of commandHandlerFactory()) {
128
+ disposables.push(this.registerDisposable(this.registerMenuEventHandlers(commandHandler, additionalMenuEventRegistrar, false)));
129
+ }
121
130
  }
122
131
  return new CombineDisposable({ disposables });
123
132
  }
133
+ /**
134
+ * Hands a command handler its registration context, scoped so that disposing the returned scope
135
+ * unregisters exactly the menu events that handler registered.
136
+ *
137
+ * @param commandHandler - The command handler to register.
138
+ * @param menuEventRegistrar - The menu surface the handler registers its menu events with.
139
+ * @param shouldAddCommandToSubmenu - Overrides the handler's own value, or `undefined` to leave it alone.
140
+ * @returns The handler's menu-event scope.
141
+ */
142
+ registerMenuEventHandlers(commandHandler, menuEventRegistrar, shouldAddCommandToSubmenu) {
143
+ const menuEventScope = new CommandMenuEventScope(menuEventRegistrar);
144
+ const context = {
145
+ activeFileProvider: this.activeFileProvider,
146
+ menuEventRegistrar: menuEventScope,
147
+ pluginName: this.pluginName,
148
+ shouldAddCommandToSubmenu
149
+ };
150
+ invokeAsyncSafely(() => commandHandler.onRegistered(context));
151
+ return menuEventScope;
152
+ }
124
153
  }
125
154
  export {
126
155
  CommandHandlerComponent
127
156
  };
128
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IHJlZ2lzdGVycyB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cyB3aXRoIE9ic2lkaWFuIGFuZCB0aWVzIHRoZWlyIHJlbW92YWwgdG8gaXRzIGxpZmVjeWNsZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERpc3Bvc2FibGVFeCB9IGZyb20gJy4uLy4uL2Rpc3Bvc2FibGUudHMnO1xuaW1wb3J0IHR5cGUgeyBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmRSZWdpc3RyYXIgfSBmcm9tICcuLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEVkaXRvck1lbnVFdmVudEhhbmRsZXIsXG4gIEZpbGVNZW51RXZlbnRIYW5kbGVyLFxuICBGaWxlc01lbnVFdmVudEhhbmRsZXIsXG4gIE1lbnVFdmVudFJlZ2lzdHJhclxufSBmcm9tICcuLi9tZW51LWV2ZW50LXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmRIYW5kbGVyLFxuICBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHRcbn0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXIudHMnO1xuXG5pbXBvcnQgeyBpbnZva2VBc3luY1NhZmVseSB9IGZyb20gJy4uLy4uL2FzeW5jLnRzJztcbmltcG9ydCB7XG4gIENhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQ29tYmluZURpc3Bvc2FibGUsXG4gIERpc3Bvc2FibGVCYXNlXG59IGZyb20gJy4uLy4uL2Rpc3Bvc2FibGUudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbXBvbmVudC1leC50cyc7XG5cbmludGVyZmFjZSBDb21tYW5kSGFuZGxlckNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG4gIHJlYWRvbmx5IGNvbW1hbmRSZWdpc3RyYXI6IENvbW1hbmRSZWdpc3RyYXI7XG4gIHJlYWRvbmx5IG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyO1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBwZXItY29tbWFuZCB7QGxpbmsgTWVudUV2ZW50UmVnaXN0cmFyfSB0aGF0IGRlbGVnYXRlcyB0byBhIHNoYXJlZCByZWdpc3RyYXIgd2hpbGUgY29sbGVjdGluZyB0aGVcbiAqIHtAbGluayBEaXNwb3NhYmxlRXh9IGVhY2ggcmVnaXN0cmF0aW9uIHJldHVybnMsIHNvIGRpc3Bvc2luZyB0aGlzIHNjb3BlIHVucmVnaXN0ZXJzIGV4YWN0bHkgdGhhdCBjb21tYW5kJ3NcbiAqIG1lbnUgZXZlbnRzLiBCZWNhdXNlIHtAbGluayBDb21tYW5kSGFuZGxlci5vblJlZ2lzdGVyZWR9IHJ1bnMgZmlyZS1hbmQtZm9yZ2V0IChpdCBtYXkgcmVnaXN0ZXIgbWVudSBldmVudHNcbiAqIGFmdGVyIHRoaXMgc2NvcGUgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCksIGEgcmVnaXN0cmF0aW9uIHRoYXQgYXJyaXZlcyBwb3N0LWRpc3Bvc2UgaXMgZGlzcG9zZWQgaW1tZWRpYXRlbHlcbiAqIGluc3RlYWQgb2YgbGVha2luZy5cbiAqL1xuY2xhc3MgQ29tbWFuZE1lbnVFdmVudFNjb3BlIGV4dGVuZHMgRGlzcG9zYWJsZUJhc2UgaW1wbGVtZW50cyBNZW51RXZlbnRSZWdpc3RyYXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlRXhbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGlubmVyOiBNZW51RXZlbnRSZWdpc3RyYXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyRWRpdG9yTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyOiBFZGl0b3JNZW51RXZlbnRIYW5kbGVyKTogRGlzcG9zYWJsZUV4IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0KHRoaXMuaW5uZXIucmVnaXN0ZXJFZGl0b3JNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXIpKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckZpbGVNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXI6IEZpbGVNZW51RXZlbnRIYW5kbGVyKTogRGlzcG9zYWJsZUV4IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0KHRoaXMuaW5uZXIucmVnaXN0ZXJGaWxlTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyKSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJGaWxlc01lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRmlsZXNNZW51RXZlbnRIYW5kbGVyKTogRGlzcG9zYWJsZUV4IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0KHRoaXMuaW5uZXIucmVnaXN0ZXJGaWxlc01lbnVFdmVudEhhbmRsZXIoaGFuZGxlcikpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHBlcmZvcm1EaXNwb3NlKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgZGlzcG9zYWJsZSBvZiB0aGlzLmRpc3Bvc2FibGVzKSB7XG4gICAgICBkaXNwb3NhYmxlLmRpc3Bvc2UoKTtcbiAgICB9XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5sZW5ndGggPSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0KGRpc3Bvc2FibGU6IERpc3Bvc2FibGVFeCk6IERpc3Bvc2FibGVFeCB7XG4gICAgaWYgKHRoaXMuaXNEaXNwb3NlZCkge1xuICAgICAgZGlzcG9zYWJsZS5kaXNwb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcG9zYWJsZXMucHVzaChkaXNwb3NhYmxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcG9zYWJsZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cyB3aXRoIE9ic2lkaWFuIGFuZCBtYW5hZ2VzIHRoZWlyIGxpZmVjeWNsZS5cbiAqXG4gKiBDYWxsIHtAbGluayByZWdpc3RlckNvbW1hbmRIYW5kbGVyc30gdG8gcmVnaXN0ZXIgYSBiYXRjaCBvZiBoYW5kbGVycyBvbiBkZW1hbmQgKGFzIG1hbnkgdGltZXMgYXNcbiAqIG5lZWRlZCB3aGlsZSB0aGUgY29tcG9uZW50IGlzIGFsaXZlKTsgZGlzcG9zZSB0aGUgcmV0dXJuZWQge0BsaW5rIERpc3Bvc2FibGVFeH0gdG8gdW5yZWdpc3RlciBleGFjdGx5XG4gKiB0aG9zZSBoYW5kbGVycyBcdTIwMTQgaW5jbHVkaW5nIGFueSBtZW51IGV2ZW50cyB0aGV5IHJlZ2lzdGVyZWQgXHUyMDE0IG9yIGxldCB0aGUgY29tcG9uZW50IHVubG9hZCB0byByZW1vdmUgZXZlcnlcbiAqIGNvbW1hbmQgc3RpbGwgcmVnaXN0ZXJlZCB0aHJvdWdoIGl0LlxuICovXG5leHBvcnQgY2xhc3MgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIC8qKlxuICAgKiBQcm92aWRlciBmb3IgYWNjZXNzaW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIGZpbGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhciB1c2VkIHRvIGFkZCBhbmQgcmVtb3ZlIGNvbW1hbmRzIHdpdGggT2JzaWRpYW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tbWFuZFJlZ2lzdHJhcjogQ29tbWFuZFJlZ2lzdHJhcjtcblxuICAvKipcbiAgICogUmVnaXN0cmFyIGZvciBtZW51IGV2ZW50IGhhbmRsZXJzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgb3ducyB0aGUgY29tbWFuZHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbW1hbmQgaGFuZGxlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IENvbW1hbmRIYW5kbGVyQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWN0aXZlRmlsZVByb3ZpZGVyID0gcGFyYW1zLmFjdGl2ZUZpbGVQcm92aWRlcjtcbiAgICB0aGlzLm1lbnVFdmVudFJlZ2lzdHJhciA9IHBhcmFtcy5tZW51RXZlbnRSZWdpc3RyYXI7XG4gICAgdGhpcy5jb21tYW5kUmVnaXN0cmFyID0gcGFyYW1zLmNvbW1hbmRSZWdpc3RyYXI7XG4gICAgdGhpcy5wbHVnaW5OYW1lID0gcGFyYW1zLnBsdWdpbk5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBnaXZlbiBjb21tYW5kIGhhbmRsZXJzIHdpdGggT2JzaWRpYW4gYW5kIHByb3ZpZGVzIGVhY2ggaXRzIG93biBydW50aW1lIHJlZ2lzdHJhdGlvblxuICAgKiBjb250ZXh0LiBFYWNoIGhhbmRsZXIncyBjb21tYW5kIGlzIGFkZGVkIGltbWVkaWF0ZWx5OyB0aGUgcmV0dXJuZWQge0BsaW5rIERpc3Bvc2FibGVFeH0gcmVtb3ZlcyB0aGVcbiAgICogY29tbWFuZHMgcmVnaXN0ZXJlZCBieSB0aGlzIGNhbGwgXHUyMDE0IGFuZCBhbnkgbWVudSBldmVudHMgdGhvc2UgaGFuZGxlcnMgcmVnaXN0ZXJlZCB2aWEgdGhlaXIgY29udGV4dCdzXG4gICAqIHtAbGluayBNZW51RXZlbnRSZWdpc3RyYXJ9IFx1MjAxNCB3aGVuIGRpc3Bvc2VkLiBBbnkgY29tbWFuZCBzdGlsbCByZWdpc3RlcmVkIHdoZW4gdGhlIGNvbXBvbmVudCB1bmxvYWRzIGlzXG4gICAqIHJlbW92ZWQgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmRIYW5kbGVycyAtIFRoZSBjb21tYW5kIGhhbmRsZXJzIHRvIHJlZ2lzdGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEaXNwb3NhYmxlRXh9IHRoYXQgdW5yZWdpc3RlcnMgdGhlIGhhbmRsZXJzIChjb21tYW5kcyArIG1lbnUgZXZlbnRzKSBwYXNzZWQgdG8gdGhpcyBjYWxsLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ29tbWFuZEhhbmRsZXJzKGNvbW1hbmRIYW5kbGVyczogQ29tbWFuZEhhbmRsZXJbXSk6IERpc3Bvc2FibGVFeCB7XG4gICAgY29uc3QgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29tbWFuZEhhbmRsZXIgb2YgY29tbWFuZEhhbmRsZXJzKSB7XG4gICAgICBjb25zdCBjb21tYW5kID0gY29tbWFuZEhhbmRsZXIuYnVpbGRDb21tYW5kKCk7XG4gICAgICAvLyBDYXB0dXJlIHRoZSBpZCBiZWZvcmUgcmVnaXN0ZXJpbmcuIGBQbHVnaW4uYWRkQ29tbWFuZGAgbXV0YXRlcyBgY29tbWFuZC5pZGAgKHByZWZpeGluZyBpdCB3aXRoXG4gICAgICAvLyBgdGhpcy5tYW5pZmVzdC5pZGApLCB3aGlsZSBgUGx1Z2luLnJlbW92ZUNvbW1hbmRgIHJlLXByZWZpeGVzIFx1MjAxNCBzbyByZW1vdmFsIG5lZWRzIHRoZSBvcmlnaW5hbCBpZC5cbiAgICAgIC8vIFJlYWRpbmcgYGNvbW1hbmQuaWRgIGFmdGVyIGBhZGRDb21tYW5kYCB3b3VsZCBkb3VibGUtcHJlZml4IGl0LCBzbyB0aGUgY29tbWFuZCBpcyBuZXZlciByZW1vdmVkLlxuICAgICAgY29uc3QgY29tbWFuZElkID0gY29tbWFuZC5pZDtcbiAgICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhci5hZGRDb21tYW5kKGNvbW1hbmQpO1xuXG4gICAgICAvLyBFYWNoIGNvbW1hbmQgZ2V0cyBpdHMgb3duIHJlZ2lzdHJhdGlvbiBjb250ZXh0IHdpdGggYSBwZXItY29tbWFuZCBtZW51LWV2ZW50IHNjb3BlLCBzbyBkaXNwb3Npbmcgb25lXG4gICAgICAvLyBDb21tYW5kIHRlYXJzIGRvd24gaXRzIG93biBtZW51IGV2ZW50cyB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXJzLlxuICAgICAgY29uc3QgbWVudUV2ZW50U2NvcGUgPSBuZXcgQ29tbWFuZE1lbnVFdmVudFNjb3BlKHRoaXMubWVudUV2ZW50UmVnaXN0cmFyKTtcbiAgICAgIGNvbnN0IGNvbnRleHQ6IENvbW1hbmRIYW5kbGVyUmVnaXN0cmF0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgYWN0aXZlRmlsZVByb3ZpZGVyOiB0aGlzLmFjdGl2ZUZpbGVQcm92aWRlcixcbiAgICAgICAgbWVudUV2ZW50UmVnaXN0cmFyOiBtZW51RXZlbnRTY29wZSxcbiAgICAgICAgcGx1Z2luTmFtZTogdGhpcy5wbHVnaW5OYW1lXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBkaXNwb3NhYmxlID0gbmV3IENhbGxiYWNrRGlzcG9zYWJsZSh7XG4gICAgICAgIGNhbGxiYWNrOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5jb21tYW5kUmVnaXN0cmFyLnJlbW92ZUNvbW1hbmQoY29tbWFuZElkKTtcbiAgICAgICAgICBtZW51RXZlbnRTY29wZS5kaXNwb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gVGllIHJlbW92YWwgdG8gdGhlIGNvbXBvbmVudCdzIHVubG9hZCwgc28gYSBjb21tYW5kIG5ldmVyIG91dGxpdmVzIHRoZSBjb21wb25lbnQuXG4gICAgICBkaXNwb3NhYmxlcy5wdXNoKHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKGRpc3Bvc2FibGUpKTtcbiAgICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IGNvbW1hbmRIYW5kbGVyLm9uUmVnaXN0ZXJlZChjb250ZXh0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDb21iaW5lRGlzcG9zYWJsZSh7IGRpc3Bvc2FibGVzIH0pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxTQUFTLHlCQUF5QjtBQUNsQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG1CQUFtQjtBQWdCNUIsTUFBTSw4QkFBOEIsZUFBNkM7QUFBQSxFQUd4RSxZQUE2QixPQUEyQjtBQUM3RCxVQUFNO0FBRDRCO0FBQUEsRUFFcEM7QUFBQSxFQUZvQztBQUFBLEVBRm5CLGNBQThCLENBQUM7QUFBQSxFQU16QywrQkFBK0IsU0FBK0M7QUFDbkYsV0FBTyxLQUFLLFFBQVEsS0FBSyxNQUFNLCtCQUErQixPQUFPLENBQUM7QUFBQSxFQUN4RTtBQUFBLEVBRU8sNkJBQTZCLFNBQTZDO0FBQy9FLFdBQU8sS0FBSyxRQUFRLEtBQUssTUFBTSw2QkFBNkIsT0FBTyxDQUFDO0FBQUEsRUFDdEU7QUFBQSxFQUVPLDhCQUE4QixTQUE4QztBQUNqRixXQUFPLEtBQUssUUFBUSxLQUFLLE1BQU0sOEJBQThCLE9BQU8sQ0FBQztBQUFBLEVBQ3ZFO0FBQUEsRUFFbUIsaUJBQXVCO0FBQ3hDLGVBQVcsY0FBYyxLQUFLLGFBQWE7QUFDekMsaUJBQVcsUUFBUTtBQUFBLElBQ3JCO0FBQ0EsU0FBSyxZQUFZLFNBQVM7QUFBQSxFQUM1QjtBQUFBLEVBRVEsUUFBUSxZQUF3QztBQUN0RCxRQUFJLEtBQUssWUFBWTtBQUNuQixpQkFBVyxRQUFRO0FBQUEsSUFDckIsT0FBTztBQUNMLFdBQUssWUFBWSxLQUFLLFVBQVU7QUFBQSxJQUNsQztBQUVBLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFVTyxNQUFNLGdDQUFnQyxZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJcEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPWixZQUFZLFFBQWtEO0FBQ25FLFVBQU07QUFDTixTQUFLLHFCQUFxQixPQUFPO0FBQ2pDLFNBQUsscUJBQXFCLE9BQU87QUFDakMsU0FBSyxtQkFBbUIsT0FBTztBQUMvQixTQUFLLGFBQWEsT0FBTztBQUFBLEVBQzNCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVlPLHdCQUF3QixpQkFBaUQ7QUFDOUUsVUFBTSxjQUE0QixDQUFDO0FBQ25DLGVBQVcsa0JBQWtCLGlCQUFpQjtBQUM1QyxZQUFNLFVBQVUsZUFBZSxhQUFhO0FBSTVDLFlBQU0sWUFBWSxRQUFRO0FBQzFCLFdBQUssaUJBQWlCLFdBQVcsT0FBTztBQUl4QyxZQUFNLGlCQUFpQixJQUFJLHNCQUFzQixLQUFLLGtCQUFrQjtBQUN4RSxZQUFNLFVBQTZDO0FBQUEsUUFDakQsb0JBQW9CLEtBQUs7QUFBQSxRQUN6QixvQkFBb0I7QUFBQSxRQUNwQixZQUFZLEtBQUs7QUFBQSxNQUNuQjtBQUVBLFlBQU0sYUFBYSxJQUFJLG1CQUFtQjtBQUFBLFFBQ3hDLFVBQVUsTUFBWTtBQUNwQixlQUFLLGlCQUFpQixjQUFjLFNBQVM7QUFDN0MseUJBQWUsUUFBUTtBQUFBLFFBQ3pCO0FBQUEsTUFDRixDQUFDO0FBRUQsa0JBQVksS0FBSyxLQUFLLG1CQUFtQixVQUFVLENBQUM7QUFDcEQsd0JBQWtCLE1BQU0sZUFBZSxhQUFhLE9BQU8sQ0FBQztBQUFBLElBQzlEO0FBRUEsV0FBTyxJQUFJLGtCQUFrQixFQUFFLFlBQVksQ0FBQztBQUFBLEVBQzlDO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
157
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IHJlZ2lzdGVycyB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cyB3aXRoIE9ic2lkaWFuIGFuZCB0aWVzIHRoZWlyIHJlbW92YWwgdG8gaXRzIGxpZmVjeWNsZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERpc3Bvc2FibGVFeCB9IGZyb20gJy4uLy4uL2Rpc3Bvc2FibGUudHMnO1xuaW1wb3J0IHR5cGUgeyBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmRSZWdpc3RyYXIgfSBmcm9tICcuLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEVkaXRvck1lbnVFdmVudEhhbmRsZXIsXG4gIEZpbGVNZW51RXZlbnRIYW5kbGVyLFxuICBGaWxlc01lbnVFdmVudEhhbmRsZXIsXG4gIE1lbnVFdmVudFJlZ2lzdHJhclxufSBmcm9tICcuLi9tZW51LWV2ZW50LXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmRIYW5kbGVyLFxuICBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHRcbn0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXIudHMnO1xuXG5pbXBvcnQgeyBpbnZva2VBc3luY1NhZmVseSB9IGZyb20gJy4uLy4uL2FzeW5jLnRzJztcbmltcG9ydCB7XG4gIENhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQ29tYmluZURpc3Bvc2FibGUsXG4gIERpc3Bvc2FibGVCYXNlXG59IGZyb20gJy4uLy4uL2Rpc3Bvc2FibGUudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbXBvbmVudC1leC50cyc7XG5cbi8qKlxuICogQnVpbGRzIGEgZnJlc2ggc2V0IG9mIHtAbGluayBDb21tYW5kSGFuZGxlcn1zLlxuICpcbiAqIEEgZmFjdG9yeSByYXRoZXIgdGhhbiBhIHJlYWR5LW1hZGUgYXJyYXkgYmVjYXVzZSB7QGxpbmsgQ29tbWFuZEhhbmRsZXJDb21wb25lbnR9IHJlZ2lzdGVycyB0aGUgc2FtZVxuICogaGFuZGxlcnMgYWdhaW5zdCBzZXZlcmFsIG1lbnUgc3VyZmFjZXMsIGFuZCBhIGhhbmRsZXIgY2FycmllcyBwZXItcmVnaXN0cmF0aW9uIHN0YXRlIChpdHNcbiAqIGFjdGl2ZS1maWxlIHByb3ZpZGVyLCBpdHMgcGx1Z2luIG5hbWUsIGFuZCB3aGF0ZXZlciBhIHN1YmNsYXNzIHJlY29yZHMgaW5cbiAqIHtAbGluayBDb21tYW5kSGFuZGxlci5vblJlZ2lzdGVyZWR9KSBcdTIwMTQgc28gZXZlcnkgc3VyZmFjZSBuZWVkcyBpdHMgb3duIGluc3RhbmNlcy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgY29tbWFuZCBoYW5kbGVycyB0byByZWdpc3Rlci5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tbWFuZEhhbmRsZXJGYWN0b3J5ID0gKCkgPT4gQ29tbWFuZEhhbmRsZXJbXTtcblxuaW50ZXJmYWNlIENvbW1hbmRIYW5kbGVyQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICByZWFkb25seSBhY3RpdmVGaWxlUHJvdmlkZXI6IEFjdGl2ZUZpbGVQcm92aWRlcjtcbiAgcmVhZG9ubHkgYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnM/OiByZWFkb25seSBNZW51RXZlbnRSZWdpc3RyYXJbXSB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgY29tbWFuZFJlZ2lzdHJhcjogQ29tbWFuZFJlZ2lzdHJhcjtcbiAgcmVhZG9ubHkgbWVudUV2ZW50UmVnaXN0cmFyOiBNZW51RXZlbnRSZWdpc3RyYXI7XG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHBlci1jb21tYW5kIHtAbGluayBNZW51RXZlbnRSZWdpc3RyYXJ9IHRoYXQgZGVsZWdhdGVzIHRvIGEgc2hhcmVkIHJlZ2lzdHJhciB3aGlsZSBjb2xsZWN0aW5nIHRoZVxuICoge0BsaW5rIERpc3Bvc2FibGVFeH0gZWFjaCByZWdpc3RyYXRpb24gcmV0dXJucywgc28gZGlzcG9zaW5nIHRoaXMgc2NvcGUgdW5yZWdpc3RlcnMgZXhhY3RseSB0aGF0IGNvbW1hbmQnc1xuICogbWVudSBldmVudHMuIEJlY2F1c2Uge0BsaW5rIENvbW1hbmRIYW5kbGVyLm9uUmVnaXN0ZXJlZH0gcnVucyBmaXJlLWFuZC1mb3JnZXQgKGl0IG1heSByZWdpc3RlciBtZW51IGV2ZW50c1xuICogYWZ0ZXIgdGhpcyBzY29wZSBoYXMgYWxyZWFkeSBiZWVuIGRpc3Bvc2VkKSwgYSByZWdpc3RyYXRpb24gdGhhdCBhcnJpdmVzIHBvc3QtZGlzcG9zZSBpcyBkaXNwb3NlZCBpbW1lZGlhdGVseVxuICogaW5zdGVhZCBvZiBsZWFraW5nLlxuICovXG5jbGFzcyBDb21tYW5kTWVudUV2ZW50U2NvcGUgZXh0ZW5kcyBEaXNwb3NhYmxlQmFzZSBpbXBsZW1lbnRzIE1lbnVFdmVudFJlZ2lzdHJhciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVFeFtdID0gW107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaW5uZXI6IE1lbnVFdmVudFJlZ2lzdHJhcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJFZGl0b3JNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXI6IEVkaXRvck1lbnVFdmVudEhhbmRsZXIpOiBEaXNwb3NhYmxlRXgge1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3QodGhpcy5pbm5lci5yZWdpc3RlckVkaXRvck1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcikpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyRmlsZU1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRmlsZU1lbnVFdmVudEhhbmRsZXIpOiBEaXNwb3NhYmxlRXgge1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3QodGhpcy5pbm5lci5yZWdpc3RlckZpbGVNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXIpKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckZpbGVzTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyOiBGaWxlc01lbnVFdmVudEhhbmRsZXIpOiBEaXNwb3NhYmxlRXgge1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3QodGhpcy5pbm5lci5yZWdpc3RlckZpbGVzTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcGVyZm9ybURpc3Bvc2UoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBkaXNwb3NhYmxlIG9mIHRoaXMuZGlzcG9zYWJsZXMpIHtcbiAgICAgIGRpc3Bvc2FibGUuZGlzcG9zZSgpO1xuICAgIH1cbiAgICB0aGlzLmRpc3Bvc2FibGVzLmxlbmd0aCA9IDA7XG4gIH1cblxuICBwcml2YXRlIGNvbGxlY3QoZGlzcG9zYWJsZTogRGlzcG9zYWJsZUV4KTogRGlzcG9zYWJsZUV4IHtcbiAgICBpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG4gICAgICBkaXNwb3NhYmxlLmRpc3Bvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlcy5wdXNoKGRpc3Bvc2FibGUpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXNwb3NhYmxlO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHtAbGluayBDb21tYW5kSGFuZGxlcn1zIHdpdGggT2JzaWRpYW4gYW5kIG1hbmFnZXMgdGhlaXIgbGlmZWN5Y2xlLlxuICpcbiAqIENhbGwge0BsaW5rIHJlZ2lzdGVyQ29tbWFuZEhhbmRsZXJzfSB0byByZWdpc3RlciBhIGJhdGNoIG9mIGhhbmRsZXJzIG9uIGRlbWFuZCAoYXMgbWFueSB0aW1lcyBhc1xuICogbmVlZGVkIHdoaWxlIHRoZSBjb21wb25lbnQgaXMgYWxpdmUpOyBkaXNwb3NlIHRoZSByZXR1cm5lZCB7QGxpbmsgRGlzcG9zYWJsZUV4fSB0byB1bnJlZ2lzdGVyIGV4YWN0bHlcbiAqIHRob3NlIGhhbmRsZXJzIFx1MjAxNCBpbmNsdWRpbmcgYW55IG1lbnUgZXZlbnRzIHRoZXkgcmVnaXN0ZXJlZCBcdTIwMTQgb3IgbGV0IHRoZSBjb21wb25lbnQgdW5sb2FkIHRvIHJlbW92ZSBldmVyeVxuICogY29tbWFuZCBzdGlsbCByZWdpc3RlcmVkIHRocm91Z2ggaXQuXG4gKlxuICogVGhlIHNhbWUgaGFuZGxlcnMgYXJlIGZlZCB0byBldmVyeSBtZW51IHN1cmZhY2UgdGhlIGNvbXBvbmVudCBrbm93cyBhYm91dDogT2JzaWRpYW4ncyBvd24gd29ya3NwYWNlXG4gKiBldmVudHMsIHBsdXMgZWFjaCBhZGRpdGlvbmFsIHtAbGluayBNZW51RXZlbnRSZWdpc3RyYXJ9IGJyaWRnaW5nIGFub3RoZXIgcGx1Z2luJ3MgbWVudXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21tYW5kSGFuZGxlckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFByb3ZpZGVyIGZvciBhY2Nlc3NpbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgZmlsZS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhY3RpdmVGaWxlUHJvdmlkZXI6IEFjdGl2ZUZpbGVQcm92aWRlcjtcblxuICAvKipcbiAgICogUmVnaXN0cmFycyBmb3IgbWVudSBzdXJmYWNlcyB0aGF0IGJ1aWxkIHRoZWlyIG93biBwbHVnaW4tdGl0bGVkIHBhcmVudCBlbnRyeSwgYW5kIHRoZXJlZm9yZSB0YWtlXG4gICAqIHRoZSBoYW5kbGVycyB3aXRoIHRoZWlyIHNlY3Rpb24gc3VibWVudSBmb3JjZWQgb2ZmLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFkZGl0aW9uYWxNZW51RXZlbnRSZWdpc3RyYXJzOiByZWFkb25seSBNZW51RXZlbnRSZWdpc3RyYXJbXTtcblxuICAvKipcbiAgICogUmVnaXN0cmFyIHVzZWQgdG8gYWRkIGFuZCByZW1vdmUgY29tbWFuZHMgd2l0aCBPYnNpZGlhbi5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjb21tYW5kUmVnaXN0cmFyOiBDb21tYW5kUmVnaXN0cmFyO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RyYXIgZm9yIG1lbnUgZXZlbnQgaGFuZGxlcnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWVudUV2ZW50UmVnaXN0cmFyOiBNZW51RXZlbnRSZWdpc3RyYXI7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gdGhhdCBvd25zIHRoZSBjb21tYW5kcy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29tbWFuZCBoYW5kbGVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogQ29tbWFuZEhhbmRsZXJDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hY3RpdmVGaWxlUHJvdmlkZXIgPSBwYXJhbXMuYWN0aXZlRmlsZVByb3ZpZGVyO1xuICAgIHRoaXMubWVudUV2ZW50UmVnaXN0cmFyID0gcGFyYW1zLm1lbnVFdmVudFJlZ2lzdHJhcjtcbiAgICB0aGlzLmFkZGl0aW9uYWxNZW51RXZlbnRSZWdpc3RyYXJzID0gcGFyYW1zLmFkZGl0aW9uYWxNZW51RXZlbnRSZWdpc3RyYXJzID8/IFtdO1xuICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhciA9IHBhcmFtcy5jb21tYW5kUmVnaXN0cmFyO1xuICAgIHRoaXMucGx1Z2luTmFtZSA9IHBhcmFtcy5wbHVnaW5OYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgY29tbWFuZCBoYW5kbGVycyBhbmQgcmVnaXN0ZXJzIHRoZW0gd2l0aCBPYnNpZGlhbiwgZ2l2aW5nIGVhY2ggaXRzIG93biBydW50aW1lXG4gICAqIHJlZ2lzdHJhdGlvbiBjb250ZXh0LiBFYWNoIGhhbmRsZXIncyBjb21tYW5kIGlzIGFkZGVkIGltbWVkaWF0ZWx5OyB0aGUgcmV0dXJuZWRcbiAgICoge0BsaW5rIERpc3Bvc2FibGVFeH0gcmVtb3ZlcyB0aGUgY29tbWFuZHMgcmVnaXN0ZXJlZCBieSB0aGlzIGNhbGwgXHUyMDE0IGFuZCBhbnkgbWVudSBldmVudHMgdGhvc2VcbiAgICogaGFuZGxlcnMgcmVnaXN0ZXJlZCB2aWEgdGhlaXIgY29udGV4dCdzIHtAbGluayBNZW51RXZlbnRSZWdpc3RyYXJ9IFx1MjAxNCB3aGVuIGRpc3Bvc2VkLiBBbnkgY29tbWFuZFxuICAgKiBzdGlsbCByZWdpc3RlcmVkIHdoZW4gdGhlIGNvbXBvbmVudCB1bmxvYWRzIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogVGhlIGZhY3RvcnkgaXMgaW52b2tlZCBvbmNlIG1vcmUgZm9yIGV2ZXJ5IGFkZGl0aW9uYWwgbWVudSBzdXJmYWNlLCBzbyBhIHBsdWdpbiBkZWNsYXJlcyBpdHNcbiAgICogaGFuZGxlcnMgT05DRSBhbmQgYWxsIHN1cmZhY2VzIGFyZSBmZWQuIFRob3NlIGV4dHJhIHBhc3NlcyBhZGQgbm8gY29tbWFuZHMgXHUyMDE0IHRoZSBwYWxldHRlIGFscmVhZHlcbiAgICogaGFzIGV2ZXJ5IGNvbW1hbmQgZnJvbSB0aGUgZmlyc3QgcGFzcy5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmRIYW5kbGVyRmFjdG9yeSAtIEJ1aWxkcyBhIGZyZXNoIHNldCBvZiBjb21tYW5kIGhhbmRsZXJzLCBvbmNlIHBlciBtZW51IHN1cmZhY2UuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERpc3Bvc2FibGVFeH0gdGhhdCB1bnJlZ2lzdGVycyB0aGUgaGFuZGxlcnMgKGNvbW1hbmRzICsgbWVudSBldmVudHMpIHJlZ2lzdGVyZWQgYnkgdGhpcyBjYWxsLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ29tbWFuZEhhbmRsZXJzKGNvbW1hbmRIYW5kbGVyRmFjdG9yeTogQ29tbWFuZEhhbmRsZXJGYWN0b3J5KTogRGlzcG9zYWJsZUV4IHtcbiAgICBjb25zdCBkaXNwb3NhYmxlczogRGlzcG9zYWJsZVtdID0gW107XG4gICAgZm9yIChjb25zdCBjb21tYW5kSGFuZGxlciBvZiBjb21tYW5kSGFuZGxlckZhY3RvcnkoKSkge1xuICAgICAgY29uc3QgY29tbWFuZCA9IGNvbW1hbmRIYW5kbGVyLmJ1aWxkQ29tbWFuZCgpO1xuICAgICAgLy8gQ2FwdHVyZSB0aGUgaWQgYmVmb3JlIHJlZ2lzdGVyaW5nLiBgUGx1Z2luLmFkZENvbW1hbmRgIG11dGF0ZXMgYGNvbW1hbmQuaWRgIChwcmVmaXhpbmcgaXQgd2l0aFxuICAgICAgLy8gYHRoaXMubWFuaWZlc3QuaWRgKSwgd2hpbGUgYFBsdWdpbi5yZW1vdmVDb21tYW5kYCByZS1wcmVmaXhlcyBcdTIwMTQgc28gcmVtb3ZhbCBuZWVkcyB0aGUgb3JpZ2luYWwgaWQuXG4gICAgICAvLyBSZWFkaW5nIGBjb21tYW5kLmlkYCBhZnRlciBgYWRkQ29tbWFuZGAgd291bGQgZG91YmxlLXByZWZpeCBpdCwgc28gdGhlIGNvbW1hbmQgaXMgbmV2ZXIgcmVtb3ZlZC5cbiAgICAgIGNvbnN0IGNvbW1hbmRJZCA9IGNvbW1hbmQuaWQ7XG4gICAgICB0aGlzLmNvbW1hbmRSZWdpc3RyYXIuYWRkQ29tbWFuZChjb21tYW5kKTtcblxuICAgICAgLy8gRWFjaCBjb21tYW5kIGdldHMgaXRzIG93biByZWdpc3RyYXRpb24gY29udGV4dCB3aXRoIGEgcGVyLWNvbW1hbmQgbWVudS1ldmVudCBzY29wZSwgc28gZGlzcG9zaW5nIG9uZVxuICAgICAgLy8gQ29tbWFuZCB0ZWFycyBkb3duIGl0cyBvd24gbWVudSBldmVudHMgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVycy5cbiAgICAgIGNvbnN0IG1lbnVFdmVudFNjb3BlID0gdGhpcy5yZWdpc3Rlck1lbnVFdmVudEhhbmRsZXJzKGNvbW1hbmRIYW5kbGVyLCB0aGlzLm1lbnVFdmVudFJlZ2lzdHJhcik7XG5cbiAgICAgIGNvbnN0IGRpc3Bvc2FibGUgPSBuZXcgQ2FsbGJhY2tEaXNwb3NhYmxlKHtcbiAgICAgICAgY2FsbGJhY2s6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1hbmRSZWdpc3RyYXIucmVtb3ZlQ29tbWFuZChjb21tYW5kSWQpO1xuICAgICAgICAgIG1lbnVFdmVudFNjb3BlLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBUaWUgcmVtb3ZhbCB0byB0aGUgY29tcG9uZW50J3MgdW5sb2FkLCBzbyBhIGNvbW1hbmQgbmV2ZXIgb3V0bGl2ZXMgdGhlIGNvbXBvbmVudC5cbiAgICAgIGRpc3Bvc2FibGVzLnB1c2godGhpcy5yZWdpc3RlckRpc3Bvc2FibGUoZGlzcG9zYWJsZSkpO1xuICAgIH1cblxuICAgIC8vIEV2ZXJ5IGFkZGl0aW9uYWwgc3VyZmFjZSBnZXRzIGl0cyBPV04gaGFuZGxlciBpbnN0YW5jZXMgXHUyMDE0IGEgaGFuZGxlciBjYXJyaWVzIHBlci1yZWdpc3RyYXRpb25cbiAgICAvLyBTdGF0ZSwgc28gb25lIGluc3RhbmNlIGNhbm5vdCBzZXJ2ZSB0d28gc3VyZmFjZXMgXHUyMDE0IGFuZCB0YWtlcyB0aGVtIHdpdGggdGhlIHNlY3Rpb24gc3VibWVudVxuICAgIC8vIEZvcmNlZCBvZmYsIGJlY2F1c2Ugc3VjaCBhIHN1cmZhY2Ugd3JhcHMgZXZlcnl0aGluZyBpbiBhIHBsdWdpbi10aXRsZWQgcGFyZW50IGVudHJ5IG9mIGl0cyBvd24uXG4gICAgZm9yIChjb25zdCBhZGRpdGlvbmFsTWVudUV2ZW50UmVnaXN0cmFyIG9mIHRoaXMuYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnMpIHtcbiAgICAgIGZvciAoY29uc3QgY29tbWFuZEhhbmRsZXIgb2YgY29tbWFuZEhhbmRsZXJGYWN0b3J5KCkpIHtcbiAgICAgICAgZGlzcG9zYWJsZXMucHVzaCh0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZSh0aGlzLnJlZ2lzdGVyTWVudUV2ZW50SGFuZGxlcnMoY29tbWFuZEhhbmRsZXIsIGFkZGl0aW9uYWxNZW51RXZlbnRSZWdpc3RyYXIsIGZhbHNlKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ29tYmluZURpc3Bvc2FibGUoeyBkaXNwb3NhYmxlcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kcyBhIGNvbW1hbmQgaGFuZGxlciBpdHMgcmVnaXN0cmF0aW9uIGNvbnRleHQsIHNjb3BlZCBzbyB0aGF0IGRpc3Bvc2luZyB0aGUgcmV0dXJuZWQgc2NvcGVcbiAgICogdW5yZWdpc3RlcnMgZXhhY3RseSB0aGUgbWVudSBldmVudHMgdGhhdCBoYW5kbGVyIHJlZ2lzdGVyZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kSGFuZGxlciAtIFRoZSBjb21tYW5kIGhhbmRsZXIgdG8gcmVnaXN0ZXIuXG4gICAqIEBwYXJhbSBtZW51RXZlbnRSZWdpc3RyYXIgLSBUaGUgbWVudSBzdXJmYWNlIHRoZSBoYW5kbGVyIHJlZ2lzdGVycyBpdHMgbWVudSBldmVudHMgd2l0aC5cbiAgICogQHBhcmFtIHNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnUgLSBPdmVycmlkZXMgdGhlIGhhbmRsZXIncyBvd24gdmFsdWUsIG9yIGB1bmRlZmluZWRgIHRvIGxlYXZlIGl0IGFsb25lLlxuICAgKiBAcmV0dXJucyBUaGUgaGFuZGxlcidzIG1lbnUtZXZlbnQgc2NvcGUuXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyTWVudUV2ZW50SGFuZGxlcnMoXG4gICAgY29tbWFuZEhhbmRsZXI6IENvbW1hbmRIYW5kbGVyLFxuICAgIG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyLFxuICAgIHNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU/OiBib29sZWFuXG4gICk6IENvbW1hbmRNZW51RXZlbnRTY29wZSB7XG4gICAgY29uc3QgbWVudUV2ZW50U2NvcGUgPSBuZXcgQ29tbWFuZE1lbnVFdmVudFNjb3BlKG1lbnVFdmVudFJlZ2lzdHJhcik7XG4gICAgY29uc3QgY29udGV4dDogQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0ID0ge1xuICAgICAgYWN0aXZlRmlsZVByb3ZpZGVyOiB0aGlzLmFjdGl2ZUZpbGVQcm92aWRlcixcbiAgICAgIG1lbnVFdmVudFJlZ2lzdHJhcjogbWVudUV2ZW50U2NvcGUsXG4gICAgICBwbHVnaW5OYW1lOiB0aGlzLnBsdWdpbk5hbWUsXG4gICAgICBzaG91bGRBZGRDb21tYW5kVG9TdWJtZW51XG4gICAgfTtcbiAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiBjb21tYW5kSGFuZGxlci5vblJlZ2lzdGVyZWQoY29udGV4dCkpO1xuICAgIHJldHVybiBtZW51RXZlbnRTY29wZTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkEsU0FBUyx5QkFBeUI7QUFDbEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxtQkFBbUI7QUE2QjVCLE1BQU0sOEJBQThCLGVBQTZDO0FBQUEsRUFHeEUsWUFBNkIsT0FBMkI7QUFDN0QsVUFBTTtBQUQ0QjtBQUFBLEVBRXBDO0FBQUEsRUFGb0M7QUFBQSxFQUZuQixjQUE4QixDQUFDO0FBQUEsRUFNekMsK0JBQStCLFNBQStDO0FBQ25GLFdBQU8sS0FBSyxRQUFRLEtBQUssTUFBTSwrQkFBK0IsT0FBTyxDQUFDO0FBQUEsRUFDeEU7QUFBQSxFQUVPLDZCQUE2QixTQUE2QztBQUMvRSxXQUFPLEtBQUssUUFBUSxLQUFLLE1BQU0sNkJBQTZCLE9BQU8sQ0FBQztBQUFBLEVBQ3RFO0FBQUEsRUFFTyw4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
@@ -40,6 +40,16 @@ export interface CommandHandlerRegistrationContext {
40
40
  * The name of the plugin that owns this command.
41
41
  */
42
42
  readonly pluginName: string;
43
+ /**
44
+ * Overrides the handler's own `shouldAddCommandToSubmenu`, or `undefined` to leave it alone.
45
+ *
46
+ * A menu surface that already wraps every contributed item in a plugin-titled parent entry — such as
47
+ * `NotebookNavigatorMenuEventRegistrarComponent` — sets this to `false`, because a handler declaring
48
+ * a section submenu of its own would make `Menu.sort()` nest a second plugin-titled entry inside the
49
+ * first. Only `AbstractFileCommandHandler` reads it: the surfaces that need it bridge file and
50
+ * folder menus, never the editor menu.
51
+ */
52
+ readonly shouldAddCommandToSubmenu?: boolean | undefined;
43
53
  }
44
54
  /**
45
55
  * Base class for command handlers.
@@ -69,4 +69,4 @@ class CommandHandler {
69
69
  export {
70
70
  CommandHandler
71
71
  };
72
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQmFzZSBjbGFzcyBhbmQgaW50ZXJmYWNlcyBmb3IgY29tbWFuZCBoYW5kbGVycy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmQsXG4gIEljb25OYW1lXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IE1lbnVFdmVudFJlZ2lzdHJhciB9IGZyb20gJy4uL21lbnUtZXZlbnQtcmVnaXN0cmFyLnRzJztcblxuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlLWd1YXJkcy50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgYSBjb21tYW5kIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgaWNvbiBmb3IgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBpY29uOiBJY29uTmFtZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250ZXh0IHByb3ZpZGVkIHRvIGNvbW1hbmQgaGFuZGxlcnMgZHVyaW5nIHJlZ2lzdHJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHQge1xuICAvKipcbiAgICogUHJvdmlkZXIgZm9yIGFjY2Vzc2luZyB0aGUgY3VycmVudGx5IGFjdGl2ZSBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhciBmb3IgbWVudSBldmVudCBoYW5kbGVycy5cbiAgICovXG4gIHJlYWRvbmx5IG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgb3ducyB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY29tbWFuZCBoYW5kbGVycy5cbiAqXG4gKiBVbmxpa2UgdGhlIE9ic2lkaWFuIHtAbGluayBDb21tYW5kfSBpbnRlcmZhY2UsIGhhbmRsZXJzIGFyZSBuZXZlciBtdXRhdGVkIGJ5IE9ic2lkaWFuLlxuICogVGhlIHtAbGluayBidWlsZENvbW1hbmR9IG1ldGhvZCBwcm9kdWNlcyBhIHBsYWluIHtAbGluayBDb21tYW5kfSBvYmplY3QgZm9yIHJlZ2lzdHJhdGlvbi5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbW1hbmRIYW5kbGVyIHtcbiAgLyoqXG4gICAqIFRoZSBpY29uIGZvciB0aGUgY29tbWFuZC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBpY29uOiBJY29uTmFtZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwbHVnaW4gbmFtZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHBsdWdpbiBuYW1lLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBwbHVnaW5OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuX3BsdWdpbk5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGx1Z2luTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjb21tYW5kIGhhbmRsZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNvbW1hbmQgaGFuZGxlci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IENvbW1hbmRIYW5kbGVyQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICB0aGlzLmljb24gPSBwYXJhbXMuaWNvbjtcbiAgICB0aGlzLmlkID0gcGFyYW1zLmlkO1xuICAgIHRoaXMubmFtZSA9IHBhcmFtcy5uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHBsYWluIE9ic2lkaWFuIHtAbGluayBDb21tYW5kfSBvYmplY3QgZm9yIHJlZ2lzdHJhdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgQSBuZXcge0BsaW5rIENvbW1hbmR9IG9iamVjdC4gT2JzaWRpYW4gbWF5IG11dGF0ZSB0aGlzIG9iamVjdCBhZnRlciByZWdpc3RyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYnVpbGRDb21tYW5kKCk6IENvbW1hbmQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciB0aGUgY29tbWFuZCBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGggT2JzaWRpYW4uXG4gICAqIFN1YmNsYXNzZXMgdXNlIHRoZSBwcm92aWRlZCBjb250ZXh0IHRvIHJlZ2lzdGVyIG1lbnUgZXZlbnQgaGFuZGxlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHJlZ2lzdHJhdGlvbiBjb250ZXh0IHByb3ZpZGluZyBydW50aW1lIGNhcGFiaWxpdGllcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBvblJlZ2lzdGVyZWQoY29udGV4dDogQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gICAgdGhpcy5fcGx1Z2luTmFtZSA9IGNvbnRleHQucGx1Z2luTmFtZTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFTLGlCQUFpQjtBQUMxQixTQUFTLHlCQUF5QjtBQWdEM0IsTUFBZSxlQUFlO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJaEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9uQixJQUFjLGFBQXFCO0FBQ2pDLFdBQU8sa0JBQWtCLEtBQUssV0FBVztBQUFBLEVBQzNDO0FBQUEsRUFFUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9ELFlBQVksUUFBeUM7QUFDMUQsU0FBSyxPQUFPLE9BQU87QUFDbkIsU0FBSyxLQUFLLE9BQU87QUFDakIsU0FBSyxPQUFPLE9BQU87QUFBQSxFQUNyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBZUEsTUFBYSxhQUFhLFNBQTJEO0FBQ25GLFVBQU0sVUFBVTtBQUNoQixTQUFLLGNBQWMsUUFBUTtBQUFBLEVBQzdCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
72
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQmFzZSBjbGFzcyBhbmQgaW50ZXJmYWNlcyBmb3IgY29tbWFuZCBoYW5kbGVycy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmQsXG4gIEljb25OYW1lXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IE1lbnVFdmVudFJlZ2lzdHJhciB9IGZyb20gJy4uL21lbnUtZXZlbnQtcmVnaXN0cmFyLnRzJztcblxuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlLWd1YXJkcy50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgYSBjb21tYW5kIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgaWNvbiBmb3IgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBpY29uOiBJY29uTmFtZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250ZXh0IHByb3ZpZGVkIHRvIGNvbW1hbmQgaGFuZGxlcnMgZHVyaW5nIHJlZ2lzdHJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHQge1xuICAvKipcbiAgICogUHJvdmlkZXIgZm9yIGFjY2Vzc2luZyB0aGUgY3VycmVudGx5IGFjdGl2ZSBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhciBmb3IgbWVudSBldmVudCBoYW5kbGVycy5cbiAgICovXG4gIHJlYWRvbmx5IG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgb3ducyB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgaGFuZGxlcidzIG93biBgc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudWAsIG9yIGB1bmRlZmluZWRgIHRvIGxlYXZlIGl0IGFsb25lLlxuICAgKlxuICAgKiBBIG1lbnUgc3VyZmFjZSB0aGF0IGFscmVhZHkgd3JhcHMgZXZlcnkgY29udHJpYnV0ZWQgaXRlbSBpbiBhIHBsdWdpbi10aXRsZWQgcGFyZW50IGVudHJ5IFx1MjAxNCBzdWNoIGFzXG4gICAqIGBOb3RlYm9va05hdmlnYXRvck1lbnVFdmVudFJlZ2lzdHJhckNvbXBvbmVudGAgXHUyMDE0IHNldHMgdGhpcyB0byBgZmFsc2VgLCBiZWNhdXNlIGEgaGFuZGxlciBkZWNsYXJpbmdcbiAgICogYSBzZWN0aW9uIHN1Ym1lbnUgb2YgaXRzIG93biB3b3VsZCBtYWtlIGBNZW51LnNvcnQoKWAgbmVzdCBhIHNlY29uZCBwbHVnaW4tdGl0bGVkIGVudHJ5IGluc2lkZSB0aGVcbiAgICogZmlyc3QuIE9ubHkgYEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyYCByZWFkcyBpdDogdGhlIHN1cmZhY2VzIHRoYXQgbmVlZCBpdCBicmlkZ2UgZmlsZSBhbmRcbiAgICogZm9sZGVyIG1lbnVzLCBuZXZlciB0aGUgZWRpdG9yIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBZGRDb21tYW5kVG9TdWJtZW51PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjb21tYW5kIGhhbmRsZXJzLlxuICpcbiAqIFVubGlrZSB0aGUgT2JzaWRpYW4ge0BsaW5rIENvbW1hbmR9IGludGVyZmFjZSwgaGFuZGxlcnMgYXJlIG5ldmVyIG11dGF0ZWQgYnkgT2JzaWRpYW4uXG4gKiBUaGUge0BsaW5rIGJ1aWxkQ29tbWFuZH0gbWV0aG9kIHByb2R1Y2VzIGEgcGxhaW4ge0BsaW5rIENvbW1hbmR9IG9iamVjdCBmb3IgcmVnaXN0cmF0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tbWFuZEhhbmRsZXIge1xuICAvKipcbiAgICogVGhlIGljb24gZm9yIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb246IEljb25OYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBsdWdpbiBuYW1lLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcGx1Z2luIG5hbWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHBsdWdpbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUodGhpcy5fcGx1Z2luTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIF9wbHVnaW5OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbW1hbmQgaGFuZGxlci5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY29tbWFuZCBoYW5kbGVyLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHRoaXMuaWNvbiA9IHBhcmFtcy5pY29uO1xuICAgIHRoaXMuaWQgPSBwYXJhbXMuaWQ7XG4gICAgdGhpcy5uYW1lID0gcGFyYW1zLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgcGxhaW4gT2JzaWRpYW4ge0BsaW5rIENvbW1hbmR9IG9iamVjdCBmb3IgcmVnaXN0cmF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgQ29tbWFuZH0gb2JqZWN0LiBPYnNpZGlhbiBtYXkgbXV0YXRlIHRoaXMgb2JqZWN0IGFmdGVyIHJlZ2lzdHJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZENvbW1hbmQoKTogQ29tbWFuZDtcblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIHRoZSBjb21tYW5kIGhhcyBiZWVuIHJlZ2lzdGVyZWQgd2l0aCBPYnNpZGlhbi5cbiAgICogU3ViY2xhc3NlcyB1c2UgdGhlIHByb3ZpZGVkIGNvbnRleHQgdG8gcmVnaXN0ZXIgbWVudSBldmVudCBoYW5kbGVycy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgcmVnaXN0cmF0aW9uIGNvbnRleHQgcHJvdmlkaW5nIHJ1bnRpbWUgY2FwYWJpbGl0aWVzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIG9uUmVnaXN0ZXJlZChjb250ZXh0OiBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgICB0aGlzLl9wbHVnaW5OYW1lID0gY29udGV4dC5wbHVnaW5OYW1lO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLFNBQVMsaUJBQWlCO0FBQzFCLFNBQVMseUJBQXlCO0FBMkQzQixNQUFlLGVBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUloQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT25CLElBQWMsYUFBcUI7QUFDakMsV0FBTyxrQkFBa0IsS0FBSyxXQUFXO0FBQUEsRUFDM0M7QUFBQSxFQUVRO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0QsWUFBWSxRQUF5QztBQUMxRCxTQUFLLE9BQU8sT0FBTztBQUNuQixTQUFLLEtBQUssT0FBTztBQUNqQixTQUFLLE9BQU8sT0FBTztBQUFBLEVBQ3JCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFlQSxNQUFhLGFBQWEsU0FBMkQ7QUFDbkYsVUFBTSxVQUFVO0FBQ2hCLFNBQUssY0FBYyxRQUFRO0FBQUEsRUFDN0I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K