obsidian-dev-utils 80.1.0 → 82.0.0-beta.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 (398) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/lib/cjs/abort-controller.cjs +12 -9
  3. package/dist/lib/cjs/abort-controller.d.cts +2 -2
  4. package/dist/lib/cjs/async-events.cjs +9 -1
  5. package/dist/lib/cjs/async-events.d.cts +9 -1
  6. package/dist/lib/cjs/async.cjs +93 -34
  7. package/dist/lib/cjs/async.d.cts +87 -17
  8. package/dist/lib/cjs/codemirror/state-field-spec.d.cts +1 -1
  9. package/dist/lib/cjs/css-class.cjs +6 -1
  10. package/dist/lib/cjs/css-class.d.cts +20 -0
  11. package/dist/lib/cjs/debug.cjs +26 -9
  12. package/dist/lib/cjs/debug.d.cts +24 -6
  13. package/dist/lib/cjs/disposable.cjs +234 -0
  14. package/dist/lib/cjs/disposable.d.cts +124 -0
  15. package/dist/lib/cjs/error.cjs +29 -18
  16. package/dist/lib/cjs/error.d.cts +23 -7
  17. package/dist/lib/cjs/function.d.cts +1 -1
  18. package/dist/lib/cjs/html-element.cjs +9 -6
  19. package/dist/lib/cjs/html-element.d.cts +5 -3
  20. package/dist/lib/cjs/index.cjs +4 -1
  21. package/dist/lib/cjs/index.d.cts +1 -0
  22. package/dist/lib/cjs/library.cjs +2 -2
  23. package/dist/lib/cjs/object-utils.cjs +233 -128
  24. package/dist/lib/cjs/object-utils.d.cts +38 -13
  25. package/dist/lib/cjs/obsidian/@types/dataview/api/plugin-api.d.cts +1 -1
  26. package/dist/lib/cjs/obsidian/@types/dataview/data-index/index.d.cts +1 -1
  27. package/dist/lib/cjs/obsidian/@types/dataview/data-model/markdown.d.cts +2 -2
  28. package/dist/lib/cjs/obsidian/@types/dataview/data-model/serialized/markdown.d.cts +2 -2
  29. package/dist/lib/cjs/obsidian/@types/dataview/index.d.cts +1 -1
  30. package/dist/lib/cjs/obsidian/@types/dataview/query/engine.d.cts +1 -1
  31. package/dist/lib/cjs/obsidian/@types/dataview/typings/obsidian-ex.d.cts +1 -1
  32. package/dist/lib/cjs/obsidian/@types/dataview/ui/lp-render.d.cts +1 -1
  33. package/dist/lib/cjs/obsidian/@types/dataview/ui/markdown.d.cts +1 -1
  34. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/calendar-view.d.cts +1 -1
  35. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/inline-view.d.cts +1 -1
  36. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/list-view.d.cts +2 -2
  37. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/table-view.d.cts +2 -2
  38. package/dist/lib/cjs/obsidian/@types/dataview/ui/views/task-view.d.cts +1 -1
  39. package/dist/lib/cjs/obsidian/active-file-provider.d.cts +1 -1
  40. package/dist/lib/cjs/obsidian/app.d.cts +1 -1
  41. package/dist/lib/cjs/obsidian/async-with-notice.cjs +9 -6
  42. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +16 -3
  43. package/dist/lib/cjs/obsidian/attachment-path.cjs +45 -13
  44. package/dist/lib/cjs/obsidian/attachment-path.d.cts +47 -9
  45. package/dist/lib/cjs/obsidian/backlink.cjs +6 -6
  46. package/dist/lib/cjs/obsidian/backlink.d.cts +6 -2
  47. package/dist/lib/cjs/obsidian/bases-view-registrar.d.cts +1 -1
  48. package/dist/lib/cjs/obsidian/callout.cjs +1 -1
  49. package/dist/lib/cjs/obsidian/callout.d.cts +8 -0
  50. package/dist/lib/cjs/obsidian/case-insensitive-file-index.d.cts +1 -1
  51. package/dist/lib/cjs/obsidian/code-block-markdown-information.d.cts +1 -1
  52. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +53 -16
  53. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +84 -10
  54. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +1 -1
  55. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +25 -5
  56. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +38 -2
  57. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +33 -19
  58. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +45 -19
  59. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +33 -19
  60. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +45 -19
  61. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.d.cts +2 -2
  62. package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.d.cts +1 -1
  63. package/dist/lib/cjs/obsidian/command-registrar.d.cts +1 -1
  64. package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +17 -9
  65. package/dist/lib/cjs/obsidian/components/all-windows-event-component.d.cts +49 -9
  66. package/dist/lib/cjs/obsidian/components/async-error-handler-component.cjs +5 -2
  67. package/dist/lib/cjs/obsidian/components/case-insensitive-file-index-component.d.cts +1 -1
  68. package/dist/lib/cjs/obsidian/components/disposable-component.cjs +5 -10
  69. package/dist/lib/cjs/obsidian/components/disposable-component.d.cts +0 -7
  70. package/dist/lib/cjs/obsidian/components/embed-extensions-component.d.cts +2 -2
  71. package/dist/lib/cjs/obsidian/components/layout-ready-component.d.cts +2 -2
  72. package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.d.cts +1 -1
  73. package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +1 -1
  74. package/dist/lib/cjs/obsidian/components/plugin-context-component.d.cts +1 -1
  75. package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +1 -1
  76. package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +3 -2
  77. package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +24 -8
  78. package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +26 -5
  79. package/dist/lib/cjs/obsidian/components/plugin-settings-tab-component.d.cts +1 -1
  80. package/dist/lib/cjs/obsidian/components/registry-component.d.cts +1 -1
  81. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +195 -72
  82. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.d.cts +4 -1
  83. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.d.cts +2 -2
  84. package/dist/lib/cjs/obsidian/data-handler.d.cts +1 -1
  85. package/dist/lib/cjs/obsidian/dataview-link.cjs +7 -2
  86. package/dist/lib/cjs/obsidian/dataview-link.d.cts +22 -5
  87. package/dist/lib/cjs/obsidian/dataview.cjs +27 -10
  88. package/dist/lib/cjs/obsidian/dataview.d.cts +32 -7
  89. package/dist/lib/cjs/obsidian/editor-extension-registrar.d.cts +1 -1
  90. package/dist/lib/cjs/obsidian/editor-lock.cjs +245 -0
  91. package/dist/lib/cjs/obsidian/editor-lock.d.cts +57 -0
  92. package/dist/lib/cjs/obsidian/editor.cjs +7 -1
  93. package/dist/lib/cjs/obsidian/editor.d.cts +3 -2
  94. package/dist/lib/cjs/obsidian/file-change.cjs +103 -27
  95. package/dist/lib/cjs/obsidian/file-change.d.cts +55 -14
  96. package/dist/lib/cjs/obsidian/file-manager.cjs +61 -32
  97. package/dist/lib/cjs/obsidian/file-manager.d.cts +65 -15
  98. package/dist/lib/cjs/obsidian/file-system.cjs +122 -23
  99. package/dist/lib/cjs/obsidian/file-system.d.cts +189 -40
  100. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.d.cts +1 -1
  101. package/dist/lib/cjs/obsidian/frontmatter.cjs +7 -2
  102. package/dist/lib/cjs/obsidian/hover-link-source-registrar.d.cts +1 -1
  103. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +1 -1
  104. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +4 -1
  105. package/dist/lib/cjs/obsidian/i18n/locales/en.d.cts +3 -0
  106. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +3 -0
  107. package/dist/lib/cjs/obsidian/index.cjs +4 -1
  108. package/dist/lib/cjs/obsidian/index.d.cts +1 -0
  109. package/dist/lib/cjs/obsidian/link.cjs +326 -129
  110. package/dist/lib/cjs/obsidian/link.d.cts +133 -36
  111. package/dist/lib/cjs/obsidian/logger.cjs +48 -22
  112. package/dist/lib/cjs/obsidian/logger.d.cts +27 -6
  113. package/dist/lib/cjs/obsidian/loop.cjs +14 -4
  114. package/dist/lib/cjs/obsidian/loop.d.cts +27 -8
  115. package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.d.cts +2 -2
  116. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +155 -107
  117. package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +16 -6
  118. package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.cjs +1 -1
  119. package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.d.cts +5 -3
  120. package/dist/lib/cjs/obsidian/markdown-view.d.cts +1 -1
  121. package/dist/lib/cjs/obsidian/markdown.cjs +40 -11
  122. package/dist/lib/cjs/obsidian/markdown.d.cts +85 -17
  123. package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +1 -1
  124. package/dist/lib/cjs/obsidian/metadata-cache.cjs +88 -32
  125. package/dist/lib/cjs/obsidian/metadata-cache.d.cts +42 -32
  126. package/dist/lib/cjs/obsidian/modals/alert.cjs +1 -1
  127. package/dist/lib/cjs/obsidian/modals/alert.d.cts +2 -0
  128. package/dist/lib/cjs/obsidian/modals/confirm.cjs +1 -1
  129. package/dist/lib/cjs/obsidian/modals/confirm.d.cts +2 -0
  130. package/dist/lib/cjs/obsidian/modals/index.cjs +4 -1
  131. package/dist/lib/cjs/obsidian/modals/index.d.cts +1 -0
  132. package/dist/lib/cjs/obsidian/modals/minimizable-modal.cjs +234 -0
  133. package/dist/lib/cjs/obsidian/modals/minimizable-modal.d.cts +74 -0
  134. package/dist/lib/cjs/obsidian/modals/modal.d.cts +1 -1
  135. package/dist/lib/cjs/obsidian/modals/prompt.cjs +1 -1
  136. package/dist/lib/cjs/obsidian/modals/prompt.d.cts +7 -1
  137. package/dist/lib/cjs/obsidian/modals/select-item.cjs +1 -1
  138. package/dist/lib/cjs/obsidian/modals/select-item.d.cts +2 -0
  139. package/dist/lib/cjs/obsidian/obsidian-protocol-handler-registrar.d.cts +2 -2
  140. package/dist/lib/cjs/obsidian/obsidian-settings.d.cts +1 -1
  141. package/dist/lib/cjs/obsidian/path-settings.cjs +5 -2
  142. package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +1 -1
  143. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.cjs +5 -1
  144. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.d.cts +5 -1
  145. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +15 -7
  146. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.d.cts +51 -14
  147. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +22 -16
  148. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +6 -6
  149. package/dist/lib/cjs/obsidian/plugin-cli-handler-registrar.d.cts +2 -2
  150. package/dist/lib/cjs/obsidian/queue.cjs +9 -7
  151. package/dist/lib/cjs/obsidian/queue.d.cts +15 -3
  152. package/dist/lib/cjs/obsidian/react/app-context.d.cts +1 -1
  153. package/dist/lib/cjs/obsidian/reference.d.cts +1 -1
  154. package/dist/lib/cjs/obsidian/resource-url.cjs +7 -2
  155. package/dist/lib/cjs/obsidian/resource-url.d.cts +20 -5
  156. package/dist/lib/cjs/obsidian/ribbon-icon-registrar.d.cts +1 -1
  157. package/dist/lib/cjs/obsidian/setting-components/value-component-with-change-tracking.d.cts +1 -1
  158. package/dist/lib/cjs/obsidian/setting-ex.d.cts +1 -1
  159. package/dist/lib/cjs/obsidian/status-bar-item-registrar.cjs +4 -2
  160. package/dist/lib/cjs/obsidian/status-bar-item-registrar.d.cts +6 -2
  161. package/dist/lib/cjs/obsidian/vault-delete.cjs +19 -15
  162. package/dist/lib/cjs/obsidian/vault-delete.d.cts +12 -7
  163. package/dist/lib/cjs/obsidian/vault.cjs +116 -59
  164. package/dist/lib/cjs/obsidian/vault.d.cts +188 -45
  165. package/dist/lib/cjs/obsidian/view-registrar.d.cts +1 -1
  166. package/dist/lib/cjs/obsidian/workspace.d.cts +1 -1
  167. package/dist/lib/cjs/path.cjs +12 -5
  168. package/dist/lib/cjs/path.d.cts +15 -3
  169. package/dist/lib/cjs/reg-exp.cjs +101 -78
  170. package/dist/lib/cjs/script-utils/build.cjs +9 -5
  171. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +34 -14
  172. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.d.cts +1 -1
  173. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +20 -5
  174. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +24 -6
  175. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.cts +1 -1
  176. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +11 -4
  177. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +6 -2
  178. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.d.cts +1 -1
  179. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +31 -12
  180. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +20 -5
  181. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -7
  182. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
  183. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +12 -3
  184. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
  185. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
  186. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +1 -1
  187. package/dist/lib/cjs/script-utils/check-project-types.cjs +5 -1
  188. package/dist/lib/cjs/script-utils/check-project-types.d.cts +10 -2
  189. package/dist/lib/cjs/script-utils/cli-utils.cjs +6 -2
  190. package/dist/lib/cjs/script-utils/cli-utils.d.cts +1 -1
  191. package/dist/lib/cjs/script-utils/commitlint-config.d.cts +1 -1
  192. package/dist/lib/cjs/script-utils/exec.cjs +47 -12
  193. package/dist/lib/cjs/script-utils/exec.d.cts +12 -0
  194. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +3 -3
  195. package/dist/lib/cjs/script-utils/formatters/dprint.d.cts +2 -0
  196. package/dist/lib/cjs/script-utils/fs.d.cts +1 -1
  197. package/dist/lib/cjs/script-utils/json.cjs +9 -5
  198. package/dist/lib/cjs/script-utils/json.d.cts +41 -9
  199. package/dist/lib/cjs/script-utils/linters/eslint-config.d.cts +1 -1
  200. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +1 -1
  201. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.cjs +8 -3
  202. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.d.cts +1 -1
  203. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.d.cts +1 -1
  204. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +1 -1
  205. package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +1 -1
  206. package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.d.cts +1 -1
  207. package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.cts +1 -1
  208. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +27 -7
  209. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.d.cts +1 -1
  210. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.cjs +7 -3
  211. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.d.cts +1 -1
  212. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +8 -3
  213. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.d.cts +1 -1
  214. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.d.cts +2 -2
  215. package/dist/lib/cjs/script-utils/linters/eslint.cjs +3 -3
  216. package/dist/lib/cjs/script-utils/linters/eslint.d.cts +2 -0
  217. package/dist/lib/cjs/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +1 -1
  218. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +3 -3
  219. package/dist/lib/cjs/script-utils/linters/markdownlint.d.cts +2 -0
  220. package/dist/lib/cjs/script-utils/linters/over-exposure.cjs +72 -30
  221. package/dist/lib/cjs/script-utils/linters/over-exposure.d.cts +9 -1
  222. package/dist/lib/cjs/script-utils/npm-publish.cjs +2 -2
  223. package/dist/lib/cjs/script-utils/npm.cjs +18 -9
  224. package/dist/lib/cjs/script-utils/npm.d.cts +3 -1
  225. package/dist/lib/cjs/script-utils/root.cjs +20 -5
  226. package/dist/lib/cjs/script-utils/root.d.cts +45 -9
  227. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +1 -1
  228. package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +2 -0
  229. package/dist/lib/cjs/script-utils/validate-declarations.cjs +8 -44
  230. package/dist/lib/cjs/script-utils/validate-declarations.d.cts +22 -9
  231. package/dist/lib/cjs/script-utils/version.cjs +36 -19
  232. package/dist/lib/cjs/script-utils/version.d.cts +20 -7
  233. package/dist/lib/cjs/strict-proxy.cjs +10 -1
  234. package/dist/lib/cjs/string.cjs +63 -22
  235. package/dist/lib/cjs/string.d.cts +194 -40
  236. package/dist/lib/cjs/value-provider.d.cts +1 -1
  237. package/dist/lib/esm/abort-controller.d.mts +2 -2
  238. package/dist/lib/esm/abort-controller.mjs +12 -9
  239. package/dist/lib/esm/async-events.d.mts +8 -0
  240. package/dist/lib/esm/async-events.mjs +9 -1
  241. package/dist/lib/esm/async.d.mts +86 -16
  242. package/dist/lib/esm/async.mjs +93 -34
  243. package/dist/lib/esm/css-class.d.mts +20 -0
  244. package/dist/lib/esm/css-class.mjs +6 -1
  245. package/dist/lib/esm/debug.d.mts +23 -5
  246. package/dist/lib/esm/debug.mjs +26 -9
  247. package/dist/lib/esm/disposable.d.mts +124 -0
  248. package/dist/lib/esm/disposable.mjs +122 -0
  249. package/dist/lib/esm/error.d.mts +23 -7
  250. package/dist/lib/esm/error.mjs +29 -18
  251. package/dist/lib/esm/html-element.d.mts +4 -2
  252. package/dist/lib/esm/html-element.mjs +9 -6
  253. package/dist/lib/esm/index.d.mts +1 -0
  254. package/dist/lib/esm/index.mjs +3 -1
  255. package/dist/lib/esm/library.mjs +2 -2
  256. package/dist/lib/esm/object-utils.d.mts +37 -12
  257. package/dist/lib/esm/object-utils.mjs +233 -128
  258. package/dist/lib/esm/obsidian/async-with-notice.d.mts +15 -2
  259. package/dist/lib/esm/obsidian/async-with-notice.mjs +9 -6
  260. package/dist/lib/esm/obsidian/attachment-path.d.mts +46 -8
  261. package/dist/lib/esm/obsidian/attachment-path.mjs +45 -13
  262. package/dist/lib/esm/obsidian/backlink.d.mts +6 -2
  263. package/dist/lib/esm/obsidian/backlink.mjs +6 -6
  264. package/dist/lib/esm/obsidian/callout.d.mts +8 -0
  265. package/dist/lib/esm/obsidian/callout.mjs +1 -1
  266. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +83 -9
  267. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +53 -16
  268. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +37 -1
  269. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +25 -5
  270. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +43 -17
  271. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +33 -19
  272. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +43 -17
  273. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +33 -19
  274. package/dist/lib/esm/obsidian/components/all-windows-event-component.d.mts +48 -8
  275. package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +17 -9
  276. package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +5 -2
  277. package/dist/lib/esm/obsidian/components/disposable-component.d.mts +0 -7
  278. package/dist/lib/esm/obsidian/components/disposable-component.mjs +3 -7
  279. package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +3 -2
  280. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +1 -1
  281. package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +25 -4
  282. package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +24 -8
  283. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.d.mts +3 -0
  284. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +197 -79
  285. package/dist/lib/esm/obsidian/dataview-link.d.mts +22 -5
  286. package/dist/lib/esm/obsidian/dataview-link.mjs +7 -2
  287. package/dist/lib/esm/obsidian/dataview.d.mts +31 -6
  288. package/dist/lib/esm/obsidian/dataview.mjs +27 -10
  289. package/dist/lib/esm/obsidian/editor-lock.d.mts +57 -0
  290. package/dist/lib/esm/obsidian/editor-lock.mjs +141 -0
  291. package/dist/lib/esm/obsidian/editor.d.mts +2 -1
  292. package/dist/lib/esm/obsidian/editor.mjs +7 -1
  293. package/dist/lib/esm/obsidian/file-change.d.mts +54 -13
  294. package/dist/lib/esm/obsidian/file-change.mjs +104 -27
  295. package/dist/lib/esm/obsidian/file-manager.d.mts +63 -13
  296. package/dist/lib/esm/obsidian/file-manager.mjs +65 -33
  297. package/dist/lib/esm/obsidian/file-system.d.mts +188 -39
  298. package/dist/lib/esm/obsidian/file-system.mjs +122 -23
  299. package/dist/lib/esm/obsidian/frontmatter.mjs +7 -2
  300. package/dist/lib/esm/obsidian/i18n/locales/en.d.mts +3 -0
  301. package/dist/lib/esm/obsidian/i18n/locales/en.mjs +4 -1
  302. package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +3 -0
  303. package/dist/lib/esm/obsidian/index.d.mts +1 -0
  304. package/dist/lib/esm/obsidian/index.mjs +3 -1
  305. package/dist/lib/esm/obsidian/link.d.mts +131 -34
  306. package/dist/lib/esm/obsidian/link.mjs +327 -130
  307. package/dist/lib/esm/obsidian/logger.d.mts +26 -5
  308. package/dist/lib/esm/obsidian/logger.mjs +48 -22
  309. package/dist/lib/esm/obsidian/loop.d.mts +26 -7
  310. package/dist/lib/esm/obsidian/loop.mjs +14 -4
  311. package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +15 -5
  312. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +155 -107
  313. package/dist/lib/esm/obsidian/markdown-post-processor-registrar.d.mts +3 -1
  314. package/dist/lib/esm/obsidian/markdown-post-processor-registrar.mjs +1 -1
  315. package/dist/lib/esm/obsidian/markdown.d.mts +84 -16
  316. package/dist/lib/esm/obsidian/markdown.mjs +40 -11
  317. package/dist/lib/esm/obsidian/metadata-cache.d.mts +40 -30
  318. package/dist/lib/esm/obsidian/metadata-cache.mjs +88 -30
  319. package/dist/lib/esm/obsidian/modals/alert.d.mts +2 -0
  320. package/dist/lib/esm/obsidian/modals/alert.mjs +1 -1
  321. package/dist/lib/esm/obsidian/modals/confirm.d.mts +2 -0
  322. package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
  323. package/dist/lib/esm/obsidian/modals/index.d.mts +1 -0
  324. package/dist/lib/esm/obsidian/modals/index.mjs +3 -1
  325. package/dist/lib/esm/obsidian/modals/minimizable-modal.d.mts +74 -0
  326. package/dist/lib/esm/obsidian/modals/minimizable-modal.mjs +126 -0
  327. package/dist/lib/esm/obsidian/modals/prompt.d.mts +6 -0
  328. package/dist/lib/esm/obsidian/modals/prompt.mjs +1 -1
  329. package/dist/lib/esm/obsidian/modals/select-item.d.mts +2 -0
  330. package/dist/lib/esm/obsidian/modals/select-item.mjs +1 -1
  331. package/dist/lib/esm/obsidian/path-settings.mjs +5 -2
  332. package/dist/lib/esm/obsidian/plugin/plugin-event-source.d.mts +4 -0
  333. package/dist/lib/esm/obsidian/plugin/plugin-event-source.mjs +5 -1
  334. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.d.mts +48 -11
  335. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +15 -7
  336. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +4 -4
  337. package/dist/lib/esm/obsidian/plugin/plugin.mjs +24 -21
  338. package/dist/lib/esm/obsidian/queue.d.mts +14 -2
  339. package/dist/lib/esm/obsidian/queue.mjs +9 -7
  340. package/dist/lib/esm/obsidian/resource-url.d.mts +19 -4
  341. package/dist/lib/esm/obsidian/resource-url.mjs +7 -2
  342. package/dist/lib/esm/obsidian/status-bar-item-registrar.d.mts +6 -2
  343. package/dist/lib/esm/obsidian/status-bar-item-registrar.mjs +4 -2
  344. package/dist/lib/esm/obsidian/vault-delete.d.mts +11 -6
  345. package/dist/lib/esm/obsidian/vault-delete.mjs +19 -15
  346. package/dist/lib/esm/obsidian/vault.d.mts +187 -44
  347. package/dist/lib/esm/obsidian/vault.mjs +116 -59
  348. package/dist/lib/esm/path.d.mts +15 -3
  349. package/dist/lib/esm/path.mjs +12 -5
  350. package/dist/lib/esm/reg-exp.mjs +101 -78
  351. package/dist/lib/esm/script-utils/build.mjs +9 -5
  352. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +34 -14
  353. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +23 -5
  354. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +20 -5
  355. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +11 -4
  356. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +6 -2
  357. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +19 -4
  358. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +31 -12
  359. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +7 -7
  360. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +12 -3
  361. package/dist/lib/esm/script-utils/check-project-types.d.mts +9 -1
  362. package/dist/lib/esm/script-utils/check-project-types.mjs +5 -1
  363. package/dist/lib/esm/script-utils/cli-utils.mjs +6 -2
  364. package/dist/lib/esm/script-utils/exec.d.mts +12 -0
  365. package/dist/lib/esm/script-utils/exec.mjs +47 -12
  366. package/dist/lib/esm/script-utils/formatters/dprint.d.mts +2 -0
  367. package/dist/lib/esm/script-utils/formatters/dprint.mjs +3 -3
  368. package/dist/lib/esm/script-utils/json.d.mts +40 -8
  369. package/dist/lib/esm/script-utils/json.mjs +9 -5
  370. package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.mjs +8 -3
  371. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +27 -7
  372. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.mjs +7 -3
  373. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +8 -3
  374. package/dist/lib/esm/script-utils/linters/eslint.d.mts +2 -0
  375. package/dist/lib/esm/script-utils/linters/eslint.mjs +3 -3
  376. package/dist/lib/esm/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +1 -1
  377. package/dist/lib/esm/script-utils/linters/markdownlint.d.mts +2 -0
  378. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +3 -3
  379. package/dist/lib/esm/script-utils/linters/over-exposure.d.mts +8 -0
  380. package/dist/lib/esm/script-utils/linters/over-exposure.mjs +72 -30
  381. package/dist/lib/esm/script-utils/npm-publish.mjs +2 -2
  382. package/dist/lib/esm/script-utils/npm.d.mts +2 -0
  383. package/dist/lib/esm/script-utils/npm.mjs +18 -9
  384. package/dist/lib/esm/script-utils/root.d.mts +45 -9
  385. package/dist/lib/esm/script-utils/root.mjs +20 -5
  386. package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +2 -0
  387. package/dist/lib/esm/script-utils/test-runners/vitest.mjs +1 -1
  388. package/dist/lib/esm/script-utils/validate-declarations.d.mts +22 -9
  389. package/dist/lib/esm/script-utils/validate-declarations.mjs +8 -51
  390. package/dist/lib/esm/script-utils/version.d.mts +20 -7
  391. package/dist/lib/esm/script-utils/version.mjs +36 -19
  392. package/dist/lib/esm/strict-proxy.mjs +10 -1
  393. package/dist/lib/esm/string.d.mts +194 -40
  394. package/dist/lib/esm/string.mjs +63 -22
  395. package/dist/styles.css +5 -1
  396. package/obsidian/Modals/minimizable-modal/package.json +6 -0
  397. package/obsidian/editor-lock/package.json +6 -0
  398. package/package.json +9 -9
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import type { Promisable } from 'type-fest';
8
8
  import type { RetryOptions } from '../async.mjs';
9
+ import type { PluginNoticeComponent } from './components/plugin-notice-component.mjs';
9
10
  /**
10
11
  * Options for {@link retryWithTimeoutNotice}.
11
12
  */
@@ -21,12 +22,18 @@ export interface RetryWithTimeoutNoticeParams {
21
22
  * The name of the operation.
22
23
  */
23
24
  readonly operationName?: string;
25
+ /**
26
+ * Plugin notice component to show notices.
27
+ */
28
+ readonly pluginNoticeComponent: PluginNoticeComponent;
24
29
  /**
25
30
  * The retry options.
26
31
  */
27
32
  readonly retryOptions?: RetryOptions;
28
33
  /**
29
- * Whether to show a timeout notice. Default is `true`.
34
+ * Whether to show a timeout notice.
35
+ *
36
+ * @default `true`
30
37
  */
31
38
  readonly shouldShowTimeoutNotice?: boolean;
32
39
  /**
@@ -56,7 +63,13 @@ export interface RunWithTimeoutNoticeParams<Result> {
56
63
  */
57
64
  readonly operationName?: string;
58
65
  /**
59
- * Whether to show a timeout notice. Default is `true`.
66
+ * Plugin notice component to show notices.
67
+ */
68
+ readonly pluginNoticeComponent: PluginNoticeComponent;
69
+ /**
70
+ * Whether to show a timeout notice.
71
+ *
72
+ * @default `true`
60
73
  */
61
74
  readonly shouldShowTimeoutNotice?: boolean;
62
75
  /**
@@ -21,7 +21,6 @@ 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 { Notice } from "obsidian";
25
24
  import {
26
25
  retryWithTimeout,
27
26
  runWithTimeout
@@ -31,21 +30,25 @@ import { t } from "./i18n/i18n.mjs";
31
30
  async function retryWithTimeoutNotice(params) {
32
31
  return retryWithTimeout({
33
32
  ...params,
34
- onTimeout: params.shouldShowTimeoutNotice ? onTimeoutNotice : onTimeoutWithoutNotice
33
+ onTimeout: params.shouldShowTimeoutNotice ?? true ? (ctx) => {
34
+ onTimeoutNotice(ctx, params.pluginNoticeComponent);
35
+ } : onTimeoutWithoutNotice
35
36
  });
36
37
  }
37
38
  async function runWithTimeoutNotice(params) {
38
39
  return runWithTimeout({
39
40
  ...params,
40
- onTimeout: params.shouldShowTimeoutNotice ? onTimeoutNotice : onTimeoutWithoutNotice
41
+ onTimeout: params.shouldShowTimeoutNotice ?? true ? (ctx) => {
42
+ onTimeoutNotice(ctx, params.pluginNoticeComponent);
43
+ } : onTimeoutWithoutNotice
41
44
  });
42
45
  }
43
- function onTimeoutNotice(ctx) {
46
+ function onTimeoutNotice(ctx, pluginNoticeComponent) {
44
47
  const startTime = Math.trunc(performance.now() - ctx.duration);
45
48
  let runningTimeEl;
46
49
  const SECOND_IN_MILLISECONDS = 1e3;
47
50
  const cleanup = { intervalId: 0 };
48
- const notice = new Notice(createFragment((f) => {
51
+ const notice = pluginNoticeComponent.showNotice(createFragment((f) => {
49
52
  if (ctx.operationName) {
50
53
  f.appendText(t(($) => $.obsidianDevUtils.asyncWithNotice.operation));
51
54
  f.appendText(": ");
@@ -95,4 +98,4 @@ export {
95
98
  retryWithTimeoutNotice,
96
99
  runWithTimeoutNotice
97
100
  };
98
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2FzeW5jLXdpdGgtbm90aWNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYSB1dGlsaXR5IHRvIGV4ZWN1dGUgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHdpdGggYSBub3RpY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJldHJ5T3B0aW9ucyxcbiAgVGltZW91dENvbnRleHRcbn0gZnJvbSAnLi4vYXN5bmMudHMnO1xuXG5pbXBvcnQge1xuICByZXRyeVdpdGhUaW1lb3V0LFxuICBydW5XaXRoVGltZW91dFxufSBmcm9tICcuLi9hc3luYy50cyc7XG5pbXBvcnQgeyBnZXREZWJ1Z2dlciB9IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJldHJ5V2l0aFRpbWVvdXROb3RpY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5V2l0aFRpbWVvdXROb3RpY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiBmdW5jdGlvbiB0byBleGVjdXRlLlxuICAgKlxuICAgKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICBvcGVyYXRpb25Gbih0aGlzOiB2b2lkLCBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNhYmxlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJldHJ5IG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSByZXRyeU9wdGlvbnM/OiBSZXRyeU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBydW5XaXRoVGltZW91dH0uXG4gKlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IGZyb20gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+IHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0IG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW9uIGZ1bmN0aW9uIHRvIGV4ZWN1dGUuXG4gICAqXG4gICAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gbGlzdGVuIHRvLlxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIG9wZXJhdGlvbkZuKGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCk6IFByb21pc2FibGU8UmVzdWx0PjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogUmV0cmllcyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gdW50aWwgaXQgcmV0dXJucyBgdHJ1ZWAgb3IgdGhlIHRpbWVvdXQgaXMgcmVhY2hlZCBhbmQgZGlzcGxheXMgYSBub3RpY2UgaWYgdGhlIGZ1bmN0aW9uIHRpbWVzIG91dC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgb3IgcmVqZWN0cyB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeVdpdGhUaW1lb3V0Tm90aWNlKHBhcmFtczogUmV0cnlXaXRoVGltZW91dE5vdGljZVBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gcmV0cnlXaXRoVGltZW91dCh7XG4gICAgLi4ucGFyYW1zLFxuICAgIG9uVGltZW91dDogcGFyYW1zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8gb25UaW1lb3V0Tm90aWNlIDogb25UaW1lb3V0V2l0aG91dE5vdGljZVxuICB9KTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIGZ1bmN0aW9uIHdpdGggYSB0aW1lb3V0IGFuZCBkaXNwbGF5cyBhIG5vdGljZSBpZiB0aGUgZnVuY3Rpb24gdGltZXMgb3V0LlxuICpcbiAqIEB0eXBlUGFyYW0gUmVzdWx0IC0gVGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBmcm9tIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24uXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2l0aFRpbWVvdXROb3RpY2U8UmVzdWx0PihwYXJhbXM6IFJ1bldpdGhUaW1lb3V0Tm90aWNlUGFyYW1zPFJlc3VsdD4pOiBQcm9taXNlPFJlc3VsdD4ge1xuICByZXR1cm4gcnVuV2l0aFRpbWVvdXQoe1xuICAgIC4uLnBhcmFtcyxcbiAgICBvblRpbWVvdXQ6IHBhcmFtcy5zaG91bGRTaG93VGltZW91dE5vdGljZSA/IG9uVGltZW91dE5vdGljZSA6IG9uVGltZW91dFdpdGhvdXROb3RpY2VcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uVGltZW91dE5vdGljZShjdHg6IFRpbWVvdXRDb250ZXh0KTogdm9pZCB7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IE1hdGgudHJ1bmMocGVyZm9ybWFuY2Uubm93KCkgLSBjdHguZHVyYXRpb24pO1xuICBsZXQgcnVubmluZ1RpbWVFbDogSFRNTFNwYW5FbGVtZW50O1xuICBjb25zdCBTRUNPTkRfSU5fTUlMTElTRUNPTkRTID0gMTAwMDtcbiAgY29uc3QgY2xlYW51cCA9IHsgaW50ZXJ2YWxJZDogMCB9O1xuXG4gIGNvbnN0IG5vdGljZSA9IG5ldyBOb3RpY2UoY3JlYXRlRnJhZ21lbnQoKGYpID0+IHtcbiAgICBpZiAoY3R4Lm9wZXJhdGlvbk5hbWUpIHtcbiAgICAgIGYuYXBwZW5kVGV4dCh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYXN5bmNXaXRoTm90aWNlLm9wZXJhdGlvbikpO1xuICAgICAgZi5hcHBlbmRUZXh0KCc6ICcpO1xuICAgICAgZi5hcHBlbmRUZXh0KGN0eC5vcGVyYXRpb25OYW1lKTtcbiAgICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgfVxuICAgIGYuYXBwZW5kVGV4dCh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYXN5bmNXaXRoTm90aWNlLnRpbWVkT3V0LCB7IGR1cmF0aW9uOiBjdHguZHVyYXRpb24gfSkpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UucnVubmluZ0ZvcikpO1xuICAgIGYuYXBwZW5kVGV4dCgnICcpO1xuICAgIHJ1bm5pbmdUaW1lRWwgPSBmLmNyZWF0ZVNwYW4oKTtcbiAgICBmLmFwcGVuZFRleHQoJyAnKTtcbiAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5taWxsaXNlY29uZHMpKTtcbiAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIGYuYXBwZW5kVGV4dCh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYXN5bmNXaXRoTm90aWNlLnRlcm1pbmF0ZU9wZXJhdGlvbikpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgY29uc3QgYnV0dG9uID0gZi5jcmVhdGVFbCgnYnV0dG9uJywge1xuICAgICAgdGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMuY2FuY2VsKVxuICAgIH0pO1xuICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIGN0eC50ZXJtaW5hdGVPcGVyYXRpb24oKTtcbiAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGNsZWFudXAuaW50ZXJ2YWxJZCk7XG4gICAgICBub3RpY2UuaGlkZSgpO1xuICAgIH0pO1xuICB9KSk7XG5cbiAgdXBkYXRlUnVubmluZ1RpbWUoKTtcbiAgY2xlYW51cC5pbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKHVwZGF0ZVJ1bm5pbmdUaW1lLCBTRUNPTkRfSU5fTUlMTElTRUNPTkRTKTtcblxuICBjdHgub25PcGVyYXRpb25Db21wbGV0ZWQoKCkgPT4ge1xuICAgIHdpbmRvdy5jbGVhckludGVydmFsKGNsZWFudXAuaW50ZXJ2YWxJZCk7XG4gICAgbm90aWNlLmhpZGUoKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gdXBkYXRlUnVubmluZ1RpbWUoKTogdm9pZCB7XG4gICAgY29uc3QgcnVubmluZ1RpbWVJbk1pbGxpc2Vjb25kcyA9IE1hdGgubWF4KGN0eC5kdXJhdGlvbiwgTWF0aC5yb3VuZCgocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUpIC8gU0VDT05EX0lOX01JTExJU0VDT05EUykgKiBTRUNPTkRfSU5fTUlMTElTRUNPTkRTKTtcbiAgICBydW5uaW5nVGltZUVsLnRleHRDb250ZW50ID0gU3RyaW5nKHJ1bm5pbmdUaW1lSW5NaWxsaXNlY29uZHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9uVGltZW91dFdpdGhvdXROb3RpY2UoY3R4OiBUaW1lb3V0Q29udGV4dCk6IHZvaWQge1xuICBjb25zdCBzdGFydFRpbWUgPSBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gY3R4LmR1cmF0aW9uKTtcblxuICBjdHgub25PcGVyYXRpb25Db21wbGV0ZWQoKCkgPT4ge1xuICAgIGdldERlYnVnZ2VyKCdBc3luY1dpdGhOb3RpY2U6b25UaW1lb3V0V2l0aG91dE5vdGljZScpKCdPcGVyYXRpb24gY29tcGxldGVkIGFmdGVyIHRpbWVvdXQnLCB7XG4gICAgICBvcGVyYXRpb25OYW1lOiBjdHgub3BlcmF0aW9uTmFtZSxcbiAgICAgIHRvdGFsRHVyYXRpb246IE1hdGgudHJ1bmMocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUp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
101
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2FzeW5jLXdpdGgtbm90aWNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYSB1dGlsaXR5IHRvIGV4ZWN1dGUgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHdpdGggYSBub3RpY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUge1xuICBSZXRyeU9wdGlvbnMsXG4gIFRpbWVvdXRDb250ZXh0XG59IGZyb20gJy4uL2FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1ub3RpY2UtY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHtcbiAgcmV0cnlXaXRoVGltZW91dCxcbiAgcnVuV2l0aFRpbWVvdXRcbn0gZnJvbSAnLi4vYXN5bmMudHMnO1xuaW1wb3J0IHsgZ2V0RGVidWdnZXIgfSBmcm9tICcuLi9kZWJ1Zy50cyc7XG5pbXBvcnQgeyB0IH0gZnJvbSAnLi9pMThuL2kxOG4udHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZXRyeVdpdGhUaW1lb3V0Tm90aWNlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXRyeVdpdGhUaW1lb3V0Tm90aWNlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgb3BlcmF0aW9uRm4odGhpczogdm9pZCwgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzYWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBub3RpY2UgY29tcG9uZW50IHRvIHNob3cgbm90aWNlcy5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgcmV0cnkgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHJldHJ5T3B0aW9ucz86IFJldHJ5T3B0aW9ucztcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IGEgdGltZW91dCBub3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIHNvdXJjZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrVHJhY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJ1bldpdGhUaW1lb3V0fS5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlc3VsdCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgZnJvbSB0aGUgb3BlcmF0aW9uIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bldpdGhUaW1lb3V0Tm90aWNlUGFyYW1zPFJlc3VsdD4ge1xuICAvKipcbiAgICogVGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgb3BlcmF0aW9uRm4oYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzYWJsZTxSZXN1bHQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIG5vdGljZSBjb21wb25lbnQgdG8gc2hvdyBub3RpY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogUmV0cmllcyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gdW50aWwgaXQgcmV0dXJucyBgdHJ1ZWAgb3IgdGhlIHRpbWVvdXQgaXMgcmVhY2hlZCBhbmQgZGlzcGxheXMgYSBub3RpY2UgaWYgdGhlIGZ1bmN0aW9uIHRpbWVzIG91dC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgb3IgcmVqZWN0cyB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeVdpdGhUaW1lb3V0Tm90aWNlKHBhcmFtczogUmV0cnlXaXRoVGltZW91dE5vdGljZVBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gcmV0cnlXaXRoVGltZW91dCh7XG4gICAgLi4ucGFyYW1zLFxuICAgIG9uVGltZW91dDogcGFyYW1zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8/IHRydWVcbiAgICAgID8gKGN0eCk6IHZvaWQgPT4ge1xuICAgICAgICBvblRpbWVvdXROb3RpY2UoY3R4LCBwYXJhbXMucGx1Z2luTm90aWNlQ29tcG9uZW50KTtcbiAgICAgIH1cbiAgICAgIDogb25UaW1lb3V0V2l0aG91dE5vdGljZVxuICB9KTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIGZ1bmN0aW9uIHdpdGggYSB0aW1lb3V0IGFuZCBkaXNwbGF5cyBhIG5vdGljZSBpZiB0aGUgZnVuY3Rpb24gdGltZXMgb3V0LlxuICpcbiAqIEB0eXBlUGFyYW0gUmVzdWx0IC0gVGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBmcm9tIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb24uXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2l0aFRpbWVvdXROb3RpY2U8UmVzdWx0PihwYXJhbXM6IFJ1bldpdGhUaW1lb3V0Tm90aWNlUGFyYW1zPFJlc3VsdD4pOiBQcm9taXNlPFJlc3VsdD4ge1xuICByZXR1cm4gcnVuV2l0aFRpbWVvdXQoe1xuICAgIC4uLnBhcmFtcyxcbiAgICBvblRpbWVvdXQ6IHBhcmFtcy5zaG91bGRTaG93VGltZW91dE5vdGljZSA/PyB0cnVlXG4gICAgICA/IChjdHgpOiB2b2lkID0+IHtcbiAgICAgICAgb25UaW1lb3V0Tm90aWNlKGN0eCwgcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudCk7XG4gICAgICB9XG4gICAgICA6IG9uVGltZW91dFdpdGhvdXROb3RpY2VcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uVGltZW91dE5vdGljZShjdHg6IFRpbWVvdXRDb250ZXh0LCBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudCk6IHZvaWQge1xuICBjb25zdCBzdGFydFRpbWUgPSBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gY3R4LmR1cmF0aW9uKTtcbiAgbGV0IHJ1bm5pbmdUaW1lRWw6IEhUTUxTcGFuRWxlbWVudDtcbiAgY29uc3QgU0VDT05EX0lOX01JTExJU0VDT05EUyA9IDEwMDA7XG4gIGNvbnN0IGNsZWFudXAgPSB7IGludGVydmFsSWQ6IDAgfTtcblxuICBjb25zdCBub3RpY2UgPSBwbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZShjcmVhdGVGcmFnbWVudCgoZikgPT4ge1xuICAgIGlmIChjdHgub3BlcmF0aW9uTmFtZSkge1xuICAgICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2Uub3BlcmF0aW9uKSk7XG4gICAgICBmLmFwcGVuZFRleHQoJzogJyk7XG4gICAgICBmLmFwcGVuZFRleHQoY3R4Lm9wZXJhdGlvbk5hbWUpO1xuICAgICAgZi5jcmVhdGVFbCgnYnInKTtcbiAgICB9XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UudGltZWRPdXQsIHsgZHVyYXRpb246IGN0eC5kdXJhdGlvbiB9KSk7XG4gICAgZi5jcmVhdGVFbCgnYnInKTtcbiAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5ydW5uaW5nRm9yKSk7XG4gICAgZi5hcHBlbmRUZXh0KCcgJyk7XG4gICAgcnVubmluZ1RpbWVFbCA9IGYuY3JlYXRlU3BhbigpO1xuICAgIGYuYXBwZW5kVGV4dCgnICcpO1xuICAgIGYuYXBwZW5kVGV4dCh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYXN5bmNXaXRoTm90aWNlLm1pbGxpc2Vjb25kcykpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UudGVybWluYXRlT3BlcmF0aW9uKSk7XG4gICAgZi5jcmVhdGVFbCgnYnInKTtcbiAgICBjb25zdCBidXR0b24gPSBmLmNyZWF0ZUVsKCdidXR0b24nLCB7XG4gICAgICB0ZXh0OiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYnV0dG9ucy5jYW5jZWwpXG4gICAgfSk7XG4gICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgY3R4LnRlcm1pbmF0ZU9wZXJhdGlvbigpO1xuICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoY2xlYW51cC5pbnRlcnZhbElkKTtcbiAgICAgIG5vdGljZS5oaWRlKCk7XG4gICAgfSk7XG4gIH0pKTtcblxuICB1cGRhdGVSdW5uaW5nVGltZSgpO1xuICBjbGVhbnVwLmludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwodXBkYXRlUnVubmluZ1RpbWUsIFNFQ09ORF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gIGN0eC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgd2luZG93LmNsZWFySW50ZXJ2YWwoY2xlYW51cC5pbnRlcnZhbElkKTtcbiAgICBub3RpY2UuaGlkZSgpO1xuICB9KTtcblxuICBmdW5jdGlvbiB1cGRhdGVSdW5uaW5nVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBydW5uaW5nVGltZUluTWlsbGlzZWNvbmRzID0gTWF0aC5tYXgoY3R4LmR1cmF0aW9uLCBNYXRoLnJvdW5kKChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSkgLyBTRUNPTkRfSU5fTUlMTElTRUNPTkRTKSAqIFNFQ09ORF9JTl9NSUxMSVNFQ09ORFMpO1xuICAgIHJ1bm5pbmdUaW1lRWwudGV4dENvbnRlbnQgPSBTdHJpbmcocnVubmluZ1RpbWVJbk1pbGxpc2Vjb25kcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb25UaW1lb3V0V2l0aG91dE5vdGljZShjdHg6IFRpbWVvdXRDb250ZXh0KTogdm9pZCB7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IE1hdGgudHJ1bmMocGVyZm9ybWFuY2Uubm93KCkgLSBjdHguZHVyYXRpb24pO1xuXG4gIGN0eC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgZ2V0RGVidWdnZXIoJ0FzeW5jV2l0aE5vdGljZTpvblRpbWVvdXRXaXRob3V0Tm90aWNlJykoJ09wZXJhdGlvbiBjb21wbGV0ZWQgYWZ0ZXIgdGltZW91dCcsIHtcbiAgICAgIG9wZXJhdGlvbk5hbWU6IGN0eC5vcGVyYXRpb25OYW1lLFxuICAgICAgdG90YWxEdXJhdGlvbjogTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSlcbiAgICB9KTtcbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxtQkFBbUI7QUFDNUIsU0FBUyxTQUFTO0FBK0ZsQixlQUFzQix1QkFBdUIsUUFBcUQ7QUFDaEcsU0FBTyxpQkFBaUI7QUFBQSxJQUN0QixHQUFHO0FBQUEsSUFDSCxXQUFXLE9BQU8sMkJBQTJCLE9BQ3pDLENBQUMsUUFBYztBQUNmLHNCQUFnQixLQUFLLE9BQU8scUJBQXFCO0FBQUEsSUFDbkQsSUFDRTtBQUFBLEVBQ04sQ0FBQztBQUNIO0FBU0EsZUFBc0IscUJBQTZCLFFBQTZEO0FBQzlHLFNBQU8sZUFB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
@@ -125,6 +125,25 @@ export interface GetAttachmentFilePathParams {
125
125
  */
126
126
  readonly shouldSkipDuplicateCheck: boolean;
127
127
  }
128
+ /**
129
+ * Parameters for {@link getAttachmentFolderPath}.
130
+ */
131
+ export interface GetAttachmentFolderPathParams {
132
+ /**
133
+ * The Obsidian application instance.
134
+ */
135
+ readonly app: App;
136
+ /**
137
+ * The context.
138
+ *
139
+ * @default {@link AttachmentPathContext.Unknown}
140
+ */
141
+ readonly context?: AttachmentPathContext;
142
+ /**
143
+ * The path of the note.
144
+ */
145
+ readonly notePathOrFile: PathOrFile;
146
+ }
128
147
  /**
129
148
  * Options for the getAvailablePathForAttachments function.
130
149
  */
@@ -147,13 +166,36 @@ export interface GetAvailablePathForAttachmentsParams {
147
166
  readonly notePathOrFile: null | PathOrFile;
148
167
  /**
149
168
  * Should the duplicate check be skipped.
169
+ *
170
+ * @default `false`
150
171
  */
151
172
  readonly shouldSkipDuplicateCheck?: boolean;
152
173
  /**
153
174
  * Should missing attachment folder creation be skipped.
175
+ *
176
+ * @default `false`
154
177
  */
155
178
  readonly shouldSkipMissingAttachmentFolderCreation?: boolean;
156
179
  }
180
+ /**
181
+ * Parameters for {@link hasOwnAttachmentFolder}.
182
+ */
183
+ export interface HasOwnAttachmentFolderParams {
184
+ /**
185
+ * The Obsidian application instance.
186
+ */
187
+ readonly app: App;
188
+ /**
189
+ * The context.
190
+ *
191
+ * @default {@link AttachmentPathContext.Unknown}
192
+ */
193
+ readonly context?: AttachmentPathContext;
194
+ /**
195
+ * The path of the note.
196
+ */
197
+ readonly path: string;
198
+ }
157
199
  /**
158
200
  * Retrieves the file path for an attachment within a note.
159
201
  *
@@ -164,12 +206,10 @@ export declare function getAttachmentFilePath(params: GetAttachmentFilePathParam
164
206
  /**
165
207
  * Retrieves the attachment folder path for a given note.
166
208
  *
167
- * @param app - The Obsidian application instance.
168
- * @param notePathOrFile - The path of the note.
169
- * @param context - The context.
209
+ * @param params - Parameters for the get attachment folder path function.
170
210
  * @returns A {@link Promise} that resolves to the attachment folder path.
171
211
  */
172
- export declare function getAttachmentFolderPath(app: App, notePathOrFile: PathOrFile, context?: AttachmentPathContext): Promise<string>;
212
+ export declare function getAttachmentFolderPath(params: GetAttachmentFolderPathParams): Promise<string>;
173
213
  /**
174
214
  * Retrieves the available path for attachments.
175
215
  *
@@ -180,10 +220,8 @@ export declare function getAvailablePathForAttachments(params: GetAvailablePathF
180
220
  /**
181
221
  * Checks if a note has its own attachment folder.
182
222
  *
183
- * @param app - The Obsidian application instance.
184
- * @param path - The path of the note.
185
- * @param context - The context.
223
+ * @param params - Parameters for the has own attachment folder function.
186
224
  * @returns A {@link Promise} that resolves to a boolean indicating whether the note has its own attachment folder.
187
225
  */
188
- export declare function hasOwnAttachmentFolder(app: App, path: string, context?: AttachmentPathContext): Promise<boolean>;
226
+ export declare function hasOwnAttachmentFolder(params: HasOwnAttachmentFolderParams): Promise<boolean>;
189
227
  export {};
@@ -58,7 +58,7 @@ async function getAttachmentFilePath(params) {
58
58
  const attachmentPath = getPath(app, oldAttachmentPathOrFile);
59
59
  const attachmentFileExtension = extname(attachmentPath);
60
60
  const attachmentFileBaseName = basename(attachmentPath, attachmentFileExtension);
61
- const attachmentFile = getFileOrNull(app, attachmentPath);
61
+ const attachmentFile = getFileOrNull({ app, pathOrFile: attachmentPath });
62
62
  const extendedFn = app.vault.getAvailablePathForAttachments.extended;
63
63
  if (extendedFn) {
64
64
  return extendedFn({
@@ -83,7 +83,12 @@ async function getAttachmentFilePath(params) {
83
83
  shouldSkipMissingAttachmentFolderCreation: true
84
84
  });
85
85
  }
86
- async function getAttachmentFolderPath(app, notePathOrFile, context = "Unknown" /* Unknown */) {
86
+ async function getAttachmentFolderPath(params) {
87
+ const {
88
+ app,
89
+ context = "Unknown" /* Unknown */,
90
+ notePathOrFile
91
+ } = params;
87
92
  return parentFolderPath(
88
93
  await getAttachmentFilePath({
89
94
  app,
@@ -104,8 +109,11 @@ async function getAvailablePathForAttachments(params) {
104
109
  } = params;
105
110
  let attachmentFolderPath = app.vault.getConfig("attachmentFolderPath");
106
111
  const isCurrentFolder = attachmentFolderPath === "." || attachmentFolderPath === "./";
107
- const relativePath = attachmentFolderPath.startsWith("./") ? trimStart(attachmentFolderPath, "./") : null;
108
- const noteFileOrNull = getFileOrNull(app, notePathOrFile);
112
+ const relativePath = attachmentFolderPath.startsWith("./") ? trimStart({
113
+ prefix: "./",
114
+ str: attachmentFolderPath
115
+ }) : null;
116
+ const noteFileOrNull = getFileOrNull({ app, pathOrFile: notePathOrFile });
109
117
  if (isCurrentFolder) {
110
118
  attachmentFolderPath = noteFileOrNull ? noteFileOrNull.parent?.path ?? "" : "";
111
119
  } else if (relativePath) {
@@ -113,21 +121,45 @@ async function getAvailablePathForAttachments(params) {
113
121
  }
114
122
  attachmentFolderPath = normalize(normalizeSlashes(attachmentFolderPath));
115
123
  const attachmentFileBaseName = normalize(normalizeSlashes(params.attachmentFileBaseName));
116
- let folder = getFolderOrNull(app, attachmentFolderPath, true);
124
+ let folder = getFolderOrNull({ app, isCaseInsensitive: true, pathOrFolder: attachmentFolderPath });
117
125
  if (!folder && relativePath) {
118
- folder = shouldSkipMissingAttachmentFolderCreation ? getFolder(app, attachmentFolderPath, true) : await app.vault.createFolder(attachmentFolderPath);
126
+ folder = shouldSkipMissingAttachmentFolderCreation ? getFolder({ app, pathOrFolder: attachmentFolderPath, shouldIncludeNonExisting: true }) : await app.vault.createFolder(attachmentFolderPath);
119
127
  }
120
128
  const prefix = folder?.getParentPrefix() ?? "";
121
- return shouldSkipDuplicateCheck ? makeFileName(prefix + attachmentFileBaseName, attachmentFileExtension) : app.vault.getAvailablePath(prefix + attachmentFileBaseName, attachmentFileExtension);
129
+ return shouldSkipDuplicateCheck ? makeFileName({
130
+ fileBaseName: prefix + attachmentFileBaseName,
131
+ fileExtension: attachmentFileExtension
132
+ }) : app.vault.getAvailablePath(prefix + attachmentFileBaseName, attachmentFileExtension);
122
133
  }
123
- async function hasOwnAttachmentFolder(app, path, context = "Unknown" /* Unknown */) {
124
- const attachmentFolderPath = await getAttachmentFolderPath(app, path, context);
125
- const dummyAttachmentFolderPath = await getAttachmentFolderPath(app, join(dirname(path), `${DUMMY_PATH}.${MARKDOWN_FILE_EXTENSION}`), context);
134
+ async function hasOwnAttachmentFolder(params) {
135
+ const {
136
+ app,
137
+ context = "Unknown" /* Unknown */,
138
+ path
139
+ } = params;
140
+ const attachmentFolderPath = await getAttachmentFolderPath({
141
+ app,
142
+ context,
143
+ notePathOrFile: path
144
+ });
145
+ const dummyAttachmentFolderPath = await getAttachmentFolderPath({
146
+ app,
147
+ context,
148
+ notePathOrFile: join(dirname(path), `${DUMMY_PATH}.${MARKDOWN_FILE_EXTENSION}`)
149
+ });
126
150
  return attachmentFolderPath !== dummyAttachmentFolderPath;
127
151
  }
128
152
  function normalizeSlashes(path) {
129
- path = replaceAll(path, /(?:[\\/])+/g, "/");
130
- path = replaceAll(path, /^\/+|\/+$/g, "");
153
+ path = replaceAll({
154
+ replacer: "/",
155
+ searchValue: /(?:[\\/])+/g,
156
+ str: path
157
+ });
158
+ path = replaceAll({
159
+ replacer: "",
160
+ searchValue: /^\/+|\/+$/g,
161
+ str: path
162
+ });
131
163
  return path || "/";
132
164
  }
133
165
  export {
@@ -138,4 +170,4 @@ export {
138
170
  getAvailablePathForAttachments,
139
171
  hasOwnAttachmentFolder
140
172
  };
141
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2F0dGFjaG1lbnQtcGF0aC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYXR0YWNobWVudCBwYXRocy5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRmlsZVN0YXRzLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHBhcmVudEZvbGRlclBhdGggfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pbixcbiAgbWFrZUZpbGVOYW1lXG59IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplLFxuICByZXBsYWNlQWxsLFxuICB0cmltU3RhcnRcbn0gZnJvbSAnLi4vc3RyaW5nLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRQYXRoLFxuICBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTlxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIGFuIGF0dGFjaG1lbnQgcGF0aC5cbiAqL1xuZXhwb3J0IGVudW0gQXR0YWNobWVudFBhdGhDb250ZXh0IHtcbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSBkZWxldGUgbm90ZS5cbiAgICovXG4gIERlbGV0ZU5vdGUgPSAnRGVsZXRlTm90ZScsXG5cbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSByZW5hbWUgbm90ZS5cbiAgICovXG4gIFJlbmFtZU5vdGUgPSAnUmVuYW1lTm90ZScsXG5cbiAgLyoqXG4gICAqIEFuIHVua25vd24gY29udGV4dC5cbiAgICovXG4gIFVua25vd24gPSAnVW5rbm93bidcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cyBleHRlbmRlZCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZuUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBleHRlbnNpb24gb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRzIG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZVN0YXRzPzogRmlsZVN0YXRzIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvciBmaWxlIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb3IgZmlsZSBvZiB0aGUgb2xkIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9yIGZpbGUgb2YgdGhlIG9sZCBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkTm90ZVBhdGhPckZpbGU/OiBQYXRoT3JGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBMYXppbHkgcmVhZHMgdGhlIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICpcbiAgICogVGhlIGNvbnRlbnQgaXMgcmVhZCBvbiBkZW1hbmQgb25seSB3aGVuIGEgY29uc3VtZXIgYWN0dWFsbHkgbmVlZHMgdGhlIGJ5dGVzIChlLmcuIGEgdGVtcGxhdGVcbiAgICogdG9rZW4gdGhhdCBlbWJlZHMgdGhlbSkuIEZvciB0aGUgZGVmYXVsdCB0ZW1wbGF0ZXMgbm90aGluZyBwdWxscyB0aGUgYnl0ZXMsIHNvIHRoZSBwb3RlbnRpYWxseVxuICAgKiBleHBlbnNpdmUgKHNpemUtcHJvcG9ydGlvbmFsKSBgcmVhZEJpbmFyeWAgbmV2ZXIgcnVucy4gQ29uc3VtZXJzIHRoYXQgbWF5IGNhbGwgdGhpcyBtb3JlIHRoYW5cbiAgICogb25jZSBzaG91bGQgbWVtb2l6ZSB0aGUgZmlyc3QgY2FsbC4gYG51bGxgIHdoZW4gdGhlcmUgaXMgbm8gYXR0YWNobWVudCBmaWxlIHRvIHJlYWQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQ6ICgoKSA9PiBQcm9taXNlPEFycmF5QnVmZmVyPikgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBnZW5lcmF0ZWQgYXR0YWNobWVudCBmaWxlIG5hbWUgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBHZW5lcmF0ZWRBdHRhY2htZW50RmlsZU5hbWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgbWlzc2luZyBhdHRhY2htZW50IGZvbGRlciBjcmVhdGlvbiBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICoge0BsaW5rIFZhdWx0LmdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c30gZXh0ZW5kZWQgd3JhcHBlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNGbkV4dGVuZGVkIGV4dGVuZHMgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRm4ge1xuICAvKipcbiAgICogR2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cyB3aXRoIGFkZGl0aW9uYWwgcGFyYW1zLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAgICovXG4gIGV4dGVuZGVkKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGblBhcmFtcyk6IFByb21pc2U8c3RyaW5nPjtcbn1cblxudHlwZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNGbiA9IFZhdWx0WydnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMnXTtcblxuLyoqXG4gKiBEdW1teSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgRFVNTVlfUEFUSCA9ICdfX0RVTU1ZX18nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBnZXRBdHRhY2htZW50RmlsZVBhdGggZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXR0YWNobWVudEZpbGVQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIG9sZCBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkTm90ZVBhdGhPckZpbGU/OiBQYXRoT3JGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIC8qKlxuICAgKiBBIGJhc2UgbmFtZSBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIGV4dGVuc2lvbiBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGZpbGUgdG8gYXR0YWNoIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTaG91bGQgbWlzc2luZyBhdHRhY2htZW50IGZvbGRlciBjcmVhdGlvbiBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZmlsZSBwYXRoIGZvciBhbiBhdHRhY2htZW50IHdpdGhpbiBhIG5vdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXR0YWNobWVudCBmaWxlIHBhdGggZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBmaWxlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50RmlsZVBhdGgocGFyYW1zOiBHZXRBdHRhY2htZW50RmlsZVBhdGhQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICB9ID0gcGFyYW1zO1xuICBjb25zdCBhdHRhY2htZW50UGF0aCA9IGdldFBhdGgoYXBwLCBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uID0gZXh0bmFtZShhdHRhY2htZW50UGF0aCk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUgPSBiYXNlbmFtZShhdHRhY2htZW50UGF0aCwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pO1xuICBjb25zdCBhdHRhY2htZW50RmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBhdHRhY2htZW50UGF0aCk7XG5cbiAgY29uc3QgZXh0ZW5kZWRGbiA9IChhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzIGFzIFBhcnRpYWw8R2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRm5FeHRlbmRlZD4pLmV4dGVuZGVkO1xuICBpZiAoZXh0ZW5kZWRGbikge1xuICAgIHJldHVybiBleHRlbmRlZEZuKHtcbiAgICAgIGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUsXG4gICAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb24uc2xpY2UoMSksXG4gICAgICBhdHRhY2htZW50RmlsZVN0YXRzOiBhdHRhY2htZW50RmlsZT8uc3RhdCxcbiAgICAgIGNvbnRleHQ6IHBhcmFtcy5jb250ZXh0LFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogcGFyYW1zLm9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgICAgb2xkTm90ZVBhdGhPckZpbGU6IHBhcmFtcy5vbGROb3RlUGF0aE9yRmlsZSxcbiAgICAgIHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQ6IGF0dGFjaG1lbnRGaWxlID8gKCk6IFByb21pc2U8QXJyYXlCdWZmZXI+ID0+IGFwcC52YXVsdC5yZWFkQmluYXJ5KGF0dGFjaG1lbnRGaWxlKSA6IG51bGwsXG4gICAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2ssXG4gICAgICBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbjogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyh7XG4gICAgYXBwLFxuICAgIGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUsXG4gICAgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uLnNsaWNlKDEpLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjayxcbiAgICBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbjogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggZm9yIGEgZ2l2ZW4gbm90ZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG5vdGVQYXRoT3JGaWxlIC0gVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gKiBAcGFyYW0gY29udGV4dCAtIFRoZSBjb250ZXh0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXR0YWNobWVudCBmb2xkZXIgcGF0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKGFwcDogQXBwLCBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgY29udGV4dCA9IEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3duKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIHBhcmVudEZvbGRlclBhdGgoXG4gICAgYXdhaXQgZ2V0QXR0YWNobWVudEZpbGVQYXRoKHtcbiAgICAgIGFwcCxcbiAgICAgIGNvbnRleHQsXG4gICAgICBub3RlUGF0aE9yRmlsZSxcbiAgICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBEVU1NWV9QQVRILFxuICAgICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrOiB0cnVlXG4gICAgfSlcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjayxcbiAgICBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvblxuICB9ID0gcGFyYW1zO1xuICBsZXQgYXR0YWNobWVudEZvbGRlclBhdGggPSBhcHAudmF1bHQuZ2V0Q29uZmlnKCdhdHRhY2htZW50Rm9sZGVyUGF0aCcpIGFzIHN0cmluZztcbiAgY29uc3QgaXNDdXJyZW50Rm9sZGVyID0gYXR0YWNobWVudEZvbGRlclBhdGggPT09ICcuJyB8fCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gJy4vJztcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gYXR0YWNobWVudEZvbGRlclBhdGguc3RhcnRzV2l0aCgnLi8nKSA/IHRyaW1TdGFydChhdHRhY2htZW50Rm9sZGVyUGF0aCwgJy4vJykgOiBudWxsO1xuXG4gIGNvbnN0IG5vdGVGaWxlT3JOdWxsID0gZ2V0RmlsZU9yTnVsbChhcHAsIG5vdGVQYXRoT3JGaWxlKTtcblxuICBpZiAoaXNDdXJyZW50Rm9sZGVyKSB7XG4gICAgYXR0YWNobWVudEZvbGRlclBhdGggPSBub3RlRmlsZU9yTnVsbCA/IG5vdGVGaWxlT3JOdWxsLnBhcmVudD8ucGF0aCA/PyAnJyA6ICcnO1xuICB9IGVsc2UgaWYgKHJlbGF0aXZlUGF0aCkge1xuICAgIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gKG5vdGVGaWxlT3JOdWxsID8gbm90ZUZpbGVPck51bGwucGFyZW50Py5nZXRQYXJlbnRQcmVmaXgoKSA/PyAnJyA6ICcnKSArIHJlbGF0aXZlUGF0aDtcbiAgfVxuXG4gIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gbm9ybWFsaXplKG5vcm1hbGl6ZVNsYXNoZXMoYXR0YWNobWVudEZvbGRlclBhdGgpKTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGVCYXNlTmFtZSA9IG5vcm1hbGl6ZShub3JtYWxpemVTbGFzaGVzKHBhcmFtcy5hdHRhY2htZW50RmlsZUJhc2VOYW1lKSk7XG5cbiAgbGV0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGF0dGFjaG1lbnRGb2xkZXJQYXRoLCB0cnVlKTtcblxuICBpZiAoIWZvbGRlciAmJiByZWxhdGl2ZVBhdGgpIHtcbiAgICBmb2xkZXIgPSBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvblxuICAgICAgPyBnZXRGb2xkZXIoYXBwLCBhdHRhY2htZW50Rm9sZGVyUGF0aCwgdHJ1ZSlcbiAgICAgIDogYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihhdHRhY2htZW50Rm9sZGVyUGF0aCk7XG4gIH1cblxuICBjb25zdCBwcmVmaXggPSBmb2xkZXI/LmdldFBhcmVudFByZWZpeCgpID8/ICcnO1xuICByZXR1cm4gc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gICAgPyBtYWtlRmlsZU5hbWUocHJlZml4ICsgYXR0YWNobWVudEZpbGVCYXNlTmFtZSwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pXG4gICAgOiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChwcmVmaXggKyBhdHRhY2htZW50RmlsZUJhc2VOYW1lLCBhdHRhY2htZW50RmlsZUV4dGVuc2lvbik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbm90ZSBoYXMgaXRzIG93biBhdHRhY2htZW50IGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgbm90ZS5cbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG5vdGUgaGFzIGl0cyBvd24gYXR0YWNobWVudCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYXNPd25BdHRhY2htZW50Rm9sZGVyKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcsIGNvbnRleHQgPSBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKGFwcCwgcGF0aCwgY29udGV4dCk7XG4gIGNvbnN0IGR1bW15QXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIGpvaW4oZGlybmFtZShwYXRoKSwgYCR7RFVNTVlfUEFUSH0uJHtNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTn1gKSwgY29udGV4dCk7XG4gIHJldHVybiBhdHRhY2htZW50Rm9sZGVyUGF0aCAhPT0gZHVtbXlBdHRhY2htZW50Rm9sZGVyUGF0aDtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcGF0aCBieSBjb21iaW5pbmcgbXVsdGlwbGUgc2xhc2hlcyBpbnRvIGEgc2luZ2xlIHNsYXNoIGFuZCByZW1vdmluZyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gUGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVTbGFzaGVzKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHBhdGggPSByZXBsYWNlQWxsKHBhdGgsIC8oPzpbXFxcXC9dKSsvZywgJy8nKTtcbiAgcGF0aCA9IHJlcGxhY2VBbGwocGF0aCwgL15cXC8rfFxcLyskL2csICcnKTtcbiAgcmV0dXJuIHBhdGggfHwgJy8nO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFTLHdCQUF3QjtBQUlqQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS0EsSUFBSyx3QkFBTCxrQkFBS0EsMkJBQUw7QUFJTCxFQUFBQSx1QkFBQSxnQkFBYTtBQUtiLEVBQUFBLHVCQUFBLGdCQUFhO0FBS2IsRUFBQUEsdUJBQUEsYUFBVTtBQWRBLFNBQUFBO0FBQUEsR0FBQTtBQXNHTCxNQUFNLGFBQWE7QUF5RTFCLGVBQXNCLHNCQUFzQixRQUFzRDtBQUNoRyxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0saUJBQWlCLFFBQVEsS0FBSyx1QkFBdUI7QUFDM0QsUUFBTSwwQkFBMEIsUUFBUSxjQUFjO0FBQ3RELFFBQU0seUJBQXlCLFNBQVMsZ0JBQWdCLHVCQUF1QjtBQUMvRSxRQUFNLGlCQUFpQixjQUFjLEtBQUssY0FBYztBQUV4RCxRQUFNLGFBQWMsSUFBSSxNQUFNLCtCQUFxRjtBQUNuSCxNQUFJLFlBQVk7QUFDZCxXQUFPLFdBQVc7QUFBQSxNQUNoQjtBQUFBLE1BQ0EseUJBQXlCLHdCQUF3QixNQUFNLENBQUM7QUFBQSxNQUN4RCxxQkFBcUIsZ0JBQWdCO0FBQUEsTUFDckMsU0FBUyxPQUFPO0FBQUEsTUFDaEI7QUFBQSxNQUNBLHlCQUF5QixPQUFPO0FBQUEsTUFDaEMsbUJBQW1CLE9BQU87QUFBQSxNQUMxQiwyQkFBMkIsaUJBQWlCLE1BQTRCLElBQUksTUFBTSxXQUFXLGNBQWMsSUFBSTtBQUFBLE1BQy9HO0FBQUEsTUFDQSwyQ0FBMkM7QUFBQSxJQUM3QyxDQUFDO0FBQUEsRUFDSDtBQUVBLFNBQU8sTUFBTSwrQkFBK0I7QUFBQSxJQUMxQztBQUFBLElBQ0E7QUFBQSxJQUNBLHlCQUF5Qix3QkFBd0IsTUFBTSxDQUFDO0FBQUEsSUFDeEQ7QUFBQSxJQUNBO0FBQUEsSUFDQSwyQ0FBMkM7QUFBQSxFQUM3QyxDQUFDO0FBQ0g7QUFVQSxlQUFzQix3QkFBd0IsS0FBVSxnQkFBNEIsVUFBVSx5QkFBZ0Q7QUFDNUksU0FBTztBQUFBLElBQ0wsTUFBTSxzQkFBc0I7QUFBQSxNQUMxQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQSx5QkFBeUI7QUFBQSxNQUN6QiwwQkFBMEI7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBUUEsZUFBc0IsK0JBQStCLFFBQStEO0FBQ2xILFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLE1BQUksdUJBQXVCLElBQUksTUFBTSxVQUFVLHNCQUFzQjtBQUNyRSxRQUFNLGtCQUFrQix5QkFBeUIsT0FBTyx5QkFBeUI7QUFDakYsUUFBTSxlQUFlLHFCQUFxQixXQUFXLElBQUksSUFBSSxVQUFVLHNCQUFzQixJQUFJLElBQUk7QUFFckcsUUFBTSxpQkFBaUIsY0FBYyxLQUFLLGNBQWM7QUFFeEQsTUFBSSxpQkFBaUI7QUFDbkIsMkJBQXVCLGlCQUFpQixlQUFlLFFBQVEsUUFBUSxLQUFLO0FBQUEsRUFDOUUsV0FBVyxjQUFjO0FBQ3ZCLDRCQUF3QixpQkFBaUIsZUFBZSxRQUFRLGdCQUFnQixLQUFLLEtBQUssTUFBTTtBQUFBLEVBQ2xHO0FBRUEseUJBQXVCLFVBQVUsaUJBQWlCLG9CQUFvQixDQUFDO0FBQ3ZFLFFBQU0seUJBQXlCLFVBQVUsaUJBQWlCLE9BQU8sc0JBQXNCLENBQUM7QUFFeEYsTUFBSSxTQUFTLGdCQUFnQixLQUFLLHNCQUFzQixJQUFJO0FBRTVELE1BQUksQ0FBQyxVQUFVLGNBQWM7QUFDM0IsYUFBUyw0Q0FDTCxVQUFVLEtBQUssc0JBQXNCLElBQUksSUFDekMsTUFBTSxJQUFJLE1BQU0sYUFBYSxvQkFBb0I7QUFBQSxFQUN2RDtBQUVBLFFBQU0sU0FBUyxRQUFRLGdCQUFnQixLQUFLO0FBQzVDLFNBQU8sMkJBQ0gsYUFBYSxTQUFTLHdCQUF3Qix1QkFBdUIsSUFDckUsSUFBSSxNQUFNLGlCQUFpQixTQUFTLHdCQUF3Qix1QkFBdUI7QUFDekY7QUFVQSxlQUFzQix1QkFBdUIsS0FBVSxNQUFjLFVBQVUseUJBQWlEO0FBQzlILFFBQU0sdUJBQXVCLE1BQU0sd0JBQXdCLEtBQUssTUFBTSxPQUFPO0FBQzdFLFFBQU0sNEJBQTRCLE1BQU0sd0JBQXdCLEtBQUssS0FBSyxRQUFRLElBQUksR0FBRyxHQUFHLFVBQVUsSUFBSSx1QkFBdUIsRUFBRSxHQUFHLE9BQU87QUFDN0ksU0FBTyx5QkFBeUI7QUFDbEM7QUFRQSxTQUFTLGlCQUFpQixNQUFzQjtBQUM5QyxTQUFPLFdBQVcsTUFBTSxlQUFlLEdBQUc7QUFDMUMsU0FBTyxXQUFXLE1BQU0sY0FBYyxFQUFFO0FBQ3hDLFNBQU8sUUFBUTtBQUNqQjsiLAogICJuYW1lcyI6IFsiQXR0YWNobWVudFBhdGhDb250ZXh0Il0KfQo=
173
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2F0dGFjaG1lbnQtcGF0aC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYXR0YWNobWVudCBwYXRocy5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRmlsZVN0YXRzLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHBhcmVudEZvbGRlclBhdGggfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pbixcbiAgbWFrZUZpbGVOYW1lXG59IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplLFxuICByZXBsYWNlQWxsLFxuICB0cmltU3RhcnRcbn0gZnJvbSAnLi4vc3RyaW5nLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRQYXRoLFxuICBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTlxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIGFuIGF0dGFjaG1lbnQgcGF0aC5cbiAqL1xuZXhwb3J0IGVudW0gQXR0YWNobWVudFBhdGhDb250ZXh0IHtcbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSBkZWxldGUgbm90ZS5cbiAgICovXG4gIERlbGV0ZU5vdGUgPSAnRGVsZXRlTm90ZScsXG5cbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSByZW5hbWUgbm90ZS5cbiAgICovXG4gIFJlbmFtZU5vdGUgPSAnUmVuYW1lTm90ZScsXG5cbiAgLyoqXG4gICAqIEFuIHVua25vd24gY29udGV4dC5cbiAgICovXG4gIFVua25vd24gPSAnVW5rbm93bidcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cyBleHRlbmRlZCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZuUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBleHRlbnNpb24gb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRzIG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZVN0YXRzPzogRmlsZVN0YXRzIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvciBmaWxlIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb3IgZmlsZSBvZiB0aGUgb2xkIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9yIGZpbGUgb2YgdGhlIG9sZCBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkTm90ZVBhdGhPckZpbGU/OiBQYXRoT3JGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBMYXppbHkgcmVhZHMgdGhlIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICpcbiAgICogVGhlIGNvbnRlbnQgaXMgcmVhZCBvbiBkZW1hbmQgb25seSB3aGVuIGEgY29uc3VtZXIgYWN0dWFsbHkgbmVlZHMgdGhlIGJ5dGVzIChlLmcuIGEgdGVtcGxhdGVcbiAgICogdG9rZW4gdGhhdCBlbWJlZHMgdGhlbSkuIEZvciB0aGUgZGVmYXVsdCB0ZW1wbGF0ZXMgbm90aGluZyBwdWxscyB0aGUgYnl0ZXMsIHNvIHRoZSBwb3RlbnRpYWxseVxuICAgKiBleHBlbnNpdmUgKHNpemUtcHJvcG9ydGlvbmFsKSBgcmVhZEJpbmFyeWAgbmV2ZXIgcnVucy4gQ29uc3VtZXJzIHRoYXQgbWF5IGNhbGwgdGhpcyBtb3JlIHRoYW5cbiAgICogb25jZSBzaG91bGQgbWVtb2l6ZSB0aGUgZmlyc3QgY2FsbC4gYG51bGxgIHdoZW4gdGhlcmUgaXMgbm8gYXR0YWNobWVudCBmaWxlIHRvIHJlYWQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQ6ICgoKSA9PiBQcm9taXNlPEFycmF5QnVmZmVyPikgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBnZW5lcmF0ZWQgYXR0YWNobWVudCBmaWxlIG5hbWUgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBHZW5lcmF0ZWRBdHRhY2htZW50RmlsZU5hbWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgbWlzc2luZyBhdHRhY2htZW50IGZvbGRlciBjcmVhdGlvbiBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICoge0BsaW5rIFZhdWx0LmdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c30gZXh0ZW5kZWQgd3JhcHBlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNGbkV4dGVuZGVkIGV4dGVuZHMgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRm4ge1xuICAvKipcbiAgICogR2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cyB3aXRoIGFkZGl0aW9uYWwgcGFyYW1zLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAgICovXG4gIGV4dGVuZGVkKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGblBhcmFtcyk6IFByb21pc2U8c3RyaW5nPjtcbn1cblxudHlwZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNGbiA9IFZhdWx0WydnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMnXTtcblxuLyoqXG4gKiBEdW1teSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgRFVNTVlfUEFUSCA9ICdfX0RVTU1ZX18nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBnZXRBdHRhY2htZW50RmlsZVBhdGggZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXR0YWNobWVudEZpbGVQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIG9sZCBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkTm90ZVBhdGhPckZpbGU/OiBQYXRoT3JGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXR0YWNobWVudEZvbGRlclBhdGhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7QGxpbmsgQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd259XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIC8qKlxuICAgKiBBIGJhc2UgbmFtZSBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIGV4dGVuc2lvbiBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGZpbGUgdG8gYXR0YWNoIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNob3VsZCBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIGNyZWF0aW9uIGJlIHNraXBwZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaGFzT3duQXR0YWNobWVudEZvbGRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGFzT3duQXR0YWNobWVudEZvbGRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bn1cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZmlsZSBwYXRoIGZvciBhbiBhdHRhY2htZW50IHdpdGhpbiBhIG5vdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXR0YWNobWVudCBmaWxlIHBhdGggZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBmaWxlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50RmlsZVBhdGgocGFyYW1zOiBHZXRBdHRhY2htZW50RmlsZVBhdGhQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICB9ID0gcGFyYW1zO1xuICBjb25zdCBhdHRhY2htZW50UGF0aCA9IGdldFBhdGgoYXBwLCBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uID0gZXh0bmFtZShhdHRhY2htZW50UGF0aCk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUgPSBiYXNlbmFtZShhdHRhY2htZW50UGF0aCwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pO1xuICBjb25zdCBhdHRhY2htZW50RmlsZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IGF0dGFjaG1lbnRQYXRoIH0pO1xuXG4gIGNvbnN0IGV4dGVuZGVkRm4gPSAoYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyBhcyBQYXJ0aWFsPEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0ZuRXh0ZW5kZWQ+KS5leHRlbmRlZDtcbiAgaWYgKGV4dGVuZGVkRm4pIHtcbiAgICByZXR1cm4gZXh0ZW5kZWRGbih7XG4gICAgICBhdHRhY2htZW50RmlsZUJhc2VOYW1lLFxuICAgICAgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uLnNsaWNlKDEpLFxuICAgICAgYXR0YWNobWVudEZpbGVTdGF0czogYXR0YWNobWVudEZpbGU/LnN0YXQsXG4gICAgICBjb250ZXh0OiBwYXJhbXMuY29udGV4dCxcbiAgICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IHBhcmFtcy5vbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICAgIG9sZE5vdGVQYXRoT3JGaWxlOiBwYXJhbXMub2xkTm90ZVBhdGhPckZpbGUsXG4gICAgICByZWFkQXR0YWNobWVudEZpbGVDb250ZW50OiBhdHRhY2htZW50RmlsZSA/ICgpOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiBhcHAudmF1bHQucmVhZEJpbmFyeShhdHRhY2htZW50RmlsZSkgOiBudWxsLFxuICAgICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrLFxuICAgICAgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMoe1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUJhc2VOYW1lLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBhdHRhY2htZW50RmlsZUV4dGVuc2lvbi5zbGljZSgxKSxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2ssXG4gICAgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZvciBhIGdpdmVuIG5vdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXR0YWNobWVudCBmb2xkZXIgcGF0aCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGguXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChwYXJhbXM6IEdldEF0dGFjaG1lbnRGb2xkZXJQYXRoUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBjb250ZXh0ID0gQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd24sXG4gICAgbm90ZVBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcbiAgcmV0dXJuIHBhcmVudEZvbGRlclBhdGgoXG4gICAgYXdhaXQgZ2V0QXR0YWNobWVudEZpbGVQYXRoKHtcbiAgICAgIGFwcCxcbiAgICAgIGNvbnRleHQsXG4gICAgICBub3RlUGF0aE9yRmlsZSxcbiAgICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBEVU1NWV9QQVRILFxuICAgICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrOiB0cnVlXG4gICAgfSlcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjayxcbiAgICBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvblxuICB9ID0gcGFyYW1zO1xuICBsZXQgYXR0YWNobWVudEZvbGRlclBhdGggPSBhcHAudmF1bHQuZ2V0Q29uZmlnKCdhdHRhY2htZW50Rm9sZGVyUGF0aCcpIGFzIHN0cmluZztcbiAgY29uc3QgaXNDdXJyZW50Rm9sZGVyID0gYXR0YWNobWVudEZvbGRlclBhdGggPT09ICcuJyB8fCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gJy4vJztcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gYXR0YWNobWVudEZvbGRlclBhdGguc3RhcnRzV2l0aCgnLi8nKVxuICAgID8gdHJpbVN0YXJ0KHtcbiAgICAgIHByZWZpeDogJy4vJyxcbiAgICAgIHN0cjogYXR0YWNobWVudEZvbGRlclBhdGhcbiAgICB9KVxuICAgIDogbnVsbDtcblxuICBjb25zdCBub3RlRmlsZU9yTnVsbCA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IG5vdGVQYXRoT3JGaWxlIH0pO1xuXG4gIGlmIChpc0N1cnJlbnRGb2xkZXIpIHtcbiAgICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IG5vdGVGaWxlT3JOdWxsID8gbm90ZUZpbGVPck51bGwucGFyZW50Py5wYXRoID8/ICcnIDogJyc7XG4gIH0gZWxzZSBpZiAocmVsYXRpdmVQYXRoKSB7XG4gICAgYXR0YWNobWVudEZvbGRlclBhdGggPSAobm90ZUZpbGVPck51bGwgPyBub3RlRmlsZU9yTnVsbC5wYXJlbnQ/LmdldFBhcmVudFByZWZpeCgpID8/ICcnIDogJycpICsgcmVsYXRpdmVQYXRoO1xuICB9XG5cbiAgYXR0YWNobWVudEZvbGRlclBhdGggPSBub3JtYWxpemUobm9ybWFsaXplU2xhc2hlcyhhdHRhY2htZW50Rm9sZGVyUGF0aCkpO1xuICBjb25zdCBhdHRhY2htZW50RmlsZUJhc2VOYW1lID0gbm9ybWFsaXplKG5vcm1hbGl6ZVNsYXNoZXMocGFyYW1zLmF0dGFjaG1lbnRGaWxlQmFzZU5hbWUpKTtcblxuICBsZXQgZm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKHsgYXBwLCBpc0Nhc2VJbnNlbnNpdGl2ZTogdHJ1ZSwgcGF0aE9yRm9sZGVyOiBhdHRhY2htZW50Rm9sZGVyUGF0aCB9KTtcblxuICBpZiAoIWZvbGRlciAmJiByZWxhdGl2ZVBhdGgpIHtcbiAgICBmb2xkZXIgPSBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvblxuICAgICAgPyBnZXRGb2xkZXIoeyBhcHAsIHBhdGhPckZvbGRlcjogYXR0YWNobWVudEZvbGRlclBhdGgsIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZzogdHJ1ZSB9KVxuICAgICAgOiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKGF0dGFjaG1lbnRGb2xkZXJQYXRoKTtcbiAgfVxuXG4gIGNvbnN0IHByZWZpeCA9IGZvbGRlcj8uZ2V0UGFyZW50UHJlZml4KCkgPz8gJyc7XG4gIHJldHVybiBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgICA/IG1ha2VGaWxlTmFtZSh7XG4gICAgICBmaWxlQmFzZU5hbWU6IHByZWZpeCArIGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUsXG4gICAgICBmaWxlRXh0ZW5zaW9uOiBhdHRhY2htZW50RmlsZUV4dGVuc2lvblxuICAgIH0pXG4gICAgOiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChwcmVmaXggKyBhdHRhY2htZW50RmlsZUJhc2VOYW1lLCBhdHRhY2htZW50RmlsZUV4dGVuc2lvbik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbm90ZSBoYXMgaXRzIG93biBhdHRhY2htZW50IGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGhhcyBvd24gYXR0YWNobWVudCBmb2xkZXIgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG5vdGUgaGFzIGl0cyBvd24gYXR0YWNobWVudCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYXNPd25BdHRhY2htZW50Rm9sZGVyKHBhcmFtczogSGFzT3duQXR0YWNobWVudEZvbGRlclBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGNvbnRleHQgPSBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bixcbiAgICBwYXRoXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoe1xuICAgIGFwcCxcbiAgICBjb250ZXh0LFxuICAgIG5vdGVQYXRoT3JGaWxlOiBwYXRoXG4gIH0pO1xuICBjb25zdCBkdW1teUF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoe1xuICAgIGFwcCxcbiAgICBjb250ZXh0LFxuICAgIG5vdGVQYXRoT3JGaWxlOiBqb2luKGRpcm5hbWUocGF0aCksIGAke0RVTU1ZX1BBVEh9LiR7TUFSS0RPV05fRklMRV9FWFRFTlNJT059YClcbiAgfSk7XG4gIHJldHVybiBhdHRhY2htZW50Rm9sZGVyUGF0aCAhPT0gZHVtbXlBdHRhY2htZW50Rm9sZGVyUGF0aDtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcGF0aCBieSBjb21iaW5pbmcgbXVsdGlwbGUgc2xhc2hlcyBpbnRvIGEgc2luZ2xlIHNsYXNoIGFuZCByZW1vdmluZyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gUGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVTbGFzaGVzKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHBhdGggPSByZXBsYWNlQWxsKHtcbiAgICByZXBsYWNlcjogJy8nLFxuICAgIHNlYXJjaFZhbHVlOiAvKD86W1xcXFwvXSkrL2csXG4gICAgc3RyOiBwYXRoXG4gIH0pO1xuICBwYXRoID0gcmVwbGFjZUFsbCh7XG4gICAgcmVwbGFjZXI6ICcnLFxuICAgIHNlYXJjaFZhbHVlOiAvXlxcLyt8XFwvKyQvZyxcbiAgICBzdHI6IHBhdGhcbiAgfSk7XG4gIHJldHVybiBwYXRoIHx8ICcvJztcbn1cblxuLyogdjggaWdub3JlIHN0b3Ag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
@@ -19,7 +19,9 @@ export interface RenderDelayedBacklinksForFolderParams {
19
19
  */
20
20
  readonly folder?: string;
21
21
  /**
22
- * A title for the rendered backlinks. Defaults to "Folder Backlinks".
22
+ * A title for the rendered backlinks.
23
+ *
24
+ * @default `'Folder Backlinks'`
23
25
  */
24
26
  readonly title?: string;
25
27
  }
@@ -36,7 +38,9 @@ export interface RenderDelayedBacklinksParams {
36
38
  */
37
39
  readonly files: PathOrFile[];
38
40
  /**
39
- * A title for the rendered backlinks. Defaults to "Backlinks".
41
+ * A title for the rendered backlinks.
42
+ *
43
+ * @default `'Backlinks'`
40
44
  */
41
45
  readonly title?: string;
42
46
  }
@@ -36,7 +36,7 @@ import { getBacklinksForFileSafe } from "./metadata-cache.mjs";
36
36
  async function renderBacklinksTable(dv, pathOrFiles) {
37
37
  pathOrFiles ??= [];
38
38
  const files = pathOrFiles.flatMap((abstractFileOrPath) => {
39
- const abstractFile = getAbstractFileOrNull(dv.app, abstractFileOrPath);
39
+ const abstractFile = getAbstractFileOrNull({ app: dv.app, pathOrFile: abstractFileOrPath });
40
40
  if (!abstractFile) {
41
41
  return [];
42
42
  }
@@ -46,12 +46,12 @@ async function renderBacklinksTable(dv, pathOrFiles) {
46
46
  if (!isFolder(abstractFile)) {
47
47
  throw new Error("Expected a folder");
48
48
  }
49
- return getMarkdownFiles(dv.app, abstractFile, true);
49
+ return getMarkdownFiles({ app: dv.app, isRecursive: true, pathOrFolder: abstractFile });
50
50
  });
51
51
  const backlinkRows = [];
52
52
  for (const file of files) {
53
- const link = fixTitle(dv, file.path);
54
- const backlinks = await getBacklinksForFileSafe(dv.app, file);
53
+ const link = fixTitle({ dv, pathOrFile: file.path });
54
+ const backlinks = await getBacklinksForFileSafe({ app: dv.app, pathOrFile: file });
55
55
  const backlinkLinks = backlinks.keys().map((backLinkPath) => {
56
56
  const markdownLink = generateMarkdownLink({
57
57
  app: dv.app,
@@ -93,7 +93,7 @@ function renderDelayedBacklinksForFolder(params) {
93
93
  const folder2 = folder ?? dv.current().file.folder;
94
94
  renderDelayedBacklinks({
95
95
  dv,
96
- files: getMarkdownFiles(dv.app, folder2, true),
96
+ files: getMarkdownFiles({ app: dv.app, isRecursive: true, pathOrFolder: folder2 }),
97
97
  title
98
98
  });
99
99
  }
@@ -102,4 +102,4 @@ export {
102
102
  renderDelayedBacklinks,
103
103
  renderDelayedBacklinksForFolder
104
104
  };
105
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2JhY2tsaW5rLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBiYWNrbGlua3MuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZXBseSBjb3VwbGVkIHRvIE9ic2lkaWFuIHJ1bnRpbWU7IHJlcXVpcmVzIHJ1bm5pbmcgdmF1bHQgZm9yIG1lYW5pbmdmdWwgdGVzdGluZy4gKi9cblxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBEYXRhdmlld0lubGluZUFwaSxcbiAgTGlua1xufSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB0eXBlIHtcbiAgUGF0aE9yQWJzdHJhY3RGaWxlLFxuICBQYXRoT3JGaWxlXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IHJlbmRlckNhbGxvdXQgfSBmcm9tICcuL2NhbGxvdXQudHMnO1xuaW1wb3J0IHsgZml4VGl0bGUgfSBmcm9tICcuL2RhdGF2aWV3LWxpbmsudHMnO1xuaW1wb3J0IHsgcmVuZGVyUGFnaW5hdGVkVGFibGUgfSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0TWFya2Rvd25GaWxlcyxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlclxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IGdlbmVyYXRlTWFya2Rvd25MaW5rIH0gZnJvbSAnLi9saW5rLnRzJztcbmltcG9ydCB7IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlIH0gZnJvbSAnLi9tZXRhZGF0YS1jYWNoZS50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGZvbGRlciBwYXRoLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IGZpbGUncyBmb2xkZXIgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHRpdGxlIGZvciB0aGUgcmVuZGVyZWQgYmFja2xpbmtzLiBEZWZhdWx0cyB0byBcIkZvbGRlciBCYWNrbGlua3NcIi5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJEZWxheWVkQmFja2xpbmtzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJEZWxheWVkQmFja2xpbmtzUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgUGF0aE9yRmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVzOiBQYXRoT3JGaWxlW107XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgZm9yIHRoZSByZW5kZXJlZCBiYWNrbGlua3MuIERlZmF1bHRzIHRvIFwiQmFja2xpbmtzXCIuXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgYmFja2xpbmtzIHRhYmxlIHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBhbmQgb3B0aW9uYWwgYXJyYXkgb2YgUGF0aE9yQWJzdHJhY3RGaWxlLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlcyAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIFBhdGhPckFic3RyYWN0RmlsZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYmFja2xpbmtzIHRhYmxlIGhhcyBiZWVuIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyQmFja2xpbmtzVGFibGUoZHY6IERhdGF2aWV3SW5saW5lQXBpLCBwYXRoT3JGaWxlcz86IFBhdGhPckFic3RyYWN0RmlsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gIHBhdGhPckZpbGVzID8/PSBbXTtcbiAgY29uc3QgZmlsZXM6IFRGaWxlW10gPSBwYXRoT3JGaWxlcy5mbGF0TWFwKChhYnN0cmFjdEZpbGVPclBhdGgpID0+IHtcbiAgICBjb25zdCBhYnN0cmFjdEZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoZHYuYXBwLCBhYnN0cmFjdEZpbGVPclBhdGgpO1xuICAgIGlmICghYWJzdHJhY3RGaWxlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKGlzRmlsZShhYnN0cmFjdEZpbGUpKSB7XG4gICAgICByZXR1cm4gW2Fic3RyYWN0RmlsZV07XG4gICAgfVxuXG4gICAgaWYgKCFpc0ZvbGRlcihhYnN0cmFjdEZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgZm9sZGVyJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE1hcmtkb3duRmlsZXMoZHYuYXBwLCBhYnN0cmFjdEZpbGUsIHRydWUpO1xuICB9KTtcblxuICBjb25zdCBiYWNrbGlua1Jvd3M6IFtMaW5rLCBzdHJpbmdbXV1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGNvbnN0IGxpbmsgPSBmaXhUaXRsZShkdiwgZmlsZS5wYXRoKTtcbiAgICBjb25zdCBiYWNrbGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShkdi5hcHAsIGZpbGUpO1xuICAgIGNvbnN0IGJhY2tsaW5rTGlua3MgPSBiYWNrbGlua3Mua2V5cygpLm1hcCgoYmFja0xpbmtQYXRoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrZG93bkxpbmsgPSBnZW5lcmF0ZU1hcmtkb3duTGluayh7XG4gICAgICAgIGFwcDogZHYuYXBwLFxuICAgICAgICBzb3VyY2VQYXRoT3JGaWxlOiBkdi5jdXJyZW50KCkuZmlsZS5wYXRoLFxuICAgICAgICB0YXJnZXRQYXRoT3JGaWxlOiBlbnN1cmVOb25OdWxsYWJsZShkdi5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChiYWNrTGlua1BhdGgsIGZpbGUucGF0aCksICdMaW5rIG5vdCBmb3VuZCcpXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGAke21hcmtkb3duTGlua30gKCR7YmFja0xpbmtQYXRofSlgO1xuICAgIH0pO1xuICAgIGlmIChiYWNrbGlua0xpbmtzLmxlbmd0aCkge1xuICAgICAgYmFja2xpbmtSb3dzLnB1c2goW2xpbmssIGJhY2tsaW5rTGlua3NdKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWRUYWJsZSh7XG4gICAgZHYsXG4gICAgaGVhZGVyczogWydOb3RlJywgJ0JhY2tsaW5rcyddLFxuICAgIHJvd3M6IGJhY2tsaW5rUm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGRlbGF5ZWQgYmFja2xpbmtzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIGRlbGF5ZWQgYmFja2xpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRGVsYXllZEJhY2tsaW5rcyhwYXJhbXM6IFJlbmRlckRlbGF5ZWRCYWNrbGlua3NQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGZpbGVzLFxuICAgIHRpdGxlID0gJ0JhY2tsaW5rcydcbiAgfSA9IHBhcmFtcztcbiAgcmVuZGVyQ2FsbG91dCh7XG4gICAgYXN5bmMgY29udGVudFByb3ZpZGVyKCkge1xuICAgICAgYXdhaXQgcmVuZGVyQmFja2xpbmtzVGFibGUoZHYsIGZpbGVzKTtcbiAgICB9LFxuICAgIGR2LFxuICAgIGhlYWRlcjogdGl0bGVcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBkZWxheWVkIGJhY2tsaW5rcyBmb3IgYSBzcGVjaWZpYyBmb2xkZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgZGVsYXllZCBiYWNrbGlua3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJEZWxheWVkQmFja2xpbmtzRm9yRm9sZGVyKHBhcmFtczogUmVuZGVyRGVsYXllZEJhY2tsaW5rc0ZvckZvbGRlclBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgZm9sZGVyLFxuICAgIHRpdGxlID0gJ0ZvbGRlciBCYWNrbGlua3MnXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZvbGRlcjIgPSBmb2xkZXIgPz8gZHYuY3VycmVudCgpLmZpbGUuZm9sZGVyO1xuICByZW5kZXJEZWxheWVkQmFja2xpbmtzKHtcbiAgICBkdixcbiAgICBmaWxlczogZ2V0TWFya2Rvd25GaWxlcyhkdi5hcHAsIGZvbGRlcjIsIHRydWUpLFxuICAgIHRpdGxlXG4gIH0pO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxxQkFBcUI7QUFDOUIsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyw0QkFBNEI7QUFDckM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsK0JBQStCO0FBaUR4QyxlQUFzQixxQkFBcUIsSUFBdUIsYUFBbUQ7QUFDbkgsa0JBQWdCLENBQUM7QUFDakIsUUFBTSxRQUFpQixZQUFZLFFBQVEsQ0FBQyx1QkFBdUI7QUFDakUsVUFBTSxlQUFlLHNCQUFzQixHQUFHLEtBQUssa0JBQWtCO0FBQ3JFLFFBQUksQ0FBQyxjQUFjO0FBQ2pCLGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFFQSxRQUFJLE9BQU8sWUFBWSxHQUFHO0FBQ3hCLGFBQU8sQ0FBQyxZQUFZO0FBQUEsSUFDdEI7QUFFQSxRQUFJLENBQUMsU0FBUyxZQUFZLEdBQUc7QUFDM0IsWUFBTSxJQUFJLE1BQU0sbUJBQW1CO0FBQUEsSUFDckM7QUFFQSxXQUFPLGlCQUFpQixHQUFHLEtBQUssY0FBYyxJQUFJO0FBQUEsRUFDcEQsQ0FBQztBQUVELFFBQU0sZUFBbUMsQ0FBQztBQUUxQyxhQUFXLFFBQVEsT0FBTztBQUN4QixVQUFNLE9BQU8sU0FBUyxJQUFJLEtBQUssSUFBSTtBQUNuQyxVQUFNLFlBQVksTUFBTSx3QkFBd0IsR0FBRyxLQUFLLElBQUk7QUFDNUQsVUFBTSxnQkFBZ0IsVUFBVSxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtBQUMzRCxZQUFNLGVBQWUscUJBQXFCO0FBQUEsUUFDeEMsS0FBSyxHQUFHO0FBQUEsUUFDUixrQkFBa0IsR0FBRyxRQUFRLEVBQUUsS0FBSztBQUFBLFFBQ3BDLGtCQUFrQixrQkFBa0IsR0FBRyxJQUFJLGNBQWMscUJBQXFCLGNBQWMsS0FBSyxJQUFJLEdBQUcsZ0JBQWdCO0FBQUEsTUFDMUgsQ0FBQztBQUVELGFBQU8sR0FBRyxZQUFZLEtBQUssWUFBWTtBQUFBLElBQ3pDLENBQUM7QUFDRCxRQUFJLGNBQWMsUUFBUTtBQUN4QixtQkFBYSxLQUFLLENBQUMsTUFBTSxhQUFhLENBQUM7QUFBQSxJQUN6QztBQUFBLEVBQ0Y7QUFFQSxRQUFNLHFCQUFxQjtBQUFBLElBQ3pCO0FBQUEsSUFDQSxTQUFTLENBQUMsUUFBUSxXQUFXO0FBQUEsSUFDN0IsTUFBTTtBQUFBLEVBQ1IsQ0FBQztBQUNIO0FBT08sU0FBUyx1QkFBdUIsUUFBNEM7QUFDakYsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQSxRQUFRO0FBQUEsRUFDVixJQUFJO0FBQ0osZ0JBQWM7QUFBQSxJQUNaLE1BQU0sa0JBQWtCO0FBQ3RCLFlBQU0scUJBQXFCLElBQUksS0FBSztBQUFBLElBQ3RDO0FBQUEsSUFDQTtBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1YsQ0FBQztBQUNIO0FBT08sU0FBUyxnQ0FBZ0MsUUFBcUQ7QUFDbkcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQSxRQUFRO0FBQUEsRUFDVixJQUFJO0FBQ0osUUFBTSxVQUFVLFVBQVUsR0FBRyxRQUFRLEVBQUUsS0FBSztBQUM1Qyx5QkFBdUI7QUFBQSxJQUNyQjtBQUFBLElBQ0EsT0FBTyxpQkFBaUIsR0FBRyxLQUFLLFNBQVMsSUFBSTtBQUFBLElBQzdDO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
105
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2JhY2tsaW5rLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBiYWNrbGlua3MuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZXBseSBjb3VwbGVkIHRvIE9ic2lkaWFuIHJ1bnRpbWU7IHJlcXVpcmVzIHJ1bm5pbmcgdmF1bHQgZm9yIG1lYW5pbmdmdWwgdGVzdGluZy4gKi9cblxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBEYXRhdmlld0lubGluZUFwaSxcbiAgTGlua1xufSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB0eXBlIHtcbiAgUGF0aE9yQWJzdHJhY3RGaWxlLFxuICBQYXRoT3JGaWxlXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IHJlbmRlckNhbGxvdXQgfSBmcm9tICcuL2NhbGxvdXQudHMnO1xuaW1wb3J0IHsgZml4VGl0bGUgfSBmcm9tICcuL2RhdGF2aWV3LWxpbmsudHMnO1xuaW1wb3J0IHsgcmVuZGVyUGFnaW5hdGVkVGFibGUgfSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0TWFya2Rvd25GaWxlcyxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlclxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IGdlbmVyYXRlTWFya2Rvd25MaW5rIH0gZnJvbSAnLi9saW5rLnRzJztcbmltcG9ydCB7IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlIH0gZnJvbSAnLi9tZXRhZGF0YS1jYWNoZS50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGZvbGRlciBwYXRoLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IGZpbGUncyBmb2xkZXIgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHRpdGxlIGZvciB0aGUgcmVuZGVyZWQgYmFja2xpbmtzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ0ZvbGRlciBCYWNrbGlua3MnYFxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlckRlbGF5ZWRCYWNrbGlua3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckRlbGF5ZWRCYWNrbGlua3NQYXJhbXMge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBQYXRoT3JGaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXM6IFBhdGhPckZpbGVbXTtcblxuICAvKipcbiAgICogQSB0aXRsZSBmb3IgdGhlIHJlbmRlcmVkIGJhY2tsaW5rcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYCdCYWNrbGlua3MnYFxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGJhY2tsaW5rcyB0YWJsZSB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgYW5kIG9wdGlvbmFsIGFycmF5IG9mIFBhdGhPckFic3RyYWN0RmlsZS5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZXMgLSBBbiBvcHRpb25hbCBhcnJheSBvZiBQYXRoT3JBYnN0cmFjdEZpbGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGJhY2tsaW5rcyB0YWJsZSBoYXMgYmVlbiByZW5kZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckJhY2tsaW5rc1RhYmxlKGR2OiBEYXRhdmlld0lubGluZUFwaSwgcGF0aE9yRmlsZXM/OiBQYXRoT3JBYnN0cmFjdEZpbGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICBwYXRoT3JGaWxlcyA/Pz0gW107XG4gIGNvbnN0IGZpbGVzOiBURmlsZVtdID0gcGF0aE9yRmlsZXMuZmxhdE1hcCgoYWJzdHJhY3RGaWxlT3JQYXRoKSA9PiB7XG4gICAgY29uc3QgYWJzdHJhY3RGaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKHsgYXBwOiBkdi5hcHAsIHBhdGhPckZpbGU6IGFic3RyYWN0RmlsZU9yUGF0aCB9KTtcbiAgICBpZiAoIWFic3RyYWN0RmlsZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGlmIChpc0ZpbGUoYWJzdHJhY3RGaWxlKSkge1xuICAgICAgcmV0dXJuIFthYnN0cmFjdEZpbGVdO1xuICAgIH1cblxuICAgIGlmICghaXNGb2xkZXIoYWJzdHJhY3RGaWxlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBhIGZvbGRlcicpO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRNYXJrZG93bkZpbGVzKHsgYXBwOiBkdi5hcHAsIGlzUmVjdXJzaXZlOiB0cnVlLCBwYXRoT3JGb2xkZXI6IGFic3RyYWN0RmlsZSB9KTtcbiAgfSk7XG5cbiAgY29uc3QgYmFja2xpbmtSb3dzOiBbTGluaywgc3RyaW5nW11dW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBjb25zdCBsaW5rID0gZml4VGl0bGUoeyBkdiwgcGF0aE9yRmlsZTogZmlsZS5wYXRoIH0pO1xuICAgIGNvbnN0IGJhY2tsaW5rcyA9IGF3YWl0IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKHsgYXBwOiBkdi5hcHAsIHBhdGhPckZpbGU6IGZpbGUgfSk7XG4gICAgY29uc3QgYmFja2xpbmtMaW5rcyA9IGJhY2tsaW5rcy5rZXlzKCkubWFwKChiYWNrTGlua1BhdGgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtkb3duTGluayA9IGdlbmVyYXRlTWFya2Rvd25MaW5rKHtcbiAgICAgICAgYXBwOiBkdi5hcHAsXG4gICAgICAgIHNvdXJjZVBhdGhPckZpbGU6IGR2LmN1cnJlbnQoKS5maWxlLnBhdGgsXG4gICAgICAgIHRhcmdldFBhdGhPckZpbGU6IGVuc3VyZU5vbk51bGxhYmxlKGR2LmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGJhY2tMaW5rUGF0aCwgZmlsZS5wYXRoKSwgJ0xpbmsgbm90IGZvdW5kJylcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYCR7bWFya2Rvd25MaW5rfSAoJHtiYWNrTGlua1BhdGh9KWA7XG4gICAgfSk7XG4gICAgaWYgKGJhY2tsaW5rTGlua3MubGVuZ3RoKSB7XG4gICAgICBiYWNrbGlua1Jvd3MucHVzaChbbGluaywgYmFja2xpbmtMaW5rc10pO1xuICAgIH1cbiAgfVxuXG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZFRhYmxlKHtcbiAgICBkdixcbiAgICBoZWFkZXJzOiBbJ05vdGUnLCAnQmFja2xpbmtzJ10sXG4gICAgcm93czogYmFja2xpbmtSb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgZGVsYXllZCBiYWNrbGlua3MuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgZGVsYXllZCBiYWNrbGlua3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJEZWxheWVkQmFja2xpbmtzKHBhcmFtczogUmVuZGVyRGVsYXllZEJhY2tsaW5rc1BhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgZmlsZXMsXG4gICAgdGl0bGUgPSAnQmFja2xpbmtzJ1xuICB9ID0gcGFyYW1zO1xuICByZW5kZXJDYWxsb3V0KHtcbiAgICBhc3luYyBjb250ZW50UHJvdmlkZXIoKSB7XG4gICAgICBhd2FpdCByZW5kZXJCYWNrbGlua3NUYWJsZShkdiwgZmlsZXMpO1xuICAgIH0sXG4gICAgZHYsXG4gICAgaGVhZGVyOiB0aXRsZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGRlbGF5ZWQgYmFja2xpbmtzIGZvciBhIHNwZWNpZmljIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyBkZWxheWVkIGJhY2tsaW5rcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXIocGFyYW1zOiBSZW5kZXJEZWxheWVkQmFja2xpbmtzRm9yRm9sZGVyUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBmb2xkZXIsXG4gICAgdGl0bGUgPSAnRm9sZGVyIEJhY2tsaW5rcydcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgZm9sZGVyMiA9IGZvbGRlciA/PyBkdi5jdXJyZW50KCkuZmlsZS5mb2xkZXI7XG4gIHJlbmRlckRlbGF5ZWRCYWNrbGlua3Moe1xuICAgIGR2LFxuICAgIGZpbGVzOiBnZXRNYXJrZG93bkZpbGVzKHsgYXBwOiBkdi5hcHAsIGlzUmVjdXJzaXZlOiB0cnVlLCBwYXRoT3JGb2xkZXI6IGZvbGRlcjIgfSks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
@@ -28,6 +28,8 @@ export interface RenderCalloutParams {
28
28
  readonly abortSignal?: AbortSignal;
29
29
  /**
30
30
  * An optional provider for the content, which can be either a string or a Node.
31
+ *
32
+ * @default `''`
31
33
  */
32
34
  readonly contentProvider?: ValueProvider<MaybeReturn<Node | string>>;
33
35
  /**
@@ -36,14 +38,20 @@ export interface RenderCalloutParams {
36
38
  readonly dv: DataviewInlineApi;
37
39
  /**
38
40
  * A header text of the callout, default is an empty string.
41
+ *
42
+ * @default `''`
39
43
  */
40
44
  readonly header?: string;
41
45
  /**
42
46
  * A callout mode, default is `CalloutMode.FoldableCollapsed`.
47
+ *
48
+ * @default {@link CalloutMode.FoldableCollapsed}
43
49
  */
44
50
  readonly mode?: CalloutMode;
45
51
  /**
46
52
  * A type of the callout, default is `"NOTE"`.
53
+ *
54
+ * @default `'NOTE'`
47
55
  */
48
56
  readonly type?: string;
49
57
  }
@@ -98,4 +98,4 @@ export {
98
98
  renderCallout,
99
99
  wrapForCallout
100
100
  };
101
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NhbGxvdXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcmVuZGVyaW5nIGNhbGxvdXRzIGluIERhdGF2aWV3LlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICcuLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YXZpZXdJbmxpbmVBcGkgfSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB0eXBlIHsgQWRkVG9RdWV1ZVBhcmFtcyB9IGZyb20gJy4vcXVldWUudHMnO1xuXG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICcuLi9vYmplY3QtdXRpbHMudHMnO1xuaW1wb3J0IHtcbiAgYXNzZXJ0TmV2ZXIsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB7IGdldFJlbmRlcmVkQ29udGFpbmVyIH0gZnJvbSAnLi9kYXRhdmlldy50cyc7XG5pbXBvcnQgeyB0IH0gZnJvbSAnLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHsgYWRkVG9RdWV1ZSB9IGZyb20gJy4vcXVldWUudHMnO1xuXG4vKipcbiAqIEVudW0gcmVwcmVzZW50aW5nIHRoZSBtb2RlIG9mIGEgY2FsbG91dC5cbiAqL1xuZXhwb3J0IGVudW0gQ2FsbG91dE1vZGUge1xuICAvKiogRGVmYXVsdCBtb2RlLCB3aXRoIG5vIHNwZWNpYWwgYmVoYXZpb3IuICovXG4gIERlZmF1bHQsXG5cbiAgLyoqIEZvbGRhYmxlIG1vZGUgd2l0aCB0aGUgY2FsbG91dCBjb2xsYXBzZWQuICovXG4gIEZvbGRhYmxlQ29sbGFwc2VkLFxuXG4gIC8qKiBGb2xkYWJsZSBtb2RlIHdpdGggdGhlIGNhbGxvdXQgZXhwYW5kZWQuICovXG4gIEZvbGRhYmxlRXhwYW5kZWRcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyQ2FsbG91dH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyQ2FsbG91dFBhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBhYm9ydCBzaWduYWwuXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwcm92aWRlciBmb3IgdGhlIGNvbnRlbnQsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBOb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudFByb3ZpZGVyPzogVmFsdWVQcm92aWRlcjxNYXliZVJldHVybjxOb2RlIHwgc3RyaW5nPj47XG5cbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQSBoZWFkZXIgdGV4dCBvZiB0aGUgY2FsbG91dCwgZGVmYXVsdCBpcyBhbiBlbXB0eSBzdHJpbmcuXG4gICAqL1xuICByZWFkb25seSBoZWFkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY2FsbG91dCBtb2RlLCBkZWZhdWx0IGlzIGBDYWxsb3V0TW9kZS5Gb2xkYWJsZUNvbGxhcHNlZGAuXG4gICAqL1xuICByZWFkb25seSBtb2RlPzogQ2FsbG91dE1vZGU7XG5cbiAgLyoqXG4gICAqIEEgdHlwZSBvZiB0aGUgY2FsbG91dCwgZGVmYXVsdCBpcyBgXCJOT1RFXCJgLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgY2FsbG91dCBibG9jayBpbiBEYXRhdmlldy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgY2FsbG91dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckNhbGxvdXQocGFyYW1zOiBSZW5kZXJDYWxsb3V0UGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBjb250ZW50UHJvdmlkZXIgPSAnJyxcbiAgICBkdixcbiAgICBoZWFkZXIgPSAnJyxcbiAgICBtb2RlID0gQ2FsbG91dE1vZGUuRm9sZGFibGVDb2xsYXBzZWQsXG4gICAgdHlwZSA9ICdOT1RFJ1xuICB9ID0gcGFyYW1zO1xuICBjb25zdCBtb2RpZmllciA9IGdldE1vZGlmaWVyKG1vZGUpO1xuICBjb25zdCBjYWxsb3V0ID0gZHYucGFyYWdyYXBoKGA+IFshJHt0eXBlfV0ke21vZGlmaWVyfSAke2hlYWRlcn1cXG4+XFxuPiA8ZGl2IGNsYXNzPVwiY29udGVudFwiPjwvZGl2PmApO1xuICBjb25zdCBjb250ZW50RGl2ID0gZW5zdXJlTm9uTnVsbGFibGUoY2FsbG91dC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PignLmNvbnRlbnQnKSwgJ0NvbnRlbnQgZGl2IG5vdCBmb3VuZCcpO1xuICBkdi5wYXJhZ3JhcGgoJ0xvYWRpbmcuLi4gXHUyM0YzJywgeyBjb250YWluZXI6IGNvbnRlbnREaXYgfSk7XG5cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXM6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShlbnRyeS50YXJnZXQpO1xuICAgICAgICBhZGRUb1F1ZXVlKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxBZGRUb1F1ZXVlUGFyYW1zPih7XG4gICAgICAgICAgYWJvcnRTaWduYWw6IHBhcmFtcy5hYm9ydFNpZ25hbCxcbiAgICAgICAgICBvcGVyYXRpb25GbjogbG9hZENvbnRlbnQsXG4gICAgICAgICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmNhbGxvdXQubG9hZENvbnRlbnQpXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBvYnNlcnZlci5vYnNlcnZlKGNvbnRlbnREaXYpO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIGxvYWRDb250ZW50KGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgbGV0IGNvbnRlbnQ6IE1heWJlUmV0dXJuPE5vZGUgfCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG4gICAgY29uc3QgcGFyYWdyYXBoID0gYXdhaXQgZ2V0UmVuZGVyZWRDb250YWluZXIoZHYsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnRlbnQgPSBhd2FpdCByZXNvbHZlVmFsdWUoY29udGVudFByb3ZpZGVyLCBhYm9ydFNpZ25hbCk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIH0pO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICBjb250ZW50ID8/PSBwYXJhZ3JhcGg7XG5cbiAgICBjb250ZW50RGl2LmVtcHR5KCk7XG4gICAgZHYucGFyYWdyYXBoKGNvbnRlbnQsIHsgY29udGFpbmVyOiBjb250ZW50RGl2IH0pO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgdGhlIHByb3ZpZGVkIGNvbnRlbnQgaW4gYmxvY2txdW90ZSBzeW50YXggZm9yIGEgY2FsbG91dC5cbiAqXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHRvIHdyYXAuXG4gKiBAcmV0dXJucyBUaGUgY29udGVudCB3cmFwcGVkIGluIGJsb2NrcXVvdGUgc3ludGF4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcEZvckNhbGxvdXQoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgY29uc3QgcHJlZml4ZWRMaW5lcyA9IGxpbmVzLm1hcCgobGluZSkgPT4gYD4gJHtsaW5lfWApO1xuICByZXR1cm4gcHJlZml4ZWRMaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtb2RpZmllciBzdHJpbmcgYmFzZWQgb24gdGhlIGNhbGxvdXQgbW9kZS5cbiAqXG4gKiBAcGFyYW0gbW9kZSAtIFRoZSBtb2RlIG9mIHRoZSBjYWxsb3V0LlxuICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgbW9kaWZpZXIgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBnZXRNb2RpZmllcihtb2RlOiBDYWxsb3V0TW9kZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgQ2FsbG91dE1vZGUuRGVmYXVsdDpcbiAgICAgIHJldHVybiAnJztcbiAgICBjYXNlIENhbGxvdXRNb2RlLkZvbGRhYmxlQ29sbGFwc2VkOlxuICAgICAgcmV0dXJuICctJztcbiAgICBjYXNlIENhbGxvdXRNb2RlLkZvbGRhYmxlRXhwYW5kZWQ6XG4gICAgICByZXR1cm4gJysnO1xuICAgIGRlZmF1bHQ6XG4gICAgICBhc3NlcnROZXZlcihtb2RlKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQSxTQUFTLG1DQUFtQztBQUM1QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsU0FBUztBQUNsQixTQUFTLGtCQUFrQjtBQUtwQixJQUFLLGNBQUwsa0JBQUtBLGlCQUFMO0FBRUwsRUFBQUEsMEJBQUE7QUFHQSxFQUFBQSwwQkFBQTtBQUdBLEVBQUFBLDBCQUFBO0FBUlUsU0FBQUE7QUFBQSxHQUFBO0FBbURMLFNBQVMsY0FBYyxRQUFtQztBQUMvRCxRQUFNO0FBQUEsSUFDSixrQkFBa0I7QUFBQSxJQUNsQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLEVBQ1QsSUFBSTtBQUNKLFFBQU0sV0FBVyxZQUFZLElBQUk7QUFDakMsUUFBTSxVQUFVLEdBQUcsVUFBVSxPQUFPLElBQUksSUFBSSxRQUFRLElBQUksTUFBTTtBQUFBO0FBQUEsOEJBQW9DO0FBQ2xHLFFBQU0sYUFBYSxrQkFBa0IsUUFBUSxjQUE4QixVQUFVLEdBQUcsdUJBQXVCO0FBQy9HLEtBQUcsVUFBVSxxQkFBZ0IsRUFBRSxXQUFXLFdBQVcsQ0FBQztBQUV0RCxRQUFNLFdBQVcsSUFBSSxxQkFBcUIsQ0FBQyxZQUF5QztBQUNsRixlQUFXLFNBQVMsU0FBUztBQUMzQixVQUFJLE1BQU0sZ0JBQWdCO0FBQ3hCLGlCQUFTLFVBQVUsTUFBTSxNQUFNO0FBQy9CLG1CQUFXLDRCQUE4QztBQUFBLFVBQ3ZELGFBQWEsT0FBTztBQUFBLFVBQ3BCLGFBQWE7QUFBQSxVQUNiLGVBQWUsRUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsUUFBUSxXQUFXO0FBQUEsUUFDaEUsQ0FBQyxDQUFDO0FBQUEsTUFDSjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDRCxXQUFTLFFBQVEsVUFBVTtBQUUzQixpQkFBZSxZQUFZLGFBQXlDO0FBQ2xFLGdCQUFZLGVBQWU7QUFDM0IsUUFBSTtBQUVKLFVBQU0sWUFBWSxNQUFNLHFCQUFxQixJQUFJLFlBQVk7QUFDM0QsZ0JBQVUsTUFBTSxhQUFhLGlCQUFpQixXQUFXO0FBQ3pELGtCQUFZLGVBQWU7QUFBQSxJQUM3QixDQUFDO0FBQ0QsZ0JBQVksZUFBZTtBQUUzQixnQkFBWTtBQUVaLGVBQVcsTUFBTTtBQUNqQixPQUFHLFVBQVUsU0FBUyxFQUFFLFdBQVcsV0FBVyxDQUFDO0FBQUEsRUFDakQ7QUFDRjtBQVFPLFNBQVMsZUFBZSxTQUF5QjtBQUN0RCxRQUFNLFFBQVEsUUFBUSxNQUFNLElBQUk7QUFDaEMsUUFBTSxnQkFBZ0IsTUFBTSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtBQUNyRCxTQUFPLGNBQWMsS0FBSyxJQUFJO0FBQ2hDO0FBUUEsU0FBUyxZQUFZLE1BQTJCO0FBQzlDLFVBQVEsTUFBTTtBQUFBLElBQ1osS0FBSztBQUNILGFBQU87QUFBQSxJQUNULEtBQUs7QUFDSCxhQUFPO0FBQUEsSUFDVCxLQUFLO0FBQ0gsYUFBTztBQUFBLElBQ1Q7QUFDRSxrQkFBWSxJQUFJO0FBQUEsRUFDcEI7QUFDRjsiLAogICJuYW1lcyI6IFsiQ2FsbG91dE1vZGUiXQp9Cg==
101
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NhbGxvdXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcmVuZGVyaW5nIGNhbGxvdXRzIGluIERhdGF2aWV3LlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICcuLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YXZpZXdJbmxpbmVBcGkgfSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB0eXBlIHsgQWRkVG9RdWV1ZVBhcmFtcyB9IGZyb20gJy4vcXVldWUudHMnO1xuXG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICcuLi9vYmplY3QtdXRpbHMudHMnO1xuaW1wb3J0IHtcbiAgYXNzZXJ0TmV2ZXIsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB7IGdldFJlbmRlcmVkQ29udGFpbmVyIH0gZnJvbSAnLi9kYXRhdmlldy50cyc7XG5pbXBvcnQgeyB0IH0gZnJvbSAnLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHsgYWRkVG9RdWV1ZSB9IGZyb20gJy4vcXVldWUudHMnO1xuXG4vKipcbiAqIEVudW0gcmVwcmVzZW50aW5nIHRoZSBtb2RlIG9mIGEgY2FsbG91dC5cbiAqL1xuZXhwb3J0IGVudW0gQ2FsbG91dE1vZGUge1xuICAvKiogRGVmYXVsdCBtb2RlLCB3aXRoIG5vIHNwZWNpYWwgYmVoYXZpb3IuICovXG4gIERlZmF1bHQsXG5cbiAgLyoqIEZvbGRhYmxlIG1vZGUgd2l0aCB0aGUgY2FsbG91dCBjb2xsYXBzZWQuICovXG4gIEZvbGRhYmxlQ29sbGFwc2VkLFxuXG4gIC8qKiBGb2xkYWJsZSBtb2RlIHdpdGggdGhlIGNhbGxvdXQgZXhwYW5kZWQuICovXG4gIEZvbGRhYmxlRXhwYW5kZWRcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyQ2FsbG91dH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyQ2FsbG91dFBhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBhYm9ydCBzaWduYWwuXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwcm92aWRlciBmb3IgdGhlIGNvbnRlbnQsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBOb2RlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBjb250ZW50UHJvdmlkZXI/OiBWYWx1ZVByb3ZpZGVyPE1heWJlUmV0dXJuPE5vZGUgfCBzdHJpbmc+PjtcblxuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGhlYWRlciB0ZXh0IG9mIHRoZSBjYWxsb3V0LCBkZWZhdWx0IGlzIGFuIGVtcHR5IHN0cmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgYCcnYFxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNhbGxvdXQgbW9kZSwgZGVmYXVsdCBpcyBgQ2FsbG91dE1vZGUuRm9sZGFibGVDb2xsYXBzZWRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7QGxpbmsgQ2FsbG91dE1vZGUuRm9sZGFibGVDb2xsYXBzZWR9XG4gICAqL1xuICByZWFkb25seSBtb2RlPzogQ2FsbG91dE1vZGU7XG5cbiAgLyoqXG4gICAqIEEgdHlwZSBvZiB0aGUgY2FsbG91dCwgZGVmYXVsdCBpcyBgXCJOT1RFXCJgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ05PVEUnYFxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgY2FsbG91dCBibG9jayBpbiBEYXRhdmlldy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgY2FsbG91dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckNhbGxvdXQocGFyYW1zOiBSZW5kZXJDYWxsb3V0UGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBjb250ZW50UHJvdmlkZXIgPSAnJyxcbiAgICBkdixcbiAgICBoZWFkZXIgPSAnJyxcbiAgICBtb2RlID0gQ2FsbG91dE1vZGUuRm9sZGFibGVDb2xsYXBzZWQsXG4gICAgdHlwZSA9ICdOT1RFJ1xuICB9ID0gcGFyYW1zO1xuICBjb25zdCBtb2RpZmllciA9IGdldE1vZGlmaWVyKG1vZGUpO1xuICBjb25zdCBjYWxsb3V0ID0gZHYucGFyYWdyYXBoKGA+IFshJHt0eXBlfV0ke21vZGlmaWVyfSAke2hlYWRlcn1cXG4+XFxuPiA8ZGl2IGNsYXNzPVwiY29udGVudFwiPjwvZGl2PmApO1xuICBjb25zdCBjb250ZW50RGl2ID0gZW5zdXJlTm9uTnVsbGFibGUoY2FsbG91dC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PignLmNvbnRlbnQnKSwgJ0NvbnRlbnQgZGl2IG5vdCBmb3VuZCcpO1xuICBkdi5wYXJhZ3JhcGgoJ0xvYWRpbmcuLi4gXHUyM0YzJywgeyBjb250YWluZXI6IGNvbnRlbnREaXYgfSk7XG5cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXM6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShlbnRyeS50YXJnZXQpO1xuICAgICAgICBhZGRUb1F1ZXVlKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxBZGRUb1F1ZXVlUGFyYW1zPih7XG4gICAgICAgICAgYWJvcnRTaWduYWw6IHBhcmFtcy5hYm9ydFNpZ25hbCxcbiAgICAgICAgICBvcGVyYXRpb25GbjogbG9hZENvbnRlbnQsXG4gICAgICAgICAgb3BlcmF0aW9uTmFtZTogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmNhbGxvdXQubG9hZENvbnRlbnQpXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBvYnNlcnZlci5vYnNlcnZlKGNvbnRlbnREaXYpO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIGxvYWRDb250ZW50KGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgbGV0IGNvbnRlbnQ6IE1heWJlUmV0dXJuPE5vZGUgfCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG4gICAgY29uc3QgcGFyYWdyYXBoID0gYXdhaXQgZ2V0UmVuZGVyZWRDb250YWluZXIoZHYsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnRlbnQgPSBhd2FpdCByZXNvbHZlVmFsdWUoY29udGVudFByb3ZpZGVyLCBhYm9ydFNpZ25hbCk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIH0pO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICBjb250ZW50ID8/PSBwYXJhZ3JhcGg7XG5cbiAgICBjb250ZW50RGl2LmVtcHR5KCk7XG4gICAgZHYucGFyYWdyYXBoKGNvbnRlbnQsIHsgY29udGFpbmVyOiBjb250ZW50RGl2IH0pO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgdGhlIHByb3ZpZGVkIGNvbnRlbnQgaW4gYmxvY2txdW90ZSBzeW50YXggZm9yIGEgY2FsbG91dC5cbiAqXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHRvIHdyYXAuXG4gKiBAcmV0dXJucyBUaGUgY29udGVudCB3cmFwcGVkIGluIGJsb2NrcXVvdGUgc3ludGF4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcEZvckNhbGxvdXQoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgY29uc3QgcHJlZml4ZWRMaW5lcyA9IGxpbmVzLm1hcCgobGluZSkgPT4gYD4gJHtsaW5lfWApO1xuICByZXR1cm4gcHJlZml4ZWRMaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtb2RpZmllciBzdHJpbmcgYmFzZWQgb24gdGhlIGNhbGxvdXQgbW9kZS5cbiAqXG4gKiBAcGFyYW0gbW9kZSAtIFRoZSBtb2RlIG9mIHRoZSBjYWxsb3V0LlxuICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgbW9kaWZpZXIgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBnZXRNb2RpZmllcihtb2RlOiBDYWxsb3V0TW9kZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgQ2FsbG91dE1vZGUuRGVmYXVsdDpcbiAgICAgIHJldHVybiAnJztcbiAgICBjYXNlIENhbGxvdXRNb2RlLkZvbGRhYmxlQ29sbGFwc2VkOlxuICAgICAgcmV0dXJuICctJztcbiAgICBjYXNlIENhbGxvdXRNb2RlLkZvbGRhYmxlRXhwYW5kZWQ6XG4gICAgICByZXR1cm4gJysnO1xuICAgIGRlZmF1bHQ6XG4gICAgICBhc3NlcnROZXZlcihtb2RlKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQSxTQUFTLG1DQUFtQztBQUM1QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsU0FBUztBQUNsQixTQUFTLGtCQUFrQjtBQUtwQixJQUFLLGNBQUwsa0JBQUtBLGlCQUFMO0FBRUwsRUFBQUEsMEJBQUE7QUFHQSxFQUFBQSwwQkFBQTtBQUdBLEVBQUFBLDBCQUFBO0FBUlUsU0FBQUE7QUFBQSxHQUFBO0FBMkRMLFNBQVMsY0FBYyxRQUFtQztBQUMvRCxRQUFNO0FBQUEsSUFDSixrQkFBa0I7QUFBQSxJQUNsQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLEVBQ1QsSUFBSTtBQUNKLFFBQU0sV0FBVyxZQUFZLElBQUk7QUFDakMsUUFBTSxVQUFVLEdBQUcsVUFBVSxPQUFPLElBQUksSUFBSSxRQUFRLElBQUksTUFBTTtBQUFBO0FBQUEsOEJBQW9DO0FBQ2xHLFFBQU0sYUFBYSxrQkFBa0IsUUFBUSxjQUE4QixVQUFVLEdBQUcsdUJBQXVCO0FBQy9HLEtBQUcsVUFBVSxxQkFBZ0IsRUFBRSxXQUFXLFdBQVcsQ0FBQztBQUV0RCxRQUFNLFdBQVcsSUFBSSxxQkFBcUIsQ0FBQyxZQUF5QztBQUNsRixlQUFXLFNBQVMsU0FBUztBQUMzQixVQUFJLE1BQU0sZ0JBQWdCO0FBQ3hCLGlCQUFTLFVBQVUsTUFBTSxNQUFNO0FBQy9CLG1CQUFXLDRCQUE4QztBQUFBLFVBQ3ZELGFBQWEsT0FBTztBQUFBLFVBQ3BCLGFBQWE7QUFBQSxVQUNiLGVBQWUsRUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsUUFBUSxXQUFXO0FBQUEsUUFDaEUsQ0FBQyxDQUFDO0FBQUEsTUFDSjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDRCxXQUFTLFFBQVEsVUFBVTtBQUUzQixpQkFBZSxZQUFZLGFBQXlDO0FBQ2xFLGdCQUFZLGVBQWU7QUFDM0IsUUFBSTtBQUVKLFVBQU0sWUFBWSxNQUFNLHFCQUFxQixJQUFJLFlBQVk7QUFDM0QsZ0JBQVUsTUFBTSxhQUFhLGlCQUFpQixXQUFXO0FBQ3pELGtCQUFZLGVBQWU7QUFBQSxJQUM3QixDQUFDO0FBQ0QsZ0JBQVksZUFBZTtBQUUzQixnQkFBWTtBQUVaLGVBQVcsTUFBTTtBQUNqQixPQUFHLFVBQVUsU0FBUyxFQUFFLFdBQVcsV0FBVyxDQUFDO0FBQUEsRUFDakQ7QUFDRjtBQVFPLFNBQVMsZUFBZSxTQUF5QjtBQUN0RCxRQUFNLFFBQVEsUUFBUSxNQUFNLElBQUk7QUFDaEMsUUFBTSxnQkFBZ0IsTUFBTSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtBQUNyRCxTQUFPLGNBQWMsS0FBSyxJQUFJO0FBQ2hDO0FBUUEsU0FBUyxZQUFZLE1BQTJCO0FBQzlDLFVBQVEsTUFBTTtBQUFBLElBQ1osS0FBSztBQUNILGFBQU87QUFBQSxJQUNULEtBQUs7QUFDSCxhQUFPO0FBQUEsSUFDVCxLQUFLO0FBQ0gsYUFBTztBQUFBLElBQ1Q7QUFDRSxrQkFBWSxJQUFJO0FBQUEsRUFDcEI7QUFDRjsiLAogICJuYW1lcyI6IFsiQ2FsbG91dE1vZGUiXQp9Cg==