obsidian-dev-utils 49.0.3 → 51.0.1

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 (1643) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +14 -3
  3. package/Transformers/Transformer/package.json +3 -3
  4. package/Transformers/date-transformer/package.json +6 -0
  5. package/Transformers/duration-transformer/package.json +6 -0
  6. package/Transformers/group-transformer/package.json +6 -0
  7. package/Transformers/index/package.json +3 -3
  8. package/Transformers/map-transformer/package.json +6 -0
  9. package/Transformers/package.json +3 -3
  10. package/Transformers/set-transformer/package.json +6 -0
  11. package/Transformers/skip-private-property-transformer/package.json +6 -0
  12. package/Transformers/two-way-map-transformer/package.json +6 -0
  13. package/Transformers/typed-transformer/package.json +6 -0
  14. package/codemirror/state-field-spec/package.json +6 -0
  15. package/dist/.markdownlint-cli2.mts +2 -2
  16. package/dist/eslint.config.mts +1 -1
  17. package/dist/lib/cjs/abort-controller.cjs +212 -0
  18. package/dist/lib/cjs/array.cjs +169 -0
  19. package/dist/lib/cjs/async-events.cjs +319 -0
  20. package/dist/lib/cjs/async.cjs +469 -0
  21. package/dist/lib/cjs/async.d.cts +326 -0
  22. package/dist/lib/cjs/blob.cjs +204 -0
  23. package/dist/lib/cjs/blob.d.cts +41 -0
  24. package/dist/lib/cjs/codemirror/index.cjs +4 -4
  25. package/dist/lib/cjs/codemirror/index.d.cts +1 -1
  26. package/dist/lib/cjs/codemirror/state-field-spec.cjs +120 -0
  27. package/dist/lib/cjs/css-class.cjs +169 -0
  28. package/dist/lib/cjs/debug-controller.cjs +120 -0
  29. package/dist/lib/cjs/debug.cjs +270 -0
  30. package/dist/lib/cjs/debug.d.cts +47 -0
  31. package/dist/lib/cjs/enum.cjs +140 -0
  32. package/dist/lib/cjs/error.cjs +245 -0
  33. package/dist/lib/cjs/function.cjs +151 -0
  34. package/dist/lib/cjs/html-element.cjs +288 -0
  35. package/dist/lib/cjs/html-element.d.cts +122 -0
  36. package/dist/lib/cjs/index.cjs +69 -69
  37. package/dist/lib/cjs/index.d.cts +22 -22
  38. package/dist/lib/cjs/library.cjs +138 -0
  39. package/dist/lib/cjs/object-utils.cjs +554 -0
  40. package/dist/lib/cjs/object-utils.d.cts +255 -0
  41. package/dist/lib/cjs/obsidian/@types/i18next.d.cts +2 -2
  42. package/dist/lib/cjs/obsidian/app.cjs +170 -0
  43. package/dist/lib/cjs/obsidian/async-with-notice.cjs +200 -0
  44. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +82 -0
  45. package/dist/lib/cjs/obsidian/attachment-path.cjs +234 -0
  46. package/dist/lib/cjs/obsidian/attachment-path.d.cts +181 -0
  47. package/dist/lib/cjs/obsidian/backlink.cjs +206 -0
  48. package/dist/lib/cjs/obsidian/backlink.d.cts +61 -0
  49. package/dist/lib/cjs/obsidian/callout.cjs +203 -0
  50. package/dist/lib/cjs/obsidian/callout.d.cts +61 -0
  51. package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +120 -0
  52. package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.cjs +436 -0
  53. package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.d.cts +264 -0
  54. package/dist/lib/cjs/obsidian/commands/command-base.cjs +252 -0
  55. package/dist/lib/cjs/obsidian/commands/editor-command-base.cjs +278 -0
  56. package/dist/lib/cjs/obsidian/commands/editor-command-base.d.cts +139 -0
  57. package/dist/lib/cjs/obsidian/commands/file-command-base.cjs +338 -0
  58. package/dist/lib/cjs/obsidian/commands/file-command-base.d.cts +191 -0
  59. package/dist/lib/cjs/obsidian/commands/folder-command-base.cjs +330 -0
  60. package/dist/lib/cjs/obsidian/commands/folder-command-base.d.cts +184 -0
  61. package/dist/lib/cjs/obsidian/commands/index.cjs +157 -0
  62. package/dist/lib/cjs/obsidian/commands/index.d.cts +6 -0
  63. package/dist/lib/cjs/obsidian/commands/non-editor-command-base.cjs +152 -0
  64. package/dist/lib/cjs/obsidian/commands/non-editor-command-base.d.cts +34 -0
  65. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +149 -0
  66. package/dist/lib/cjs/obsidian/components/async-events-component.d.cts +25 -0
  67. package/dist/lib/cjs/obsidian/components/index.cjs +145 -0
  68. package/dist/lib/cjs/obsidian/components/index.d.cts +2 -0
  69. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +205 -0
  70. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.d.cts +69 -0
  71. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +352 -0
  72. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.d.cts +118 -0
  73. package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +165 -0
  74. package/dist/lib/cjs/obsidian/components/setting-components/date-component.d.cts +37 -0
  75. package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +165 -0
  76. package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.d.cts +37 -0
  77. package/dist/lib/cjs/obsidian/components/setting-components/email-component.cjs +176 -0
  78. package/dist/lib/cjs/obsidian/components/setting-components/email-component.d.cts +48 -0
  79. package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +168 -0
  80. package/dist/lib/cjs/obsidian/components/setting-components/file-component.d.cts +42 -0
  81. package/dist/lib/cjs/obsidian/components/setting-components/index.cjs +217 -0
  82. package/dist/lib/cjs/obsidian/components/setting-components/index.d.cts +26 -0
  83. package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +173 -0
  84. package/dist/lib/cjs/obsidian/components/setting-components/month-component.d.cts +50 -0
  85. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +237 -0
  86. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.d.cts +87 -0
  87. package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +162 -0
  88. package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.d.cts +37 -0
  89. package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +169 -0
  90. package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.d.cts +42 -0
  91. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +250 -0
  92. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.d.cts +98 -0
  93. package/dist/lib/cjs/obsidian/components/setting-components/number-component.cjs +186 -0
  94. package/dist/lib/cjs/obsidian/components/setting-components/number-component.d.cts +55 -0
  95. package/dist/lib/cjs/obsidian/components/setting-components/password-component.cjs +162 -0
  96. package/dist/lib/cjs/obsidian/components/setting-components/password-component.d.cts +37 -0
  97. package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.cjs +149 -0
  98. package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.cjs +176 -0
  99. package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.d.cts +50 -0
  100. package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.cjs +161 -0
  101. package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +170 -0
  102. package/dist/lib/cjs/obsidian/components/setting-components/time-component.d.cts +37 -0
  103. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +206 -0
  104. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.d.cts +69 -0
  105. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +243 -0
  106. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.d.cts +89 -0
  107. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +245 -0
  108. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.d.cts +90 -0
  109. package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.cjs +164 -0
  110. package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.d.cts +34 -0
  111. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +220 -0
  112. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.d.cts +85 -0
  113. package/dist/lib/cjs/obsidian/components/setting-components/url-component.cjs +176 -0
  114. package/dist/lib/cjs/obsidian/components/setting-components/url-component.d.cts +48 -0
  115. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +220 -0
  116. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.d.cts +22 -0
  117. package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.cjs +120 -0
  118. package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +173 -0
  119. package/dist/lib/cjs/obsidian/components/setting-components/week-component.d.cts +50 -0
  120. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +169 -0
  121. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.d.cts +19 -0
  122. package/dist/lib/cjs/obsidian/constructors/index.cjs +142 -0
  123. package/dist/lib/cjs/obsidian/constructors/index.d.cts +1 -0
  124. package/dist/lib/cjs/obsidian/dataview-link.cjs +144 -0
  125. package/dist/lib/cjs/obsidian/dataview-link.d.cts +24 -0
  126. package/dist/lib/cjs/obsidian/dataview.cjs +353 -0
  127. package/dist/lib/cjs/obsidian/dataview.d.cts +214 -0
  128. package/dist/lib/cjs/obsidian/editor.cjs +162 -0
  129. package/dist/lib/cjs/obsidian/file-change.cjs +473 -0
  130. package/dist/lib/cjs/obsidian/file-change.d.cts +119 -0
  131. package/dist/lib/cjs/obsidian/file-manager.cjs +193 -0
  132. package/dist/lib/cjs/obsidian/file-manager.d.cts +40 -0
  133. package/dist/lib/cjs/obsidian/file-system.cjs +406 -0
  134. package/dist/lib/cjs/obsidian/file-system.d.cts +279 -0
  135. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +151 -0
  136. package/dist/lib/cjs/obsidian/frontmatter.cjs +149 -0
  137. package/dist/lib/cjs/obsidian/frontmatter.d.cts +74 -0
  138. package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.cjs +121 -0
  139. package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.d.cts +31 -0
  140. package/dist/lib/cjs/obsidian/i18n/default-translations-base.cjs +121 -0
  141. package/dist/lib/cjs/obsidian/i18n/default-translations-base.d.cts +25 -0
  142. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +3 -3
  143. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +1 -1
  144. package/dist/lib/cjs/obsidian/i18n/index.cjs +7 -7
  145. package/dist/lib/cjs/obsidian/i18n/index.d.cts +2 -2
  146. package/dist/lib/cjs/obsidian/i18n/locales/translationsMap.cjs +1 -1
  147. package/dist/lib/cjs/obsidian/i18n/locales/translationsMap.d.cts +1 -1
  148. package/dist/lib/cjs/obsidian/index.cjs +123 -120
  149. package/dist/lib/cjs/obsidian/index.d.cts +40 -39
  150. package/dist/lib/cjs/obsidian/link.cjs +887 -0
  151. package/dist/lib/cjs/obsidian/link.d.cts +716 -0
  152. package/dist/lib/cjs/obsidian/logger.cjs +174 -0
  153. package/dist/lib/cjs/obsidian/loop.cjs +225 -0
  154. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +362 -0
  155. package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +107 -0
  156. package/dist/lib/cjs/obsidian/markdown-view.cjs +140 -0
  157. package/dist/lib/cjs/obsidian/markdown.cjs +251 -0
  158. package/dist/lib/cjs/obsidian/markdown.d.cts +79 -0
  159. package/dist/lib/cjs/obsidian/metadata-cache.cjs +367 -0
  160. package/dist/lib/cjs/obsidian/metadata-cache.d.cts +137 -0
  161. package/dist/lib/cjs/obsidian/modals/alert.cjs +166 -0
  162. package/dist/lib/cjs/obsidian/modals/confirm.cjs +175 -0
  163. package/dist/lib/cjs/obsidian/modals/index.cjs +154 -0
  164. package/dist/lib/cjs/obsidian/modals/index.d.cts +5 -0
  165. package/dist/lib/cjs/obsidian/modals/modal-base.cjs +158 -0
  166. package/dist/lib/cjs/obsidian/modals/modal-base.d.cts +42 -0
  167. package/dist/lib/cjs/obsidian/modals/prompt.cjs +210 -0
  168. package/dist/lib/cjs/obsidian/modals/prompt.d.cts +53 -0
  169. package/dist/lib/cjs/obsidian/modals/select-item.cjs +170 -0
  170. package/dist/lib/cjs/obsidian/modals/select-item.d.cts +43 -0
  171. package/dist/lib/cjs/obsidian/monkey-around.cjs +173 -0
  172. package/dist/lib/cjs/obsidian/obsidian-settings.cjs +139 -0
  173. package/dist/lib/cjs/obsidian/pdf.cjs +162 -0
  174. package/dist/lib/cjs/obsidian/plugin/index.cjs +169 -0
  175. package/dist/lib/cjs/obsidian/plugin/index.d.cts +10 -0
  176. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +179 -0
  177. package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +235 -0
  178. package/dist/lib/cjs/obsidian/plugin/path-settings.d.cts +43 -0
  179. package/dist/lib/cjs/obsidian/plugin/plugin-base.cjs +453 -0
  180. package/dist/lib/cjs/obsidian/plugin/plugin-base.d.cts +200 -0
  181. package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +165 -0
  182. package/dist/lib/cjs/obsidian/plugin/plugin-id.cjs +145 -0
  183. package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.cjs +483 -0
  184. package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.d.cts +186 -0
  185. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.cjs +401 -0
  186. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.d.cts +148 -0
  187. package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.cjs +120 -0
  188. package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.d.cts +25 -0
  189. package/dist/lib/cjs/obsidian/plugin/plugin-types-base.cjs +120 -0
  190. package/dist/lib/cjs/obsidian/plugin/plugin-types-base.d.cts +87 -0
  191. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +146 -0
  192. package/dist/lib/cjs/obsidian/queue.cjs +201 -0
  193. package/dist/lib/cjs/obsidian/react/app-context.cjs +140 -0
  194. package/dist/lib/cjs/obsidian/react/index.cjs +142 -0
  195. package/dist/lib/cjs/obsidian/react/index.d.cts +1 -0
  196. package/dist/lib/cjs/obsidian/reference.cjs +177 -0
  197. package/dist/lib/cjs/obsidian/reference.d.cts +82 -0
  198. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +837 -0
  199. package/dist/lib/cjs/obsidian/resource-url.cjs +139 -0
  200. package/dist/lib/cjs/obsidian/setting-ex.cjs +361 -0
  201. package/dist/lib/cjs/obsidian/setting-ex.d.cts +182 -0
  202. package/dist/lib/cjs/obsidian/setting-group-ex.cjs +154 -0
  203. package/dist/lib/cjs/obsidian/setting-group-ex.d.cts +25 -0
  204. package/dist/lib/cjs/obsidian/validation.cjs +159 -0
  205. package/dist/lib/cjs/obsidian/vault-delete.cjs +171 -0
  206. package/dist/lib/cjs/obsidian/vault-delete.d.cts +18 -0
  207. package/dist/lib/cjs/obsidian/vault.cjs +540 -0
  208. package/dist/lib/cjs/obsidian/vault.d.cts +261 -0
  209. package/dist/lib/cjs/obsidian/workspace.cjs +143 -0
  210. package/dist/lib/cjs/path.cjs +221 -0
  211. package/dist/lib/cjs/reg-exp.cjs +255 -0
  212. package/dist/lib/cjs/script-utils/build.cjs +179 -0
  213. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/changeExtensionPlugin.cjs +164 -0
  214. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copyToObsidianPluginsFolderPlugin.cjs +196 -0
  215. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/customEsbuildOptionsPlugin.cjs +139 -0
  216. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +220 -0
  217. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fixEsmPlugin.cjs +145 -0
  218. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fixSourceMapsPlugin.cjs +171 -0
  219. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +169 -0
  220. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.d.cts +10 -0
  221. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +286 -0
  222. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +89 -0
  223. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocessPlugin.cjs +298 -0
  224. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/renameCssPlugin.cjs +148 -0
  225. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelteWrapperPlugin.cjs +172 -0
  226. package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +142 -0
  227. package/dist/lib/cjs/script-utils/bundlers/esbuild.d.cts +10 -0
  228. package/dist/lib/cjs/script-utils/bundlers/index.cjs +145 -0
  229. package/dist/lib/cjs/script-utils/bundlers/index.d.cts +2 -0
  230. package/dist/lib/cjs/script-utils/cli-utils.cjs +264 -0
  231. package/dist/lib/cjs/script-utils/cli-utils.d.cts +76 -0
  232. package/dist/lib/cjs/script-utils/code-generator.cjs +139 -0
  233. package/dist/lib/cjs/script-utils/exec.cjs +214 -0
  234. package/dist/lib/cjs/script-utils/exec.d.cts +84 -0
  235. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +164 -0
  236. package/dist/lib/cjs/script-utils/formatters/index.cjs +142 -0
  237. package/dist/lib/cjs/script-utils/formatters/index.d.cts +1 -0
  238. package/dist/lib/cjs/script-utils/fs.cjs +181 -0
  239. package/dist/lib/cjs/script-utils/fs.d.cts +75 -0
  240. package/dist/lib/cjs/script-utils/index.cjs +193 -0
  241. package/dist/lib/cjs/script-utils/index.d.cts +18 -0
  242. package/dist/lib/cjs/script-utils/json.cjs +179 -0
  243. package/dist/lib/cjs/script-utils/json.d.cts +65 -0
  244. package/dist/lib/cjs/script-utils/linters/cspell.cjs +135 -0
  245. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +599 -0
  246. package/dist/lib/cjs/script-utils/linters/eslint.cjs +175 -0
  247. package/dist/lib/cjs/script-utils/linters/index.cjs +154 -0
  248. package/dist/lib/cjs/script-utils/linters/index.d.cts +5 -0
  249. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +172 -0
  250. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.d.cts +10 -0
  251. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +206 -0
  252. package/dist/lib/cjs/script-utils/linters/markdownlint.d.cts +11 -0
  253. package/dist/lib/cjs/script-utils/node-modules.cjs +207 -0
  254. package/dist/lib/cjs/script-utils/npm-publish.cjs +143 -0
  255. package/dist/lib/cjs/script-utils/npm-run.cjs +151 -0
  256. package/dist/lib/cjs/script-utils/npm.cjs +234 -0
  257. package/dist/lib/cjs/script-utils/npm.d.cts +149 -0
  258. package/dist/lib/cjs/script-utils/obsidian-cli.cjs +139 -0
  259. package/dist/lib/cjs/script-utils/obsidian-cli.d.cts +23 -0
  260. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +178 -0
  261. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +100 -0
  262. package/dist/lib/cjs/script-utils/root.cjs +184 -0
  263. package/dist/lib/cjs/script-utils/root.d.cts +68 -0
  264. package/dist/lib/cjs/script-utils/test-runners/index.cjs +142 -0
  265. package/dist/lib/cjs/script-utils/test-runners/index.d.cts +1 -0
  266. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +145 -0
  267. package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +23 -0
  268. package/dist/lib/cjs/script-utils/version.cjs +477 -0
  269. package/dist/lib/cjs/script-utils/version.d.cts +176 -0
  270. package/dist/lib/cjs/string.cjs +333 -0
  271. package/dist/lib/cjs/string.d.cts +186 -0
  272. package/dist/lib/cjs/transformers/date-transformer.cjs +169 -0
  273. package/dist/lib/cjs/transformers/date-transformer.d.cts +38 -0
  274. package/dist/lib/cjs/transformers/duration-transformer.cjs +171 -0
  275. package/dist/lib/cjs/transformers/duration-transformer.d.cts +38 -0
  276. package/dist/lib/cjs/transformers/group-transformer.cjs +215 -0
  277. package/dist/lib/cjs/transformers/group-transformer.d.cts +69 -0
  278. package/dist/lib/cjs/transformers/index.cjs +166 -0
  279. package/dist/lib/cjs/transformers/index.d.cts +9 -0
  280. package/dist/lib/cjs/transformers/map-transformer.cjs +169 -0
  281. package/dist/lib/cjs/transformers/map-transformer.d.cts +40 -0
  282. package/dist/lib/cjs/transformers/set-transformer.cjs +169 -0
  283. package/dist/lib/cjs/transformers/set-transformer.d.cts +38 -0
  284. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +167 -0
  285. package/dist/lib/cjs/transformers/skip-private-property-transformer.d.cts +35 -0
  286. package/dist/lib/cjs/transformers/transformer.cjs +210 -0
  287. package/dist/lib/cjs/transformers/transformer.d.cts +69 -0
  288. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +170 -0
  289. package/dist/lib/cjs/transformers/two-way-map-transformer.d.cts +41 -0
  290. package/dist/lib/cjs/transformers/typed-transformer.cjs +134 -0
  291. package/dist/lib/cjs/transformers/typed-transformer.d.cts +38 -0
  292. package/dist/lib/cjs/two-way-map.cjs +248 -0
  293. package/dist/lib/cjs/type-guards.cjs +156 -0
  294. package/dist/lib/cjs/type.cjs +142 -0
  295. package/dist/lib/cjs/value-provider.cjs +143 -0
  296. package/dist/lib/esm/abort-controller.mjs +101 -0
  297. package/dist/lib/esm/array.mjs +61 -0
  298. package/dist/lib/esm/async-events.mjs +213 -0
  299. package/dist/lib/esm/async.d.mts +326 -0
  300. package/dist/lib/esm/async.mjs +354 -0
  301. package/dist/lib/esm/blob.d.mts +41 -0
  302. package/dist/lib/esm/blob.mjs +94 -0
  303. package/dist/lib/esm/codemirror/index.d.mts +1 -1
  304. package/dist/lib/esm/codemirror/index.mjs +3 -3
  305. package/dist/lib/esm/css-class.mjs +63 -0
  306. package/dist/lib/esm/debug.d.mts +47 -0
  307. package/dist/lib/esm/debug.mjs +152 -0
  308. package/dist/lib/esm/enum.mjs +33 -0
  309. package/dist/lib/esm/error.mjs +131 -0
  310. package/dist/lib/esm/function.mjs +42 -0
  311. package/dist/lib/esm/html-element.d.mts +122 -0
  312. package/dist/lib/esm/html-element.mjs +171 -0
  313. package/dist/lib/esm/index.d.mts +22 -22
  314. package/dist/lib/esm/index.mjs +46 -46
  315. package/dist/lib/esm/library.mjs +30 -0
  316. package/dist/lib/esm/object-utils.d.mts +255 -0
  317. package/dist/lib/esm/object-utils.mjs +435 -0
  318. package/dist/lib/esm/obsidian/@types/i18next.d.mts +2 -2
  319. package/dist/lib/esm/obsidian/app.mjs +62 -0
  320. package/dist/lib/esm/obsidian/async-with-notice.d.mts +82 -0
  321. package/dist/lib/esm/obsidian/async-with-notice.mjs +96 -0
  322. package/dist/lib/esm/obsidian/attachment-path.d.mts +181 -0
  323. package/dist/lib/esm/obsidian/attachment-path.mjs +139 -0
  324. package/dist/lib/esm/obsidian/backlink.d.mts +61 -0
  325. package/dist/lib/esm/obsidian/backlink.mjs +103 -0
  326. package/dist/lib/esm/obsidian/callout.d.mts +61 -0
  327. package/dist/lib/esm/obsidian/callout.mjs +95 -0
  328. package/dist/lib/esm/obsidian/commands/abstract-file-command-base.d.mts +264 -0
  329. package/dist/lib/esm/obsidian/commands/abstract-file-command-base.mjs +326 -0
  330. package/dist/lib/esm/obsidian/commands/command-base.mjs +145 -0
  331. package/dist/lib/esm/obsidian/commands/editor-command-base.d.mts +139 -0
  332. package/dist/lib/esm/obsidian/commands/editor-command-base.mjs +174 -0
  333. package/dist/lib/esm/obsidian/commands/file-command-base.d.mts +191 -0
  334. package/dist/lib/esm/obsidian/commands/file-command-base.mjs +237 -0
  335. package/dist/lib/esm/obsidian/commands/folder-command-base.d.mts +184 -0
  336. package/dist/lib/esm/obsidian/commands/folder-command-base.mjs +229 -0
  337. package/dist/lib/esm/obsidian/commands/index.d.mts +6 -0
  338. package/dist/lib/esm/obsidian/commands/index.mjs +36 -0
  339. package/dist/lib/esm/obsidian/commands/non-editor-command-base.d.mts +34 -0
  340. package/dist/lib/esm/obsidian/commands/non-editor-command-base.mjs +46 -0
  341. package/dist/lib/esm/obsidian/components/async-events-component.d.mts +25 -0
  342. package/dist/lib/esm/obsidian/components/async-events-component.mjs +42 -0
  343. package/dist/lib/esm/obsidian/components/index.d.mts +2 -0
  344. package/dist/lib/esm/obsidian/components/index.mjs +28 -0
  345. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.d.mts +69 -0
  346. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +99 -0
  347. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.d.mts +118 -0
  348. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +252 -0
  349. package/dist/lib/esm/obsidian/components/setting-components/date-component.d.mts +37 -0
  350. package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +59 -0
  351. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.d.mts +37 -0
  352. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +59 -0
  353. package/dist/lib/esm/obsidian/components/setting-components/email-component.d.mts +48 -0
  354. package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +70 -0
  355. package/dist/lib/esm/obsidian/components/setting-components/file-component.d.mts +42 -0
  356. package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +62 -0
  357. package/dist/lib/esm/obsidian/components/setting-components/index.d.mts +26 -0
  358. package/dist/lib/esm/obsidian/components/setting-components/index.mjs +76 -0
  359. package/dist/lib/esm/obsidian/components/setting-components/month-component.d.mts +50 -0
  360. package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +67 -0
  361. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.d.mts +87 -0
  362. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +134 -0
  363. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.d.mts +37 -0
  364. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +56 -0
  365. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.d.mts +42 -0
  366. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +63 -0
  367. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.d.mts +98 -0
  368. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +147 -0
  369. package/dist/lib/esm/obsidian/components/setting-components/number-component.d.mts +55 -0
  370. package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +80 -0
  371. package/dist/lib/esm/obsidian/components/setting-components/password-component.d.mts +37 -0
  372. package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +56 -0
  373. package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +43 -0
  374. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.d.mts +50 -0
  375. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +70 -0
  376. package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +55 -0
  377. package/dist/lib/esm/obsidian/components/setting-components/time-component.d.mts +37 -0
  378. package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +64 -0
  379. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.d.mts +69 -0
  380. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +100 -0
  381. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.d.mts +89 -0
  382. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +140 -0
  383. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.d.mts +90 -0
  384. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +139 -0
  385. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.d.mts +34 -0
  386. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +58 -0
  387. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.d.mts +85 -0
  388. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +117 -0
  389. package/dist/lib/esm/obsidian/components/setting-components/url-component.d.mts +48 -0
  390. package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +70 -0
  391. package/dist/lib/esm/obsidian/components/setting-components/validator-component.d.mts +22 -0
  392. package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +123 -0
  393. package/dist/lib/esm/obsidian/components/setting-components/week-component.d.mts +50 -0
  394. package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +67 -0
  395. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.d.mts +19 -0
  396. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +63 -0
  397. package/dist/lib/esm/obsidian/constructors/index.d.mts +1 -0
  398. package/dist/lib/esm/obsidian/constructors/index.mjs +26 -0
  399. package/dist/lib/esm/obsidian/dataview-link.d.mts +24 -0
  400. package/dist/lib/esm/obsidian/dataview-link.mjs +41 -0
  401. package/dist/lib/esm/obsidian/dataview.d.mts +214 -0
  402. package/dist/lib/esm/obsidian/dataview.mjs +245 -0
  403. package/dist/lib/esm/obsidian/editor.mjs +58 -0
  404. package/dist/lib/esm/obsidian/file-change.d.mts +119 -0
  405. package/dist/lib/esm/obsidian/file-change.mjs +378 -0
  406. package/dist/lib/esm/obsidian/file-manager.d.mts +40 -0
  407. package/dist/lib/esm/obsidian/file-manager.mjs +92 -0
  408. package/dist/lib/esm/obsidian/file-system.d.mts +279 -0
  409. package/dist/lib/esm/obsidian/file-system.mjs +283 -0
  410. package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +44 -0
  411. package/dist/lib/esm/obsidian/frontmatter.d.mts +74 -0
  412. package/dist/lib/esm/obsidian/frontmatter.mjs +46 -0
  413. package/dist/lib/esm/obsidian/i18n/custom-type-options-base.d.mts +31 -0
  414. package/dist/lib/esm/obsidian/i18n/custom-type-options-base.mjs +23 -0
  415. package/dist/lib/esm/obsidian/i18n/default-translations-base.d.mts +25 -0
  416. package/dist/lib/esm/obsidian/i18n/default-translations-base.mjs +23 -0
  417. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +1 -1
  418. package/dist/lib/esm/obsidian/i18n/i18n.mjs +2 -2
  419. package/dist/lib/esm/obsidian/i18n/index.d.mts +2 -2
  420. package/dist/lib/esm/obsidian/i18n/index.mjs +5 -5
  421. package/dist/lib/esm/obsidian/i18n/locales/translationsMap.d.mts +1 -1
  422. package/dist/lib/esm/obsidian/i18n/locales/translationsMap.mjs +1 -1
  423. package/dist/lib/esm/obsidian/index.d.mts +40 -39
  424. package/dist/lib/esm/obsidian/index.mjs +82 -80
  425. package/dist/lib/esm/obsidian/link.d.mts +716 -0
  426. package/dist/lib/esm/obsidian/link.mjs +789 -0
  427. package/dist/lib/esm/obsidian/logger.mjs +71 -0
  428. package/dist/lib/esm/obsidian/loop.mjs +127 -0
  429. package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +107 -0
  430. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +262 -0
  431. package/dist/lib/esm/obsidian/markdown-view.mjs +34 -0
  432. package/dist/lib/esm/obsidian/markdown.d.mts +79 -0
  433. package/dist/lib/esm/obsidian/markdown.mjs +150 -0
  434. package/dist/lib/esm/obsidian/metadata-cache.d.mts +137 -0
  435. package/dist/lib/esm/obsidian/metadata-cache.mjs +266 -0
  436. package/dist/lib/esm/obsidian/modals/alert.mjs +63 -0
  437. package/dist/lib/esm/obsidian/modals/confirm.mjs +72 -0
  438. package/dist/lib/esm/obsidian/modals/index.d.mts +5 -0
  439. package/dist/lib/esm/obsidian/modals/index.mjs +34 -0
  440. package/dist/lib/esm/obsidian/modals/modal-base.d.mts +42 -0
  441. package/dist/lib/esm/obsidian/modals/modal-base.mjs +51 -0
  442. package/dist/lib/esm/obsidian/modals/prompt.d.mts +53 -0
  443. package/dist/lib/esm/obsidian/modals/prompt.mjs +113 -0
  444. package/dist/lib/esm/obsidian/modals/select-item.d.mts +43 -0
  445. package/dist/lib/esm/obsidian/modals/select-item.mjs +64 -0
  446. package/dist/lib/esm/obsidian/monkey-around.mjs +64 -0
  447. package/dist/lib/esm/obsidian/obsidian-settings.mjs +32 -0
  448. package/dist/lib/esm/obsidian/pdf.mjs +56 -0
  449. package/dist/lib/esm/obsidian/plugin/index.d.mts +10 -0
  450. package/dist/lib/esm/obsidian/plugin/index.mjs +44 -0
  451. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +73 -0
  452. package/dist/lib/esm/obsidian/plugin/path-settings.d.mts +43 -0
  453. package/dist/lib/esm/obsidian/plugin/path-settings.mjs +133 -0
  454. package/dist/lib/esm/obsidian/plugin/plugin-base.d.mts +200 -0
  455. package/dist/lib/esm/obsidian/plugin/plugin-base.mjs +363 -0
  456. package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +67 -0
  457. package/dist/lib/esm/obsidian/plugin/plugin-id.mjs +37 -0
  458. package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.d.mts +186 -0
  459. package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.mjs +383 -0
  460. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.d.mts +148 -0
  461. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.mjs +304 -0
  462. package/dist/lib/esm/obsidian/plugin/plugin-settings-wrapper.d.mts +25 -0
  463. package/dist/lib/esm/obsidian/plugin/plugin-types-base.d.mts +87 -0
  464. package/dist/lib/esm/obsidian/plugin/plugin.mjs +39 -0
  465. package/dist/lib/esm/obsidian/queue.mjs +99 -0
  466. package/dist/lib/esm/obsidian/react/app-context.mjs +36 -0
  467. package/dist/lib/esm/obsidian/react/index.d.mts +1 -0
  468. package/dist/lib/esm/obsidian/react/index.mjs +26 -0
  469. package/dist/lib/esm/obsidian/reference.d.mts +82 -0
  470. package/dist/lib/esm/obsidian/reference.mjs +70 -0
  471. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +774 -0
  472. package/dist/lib/esm/obsidian/resource-url.mjs +33 -0
  473. package/dist/lib/esm/obsidian/setting-ex.d.mts +182 -0
  474. package/dist/lib/esm/obsidian/setting-ex.mjs +258 -0
  475. package/dist/lib/esm/obsidian/setting-group-ex.d.mts +25 -0
  476. package/dist/lib/esm/obsidian/setting-group-ex.mjs +48 -0
  477. package/dist/lib/esm/obsidian/validation.mjs +48 -0
  478. package/dist/lib/esm/obsidian/vault-delete.d.mts +18 -0
  479. package/dist/lib/esm/obsidian/vault-delete.mjs +73 -0
  480. package/dist/lib/esm/obsidian/vault.d.mts +261 -0
  481. package/dist/lib/esm/obsidian/vault.mjs +440 -0
  482. package/dist/lib/esm/obsidian/workspace.mjs +36 -0
  483. package/dist/lib/esm/path.mjs +90 -0
  484. package/dist/lib/esm/reg-exp.mjs +144 -0
  485. package/dist/lib/esm/script-utils/build.mjs +76 -0
  486. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/changeExtensionPlugin.mjs +58 -0
  487. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copyToObsidianPluginsFolderPlugin.mjs +99 -0
  488. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/customEsbuildOptionsPlugin.mjs +33 -0
  489. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +109 -0
  490. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fixEsmPlugin.mjs +39 -0
  491. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fixSourceMapsPlugin.mjs +69 -0
  492. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.d.mts +10 -0
  493. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.mjs +44 -0
  494. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +89 -0
  495. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +174 -0
  496. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocessPlugin.mjs +185 -0
  497. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/renameCssPlugin.mjs +45 -0
  498. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelteWrapperPlugin.mjs +56 -0
  499. package/dist/lib/esm/script-utils/bundlers/esbuild.d.mts +10 -0
  500. package/dist/lib/esm/script-utils/bundlers/esbuild.mjs +38 -0
  501. package/dist/lib/esm/script-utils/bundlers/index.d.mts +2 -0
  502. package/dist/lib/esm/script-utils/bundlers/index.mjs +28 -0
  503. package/dist/lib/esm/script-utils/cli-utils.d.mts +76 -0
  504. package/dist/lib/esm/script-utils/cli-utils.mjs +156 -0
  505. package/dist/lib/esm/script-utils/code-generator.mjs +33 -0
  506. package/dist/lib/esm/script-utils/exec.d.mts +84 -0
  507. package/dist/lib/esm/script-utils/exec.mjs +111 -0
  508. package/dist/lib/esm/script-utils/formatters/dprint.mjs +52 -0
  509. package/dist/lib/esm/script-utils/formatters/index.d.mts +1 -0
  510. package/dist/lib/esm/script-utils/formatters/index.mjs +26 -0
  511. package/dist/lib/esm/script-utils/fs.d.mts +75 -0
  512. package/dist/lib/esm/script-utils/fs.mjs +78 -0
  513. package/dist/lib/esm/script-utils/index.d.mts +18 -0
  514. package/dist/lib/esm/script-utils/index.mjs +60 -0
  515. package/dist/lib/esm/script-utils/json.d.mts +65 -0
  516. package/dist/lib/esm/script-utils/json.mjs +74 -0
  517. package/dist/lib/esm/script-utils/linters/cspell.mjs +29 -0
  518. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +485 -0
  519. package/dist/lib/esm/script-utils/linters/eslint.mjs +66 -0
  520. package/dist/lib/esm/script-utils/linters/index.d.mts +5 -0
  521. package/dist/lib/esm/script-utils/linters/index.mjs +34 -0
  522. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.d.mts +10 -0
  523. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +56 -0
  524. package/dist/lib/esm/script-utils/linters/markdownlint.d.mts +11 -0
  525. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +98 -0
  526. package/dist/lib/esm/script-utils/node-modules.mjs +92 -0
  527. package/dist/lib/esm/script-utils/npm-publish.mjs +44 -0
  528. package/dist/lib/esm/script-utils/npm-run.mjs +44 -0
  529. package/dist/lib/esm/script-utils/npm.d.mts +149 -0
  530. package/dist/lib/esm/script-utils/npm.mjs +120 -0
  531. package/dist/lib/esm/script-utils/obsidian-cli.d.mts +23 -0
  532. package/dist/lib/esm/script-utils/obsidian-cli.mjs +33 -0
  533. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +100 -0
  534. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +72 -0
  535. package/dist/lib/esm/script-utils/root.d.mts +68 -0
  536. package/dist/lib/esm/script-utils/root.mjs +80 -0
  537. package/dist/lib/esm/script-utils/test-runners/index.d.mts +1 -0
  538. package/dist/lib/esm/script-utils/test-runners/index.mjs +26 -0
  539. package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +23 -0
  540. package/dist/lib/esm/script-utils/test-runners/vitest.mjs +37 -0
  541. package/dist/lib/esm/script-utils/version.d.mts +176 -0
  542. package/dist/lib/esm/script-utils/version.mjs +380 -0
  543. package/dist/lib/esm/string.d.mts +186 -0
  544. package/dist/lib/esm/string.mjs +211 -0
  545. package/dist/lib/esm/transformers/date-transformer.d.mts +38 -0
  546. package/dist/lib/esm/transformers/date-transformer.mjs +63 -0
  547. package/dist/lib/esm/transformers/duration-transformer.d.mts +38 -0
  548. package/dist/lib/esm/transformers/duration-transformer.mjs +65 -0
  549. package/dist/lib/esm/transformers/group-transformer.d.mts +69 -0
  550. package/dist/lib/esm/transformers/group-transformer.mjs +112 -0
  551. package/dist/lib/esm/transformers/index.d.mts +9 -0
  552. package/dist/lib/esm/transformers/index.mjs +42 -0
  553. package/dist/lib/esm/transformers/map-transformer.d.mts +40 -0
  554. package/dist/lib/esm/transformers/map-transformer.mjs +63 -0
  555. package/dist/lib/esm/transformers/set-transformer.d.mts +38 -0
  556. package/dist/lib/esm/transformers/set-transformer.mjs +63 -0
  557. package/dist/lib/esm/transformers/skip-private-property-transformer.d.mts +35 -0
  558. package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +61 -0
  559. package/dist/lib/esm/transformers/transformer.d.mts +69 -0
  560. package/dist/lib/esm/transformers/transformer.mjs +104 -0
  561. package/dist/lib/esm/transformers/two-way-map-transformer.d.mts +41 -0
  562. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +64 -0
  563. package/dist/lib/esm/transformers/typed-transformer.d.mts +38 -0
  564. package/dist/lib/esm/transformers/typed-transformer.mjs +28 -0
  565. package/dist/lib/esm/two-way-map.mjs +142 -0
  566. package/dist/lib/esm/type-guards.mjs +47 -0
  567. package/dist/lib/esm/type.mjs +36 -0
  568. package/dist/lib/esm/value-provider.mjs +37 -0
  569. package/dist/scripts/default/build-clean.ts +1 -1
  570. package/dist/scripts/default/build-compile-svelte.ts +1 -1
  571. package/dist/scripts/default/build-compile-typescript.ts +1 -1
  572. package/dist/scripts/default/build-compile.ts +1 -1
  573. package/dist/scripts/default/build-static.ts +1 -1
  574. package/dist/scripts/default/build.ts +2 -2
  575. package/dist/scripts/default/dev.ts +2 -2
  576. package/dist/scripts/default/format-check.ts +1 -1
  577. package/dist/scripts/default/format.ts +1 -1
  578. package/dist/scripts/default/lint-fix.ts +1 -1
  579. package/dist/scripts/default/lint.ts +1 -1
  580. package/dist/scripts/default/publish.ts +1 -1
  581. package/dist/scripts/default/spellcheck.ts +1 -1
  582. package/dist/scripts/default/version.ts +1 -1
  583. package/dist/scripts/examples/build.customPlugin.ts +3 -3
  584. package/dist/scripts/examples/build.svelteConditions.ts +2 -2
  585. package/dist/scripts/examples/eslint.config.extend.mts +1 -1
  586. package/dist/scripts/examples/format.prettier.ts +4 -4
  587. package/obsidian/@types/Dataview/api/data-array/package.json +1 -1
  588. package/obsidian/@types/Dataview/api/extensions/package.json +1 -1
  589. package/obsidian/@types/Dataview/api/inline-api/package.json +1 -1
  590. package/obsidian/@types/Dataview/api/plugin-api/package.json +1 -1
  591. package/obsidian/@types/Dataview/api/result/package.json +1 -1
  592. package/obsidian/@types/Dataview/data-import/common/package.json +1 -1
  593. package/obsidian/@types/Dataview/data-import/csv/package.json +1 -1
  594. package/obsidian/@types/Dataview/data-import/inline-field/package.json +1 -1
  595. package/obsidian/@types/Dataview/data-import/markdown-file/package.json +1 -1
  596. package/obsidian/@types/Dataview/data-import/persister/package.json +1 -1
  597. package/obsidian/@types/Dataview/data-import/web-worker/import-entry/package.json +1 -1
  598. package/obsidian/@types/Dataview/data-import/web-worker/import-impl/package.json +1 -1
  599. package/obsidian/@types/Dataview/data-import/web-worker/import-manager/package.json +1 -1
  600. package/obsidian/@types/Dataview/data-index/index/package.json +1 -1
  601. package/obsidian/@types/Dataview/data-index/package.json +1 -1
  602. package/obsidian/@types/Dataview/data-index/resolver/package.json +1 -1
  603. package/obsidian/@types/Dataview/data-index/source/package.json +1 -1
  604. package/obsidian/@types/Dataview/data-model/markdown/package.json +1 -1
  605. package/obsidian/@types/Dataview/data-model/serialized/markdown/package.json +1 -1
  606. package/obsidian/@types/Dataview/data-model/transferable/package.json +1 -1
  607. package/obsidian/@types/Dataview/data-model/value/package.json +1 -1
  608. package/obsidian/@types/Dataview/expression/binaryop/package.json +1 -1
  609. package/obsidian/@types/Dataview/expression/context/package.json +1 -1
  610. package/obsidian/@types/Dataview/expression/field/package.json +1 -1
  611. package/obsidian/@types/Dataview/expression/functions/package.json +1 -1
  612. package/obsidian/@types/Dataview/expression/parse/package.json +1 -1
  613. package/obsidian/@types/Dataview/index/package.json +1 -1
  614. package/obsidian/@types/Dataview/main/package.json +1 -1
  615. package/obsidian/@types/Dataview/package.json +1 -1
  616. package/obsidian/@types/Dataview/query/engine/package.json +1 -1
  617. package/obsidian/@types/Dataview/query/parse/package.json +1 -1
  618. package/obsidian/@types/Dataview/query/query/package.json +1 -1
  619. package/obsidian/@types/Dataview/settings/package.json +1 -1
  620. package/obsidian/@types/Dataview/typings/obsidian-ex/package.json +1 -1
  621. package/obsidian/@types/Dataview/typings/workers/package.json +1 -1
  622. package/obsidian/@types/Dataview/ui/export/markdown/package.json +1 -1
  623. package/obsidian/@types/Dataview/ui/lp-render/package.json +1 -1
  624. package/obsidian/@types/Dataview/ui/markdown/package.json +1 -1
  625. package/obsidian/@types/Dataview/ui/refreshable-view/package.json +1 -1
  626. package/obsidian/@types/Dataview/ui/render/package.json +1 -1
  627. package/obsidian/@types/Dataview/ui/views/calendar-view/package.json +1 -1
  628. package/obsidian/@types/Dataview/ui/views/inline-field-live-preview/package.json +1 -1
  629. package/obsidian/@types/Dataview/ui/views/inline-view/package.json +1 -1
  630. package/obsidian/@types/Dataview/ui/views/js-view/package.json +1 -1
  631. package/obsidian/@types/Dataview/ui/views/list-view/package.json +1 -1
  632. package/obsidian/@types/Dataview/ui/views/table-view/package.json +1 -1
  633. package/obsidian/@types/Dataview/ui/views/task-view/package.json +1 -1
  634. package/obsidian/@types/Dataview/util/hash/package.json +1 -1
  635. package/obsidian/@types/Dataview/util/locale/package.json +1 -1
  636. package/obsidian/@types/Dataview/util/media/package.json +1 -1
  637. package/obsidian/@types/Dataview/util/normalize/package.json +1 -1
  638. package/obsidian/App/package.json +3 -3
  639. package/obsidian/Backlink/package.json +3 -3
  640. package/obsidian/Callout/package.json +3 -3
  641. package/obsidian/Commands/abstract-file-command-base/package.json +6 -0
  642. package/obsidian/Commands/command-base/package.json +6 -0
  643. package/obsidian/Commands/editor-command-base/package.json +6 -0
  644. package/obsidian/Commands/file-command-base/package.json +6 -0
  645. package/obsidian/Commands/folder-command-base/package.json +6 -0
  646. package/obsidian/Commands/index/package.json +3 -3
  647. package/obsidian/Commands/non-editor-command-base/package.json +6 -0
  648. package/obsidian/Commands/package.json +3 -3
  649. package/obsidian/Components/async-events-component/package.json +6 -0
  650. package/obsidian/Components/index/package.json +3 -3
  651. package/obsidian/Components/package.json +3 -3
  652. package/obsidian/Components/setting-components/checkbox-component/package.json +6 -0
  653. package/obsidian/Components/setting-components/code-highlighter-component/package.json +6 -0
  654. package/obsidian/Components/setting-components/date-component/package.json +6 -0
  655. package/obsidian/Components/setting-components/date-time-component/package.json +6 -0
  656. package/obsidian/Components/setting-components/email-component/package.json +6 -0
  657. package/obsidian/Components/setting-components/file-component/package.json +6 -0
  658. package/obsidian/Components/setting-components/index/package.json +6 -0
  659. package/obsidian/Components/setting-components/month-component/package.json +6 -0
  660. package/obsidian/Components/setting-components/multiple-dropdown-component/package.json +6 -0
  661. package/obsidian/Components/setting-components/multiple-email-component/package.json +6 -0
  662. package/obsidian/Components/setting-components/multiple-file-component/package.json +6 -0
  663. package/obsidian/Components/setting-components/multiple-text-component/package.json +6 -0
  664. package/obsidian/Components/setting-components/number-component/package.json +6 -0
  665. package/obsidian/Components/setting-components/package.json +6 -0
  666. package/obsidian/Components/setting-components/password-component/package.json +6 -0
  667. package/obsidian/Components/setting-components/setting-component-wrapper/package.json +6 -0
  668. package/obsidian/Components/setting-components/telephone-component/package.json +6 -0
  669. package/obsidian/Components/setting-components/text-based-component/package.json +6 -0
  670. package/obsidian/Components/setting-components/time-component/package.json +6 -0
  671. package/obsidian/Components/setting-components/tri-state-checkbox-component/package.json +6 -0
  672. package/obsidian/Components/setting-components/typed-dropdown-component/package.json +6 -0
  673. package/obsidian/Components/setting-components/typed-multiple-dropdown-component/package.json +6 -0
  674. package/obsidian/Components/setting-components/typed-range-text-component/package.json +6 -0
  675. package/obsidian/Components/setting-components/typed-text-component/package.json +6 -0
  676. package/obsidian/Components/setting-components/url-component/package.json +6 -0
  677. package/obsidian/Components/setting-components/validator-component/package.json +6 -0
  678. package/obsidian/Components/setting-components/value-component-with-change-tracking/package.json +6 -0
  679. package/obsidian/Components/setting-components/week-component/package.json +6 -0
  680. package/obsidian/Dataview/package.json +3 -3
  681. package/obsidian/Editor/package.json +3 -3
  682. package/obsidian/Frontmatter/package.json +3 -3
  683. package/obsidian/Link/package.json +3 -3
  684. package/obsidian/Logger/package.json +3 -3
  685. package/obsidian/Loop/package.json +3 -3
  686. package/obsidian/Markdown/package.json +3 -3
  687. package/obsidian/Modals/Alert/package.json +3 -3
  688. package/obsidian/Modals/Confirm/package.json +3 -3
  689. package/obsidian/Modals/Prompt/package.json +3 -3
  690. package/obsidian/Modals/index/package.json +3 -3
  691. package/obsidian/Modals/modal-base/package.json +6 -0
  692. package/obsidian/Modals/package.json +3 -3
  693. package/obsidian/Modals/select-item/package.json +6 -0
  694. package/obsidian/Pdf/package.json +3 -3
  695. package/obsidian/Plugin/Plugin/package.json +3 -3
  696. package/obsidian/Plugin/index/package.json +3 -3
  697. package/obsidian/Plugin/obsidian-plugin-repo-paths/package.json +6 -0
  698. package/obsidian/Plugin/package.json +3 -3
  699. package/obsidian/Plugin/path-settings/package.json +6 -0
  700. package/obsidian/Plugin/plugin-base/package.json +6 -0
  701. package/obsidian/Plugin/plugin-context/package.json +6 -0
  702. package/obsidian/Plugin/plugin-id/package.json +6 -0
  703. package/obsidian/Plugin/plugin-settings-manager-base/package.json +6 -0
  704. package/obsidian/Plugin/plugin-settings-tab-base/package.json +6 -0
  705. package/obsidian/Plugin/plugin-settings-wrapper/package.json +6 -0
  706. package/obsidian/Plugin/plugin-types-base/package.json +6 -0
  707. package/obsidian/Queue/package.json +3 -3
  708. package/obsidian/React/app-context/package.json +6 -0
  709. package/obsidian/React/index/package.json +3 -3
  710. package/obsidian/React/package.json +3 -3
  711. package/obsidian/Reference/package.json +3 -3
  712. package/obsidian/Validation/package.json +3 -3
  713. package/obsidian/Vault/package.json +3 -3
  714. package/obsidian/Workspace/package.json +3 -3
  715. package/obsidian/async-with-notice/package.json +6 -0
  716. package/obsidian/attachment-path/package.json +6 -0
  717. package/obsidian/code-block-markdown-information/package.json +6 -0
  718. package/obsidian/constructors/getDomEventsHandlersConstructor/package.json +6 -0
  719. package/obsidian/constructors/index/package.json +6 -0
  720. package/obsidian/constructors/package.json +6 -0
  721. package/obsidian/dataview-link/package.json +6 -0
  722. package/obsidian/file-change/package.json +6 -0
  723. package/obsidian/file-manager/package.json +6 -0
  724. package/obsidian/file-system/package.json +6 -0
  725. package/obsidian/frontmatter-link-cache-with-offsets/package.json +6 -0
  726. package/obsidian/i18n/custom-type-options-base/package.json +6 -0
  727. package/obsidian/i18n/default-translations-base/package.json +6 -0
  728. package/obsidian/markdown-code-block-processor/package.json +6 -0
  729. package/obsidian/markdown-view/package.json +6 -0
  730. package/obsidian/metadata-cache/package.json +6 -0
  731. package/obsidian/monkey-around/package.json +6 -0
  732. package/obsidian/obsidian-settings/package.json +6 -0
  733. package/obsidian/rename-delete-handler/package.json +6 -0
  734. package/obsidian/resource-url/package.json +6 -0
  735. package/obsidian/setting-ex/package.json +6 -0
  736. package/obsidian/setting-group-ex/package.json +6 -0
  737. package/obsidian/vault-delete/package.json +6 -0
  738. package/package.json +307 -228
  739. package/script-utils/build/package.json +6 -0
  740. package/script-utils/bundlers/esbuild/package.json +6 -0
  741. package/script-utils/bundlers/esbuild-impl/changeExtensionPlugin/package.json +6 -0
  742. package/script-utils/bundlers/esbuild-impl/copyToObsidianPluginsFolderPlugin/package.json +6 -0
  743. package/script-utils/bundlers/esbuild-impl/customEsbuildOptionsPlugin/package.json +6 -0
  744. package/script-utils/bundlers/esbuild-impl/dependency/package.json +6 -0
  745. package/script-utils/bundlers/esbuild-impl/fixEsmPlugin/package.json +6 -0
  746. package/script-utils/bundlers/esbuild-impl/fixSourceMapsPlugin/package.json +6 -0
  747. package/script-utils/bundlers/esbuild-impl/index/package.json +6 -0
  748. package/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder/package.json +6 -0
  749. package/script-utils/bundlers/esbuild-impl/package.json +6 -0
  750. package/script-utils/bundlers/esbuild-impl/preprocessPlugin/package.json +6 -0
  751. package/script-utils/bundlers/esbuild-impl/renameCssPlugin/package.json +6 -0
  752. package/script-utils/bundlers/esbuild-impl/svelteWrapperPlugin/package.json +6 -0
  753. package/script-utils/bundlers/index/package.json +6 -0
  754. package/script-utils/bundlers/package.json +6 -0
  755. package/script-utils/cli-utils/package.json +6 -0
  756. package/script-utils/code-generator/package.json +6 -0
  757. package/script-utils/exec/package.json +6 -0
  758. package/script-utils/formatters/dprint/package.json +6 -0
  759. package/script-utils/formatters/index/package.json +6 -0
  760. package/script-utils/formatters/package.json +6 -0
  761. package/script-utils/fs/package.json +6 -0
  762. package/script-utils/index/package.json +6 -0
  763. package/script-utils/json/package.json +6 -0
  764. package/script-utils/linters/cspell/package.json +6 -0
  765. package/script-utils/linters/eslint/package.json +6 -0
  766. package/script-utils/linters/eslint-config/package.json +6 -0
  767. package/script-utils/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs/package.json +4 -0
  768. package/script-utils/linters/eslint-types/@types/@guardian__eslint-plugin-tsdoc-required/package.json +4 -0
  769. package/script-utils/linters/eslint-types/@types/eslint-plugin-modules-newlines/package.json +4 -0
  770. package/script-utils/linters/eslint-types/@types/eslint-plugin-verify-tsdoc/package.json +4 -0
  771. package/script-utils/linters/index/package.json +6 -0
  772. package/script-utils/linters/markdownlint/package.json +6 -0
  773. package/script-utils/linters/markdownlint-cli2-config/package.json +6 -0
  774. package/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema/package.json +4 -0
  775. package/script-utils/linters/package.json +6 -0
  776. package/script-utils/node-modules/package.json +6 -0
  777. package/script-utils/npm/package.json +6 -0
  778. package/script-utils/npm-publish/package.json +6 -0
  779. package/script-utils/npm-run/package.json +6 -0
  780. package/script-utils/obsidian-cli/package.json +6 -0
  781. package/script-utils/obsidian-dev-utils-repo-paths/package.json +6 -0
  782. package/script-utils/package.json +6 -0
  783. package/script-utils/root/package.json +6 -0
  784. package/script-utils/test-runners/index/package.json +6 -0
  785. package/script-utils/test-runners/package.json +6 -0
  786. package/script-utils/test-runners/vitest/package.json +6 -0
  787. package/script-utils/version/package.json +6 -0
  788. package/ScriptUtils/CliUtils/package.json +0 -6
  789. package/ScriptUtils/CodeGenerator/package.json +0 -6
  790. package/ScriptUtils/ESLint/@types/@eslint-community__eslint-plugin-eslint-comments__configs/package.json +0 -4
  791. package/ScriptUtils/ESLint/@types/@guardian__eslint-plugin-tsdoc-required/package.json +0 -4
  792. package/ScriptUtils/ESLint/@types/eslint-plugin-modules-newlines/package.json +0 -4
  793. package/ScriptUtils/ESLint/@types/eslint-plugin-verify-tsdoc/package.json +0 -4
  794. package/ScriptUtils/ESLint/ESLint/package.json +0 -6
  795. package/ScriptUtils/ESLint/eslint.config/package.json +0 -6
  796. package/ScriptUtils/ESLint/index/package.json +0 -6
  797. package/ScriptUtils/ESLint/package.json +0 -6
  798. package/ScriptUtils/Exec/package.json +0 -6
  799. package/ScriptUtils/Fs/package.json +0 -6
  800. package/ScriptUtils/JSON/package.json +0 -6
  801. package/ScriptUtils/NodeModules/package.json +0 -6
  802. package/ScriptUtils/Npm/package.json +0 -6
  803. package/ScriptUtils/NpmPublish/package.json +0 -6
  804. package/ScriptUtils/NpmRun/package.json +0 -6
  805. package/ScriptUtils/ObsidianDevUtilsRepoPaths/package.json +0 -6
  806. package/ScriptUtils/Root/package.json +0 -6
  807. package/ScriptUtils/build/package.json +0 -6
  808. package/ScriptUtils/cli/package.json +0 -6
  809. package/ScriptUtils/esbuild/Dependency/package.json +0 -6
  810. package/ScriptUtils/esbuild/ObsidianPluginBuilder/package.json +0 -6
  811. package/ScriptUtils/esbuild/changeExtensionPlugin/package.json +0 -6
  812. package/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin/package.json +0 -6
  813. package/ScriptUtils/esbuild/customEsbuildOptionsPlugin/package.json +0 -6
  814. package/ScriptUtils/esbuild/fixEsmPlugin/package.json +0 -6
  815. package/ScriptUtils/esbuild/fixSourceMapsPlugin/package.json +0 -6
  816. package/ScriptUtils/esbuild/index/package.json +0 -6
  817. package/ScriptUtils/esbuild/package.json +0 -6
  818. package/ScriptUtils/esbuild/preprocessPlugin/package.json +0 -6
  819. package/ScriptUtils/esbuild/renameCssPlugin/package.json +0 -6
  820. package/ScriptUtils/esbuild/svelteWrapperPlugin/package.json +0 -6
  821. package/ScriptUtils/format/package.json +0 -6
  822. package/ScriptUtils/index/package.json +0 -6
  823. package/ScriptUtils/markdownlint/@types/markdownlint-cli2-config-schema/package.json +0 -4
  824. package/ScriptUtils/markdownlint/index/package.json +0 -6
  825. package/ScriptUtils/markdownlint/markdownlint/package.json +0 -6
  826. package/ScriptUtils/markdownlint/markdownlint-cli2-config/package.json +0 -6
  827. package/ScriptUtils/markdownlint/package.json +0 -6
  828. package/ScriptUtils/package.json +0 -6
  829. package/ScriptUtils/spellcheck/package.json +0 -6
  830. package/ScriptUtils/version/package.json +0 -6
  831. package/Transformers/DateTransformer/package.json +0 -6
  832. package/Transformers/DurationTransformer/package.json +0 -6
  833. package/Transformers/GroupTransformer/package.json +0 -6
  834. package/Transformers/MapTransformer/package.json +0 -6
  835. package/Transformers/SetTransformer/package.json +0 -6
  836. package/Transformers/SkipPrivatePropertyTransformer/package.json +0 -6
  837. package/Transformers/TwoWayMapTransformer/package.json +0 -6
  838. package/Transformers/TypedTransformer/package.json +0 -6
  839. package/codemirror/StateFieldSpec/package.json +0 -6
  840. package/dist/bin/cli.cjs +0 -3
  841. package/dist/lib/cjs/AbortController.cjs +0 -212
  842. package/dist/lib/cjs/Array.cjs +0 -169
  843. package/dist/lib/cjs/Async.cjs +0 -469
  844. package/dist/lib/cjs/Async.d.cts +0 -326
  845. package/dist/lib/cjs/AsyncEvents.cjs +0 -319
  846. package/dist/lib/cjs/Blob.cjs +0 -204
  847. package/dist/lib/cjs/Blob.d.cts +0 -41
  848. package/dist/lib/cjs/CssClass.cjs +0 -169
  849. package/dist/lib/cjs/Debug.cjs +0 -270
  850. package/dist/lib/cjs/Debug.d.cts +0 -47
  851. package/dist/lib/cjs/DebugController.cjs +0 -120
  852. package/dist/lib/cjs/Enum.cjs +0 -140
  853. package/dist/lib/cjs/Error.cjs +0 -245
  854. package/dist/lib/cjs/Function.cjs +0 -151
  855. package/dist/lib/cjs/HTMLElement.cjs +0 -288
  856. package/dist/lib/cjs/HTMLElement.d.cts +0 -122
  857. package/dist/lib/cjs/Library.cjs +0 -138
  858. package/dist/lib/cjs/ObjectUtils.cjs +0 -554
  859. package/dist/lib/cjs/ObjectUtils.d.cts +0 -255
  860. package/dist/lib/cjs/Path.cjs +0 -221
  861. package/dist/lib/cjs/RegExp.cjs +0 -255
  862. package/dist/lib/cjs/ScriptUtils/CliUtils.cjs +0 -256
  863. package/dist/lib/cjs/ScriptUtils/CliUtils.d.cts +0 -72
  864. package/dist/lib/cjs/ScriptUtils/CodeGenerator.cjs +0 -139
  865. package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.cjs +0 -175
  866. package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.cjs +0 -599
  867. package/dist/lib/cjs/ScriptUtils/ESLint/index.cjs +0 -145
  868. package/dist/lib/cjs/ScriptUtils/ESLint/index.d.cts +0 -2
  869. package/dist/lib/cjs/ScriptUtils/Exec.cjs +0 -214
  870. package/dist/lib/cjs/ScriptUtils/Exec.d.cts +0 -84
  871. package/dist/lib/cjs/ScriptUtils/Fs.cjs +0 -181
  872. package/dist/lib/cjs/ScriptUtils/Fs.d.cts +0 -75
  873. package/dist/lib/cjs/ScriptUtils/JSON.cjs +0 -179
  874. package/dist/lib/cjs/ScriptUtils/JSON.d.cts +0 -65
  875. package/dist/lib/cjs/ScriptUtils/NodeModules.cjs +0 -207
  876. package/dist/lib/cjs/ScriptUtils/Npm.cjs +0 -234
  877. package/dist/lib/cjs/ScriptUtils/Npm.d.cts +0 -149
  878. package/dist/lib/cjs/ScriptUtils/NpmPublish.cjs +0 -143
  879. package/dist/lib/cjs/ScriptUtils/NpmRun.cjs +0 -151
  880. package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.cjs +0 -178
  881. package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.d.cts +0 -100
  882. package/dist/lib/cjs/ScriptUtils/Root.cjs +0 -184
  883. package/dist/lib/cjs/ScriptUtils/Root.d.cts +0 -68
  884. package/dist/lib/cjs/ScriptUtils/build.cjs +0 -179
  885. package/dist/lib/cjs/ScriptUtils/cli.cjs +0 -207
  886. package/dist/lib/cjs/ScriptUtils/cli.d.cts +0 -15
  887. package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.cjs +0 -220
  888. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +0 -275
  889. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.d.cts +0 -58
  890. package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.cjs +0 -164
  891. package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.cjs +0 -169
  892. package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.cjs +0 -139
  893. package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.cjs +0 -145
  894. package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.cjs +0 -171
  895. package/dist/lib/cjs/ScriptUtils/esbuild/index.cjs +0 -169
  896. package/dist/lib/cjs/ScriptUtils/esbuild/index.d.cts +0 -10
  897. package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.cjs +0 -298
  898. package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.cjs +0 -148
  899. package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.cjs +0 -172
  900. package/dist/lib/cjs/ScriptUtils/format.cjs +0 -164
  901. package/dist/lib/cjs/ScriptUtils/index.cjs +0 -196
  902. package/dist/lib/cjs/ScriptUtils/index.d.cts +0 -19
  903. package/dist/lib/cjs/ScriptUtils/markdownlint/index.cjs +0 -145
  904. package/dist/lib/cjs/ScriptUtils/markdownlint/index.d.cts +0 -2
  905. package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint-cli2-config.cjs +0 -172
  906. package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint-cli2-config.d.cts +0 -10
  907. package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint.cjs +0 -206
  908. package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint.d.cts +0 -11
  909. package/dist/lib/cjs/ScriptUtils/spellcheck.cjs +0 -135
  910. package/dist/lib/cjs/ScriptUtils/version.cjs +0 -484
  911. package/dist/lib/cjs/ScriptUtils/version.d.cts +0 -167
  912. package/dist/lib/cjs/String.cjs +0 -333
  913. package/dist/lib/cjs/String.d.cts +0 -186
  914. package/dist/lib/cjs/Transformers/DateTransformer.cjs +0 -169
  915. package/dist/lib/cjs/Transformers/DateTransformer.d.cts +0 -38
  916. package/dist/lib/cjs/Transformers/DurationTransformer.cjs +0 -171
  917. package/dist/lib/cjs/Transformers/DurationTransformer.d.cts +0 -38
  918. package/dist/lib/cjs/Transformers/GroupTransformer.cjs +0 -215
  919. package/dist/lib/cjs/Transformers/GroupTransformer.d.cts +0 -69
  920. package/dist/lib/cjs/Transformers/MapTransformer.cjs +0 -169
  921. package/dist/lib/cjs/Transformers/MapTransformer.d.cts +0 -40
  922. package/dist/lib/cjs/Transformers/SetTransformer.cjs +0 -169
  923. package/dist/lib/cjs/Transformers/SetTransformer.d.cts +0 -38
  924. package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.cjs +0 -167
  925. package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.d.cts +0 -35
  926. package/dist/lib/cjs/Transformers/Transformer.cjs +0 -210
  927. package/dist/lib/cjs/Transformers/Transformer.d.cts +0 -69
  928. package/dist/lib/cjs/Transformers/TwoWayMapTransformer.cjs +0 -170
  929. package/dist/lib/cjs/Transformers/TwoWayMapTransformer.d.cts +0 -41
  930. package/dist/lib/cjs/Transformers/TypedTransformer.cjs +0 -134
  931. package/dist/lib/cjs/Transformers/TypedTransformer.d.cts +0 -38
  932. package/dist/lib/cjs/Transformers/index.cjs +0 -166
  933. package/dist/lib/cjs/Transformers/index.d.cts +0 -9
  934. package/dist/lib/cjs/TwoWayMap.cjs +0 -248
  935. package/dist/lib/cjs/Type.cjs +0 -142
  936. package/dist/lib/cjs/TypeGuards.cjs +0 -156
  937. package/dist/lib/cjs/ValueProvider.cjs +0 -143
  938. package/dist/lib/cjs/codemirror/StateFieldSpec.cjs +0 -120
  939. package/dist/lib/cjs/obsidian/App.cjs +0 -170
  940. package/dist/lib/cjs/obsidian/AsyncWithNotice.cjs +0 -200
  941. package/dist/lib/cjs/obsidian/AsyncWithNotice.d.cts +0 -82
  942. package/dist/lib/cjs/obsidian/AttachmentPath.cjs +0 -234
  943. package/dist/lib/cjs/obsidian/AttachmentPath.d.cts +0 -181
  944. package/dist/lib/cjs/obsidian/Backlink.cjs +0 -206
  945. package/dist/lib/cjs/obsidian/Backlink.d.cts +0 -61
  946. package/dist/lib/cjs/obsidian/Callout.cjs +0 -203
  947. package/dist/lib/cjs/obsidian/Callout.d.cts +0 -61
  948. package/dist/lib/cjs/obsidian/CodeBlockMarkdownInformation.cjs +0 -120
  949. package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.cjs +0 -436
  950. package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.d.cts +0 -264
  951. package/dist/lib/cjs/obsidian/Commands/CommandBase.cjs +0 -252
  952. package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.cjs +0 -278
  953. package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.d.cts +0 -139
  954. package/dist/lib/cjs/obsidian/Commands/FileCommandBase.cjs +0 -338
  955. package/dist/lib/cjs/obsidian/Commands/FileCommandBase.d.cts +0 -191
  956. package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.cjs +0 -330
  957. package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.d.cts +0 -184
  958. package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.cjs +0 -152
  959. package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.d.cts +0 -34
  960. package/dist/lib/cjs/obsidian/Commands/index.cjs +0 -157
  961. package/dist/lib/cjs/obsidian/Commands/index.d.cts +0 -6
  962. package/dist/lib/cjs/obsidian/Components/AsyncEventsComponent.cjs +0 -149
  963. package/dist/lib/cjs/obsidian/Components/AsyncEventsComponent.d.cts +0 -25
  964. package/dist/lib/cjs/obsidian/Components/SettingComponents/CheckboxComponent.cjs +0 -205
  965. package/dist/lib/cjs/obsidian/Components/SettingComponents/CheckboxComponent.d.cts +0 -69
  966. package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.cjs +0 -352
  967. package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.d.cts +0 -118
  968. package/dist/lib/cjs/obsidian/Components/SettingComponents/DateComponent.cjs +0 -165
  969. package/dist/lib/cjs/obsidian/Components/SettingComponents/DateComponent.d.cts +0 -37
  970. package/dist/lib/cjs/obsidian/Components/SettingComponents/DateTimeComponent.cjs +0 -165
  971. package/dist/lib/cjs/obsidian/Components/SettingComponents/DateTimeComponent.d.cts +0 -37
  972. package/dist/lib/cjs/obsidian/Components/SettingComponents/EmailComponent.cjs +0 -176
  973. package/dist/lib/cjs/obsidian/Components/SettingComponents/EmailComponent.d.cts +0 -48
  974. package/dist/lib/cjs/obsidian/Components/SettingComponents/FileComponent.cjs +0 -168
  975. package/dist/lib/cjs/obsidian/Components/SettingComponents/FileComponent.d.cts +0 -42
  976. package/dist/lib/cjs/obsidian/Components/SettingComponents/MonthComponent.cjs +0 -173
  977. package/dist/lib/cjs/obsidian/Components/SettingComponents/MonthComponent.d.cts +0 -50
  978. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.cjs +0 -237
  979. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.d.cts +0 -87
  980. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleEmailComponent.cjs +0 -162
  981. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleEmailComponent.d.cts +0 -37
  982. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleFileComponent.cjs +0 -169
  983. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleFileComponent.d.cts +0 -42
  984. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.cjs +0 -250
  985. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.d.cts +0 -98
  986. package/dist/lib/cjs/obsidian/Components/SettingComponents/NumberComponent.cjs +0 -186
  987. package/dist/lib/cjs/obsidian/Components/SettingComponents/NumberComponent.d.cts +0 -55
  988. package/dist/lib/cjs/obsidian/Components/SettingComponents/PasswordComponent.cjs +0 -162
  989. package/dist/lib/cjs/obsidian/Components/SettingComponents/PasswordComponent.d.cts +0 -37
  990. package/dist/lib/cjs/obsidian/Components/SettingComponents/SettingComponentWrapper.cjs +0 -149
  991. package/dist/lib/cjs/obsidian/Components/SettingComponents/TelephoneComponent.cjs +0 -176
  992. package/dist/lib/cjs/obsidian/Components/SettingComponents/TelephoneComponent.d.cts +0 -50
  993. package/dist/lib/cjs/obsidian/Components/SettingComponents/TextBasedComponent.cjs +0 -161
  994. package/dist/lib/cjs/obsidian/Components/SettingComponents/TimeComponent.cjs +0 -170
  995. package/dist/lib/cjs/obsidian/Components/SettingComponents/TimeComponent.d.cts +0 -37
  996. package/dist/lib/cjs/obsidian/Components/SettingComponents/TriStateCheckboxComponent.cjs +0 -206
  997. package/dist/lib/cjs/obsidian/Components/SettingComponents/TriStateCheckboxComponent.d.cts +0 -69
  998. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.cjs +0 -243
  999. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.d.cts +0 -89
  1000. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.cjs +0 -245
  1001. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.d.cts +0 -90
  1002. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedRangeTextComponent.cjs +0 -164
  1003. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedRangeTextComponent.d.cts +0 -34
  1004. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedTextComponent.cjs +0 -220
  1005. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedTextComponent.d.cts +0 -85
  1006. package/dist/lib/cjs/obsidian/Components/SettingComponents/UrlComponent.cjs +0 -176
  1007. package/dist/lib/cjs/obsidian/Components/SettingComponents/UrlComponent.d.cts +0 -48
  1008. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValidatorComponent.cjs +0 -220
  1009. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValidatorComponent.d.cts +0 -22
  1010. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking.cjs +0 -120
  1011. package/dist/lib/cjs/obsidian/Components/SettingComponents/WeekComponent.cjs +0 -173
  1012. package/dist/lib/cjs/obsidian/Components/SettingComponents/WeekComponent.d.cts +0 -50
  1013. package/dist/lib/cjs/obsidian/Components/SettingComponents/index.cjs +0 -217
  1014. package/dist/lib/cjs/obsidian/Components/SettingComponents/index.d.cts +0 -26
  1015. package/dist/lib/cjs/obsidian/Components/index.cjs +0 -145
  1016. package/dist/lib/cjs/obsidian/Components/index.d.cts +0 -2
  1017. package/dist/lib/cjs/obsidian/Dataview.cjs +0 -353
  1018. package/dist/lib/cjs/obsidian/Dataview.d.cts +0 -214
  1019. package/dist/lib/cjs/obsidian/DataviewLink.cjs +0 -144
  1020. package/dist/lib/cjs/obsidian/DataviewLink.d.cts +0 -24
  1021. package/dist/lib/cjs/obsidian/Editor.cjs +0 -162
  1022. package/dist/lib/cjs/obsidian/FileChange.cjs +0 -473
  1023. package/dist/lib/cjs/obsidian/FileChange.d.cts +0 -119
  1024. package/dist/lib/cjs/obsidian/FileManager.cjs +0 -193
  1025. package/dist/lib/cjs/obsidian/FileManager.d.cts +0 -40
  1026. package/dist/lib/cjs/obsidian/FileSystem.cjs +0 -406
  1027. package/dist/lib/cjs/obsidian/FileSystem.d.cts +0 -279
  1028. package/dist/lib/cjs/obsidian/Frontmatter.cjs +0 -149
  1029. package/dist/lib/cjs/obsidian/Frontmatter.d.cts +0 -74
  1030. package/dist/lib/cjs/obsidian/FrontmatterLinkCacheWithOffsets.cjs +0 -151
  1031. package/dist/lib/cjs/obsidian/Link.cjs +0 -887
  1032. package/dist/lib/cjs/obsidian/Link.d.cts +0 -716
  1033. package/dist/lib/cjs/obsidian/Logger.cjs +0 -174
  1034. package/dist/lib/cjs/obsidian/Loop.cjs +0 -225
  1035. package/dist/lib/cjs/obsidian/Markdown.cjs +0 -285
  1036. package/dist/lib/cjs/obsidian/Markdown.d.cts +0 -79
  1037. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +0 -362
  1038. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.d.cts +0 -107
  1039. package/dist/lib/cjs/obsidian/MarkdownView.cjs +0 -140
  1040. package/dist/lib/cjs/obsidian/MetadataCache.cjs +0 -367
  1041. package/dist/lib/cjs/obsidian/MetadataCache.d.cts +0 -137
  1042. package/dist/lib/cjs/obsidian/Modals/Alert.cjs +0 -166
  1043. package/dist/lib/cjs/obsidian/Modals/Confirm.cjs +0 -175
  1044. package/dist/lib/cjs/obsidian/Modals/ModalBase.cjs +0 -158
  1045. package/dist/lib/cjs/obsidian/Modals/ModalBase.d.cts +0 -42
  1046. package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +0 -210
  1047. package/dist/lib/cjs/obsidian/Modals/Prompt.d.cts +0 -53
  1048. package/dist/lib/cjs/obsidian/Modals/SelectItem.cjs +0 -170
  1049. package/dist/lib/cjs/obsidian/Modals/SelectItem.d.cts +0 -43
  1050. package/dist/lib/cjs/obsidian/Modals/index.cjs +0 -154
  1051. package/dist/lib/cjs/obsidian/Modals/index.d.cts +0 -5
  1052. package/dist/lib/cjs/obsidian/MonkeyAround.cjs +0 -173
  1053. package/dist/lib/cjs/obsidian/ObsidianSettings.cjs +0 -139
  1054. package/dist/lib/cjs/obsidian/Pdf.cjs +0 -162
  1055. package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.cjs +0 -179
  1056. package/dist/lib/cjs/obsidian/Plugin/PathSettings.cjs +0 -235
  1057. package/dist/lib/cjs/obsidian/Plugin/PathSettings.d.cts +0 -43
  1058. package/dist/lib/cjs/obsidian/Plugin/Plugin.cjs +0 -146
  1059. package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +0 -453
  1060. package/dist/lib/cjs/obsidian/Plugin/PluginBase.d.cts +0 -200
  1061. package/dist/lib/cjs/obsidian/Plugin/PluginContext.cjs +0 -165
  1062. package/dist/lib/cjs/obsidian/Plugin/PluginId.cjs +0 -145
  1063. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +0 -483
  1064. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.d.cts +0 -186
  1065. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +0 -401
  1066. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +0 -148
  1067. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsWrapper.cjs +0 -120
  1068. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsWrapper.d.cts +0 -25
  1069. package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.cjs +0 -120
  1070. package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.d.cts +0 -87
  1071. package/dist/lib/cjs/obsidian/Plugin/index.cjs +0 -169
  1072. package/dist/lib/cjs/obsidian/Plugin/index.d.cts +0 -10
  1073. package/dist/lib/cjs/obsidian/Queue.cjs +0 -201
  1074. package/dist/lib/cjs/obsidian/React/AppContext.cjs +0 -140
  1075. package/dist/lib/cjs/obsidian/React/index.cjs +0 -142
  1076. package/dist/lib/cjs/obsidian/React/index.d.cts +0 -1
  1077. package/dist/lib/cjs/obsidian/Reference.cjs +0 -177
  1078. package/dist/lib/cjs/obsidian/Reference.d.cts +0 -82
  1079. package/dist/lib/cjs/obsidian/RenameDeleteHandler.cjs +0 -837
  1080. package/dist/lib/cjs/obsidian/ResourceUrl.cjs +0 -139
  1081. package/dist/lib/cjs/obsidian/SettingEx.cjs +0 -361
  1082. package/dist/lib/cjs/obsidian/SettingEx.d.cts +0 -182
  1083. package/dist/lib/cjs/obsidian/SettingGroupEx.cjs +0 -154
  1084. package/dist/lib/cjs/obsidian/SettingGroupEx.d.cts +0 -25
  1085. package/dist/lib/cjs/obsidian/Validation.cjs +0 -159
  1086. package/dist/lib/cjs/obsidian/Vault.cjs +0 -499
  1087. package/dist/lib/cjs/obsidian/Vault.d.cts +0 -237
  1088. package/dist/lib/cjs/obsidian/VaultEx.cjs +0 -198
  1089. package/dist/lib/cjs/obsidian/VaultEx.d.cts +0 -36
  1090. package/dist/lib/cjs/obsidian/Workspace.cjs +0 -143
  1091. package/dist/lib/cjs/obsidian/i18n/CustomTypeOptionsBase.cjs +0 -121
  1092. package/dist/lib/cjs/obsidian/i18n/CustomTypeOptionsBase.d.cts +0 -31
  1093. package/dist/lib/cjs/obsidian/i18n/DefaultTranslationsBase.cjs +0 -121
  1094. package/dist/lib/cjs/obsidian/i18n/DefaultTranslationsBase.d.cts +0 -25
  1095. package/dist/lib/esm/AbortController.mjs +0 -101
  1096. package/dist/lib/esm/Array.mjs +0 -61
  1097. package/dist/lib/esm/Async.d.mts +0 -326
  1098. package/dist/lib/esm/Async.mjs +0 -354
  1099. package/dist/lib/esm/AsyncEvents.mjs +0 -213
  1100. package/dist/lib/esm/Blob.d.mts +0 -41
  1101. package/dist/lib/esm/Blob.mjs +0 -94
  1102. package/dist/lib/esm/CssClass.mjs +0 -63
  1103. package/dist/lib/esm/Debug.d.mts +0 -47
  1104. package/dist/lib/esm/Debug.mjs +0 -152
  1105. package/dist/lib/esm/Enum.mjs +0 -33
  1106. package/dist/lib/esm/Error.mjs +0 -131
  1107. package/dist/lib/esm/Function.mjs +0 -42
  1108. package/dist/lib/esm/HTMLElement.d.mts +0 -122
  1109. package/dist/lib/esm/HTMLElement.mjs +0 -171
  1110. package/dist/lib/esm/Library.mjs +0 -30
  1111. package/dist/lib/esm/ObjectUtils.d.mts +0 -255
  1112. package/dist/lib/esm/ObjectUtils.mjs +0 -435
  1113. package/dist/lib/esm/Path.mjs +0 -90
  1114. package/dist/lib/esm/RegExp.mjs +0 -144
  1115. package/dist/lib/esm/ScriptUtils/CliUtils.d.mts +0 -72
  1116. package/dist/lib/esm/ScriptUtils/CliUtils.mjs +0 -148
  1117. package/dist/lib/esm/ScriptUtils/CodeGenerator.mjs +0 -33
  1118. package/dist/lib/esm/ScriptUtils/ESLint/ESLint.mjs +0 -66
  1119. package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.mjs +0 -485
  1120. package/dist/lib/esm/ScriptUtils/ESLint/index.d.mts +0 -2
  1121. package/dist/lib/esm/ScriptUtils/ESLint/index.mjs +0 -28
  1122. package/dist/lib/esm/ScriptUtils/Exec.d.mts +0 -84
  1123. package/dist/lib/esm/ScriptUtils/Exec.mjs +0 -111
  1124. package/dist/lib/esm/ScriptUtils/Fs.d.mts +0 -75
  1125. package/dist/lib/esm/ScriptUtils/Fs.mjs +0 -78
  1126. package/dist/lib/esm/ScriptUtils/JSON.d.mts +0 -65
  1127. package/dist/lib/esm/ScriptUtils/JSON.mjs +0 -74
  1128. package/dist/lib/esm/ScriptUtils/NodeModules.mjs +0 -92
  1129. package/dist/lib/esm/ScriptUtils/Npm.d.mts +0 -149
  1130. package/dist/lib/esm/ScriptUtils/Npm.mjs +0 -120
  1131. package/dist/lib/esm/ScriptUtils/NpmPublish.mjs +0 -44
  1132. package/dist/lib/esm/ScriptUtils/NpmRun.mjs +0 -44
  1133. package/dist/lib/esm/ScriptUtils/ObsidianDevUtilsRepoPaths.d.mts +0 -100
  1134. package/dist/lib/esm/ScriptUtils/ObsidianDevUtilsRepoPaths.mjs +0 -72
  1135. package/dist/lib/esm/ScriptUtils/Root.d.mts +0 -68
  1136. package/dist/lib/esm/ScriptUtils/Root.mjs +0 -80
  1137. package/dist/lib/esm/ScriptUtils/build.mjs +0 -76
  1138. package/dist/lib/esm/ScriptUtils/cli.d.mts +0 -15
  1139. package/dist/lib/esm/ScriptUtils/cli.mjs +0 -107
  1140. package/dist/lib/esm/ScriptUtils/esbuild/Dependency.mjs +0 -109
  1141. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.d.mts +0 -58
  1142. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.mjs +0 -165
  1143. package/dist/lib/esm/ScriptUtils/esbuild/changeExtensionPlugin.mjs +0 -58
  1144. package/dist/lib/esm/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.mjs +0 -71
  1145. package/dist/lib/esm/ScriptUtils/esbuild/customEsbuildOptionsPlugin.mjs +0 -33
  1146. package/dist/lib/esm/ScriptUtils/esbuild/fixEsmPlugin.mjs +0 -39
  1147. package/dist/lib/esm/ScriptUtils/esbuild/fixSourceMapsPlugin.mjs +0 -69
  1148. package/dist/lib/esm/ScriptUtils/esbuild/index.d.mts +0 -10
  1149. package/dist/lib/esm/ScriptUtils/esbuild/index.mjs +0 -44
  1150. package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.mjs +0 -185
  1151. package/dist/lib/esm/ScriptUtils/esbuild/renameCssPlugin.mjs +0 -45
  1152. package/dist/lib/esm/ScriptUtils/esbuild/svelteWrapperPlugin.mjs +0 -56
  1153. package/dist/lib/esm/ScriptUtils/format.mjs +0 -52
  1154. package/dist/lib/esm/ScriptUtils/index.d.mts +0 -19
  1155. package/dist/lib/esm/ScriptUtils/index.mjs +0 -62
  1156. package/dist/lib/esm/ScriptUtils/markdownlint/index.d.mts +0 -2
  1157. package/dist/lib/esm/ScriptUtils/markdownlint/index.mjs +0 -28
  1158. package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint-cli2-config.d.mts +0 -10
  1159. package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint-cli2-config.mjs +0 -56
  1160. package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint.d.mts +0 -11
  1161. package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint.mjs +0 -98
  1162. package/dist/lib/esm/ScriptUtils/spellcheck.mjs +0 -29
  1163. package/dist/lib/esm/ScriptUtils/version.d.mts +0 -167
  1164. package/dist/lib/esm/ScriptUtils/version.mjs +0 -384
  1165. package/dist/lib/esm/String.d.mts +0 -186
  1166. package/dist/lib/esm/String.mjs +0 -211
  1167. package/dist/lib/esm/Transformers/DateTransformer.d.mts +0 -38
  1168. package/dist/lib/esm/Transformers/DateTransformer.mjs +0 -63
  1169. package/dist/lib/esm/Transformers/DurationTransformer.d.mts +0 -38
  1170. package/dist/lib/esm/Transformers/DurationTransformer.mjs +0 -65
  1171. package/dist/lib/esm/Transformers/GroupTransformer.d.mts +0 -69
  1172. package/dist/lib/esm/Transformers/GroupTransformer.mjs +0 -112
  1173. package/dist/lib/esm/Transformers/MapTransformer.d.mts +0 -40
  1174. package/dist/lib/esm/Transformers/MapTransformer.mjs +0 -63
  1175. package/dist/lib/esm/Transformers/SetTransformer.d.mts +0 -38
  1176. package/dist/lib/esm/Transformers/SetTransformer.mjs +0 -63
  1177. package/dist/lib/esm/Transformers/SkipPrivatePropertyTransformer.d.mts +0 -35
  1178. package/dist/lib/esm/Transformers/SkipPrivatePropertyTransformer.mjs +0 -61
  1179. package/dist/lib/esm/Transformers/Transformer.d.mts +0 -69
  1180. package/dist/lib/esm/Transformers/Transformer.mjs +0 -104
  1181. package/dist/lib/esm/Transformers/TwoWayMapTransformer.d.mts +0 -41
  1182. package/dist/lib/esm/Transformers/TwoWayMapTransformer.mjs +0 -64
  1183. package/dist/lib/esm/Transformers/TypedTransformer.d.mts +0 -38
  1184. package/dist/lib/esm/Transformers/TypedTransformer.mjs +0 -28
  1185. package/dist/lib/esm/Transformers/index.d.mts +0 -9
  1186. package/dist/lib/esm/Transformers/index.mjs +0 -42
  1187. package/dist/lib/esm/TwoWayMap.mjs +0 -142
  1188. package/dist/lib/esm/Type.mjs +0 -36
  1189. package/dist/lib/esm/TypeGuards.mjs +0 -47
  1190. package/dist/lib/esm/ValueProvider.mjs +0 -37
  1191. package/dist/lib/esm/obsidian/App.mjs +0 -62
  1192. package/dist/lib/esm/obsidian/AsyncWithNotice.d.mts +0 -82
  1193. package/dist/lib/esm/obsidian/AsyncWithNotice.mjs +0 -96
  1194. package/dist/lib/esm/obsidian/AttachmentPath.d.mts +0 -181
  1195. package/dist/lib/esm/obsidian/AttachmentPath.mjs +0 -139
  1196. package/dist/lib/esm/obsidian/Backlink.d.mts +0 -61
  1197. package/dist/lib/esm/obsidian/Backlink.mjs +0 -103
  1198. package/dist/lib/esm/obsidian/Callout.d.mts +0 -61
  1199. package/dist/lib/esm/obsidian/Callout.mjs +0 -95
  1200. package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.d.mts +0 -264
  1201. package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.mjs +0 -326
  1202. package/dist/lib/esm/obsidian/Commands/CommandBase.mjs +0 -145
  1203. package/dist/lib/esm/obsidian/Commands/EditorCommandBase.d.mts +0 -139
  1204. package/dist/lib/esm/obsidian/Commands/EditorCommandBase.mjs +0 -174
  1205. package/dist/lib/esm/obsidian/Commands/FileCommandBase.d.mts +0 -191
  1206. package/dist/lib/esm/obsidian/Commands/FileCommandBase.mjs +0 -237
  1207. package/dist/lib/esm/obsidian/Commands/FolderCommandBase.d.mts +0 -184
  1208. package/dist/lib/esm/obsidian/Commands/FolderCommandBase.mjs +0 -229
  1209. package/dist/lib/esm/obsidian/Commands/NonEditorCommandBase.d.mts +0 -34
  1210. package/dist/lib/esm/obsidian/Commands/NonEditorCommandBase.mjs +0 -46
  1211. package/dist/lib/esm/obsidian/Commands/index.d.mts +0 -6
  1212. package/dist/lib/esm/obsidian/Commands/index.mjs +0 -36
  1213. package/dist/lib/esm/obsidian/Components/AsyncEventsComponent.d.mts +0 -25
  1214. package/dist/lib/esm/obsidian/Components/AsyncEventsComponent.mjs +0 -42
  1215. package/dist/lib/esm/obsidian/Components/SettingComponents/CheckboxComponent.d.mts +0 -69
  1216. package/dist/lib/esm/obsidian/Components/SettingComponents/CheckboxComponent.mjs +0 -99
  1217. package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.d.mts +0 -118
  1218. package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.mjs +0 -252
  1219. package/dist/lib/esm/obsidian/Components/SettingComponents/DateComponent.d.mts +0 -37
  1220. package/dist/lib/esm/obsidian/Components/SettingComponents/DateComponent.mjs +0 -59
  1221. package/dist/lib/esm/obsidian/Components/SettingComponents/DateTimeComponent.d.mts +0 -37
  1222. package/dist/lib/esm/obsidian/Components/SettingComponents/DateTimeComponent.mjs +0 -59
  1223. package/dist/lib/esm/obsidian/Components/SettingComponents/EmailComponent.d.mts +0 -48
  1224. package/dist/lib/esm/obsidian/Components/SettingComponents/EmailComponent.mjs +0 -70
  1225. package/dist/lib/esm/obsidian/Components/SettingComponents/FileComponent.d.mts +0 -42
  1226. package/dist/lib/esm/obsidian/Components/SettingComponents/FileComponent.mjs +0 -62
  1227. package/dist/lib/esm/obsidian/Components/SettingComponents/MonthComponent.d.mts +0 -50
  1228. package/dist/lib/esm/obsidian/Components/SettingComponents/MonthComponent.mjs +0 -67
  1229. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.d.mts +0 -87
  1230. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.mjs +0 -134
  1231. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleEmailComponent.d.mts +0 -37
  1232. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleEmailComponent.mjs +0 -56
  1233. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleFileComponent.d.mts +0 -42
  1234. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleFileComponent.mjs +0 -63
  1235. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.d.mts +0 -98
  1236. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.mjs +0 -147
  1237. package/dist/lib/esm/obsidian/Components/SettingComponents/NumberComponent.d.mts +0 -55
  1238. package/dist/lib/esm/obsidian/Components/SettingComponents/NumberComponent.mjs +0 -80
  1239. package/dist/lib/esm/obsidian/Components/SettingComponents/PasswordComponent.d.mts +0 -37
  1240. package/dist/lib/esm/obsidian/Components/SettingComponents/PasswordComponent.mjs +0 -56
  1241. package/dist/lib/esm/obsidian/Components/SettingComponents/SettingComponentWrapper.mjs +0 -43
  1242. package/dist/lib/esm/obsidian/Components/SettingComponents/TelephoneComponent.d.mts +0 -50
  1243. package/dist/lib/esm/obsidian/Components/SettingComponents/TelephoneComponent.mjs +0 -70
  1244. package/dist/lib/esm/obsidian/Components/SettingComponents/TextBasedComponent.mjs +0 -55
  1245. package/dist/lib/esm/obsidian/Components/SettingComponents/TimeComponent.d.mts +0 -37
  1246. package/dist/lib/esm/obsidian/Components/SettingComponents/TimeComponent.mjs +0 -64
  1247. package/dist/lib/esm/obsidian/Components/SettingComponents/TriStateCheckboxComponent.d.mts +0 -69
  1248. package/dist/lib/esm/obsidian/Components/SettingComponents/TriStateCheckboxComponent.mjs +0 -100
  1249. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.d.mts +0 -89
  1250. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.mjs +0 -140
  1251. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.d.mts +0 -90
  1252. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.mjs +0 -139
  1253. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedRangeTextComponent.d.mts +0 -34
  1254. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedRangeTextComponent.mjs +0 -58
  1255. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedTextComponent.d.mts +0 -85
  1256. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedTextComponent.mjs +0 -117
  1257. package/dist/lib/esm/obsidian/Components/SettingComponents/UrlComponent.d.mts +0 -48
  1258. package/dist/lib/esm/obsidian/Components/SettingComponents/UrlComponent.mjs +0 -70
  1259. package/dist/lib/esm/obsidian/Components/SettingComponents/ValidatorComponent.d.mts +0 -22
  1260. package/dist/lib/esm/obsidian/Components/SettingComponents/ValidatorComponent.mjs +0 -123
  1261. package/dist/lib/esm/obsidian/Components/SettingComponents/WeekComponent.d.mts +0 -50
  1262. package/dist/lib/esm/obsidian/Components/SettingComponents/WeekComponent.mjs +0 -67
  1263. package/dist/lib/esm/obsidian/Components/SettingComponents/index.d.mts +0 -26
  1264. package/dist/lib/esm/obsidian/Components/SettingComponents/index.mjs +0 -76
  1265. package/dist/lib/esm/obsidian/Components/index.d.mts +0 -2
  1266. package/dist/lib/esm/obsidian/Components/index.mjs +0 -28
  1267. package/dist/lib/esm/obsidian/Dataview.d.mts +0 -214
  1268. package/dist/lib/esm/obsidian/Dataview.mjs +0 -245
  1269. package/dist/lib/esm/obsidian/DataviewLink.d.mts +0 -24
  1270. package/dist/lib/esm/obsidian/DataviewLink.mjs +0 -41
  1271. package/dist/lib/esm/obsidian/Editor.mjs +0 -58
  1272. package/dist/lib/esm/obsidian/FileChange.d.mts +0 -119
  1273. package/dist/lib/esm/obsidian/FileChange.mjs +0 -378
  1274. package/dist/lib/esm/obsidian/FileManager.d.mts +0 -40
  1275. package/dist/lib/esm/obsidian/FileManager.mjs +0 -92
  1276. package/dist/lib/esm/obsidian/FileSystem.d.mts +0 -279
  1277. package/dist/lib/esm/obsidian/FileSystem.mjs +0 -283
  1278. package/dist/lib/esm/obsidian/Frontmatter.d.mts +0 -74
  1279. package/dist/lib/esm/obsidian/Frontmatter.mjs +0 -46
  1280. package/dist/lib/esm/obsidian/FrontmatterLinkCacheWithOffsets.mjs +0 -44
  1281. package/dist/lib/esm/obsidian/Link.d.mts +0 -716
  1282. package/dist/lib/esm/obsidian/Link.mjs +0 -789
  1283. package/dist/lib/esm/obsidian/Logger.mjs +0 -71
  1284. package/dist/lib/esm/obsidian/Loop.mjs +0 -127
  1285. package/dist/lib/esm/obsidian/Markdown.d.mts +0 -79
  1286. package/dist/lib/esm/obsidian/Markdown.mjs +0 -184
  1287. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.d.mts +0 -107
  1288. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.mjs +0 -262
  1289. package/dist/lib/esm/obsidian/MarkdownView.mjs +0 -34
  1290. package/dist/lib/esm/obsidian/MetadataCache.d.mts +0 -137
  1291. package/dist/lib/esm/obsidian/MetadataCache.mjs +0 -266
  1292. package/dist/lib/esm/obsidian/Modals/Alert.mjs +0 -63
  1293. package/dist/lib/esm/obsidian/Modals/Confirm.mjs +0 -72
  1294. package/dist/lib/esm/obsidian/Modals/ModalBase.d.mts +0 -42
  1295. package/dist/lib/esm/obsidian/Modals/ModalBase.mjs +0 -51
  1296. package/dist/lib/esm/obsidian/Modals/Prompt.d.mts +0 -53
  1297. package/dist/lib/esm/obsidian/Modals/Prompt.mjs +0 -113
  1298. package/dist/lib/esm/obsidian/Modals/SelectItem.d.mts +0 -43
  1299. package/dist/lib/esm/obsidian/Modals/SelectItem.mjs +0 -64
  1300. package/dist/lib/esm/obsidian/Modals/index.d.mts +0 -5
  1301. package/dist/lib/esm/obsidian/Modals/index.mjs +0 -34
  1302. package/dist/lib/esm/obsidian/MonkeyAround.mjs +0 -64
  1303. package/dist/lib/esm/obsidian/ObsidianSettings.mjs +0 -32
  1304. package/dist/lib/esm/obsidian/Pdf.mjs +0 -56
  1305. package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.mjs +0 -73
  1306. package/dist/lib/esm/obsidian/Plugin/PathSettings.d.mts +0 -43
  1307. package/dist/lib/esm/obsidian/Plugin/PathSettings.mjs +0 -133
  1308. package/dist/lib/esm/obsidian/Plugin/Plugin.mjs +0 -39
  1309. package/dist/lib/esm/obsidian/Plugin/PluginBase.d.mts +0 -200
  1310. package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +0 -363
  1311. package/dist/lib/esm/obsidian/Plugin/PluginContext.mjs +0 -67
  1312. package/dist/lib/esm/obsidian/Plugin/PluginId.mjs +0 -37
  1313. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.d.mts +0 -186
  1314. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +0 -383
  1315. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +0 -148
  1316. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +0 -304
  1317. package/dist/lib/esm/obsidian/Plugin/PluginSettingsWrapper.d.mts +0 -25
  1318. package/dist/lib/esm/obsidian/Plugin/PluginTypesBase.d.mts +0 -87
  1319. package/dist/lib/esm/obsidian/Plugin/index.d.mts +0 -10
  1320. package/dist/lib/esm/obsidian/Plugin/index.mjs +0 -44
  1321. package/dist/lib/esm/obsidian/Queue.mjs +0 -99
  1322. package/dist/lib/esm/obsidian/React/AppContext.mjs +0 -36
  1323. package/dist/lib/esm/obsidian/React/index.d.mts +0 -1
  1324. package/dist/lib/esm/obsidian/React/index.mjs +0 -26
  1325. package/dist/lib/esm/obsidian/Reference.d.mts +0 -82
  1326. package/dist/lib/esm/obsidian/Reference.mjs +0 -70
  1327. package/dist/lib/esm/obsidian/RenameDeleteHandler.mjs +0 -775
  1328. package/dist/lib/esm/obsidian/ResourceUrl.mjs +0 -33
  1329. package/dist/lib/esm/obsidian/SettingEx.d.mts +0 -182
  1330. package/dist/lib/esm/obsidian/SettingEx.mjs +0 -258
  1331. package/dist/lib/esm/obsidian/SettingGroupEx.d.mts +0 -25
  1332. package/dist/lib/esm/obsidian/SettingGroupEx.mjs +0 -48
  1333. package/dist/lib/esm/obsidian/Validation.mjs +0 -48
  1334. package/dist/lib/esm/obsidian/Vault.d.mts +0 -237
  1335. package/dist/lib/esm/obsidian/Vault.mjs +0 -402
  1336. package/dist/lib/esm/obsidian/VaultEx.d.mts +0 -36
  1337. package/dist/lib/esm/obsidian/VaultEx.mjs +0 -98
  1338. package/dist/lib/esm/obsidian/Workspace.mjs +0 -36
  1339. package/dist/lib/esm/obsidian/i18n/CustomTypeOptionsBase.d.mts +0 -31
  1340. package/dist/lib/esm/obsidian/i18n/CustomTypeOptionsBase.mjs +0 -23
  1341. package/dist/lib/esm/obsidian/i18n/DefaultTranslationsBase.d.mts +0 -25
  1342. package/dist/lib/esm/obsidian/i18n/DefaultTranslationsBase.mjs +0 -23
  1343. package/obsidian/AsyncWithNotice/package.json +0 -6
  1344. package/obsidian/AttachmentPath/package.json +0 -6
  1345. package/obsidian/CodeBlockMarkdownInformation/package.json +0 -6
  1346. package/obsidian/Commands/AbstractFileCommandBase/package.json +0 -6
  1347. package/obsidian/Commands/CommandBase/package.json +0 -6
  1348. package/obsidian/Commands/EditorCommandBase/package.json +0 -6
  1349. package/obsidian/Commands/FileCommandBase/package.json +0 -6
  1350. package/obsidian/Commands/FolderCommandBase/package.json +0 -6
  1351. package/obsidian/Commands/NonEditorCommandBase/package.json +0 -6
  1352. package/obsidian/Components/AsyncEventsComponent/package.json +0 -6
  1353. package/obsidian/Components/SettingComponents/CheckboxComponent/package.json +0 -6
  1354. package/obsidian/Components/SettingComponents/CodeHighlighterComponent/package.json +0 -6
  1355. package/obsidian/Components/SettingComponents/DateComponent/package.json +0 -6
  1356. package/obsidian/Components/SettingComponents/DateTimeComponent/package.json +0 -6
  1357. package/obsidian/Components/SettingComponents/EmailComponent/package.json +0 -6
  1358. package/obsidian/Components/SettingComponents/FileComponent/package.json +0 -6
  1359. package/obsidian/Components/SettingComponents/MonthComponent/package.json +0 -6
  1360. package/obsidian/Components/SettingComponents/MultipleDropdownComponent/package.json +0 -6
  1361. package/obsidian/Components/SettingComponents/MultipleEmailComponent/package.json +0 -6
  1362. package/obsidian/Components/SettingComponents/MultipleFileComponent/package.json +0 -6
  1363. package/obsidian/Components/SettingComponents/MultipleTextComponent/package.json +0 -6
  1364. package/obsidian/Components/SettingComponents/NumberComponent/package.json +0 -6
  1365. package/obsidian/Components/SettingComponents/PasswordComponent/package.json +0 -6
  1366. package/obsidian/Components/SettingComponents/SettingComponentWrapper/package.json +0 -6
  1367. package/obsidian/Components/SettingComponents/TelephoneComponent/package.json +0 -6
  1368. package/obsidian/Components/SettingComponents/TextBasedComponent/package.json +0 -6
  1369. package/obsidian/Components/SettingComponents/TimeComponent/package.json +0 -6
  1370. package/obsidian/Components/SettingComponents/TriStateCheckboxComponent/package.json +0 -6
  1371. package/obsidian/Components/SettingComponents/TypedDropdownComponent/package.json +0 -6
  1372. package/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent/package.json +0 -6
  1373. package/obsidian/Components/SettingComponents/TypedRangeTextComponent/package.json +0 -6
  1374. package/obsidian/Components/SettingComponents/TypedTextComponent/package.json +0 -6
  1375. package/obsidian/Components/SettingComponents/UrlComponent/package.json +0 -6
  1376. package/obsidian/Components/SettingComponents/ValidatorComponent/package.json +0 -6
  1377. package/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking/package.json +0 -6
  1378. package/obsidian/Components/SettingComponents/WeekComponent/package.json +0 -6
  1379. package/obsidian/Components/SettingComponents/index/package.json +0 -6
  1380. package/obsidian/Components/SettingComponents/package.json +0 -6
  1381. package/obsidian/DataviewLink/package.json +0 -6
  1382. package/obsidian/FileChange/package.json +0 -6
  1383. package/obsidian/FileManager/package.json +0 -6
  1384. package/obsidian/FileSystem/package.json +0 -6
  1385. package/obsidian/FrontmatterLinkCacheWithOffsets/package.json +0 -6
  1386. package/obsidian/MarkdownCodeBlockProcessor/package.json +0 -6
  1387. package/obsidian/MarkdownView/package.json +0 -6
  1388. package/obsidian/MetadataCache/package.json +0 -6
  1389. package/obsidian/Modals/ModalBase/package.json +0 -6
  1390. package/obsidian/Modals/SelectItem/package.json +0 -6
  1391. package/obsidian/MonkeyAround/package.json +0 -6
  1392. package/obsidian/ObsidianSettings/package.json +0 -6
  1393. package/obsidian/Plugin/ObsidianPluginRepoPaths/package.json +0 -6
  1394. package/obsidian/Plugin/PathSettings/package.json +0 -6
  1395. package/obsidian/Plugin/PluginBase/package.json +0 -6
  1396. package/obsidian/Plugin/PluginContext/package.json +0 -6
  1397. package/obsidian/Plugin/PluginId/package.json +0 -6
  1398. package/obsidian/Plugin/PluginSettingsManagerBase/package.json +0 -6
  1399. package/obsidian/Plugin/PluginSettingsTabBase/package.json +0 -6
  1400. package/obsidian/Plugin/PluginSettingsWrapper/package.json +0 -6
  1401. package/obsidian/Plugin/PluginTypesBase/package.json +0 -6
  1402. package/obsidian/React/AppContext/package.json +0 -6
  1403. package/obsidian/RenameDeleteHandler/package.json +0 -6
  1404. package/obsidian/ResourceUrl/package.json +0 -6
  1405. package/obsidian/SettingEx/package.json +0 -6
  1406. package/obsidian/SettingGroupEx/package.json +0 -6
  1407. package/obsidian/VaultEx/package.json +0 -6
  1408. package/obsidian/i18n/CustomTypeOptionsBase/package.json +0 -6
  1409. package/obsidian/i18n/DefaultTranslationsBase/package.json +0 -6
  1410. /package/dist/lib/cjs/{AbortController.d.cts → abort-controller.d.cts} +0 -0
  1411. /package/dist/lib/cjs/{Array.d.cts → array.d.cts} +0 -0
  1412. /package/dist/lib/cjs/{AsyncEvents.d.cts → async-events.d.cts} +0 -0
  1413. /package/dist/lib/cjs/codemirror/{StateFieldSpec.d.cts → state-field-spec.d.cts} +0 -0
  1414. /package/dist/lib/cjs/{CssClass.d.cts → css-class.d.cts} +0 -0
  1415. /package/dist/lib/cjs/{DebugController.d.cts → debug-controller.d.cts} +0 -0
  1416. /package/dist/lib/cjs/{Enum.d.cts → enum.d.cts} +0 -0
  1417. /package/dist/lib/cjs/{Error.d.cts → error.d.cts} +0 -0
  1418. /package/dist/lib/cjs/{Function.d.cts → function.d.cts} +0 -0
  1419. /package/dist/lib/cjs/{Library.d.cts → library.d.cts} +0 -0
  1420. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/api/data-array.d.cts +0 -0
  1421. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/api/extensions.d.cts +0 -0
  1422. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/api/inline-api.d.cts +0 -0
  1423. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/api/plugin-api.d.cts +0 -0
  1424. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/api/result.d.cts +0 -0
  1425. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/common.d.cts +0 -0
  1426. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/csv.d.cts +0 -0
  1427. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/inline-field.d.cts +0 -0
  1428. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/markdown-file.d.cts +0 -0
  1429. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/persister.d.cts +0 -0
  1430. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-entry.d.cts +0 -0
  1431. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-impl.d.cts +0 -0
  1432. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-manager.d.cts +0 -0
  1433. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-index/index.d.cts +0 -0
  1434. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-index/resolver.d.cts +0 -0
  1435. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-index/source.d.cts +0 -0
  1436. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-model/markdown.d.cts +0 -0
  1437. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-model/serialized/markdown.d.cts +0 -0
  1438. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-model/transferable.d.cts +0 -0
  1439. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/data-model/value.d.cts +0 -0
  1440. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/expression/binaryop.d.cts +0 -0
  1441. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/expression/context.d.cts +0 -0
  1442. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/expression/field.d.cts +0 -0
  1443. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/expression/functions.d.cts +0 -0
  1444. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/expression/parse.d.cts +0 -0
  1445. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/index.d.cts +0 -0
  1446. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/main.d.cts +0 -0
  1447. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/query/engine.d.cts +0 -0
  1448. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/query/parse.d.cts +0 -0
  1449. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/query/query.d.cts +0 -0
  1450. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/settings.d.cts +0 -0
  1451. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/typings/obsidian-ex.d.cts +0 -0
  1452. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/typings/workers.d.cts +0 -0
  1453. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/export/markdown.d.cts +0 -0
  1454. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/lp-render.d.cts +0 -0
  1455. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/markdown.d.cts +0 -0
  1456. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/refreshable-view.d.cts +0 -0
  1457. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/render.d.cts +0 -0
  1458. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/calendar-view.d.cts +0 -0
  1459. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/inline-field-live-preview.d.cts +0 -0
  1460. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/inline-view.d.cts +0 -0
  1461. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/js-view.d.cts +0 -0
  1462. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/list-view.d.cts +0 -0
  1463. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/table-view.d.cts +0 -0
  1464. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/ui/views/task-view.d.cts +0 -0
  1465. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/util/hash.d.cts +0 -0
  1466. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/util/locale.d.cts +0 -0
  1467. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/util/media.d.cts +0 -0
  1468. /package/dist/lib/cjs/obsidian/@types/{Dataview → dataview}/util/normalize.d.cts +0 -0
  1469. /package/dist/lib/cjs/obsidian/{App.d.cts → app.d.cts} +0 -0
  1470. /package/dist/lib/cjs/obsidian/{CodeBlockMarkdownInformation.d.cts → code-block-markdown-information.d.cts} +0 -0
  1471. /package/dist/lib/cjs/obsidian/{Commands/CommandBase.d.cts → commands/command-base.d.cts} +0 -0
  1472. /package/dist/lib/cjs/obsidian/{Components/SettingComponents/SettingComponentWrapper.d.cts → components/setting-components/setting-component-wrapper.d.cts} +0 -0
  1473. /package/dist/lib/cjs/obsidian/{Components/SettingComponents/TextBasedComponent.d.cts → components/setting-components/text-based-component.d.cts} +0 -0
  1474. /package/dist/lib/cjs/obsidian/{Components/SettingComponents/ValueComponentWithChangeTracking.d.cts → components/setting-components/value-component-with-change-tracking.d.cts} +0 -0
  1475. /package/dist/lib/cjs/obsidian/{Editor.d.cts → editor.d.cts} +0 -0
  1476. /package/dist/lib/cjs/obsidian/{FrontmatterLinkCacheWithOffsets.d.cts → frontmatter-link-cache-with-offsets.d.cts} +0 -0
  1477. /package/dist/lib/cjs/obsidian/{Logger.d.cts → logger.d.cts} +0 -0
  1478. /package/dist/lib/cjs/obsidian/{Loop.d.cts → loop.d.cts} +0 -0
  1479. /package/dist/lib/cjs/obsidian/{MarkdownView.d.cts → markdown-view.d.cts} +0 -0
  1480. /package/dist/lib/cjs/obsidian/{Modals/Alert.d.cts → modals/alert.d.cts} +0 -0
  1481. /package/dist/lib/cjs/obsidian/{Modals/Confirm.d.cts → modals/confirm.d.cts} +0 -0
  1482. /package/dist/lib/cjs/obsidian/{MonkeyAround.d.cts → monkey-around.d.cts} +0 -0
  1483. /package/dist/lib/cjs/obsidian/{ObsidianSettings.d.cts → obsidian-settings.d.cts} +0 -0
  1484. /package/dist/lib/cjs/obsidian/{Pdf.d.cts → pdf.d.cts} +0 -0
  1485. /package/dist/lib/cjs/obsidian/{Plugin/ObsidianPluginRepoPaths.d.cts → plugin/obsidian-plugin-repo-paths.d.cts} +0 -0
  1486. /package/dist/lib/cjs/obsidian/{Plugin/PluginContext.d.cts → plugin/plugin-context.d.cts} +0 -0
  1487. /package/dist/lib/cjs/obsidian/{Plugin/PluginId.d.cts → plugin/plugin-id.d.cts} +0 -0
  1488. /package/dist/lib/cjs/obsidian/{Plugin/Plugin.d.cts → plugin/plugin.d.cts} +0 -0
  1489. /package/dist/lib/cjs/obsidian/{Queue.d.cts → queue.d.cts} +0 -0
  1490. /package/dist/lib/cjs/obsidian/{React/AppContext.d.cts → react/app-context.d.cts} +0 -0
  1491. /package/dist/lib/cjs/obsidian/{RenameDeleteHandler.d.cts → rename-delete-handler.d.cts} +0 -0
  1492. /package/dist/lib/cjs/obsidian/{ResourceUrl.d.cts → resource-url.d.cts} +0 -0
  1493. /package/dist/lib/cjs/obsidian/{Validation.d.cts → validation.d.cts} +0 -0
  1494. /package/dist/lib/cjs/obsidian/{Workspace.d.cts → workspace.d.cts} +0 -0
  1495. /package/dist/lib/cjs/{Path.d.cts → path.d.cts} +0 -0
  1496. /package/dist/lib/cjs/{RegExp.d.cts → reg-exp.d.cts} +0 -0
  1497. /package/dist/lib/cjs/{ScriptUtils → script-utils}/build.d.cts +0 -0
  1498. /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/changeExtensionPlugin.d.cts +0 -0
  1499. /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/copyToObsidianPluginsFolderPlugin.d.cts +0 -0
  1500. /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/customEsbuildOptionsPlugin.d.cts +0 -0
  1501. /package/dist/lib/cjs/{ScriptUtils/esbuild/Dependency.d.cts → script-utils/bundlers/esbuild-impl/dependency.d.cts} +0 -0
  1502. /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/fixEsmPlugin.d.cts +0 -0
  1503. /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/fixSourceMapsPlugin.d.cts +0 -0
  1504. /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/preprocessPlugin.d.cts +0 -0
  1505. /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/renameCssPlugin.d.cts +0 -0
  1506. /package/dist/lib/cjs/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/svelteWrapperPlugin.d.cts +0 -0
  1507. /package/dist/lib/cjs/{ScriptUtils/CodeGenerator.d.cts → script-utils/code-generator.d.cts} +0 -0
  1508. /package/dist/lib/cjs/{ScriptUtils/format.d.cts → script-utils/formatters/dprint.d.cts} +0 -0
  1509. /package/dist/lib/cjs/{ScriptUtils/spellcheck.d.cts → script-utils/linters/cspell.d.cts} +0 -0
  1510. /package/dist/lib/cjs/{ScriptUtils/ESLint/eslint.config.d.cts → script-utils/linters/eslint-config.d.cts} +0 -0
  1511. /package/dist/lib/cjs/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +0 -0
  1512. /package/dist/lib/cjs/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/@guardian__eslint-plugin-tsdoc-required.d.cts +0 -0
  1513. /package/dist/lib/cjs/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/eslint-plugin-modules-newlines.d.cts +0 -0
  1514. /package/dist/lib/cjs/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/eslint-plugin-verify-tsdoc.d.cts +0 -0
  1515. /package/dist/lib/cjs/{ScriptUtils/ESLint/ESLint.d.cts → script-utils/linters/eslint.d.cts} +0 -0
  1516. /package/dist/lib/cjs/{ScriptUtils/markdownlint → script-utils/linters/markdownlint-types}/@types/markdownlint-cli2-config-schema.d.cts +0 -0
  1517. /package/dist/lib/cjs/{ScriptUtils/NodeModules.d.cts → script-utils/node-modules.d.cts} +0 -0
  1518. /package/dist/lib/cjs/{ScriptUtils/NpmPublish.d.cts → script-utils/npm-publish.d.cts} +0 -0
  1519. /package/dist/lib/cjs/{ScriptUtils/NpmRun.d.cts → script-utils/npm-run.d.cts} +0 -0
  1520. /package/dist/lib/cjs/{TwoWayMap.d.cts → two-way-map.d.cts} +0 -0
  1521. /package/dist/lib/cjs/{TypeGuards.d.cts → type-guards.d.cts} +0 -0
  1522. /package/dist/lib/cjs/{Type.d.cts → type.d.cts} +0 -0
  1523. /package/dist/lib/cjs/{ValueProvider.d.cts → value-provider.d.cts} +0 -0
  1524. /package/dist/lib/esm/{AbortController.d.mts → abort-controller.d.mts} +0 -0
  1525. /package/dist/lib/esm/{Array.d.mts → array.d.mts} +0 -0
  1526. /package/dist/lib/esm/{AsyncEvents.d.mts → async-events.d.mts} +0 -0
  1527. /package/dist/lib/esm/codemirror/{StateFieldSpec.d.mts → state-field-spec.d.mts} +0 -0
  1528. /package/dist/lib/esm/{DebugController.mjs → codemirror/state-field-spec.mjs} +0 -0
  1529. /package/dist/lib/esm/{CssClass.d.mts → css-class.d.mts} +0 -0
  1530. /package/dist/lib/esm/{DebugController.d.mts → debug-controller.d.mts} +0 -0
  1531. /package/dist/lib/esm/{codemirror/StateFieldSpec.mjs → debug-controller.mjs} +0 -0
  1532. /package/dist/lib/esm/{Enum.d.mts → enum.d.mts} +0 -0
  1533. /package/dist/lib/esm/{Error.d.mts → error.d.mts} +0 -0
  1534. /package/dist/lib/esm/{Function.d.mts → function.d.mts} +0 -0
  1535. /package/dist/lib/esm/{Library.d.mts → library.d.mts} +0 -0
  1536. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/api/data-array.d.mts +0 -0
  1537. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/api/extensions.d.mts +0 -0
  1538. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/api/inline-api.d.mts +0 -0
  1539. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/api/plugin-api.d.mts +0 -0
  1540. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/api/result.d.mts +0 -0
  1541. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/common.d.mts +0 -0
  1542. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/csv.d.mts +0 -0
  1543. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/inline-field.d.mts +0 -0
  1544. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/markdown-file.d.mts +0 -0
  1545. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/persister.d.mts +0 -0
  1546. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-entry.d.mts +0 -0
  1547. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-impl.d.mts +0 -0
  1548. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-manager.d.mts +0 -0
  1549. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-index/index.d.mts +0 -0
  1550. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-index/resolver.d.mts +0 -0
  1551. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-index/source.d.mts +0 -0
  1552. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-model/markdown.d.mts +0 -0
  1553. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-model/serialized/markdown.d.mts +0 -0
  1554. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-model/transferable.d.mts +0 -0
  1555. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/data-model/value.d.mts +0 -0
  1556. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/expression/binaryop.d.mts +0 -0
  1557. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/expression/context.d.mts +0 -0
  1558. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/expression/field.d.mts +0 -0
  1559. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/expression/functions.d.mts +0 -0
  1560. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/expression/parse.d.mts +0 -0
  1561. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/index.d.mts +0 -0
  1562. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/main.d.mts +0 -0
  1563. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/query/engine.d.mts +0 -0
  1564. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/query/parse.d.mts +0 -0
  1565. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/query/query.d.mts +0 -0
  1566. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/settings.d.mts +0 -0
  1567. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/typings/obsidian-ex.d.mts +0 -0
  1568. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/typings/workers.d.mts +0 -0
  1569. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/export/markdown.d.mts +0 -0
  1570. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/lp-render.d.mts +0 -0
  1571. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/markdown.d.mts +0 -0
  1572. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/refreshable-view.d.mts +0 -0
  1573. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/render.d.mts +0 -0
  1574. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/calendar-view.d.mts +0 -0
  1575. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/inline-field-live-preview.d.mts +0 -0
  1576. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/inline-view.d.mts +0 -0
  1577. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/js-view.d.mts +0 -0
  1578. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/list-view.d.mts +0 -0
  1579. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/table-view.d.mts +0 -0
  1580. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/ui/views/task-view.d.mts +0 -0
  1581. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/util/hash.d.mts +0 -0
  1582. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/util/locale.d.mts +0 -0
  1583. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/util/media.d.mts +0 -0
  1584. /package/dist/lib/esm/obsidian/@types/{Dataview → dataview}/util/normalize.d.mts +0 -0
  1585. /package/dist/lib/esm/obsidian/{App.d.mts → app.d.mts} +0 -0
  1586. /package/dist/lib/esm/obsidian/{CodeBlockMarkdownInformation.d.mts → code-block-markdown-information.d.mts} +0 -0
  1587. /package/dist/lib/esm/obsidian/{CodeBlockMarkdownInformation.mjs → code-block-markdown-information.mjs} +0 -0
  1588. /package/dist/lib/esm/obsidian/{Commands/CommandBase.d.mts → commands/command-base.d.mts} +0 -0
  1589. /package/dist/lib/esm/obsidian/{Components/SettingComponents/SettingComponentWrapper.d.mts → components/setting-components/setting-component-wrapper.d.mts} +0 -0
  1590. /package/dist/lib/esm/obsidian/{Components/SettingComponents/TextBasedComponent.d.mts → components/setting-components/text-based-component.d.mts} +0 -0
  1591. /package/dist/lib/esm/obsidian/{Components/SettingComponents/ValueComponentWithChangeTracking.d.mts → components/setting-components/value-component-with-change-tracking.d.mts} +0 -0
  1592. /package/dist/lib/esm/obsidian/{Components/SettingComponents/ValueComponentWithChangeTracking.mjs → components/setting-components/value-component-with-change-tracking.mjs} +0 -0
  1593. /package/dist/lib/esm/obsidian/{Editor.d.mts → editor.d.mts} +0 -0
  1594. /package/dist/lib/esm/obsidian/{FrontmatterLinkCacheWithOffsets.d.mts → frontmatter-link-cache-with-offsets.d.mts} +0 -0
  1595. /package/dist/lib/esm/obsidian/{Logger.d.mts → logger.d.mts} +0 -0
  1596. /package/dist/lib/esm/obsidian/{Loop.d.mts → loop.d.mts} +0 -0
  1597. /package/dist/lib/esm/obsidian/{MarkdownView.d.mts → markdown-view.d.mts} +0 -0
  1598. /package/dist/lib/esm/obsidian/{Modals/Alert.d.mts → modals/alert.d.mts} +0 -0
  1599. /package/dist/lib/esm/obsidian/{Modals/Confirm.d.mts → modals/confirm.d.mts} +0 -0
  1600. /package/dist/lib/esm/obsidian/{MonkeyAround.d.mts → monkey-around.d.mts} +0 -0
  1601. /package/dist/lib/esm/obsidian/{ObsidianSettings.d.mts → obsidian-settings.d.mts} +0 -0
  1602. /package/dist/lib/esm/obsidian/{Pdf.d.mts → pdf.d.mts} +0 -0
  1603. /package/dist/lib/esm/obsidian/{Plugin/ObsidianPluginRepoPaths.d.mts → plugin/obsidian-plugin-repo-paths.d.mts} +0 -0
  1604. /package/dist/lib/esm/obsidian/{Plugin/PluginContext.d.mts → plugin/plugin-context.d.mts} +0 -0
  1605. /package/dist/lib/esm/obsidian/{Plugin/PluginId.d.mts → plugin/plugin-id.d.mts} +0 -0
  1606. /package/dist/lib/esm/obsidian/{Plugin/PluginSettingsWrapper.mjs → plugin/plugin-settings-wrapper.mjs} +0 -0
  1607. /package/dist/lib/esm/obsidian/{Plugin/PluginTypesBase.mjs → plugin/plugin-types-base.mjs} +0 -0
  1608. /package/dist/lib/esm/obsidian/{Plugin/Plugin.d.mts → plugin/plugin.d.mts} +0 -0
  1609. /package/dist/lib/esm/obsidian/{Queue.d.mts → queue.d.mts} +0 -0
  1610. /package/dist/lib/esm/obsidian/{React/AppContext.d.mts → react/app-context.d.mts} +0 -0
  1611. /package/dist/lib/esm/obsidian/{RenameDeleteHandler.d.mts → rename-delete-handler.d.mts} +0 -0
  1612. /package/dist/lib/esm/obsidian/{ResourceUrl.d.mts → resource-url.d.mts} +0 -0
  1613. /package/dist/lib/esm/obsidian/{Validation.d.mts → validation.d.mts} +0 -0
  1614. /package/dist/lib/esm/obsidian/{Workspace.d.mts → workspace.d.mts} +0 -0
  1615. /package/dist/lib/esm/{Path.d.mts → path.d.mts} +0 -0
  1616. /package/dist/lib/esm/{RegExp.d.mts → reg-exp.d.mts} +0 -0
  1617. /package/dist/lib/esm/{ScriptUtils → script-utils}/build.d.mts +0 -0
  1618. /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/changeExtensionPlugin.d.mts +0 -0
  1619. /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/copyToObsidianPluginsFolderPlugin.d.mts +0 -0
  1620. /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/customEsbuildOptionsPlugin.d.mts +0 -0
  1621. /package/dist/lib/esm/{ScriptUtils/esbuild/Dependency.d.mts → script-utils/bundlers/esbuild-impl/dependency.d.mts} +0 -0
  1622. /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/fixEsmPlugin.d.mts +0 -0
  1623. /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/fixSourceMapsPlugin.d.mts +0 -0
  1624. /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/preprocessPlugin.d.mts +0 -0
  1625. /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/renameCssPlugin.d.mts +0 -0
  1626. /package/dist/lib/esm/{ScriptUtils/esbuild → script-utils/bundlers/esbuild-impl}/svelteWrapperPlugin.d.mts +0 -0
  1627. /package/dist/lib/esm/{ScriptUtils/CodeGenerator.d.mts → script-utils/code-generator.d.mts} +0 -0
  1628. /package/dist/lib/esm/{ScriptUtils/format.d.mts → script-utils/formatters/dprint.d.mts} +0 -0
  1629. /package/dist/lib/esm/{ScriptUtils/spellcheck.d.mts → script-utils/linters/cspell.d.mts} +0 -0
  1630. /package/dist/lib/esm/{ScriptUtils/ESLint/eslint.config.d.mts → script-utils/linters/eslint-config.d.mts} +0 -0
  1631. /package/dist/lib/esm/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +0 -0
  1632. /package/dist/lib/esm/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/@guardian__eslint-plugin-tsdoc-required.d.mts +0 -0
  1633. /package/dist/lib/esm/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/eslint-plugin-modules-newlines.d.mts +0 -0
  1634. /package/dist/lib/esm/{ScriptUtils/ESLint → script-utils/linters/eslint-types}/@types/eslint-plugin-verify-tsdoc.d.mts +0 -0
  1635. /package/dist/lib/esm/{ScriptUtils/ESLint/ESLint.d.mts → script-utils/linters/eslint.d.mts} +0 -0
  1636. /package/dist/lib/esm/{ScriptUtils/markdownlint → script-utils/linters/markdownlint-types}/@types/markdownlint-cli2-config-schema.d.mts +0 -0
  1637. /package/dist/lib/esm/{ScriptUtils/NodeModules.d.mts → script-utils/node-modules.d.mts} +0 -0
  1638. /package/dist/lib/esm/{ScriptUtils/NpmPublish.d.mts → script-utils/npm-publish.d.mts} +0 -0
  1639. /package/dist/lib/esm/{ScriptUtils/NpmRun.d.mts → script-utils/npm-run.d.mts} +0 -0
  1640. /package/dist/lib/esm/{TwoWayMap.d.mts → two-way-map.d.mts} +0 -0
  1641. /package/dist/lib/esm/{TypeGuards.d.mts → type-guards.d.mts} +0 -0
  1642. /package/dist/lib/esm/{Type.d.mts → type.d.mts} +0 -0
  1643. /package/dist/lib/esm/{ValueProvider.d.mts → value-provider.d.mts} +0 -0
@@ -1,837 +0,0 @@
1
- /*
2
- THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
- if you want to view the source, please visit the github repository of this plugin
4
- */
5
-
6
- (function initCjs() {
7
- const globalThisRecord = globalThis;
8
- globalThisRecord['__name'] ??= name;
9
- const originalRequire = require;
10
- if (originalRequire && !originalRequire.__isPatched) {
11
- // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
12
- require = Object.assign(
13
- (id) => requirePatched(id),
14
- originalRequire,
15
- {
16
- __isPatched: true
17
- }
18
- );
19
- }
20
-
21
- const newFuncs = {
22
- __extractDefault() {
23
- return extractDefault;
24
- },
25
- process() {
26
- const browserProcess = {
27
- browser: true,
28
- cwd() {
29
- return '/';
30
- },
31
- env: {},
32
- platform: 'android'
33
- };
34
- return browserProcess;
35
- }
36
- };
37
-
38
- for (const key of Object.keys(newFuncs)) {
39
- globalThisRecord[key] ??= newFuncs[key]?.();
40
- }
41
-
42
- function name(obj) {
43
- return obj;
44
- }
45
-
46
- function extractDefault(module) {
47
- return module && module.__esModule && 'default' in module ? module.default : module;
48
- }
49
-
50
- const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
51
- 'obsidian',
52
- '@codemirror/autocomplete',
53
- '@codemirror/collab',
54
- '@codemirror/commands',
55
- '@codemirror/language',
56
- '@codemirror/lint',
57
- '@codemirror/search',
58
- '@codemirror/state',
59
- '@codemirror/text',
60
- '@codemirror/view',
61
- '@lezer/common',
62
- '@lezer/lr',
63
- '@lezer/highlight'];
64
-
65
-
66
- const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
67
- '@codemirror/closebrackets',
68
- '@codemirror/comment',
69
- '@codemirror/fold',
70
- '@codemirror/gutter',
71
- '@codemirror/highlight',
72
- '@codemirror/history',
73
- '@codemirror/matchbrackets',
74
- '@codemirror/panel',
75
- '@codemirror/rangeset',
76
- '@codemirror/rectangular-selection',
77
- '@codemirror/stream-parser',
78
- '@codemirror/tooltip'];
79
-
80
-
81
- function requirePatched(id) {
82
- if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
83
- return originalRequire?.(id);
84
- }
85
-
86
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
87
- if (globalThis?.app?.isMobile) {
88
- if (id === 'process' || id === 'node:process') {
89
- console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
90
- return globalThis.process;
91
- }
92
- } else {
93
- const module = originalRequire?.(id);
94
- if (module) {
95
- return extractDefault(module);
96
- }
97
- }
98
-
99
- console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
100
- return {};
101
- }
102
- })();
103
-
104
- "use strict";
105
- var __defProp = Object.defineProperty;
106
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
107
- var __getOwnPropNames = Object.getOwnPropertyNames;
108
- var __hasOwnProp = Object.prototype.hasOwnProperty;
109
- var __export = (target, all) => {
110
- for (var name in all)
111
- __defProp(target, name, { get: all[name], enumerable: true });
112
- };
113
- var __copyProps = (to, from, except, desc) => {
114
- if (from && typeof from === "object" || typeof from === "function") {
115
- for (let key of __getOwnPropNames(from))
116
- if (!__hasOwnProp.call(to, key) && key !== except)
117
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
118
- }
119
- return to;
120
- };
121
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
122
- var RenameDeleteHandler_exports = {};
123
- __export(RenameDeleteHandler_exports, {
124
- EmptyFolderBehavior: () => EmptyFolderBehavior,
125
- registerRenameDeleteHandlers: () => registerRenameDeleteHandlers
126
- });
127
- module.exports = __toCommonJS(RenameDeleteHandler_exports);
128
- var import_i18next = require('i18next');
129
- var import_obsidian = require('obsidian');
130
- var import_implementations = require('obsidian-typings/implementations');
131
- var import_AbortController = require('../AbortController.cjs');
132
- var import_Array = require('../Array.cjs');
133
- var import_Debug = require('../Debug.cjs');
134
- var import_ObjectUtils = require('../ObjectUtils.cjs');
135
- var import_Path = require('../Path.cjs');
136
- var import_App = require('./App.cjs');
137
- var import_AttachmentPath = require('./AttachmentPath.cjs');
138
- var import_FileSystem = require('./FileSystem.cjs');
139
- var import_Link = require('./Link.cjs');
140
- var import_MetadataCache = require('./MetadataCache.cjs');
141
- var import_MonkeyAround = require('./MonkeyAround.cjs');
142
- var import_Queue = require('./Queue.cjs');
143
- var import_Vault = require('./Vault.cjs');
144
- var import_VaultEx = require('./VaultEx.cjs');
145
- var EmptyFolderBehavior = /* @__PURE__ */ ((EmptyFolderBehavior2) => {
146
- EmptyFolderBehavior2["Delete"] = "Delete";
147
- EmptyFolderBehavior2["DeleteWithEmptyParents"] = "DeleteWithEmptyParents";
148
- EmptyFolderBehavior2["Keep"] = "Keep";
149
- return EmptyFolderBehavior2;
150
- })(EmptyFolderBehavior || {});
151
- class DeleteHandler {
152
- constructor(app, file, abortSignal, settingsManager, deletedMetadataCacheMap) {
153
- this.app = app;
154
- this.file = file;
155
- this.abortSignal = abortSignal;
156
- this.settingsManager = settingsManager;
157
- this.deletedMetadataCacheMap = deletedMetadataCacheMap;
158
- }
159
- async handle() {
160
- this.abortSignal.throwIfAborted();
161
- (0, import_Debug.getLibDebugger)("RenameDeleteHandler:handleDelete")(`Handle Delete ${this.file.path}`);
162
- if (!(0, import_FileSystem.isNote)(this.app, this.file)) {
163
- return;
164
- }
165
- const settings = this.settingsManager.getSettings();
166
- if (settings.isPathIgnored?.(this.file.path)) {
167
- (0, import_Debug.getLibDebugger)("RenameDeleteHandler:handleDelete")(`Skipping delete handler of ${this.file.path} as the path is ignored.`);
168
- return;
169
- }
170
- const parentFolderPaths = /* @__PURE__ */ new Set([(0, import_Path.dirname)(this.file.path)]);
171
- if (settings.shouldHandleDeletions) {
172
- const cache = this.deletedMetadataCacheMap.get(this.file.path);
173
- this.deletedMetadataCacheMap.delete(this.file.path);
174
- if (cache) {
175
- const links = (0, import_MetadataCache.getAllLinks)(cache);
176
- for (const link of links) {
177
- const attachmentFile = (0, import_Link.extractLinkFile)(this.app, link, this.file.path);
178
- if (!attachmentFile) {
179
- continue;
180
- }
181
- if (this.settingsManager.isNoteEx(attachmentFile.path)) {
182
- continue;
183
- }
184
- parentFolderPaths.add(attachmentFile.parent?.path ?? "");
185
- await (0, import_VaultEx.deleteSafe)(this.app, attachmentFile, this.file.path, false, settings.emptyFolderBehavior !== "Keep" /* Keep */);
186
- this.abortSignal.throwIfAborted();
187
- }
188
- }
189
- }
190
- parentFolderPaths.delete("");
191
- await cleanupParentFolders(this.app, this.settingsManager.getSettings(), Array.from(parentFolderPaths));
192
- this.abortSignal.throwIfAborted();
193
- if (!settings.shouldHandleDeletions) {
194
- return;
195
- }
196
- const attachmentFolderPath = await (0, import_AttachmentPath.getAttachmentFolderPath)(this.app, this.file.path, import_AttachmentPath.AttachmentPathContext.DeleteNote);
197
- const attachmentFolder = (0, import_FileSystem.getFolderOrNull)(this.app, attachmentFolderPath);
198
- if (!attachmentFolder) {
199
- return;
200
- }
201
- if (!await (0, import_AttachmentPath.hasOwnAttachmentFolder)(this.app, this.file.path, import_AttachmentPath.AttachmentPathContext.DeleteNote)) {
202
- return;
203
- }
204
- this.abortSignal.throwIfAborted();
205
- await (0, import_VaultEx.deleteSafe)(this.app, attachmentFolder, this.file.path, false, settings.emptyFolderBehavior !== "Keep" /* Keep */);
206
- this.abortSignal.throwIfAborted();
207
- }
208
- }
209
- class HandledRenames {
210
- map = /* @__PURE__ */ new Map();
211
- add(oldPath, newPath) {
212
- this.map.set(this.keyToString(oldPath, newPath), { newPath, oldPath });
213
- }
214
- delete(oldPath, newPath) {
215
- this.map.delete(this.keyToString(oldPath, newPath));
216
- }
217
- has(oldPath, newPath) {
218
- return this.map.has(this.keyToString(oldPath, newPath));
219
- }
220
- keys() {
221
- return this.map.values();
222
- }
223
- keyToString(oldPath, newPath) {
224
- return `${oldPath} -> ${newPath}`;
225
- }
226
- }
227
- class MetadataDeletedHandler {
228
- constructor(app, file, prevCache, settingsManager, deletedMetadataCacheMap) {
229
- this.app = app;
230
- this.file = file;
231
- this.prevCache = prevCache;
232
- this.settingsManager = settingsManager;
233
- this.deletedMetadataCacheMap = deletedMetadataCacheMap;
234
- }
235
- handle() {
236
- const settings = this.settingsManager.getSettings();
237
- if (!settings.shouldHandleDeletions) {
238
- return;
239
- }
240
- if (settings.isPathIgnored?.(this.file.path)) {
241
- (0, import_Debug.getLibDebugger)("RenameDeleteHandler:handleMetadataDeleted")(`Skipping metadata delete handler of ${this.file.path} as the path is ignored.`);
242
- return;
243
- }
244
- if ((0, import_FileSystem.isMarkdownFile)(this.app, this.file) && this.prevCache) {
245
- this.deletedMetadataCacheMap.set(this.file.path, this.prevCache);
246
- }
247
- }
248
- }
249
- class Registry {
250
- constructor(plugin, settingsBuilder, settingsManager) {
251
- this.plugin = plugin;
252
- this.settingsBuilder = settingsBuilder;
253
- this.settingsManager = settingsManager;
254
- this.app = plugin.app;
255
- this.pluginId = plugin.manifest.id;
256
- this.abortSignal = plugin.abortSignal ?? (0, import_AbortController.abortSignalNever)();
257
- }
258
- abortSignal;
259
- app;
260
- deletedMetadataCacheMap = /* @__PURE__ */ new Map();
261
- handledRenames = new HandledRenames();
262
- interruptedRenamesMap = /* @__PURE__ */ new Map();
263
- pluginId;
264
- register() {
265
- const renameDeleteHandlersMap = this.settingsManager.renameDeleteHandlersMap;
266
- renameDeleteHandlersMap.set(this.pluginId, this.settingsBuilder);
267
- this.logRegisteredHandlers();
268
- this.plugin.register(() => {
269
- renameDeleteHandlersMap.delete(this.pluginId);
270
- this.logRegisteredHandlers();
271
- });
272
- this.plugin.registerEvent(this.app.vault.on("delete", this.handleDelete.bind(this)));
273
- this.plugin.registerEvent(this.app.vault.on("rename", this.handleRename.bind(this)));
274
- this.plugin.registerEvent(this.app.metadataCache.on("deleted", this.handleMetadataDeleted.bind(this)));
275
- (0, import_MonkeyAround.registerPatch)(this.plugin, this.app.fileManager, {
276
- runAsyncLinkUpdate: (next) => {
277
- return Object.assign((linkUpdatesHandler) => this.runAsyncLinkUpdate(next, linkUpdatesHandler), { renameDeleteHandlerPatched: true });
278
- }
279
- });
280
- }
281
- handleDelete(file) {
282
- if (!this.shouldInvokeHandler()) {
283
- return;
284
- }
285
- (0, import_Queue.addToQueue)({
286
- app: this.app,
287
- operationFn: (abortSignal) => new DeleteHandler(this.app, file, abortSignal, this.settingsManager, this.deletedMetadataCacheMap).handle(),
288
- operationName: (0, import_i18next.t)(($) => $.obsidianDevUtils.renameDeleteHandler.handleDelete, { filePath: file.path })
289
- });
290
- }
291
- handleMetadataDeleted(file, prevCache) {
292
- if (!this.shouldInvokeHandler()) {
293
- return;
294
- }
295
- new MetadataDeletedHandler(this.app, file, prevCache, this.settingsManager, this.deletedMetadataCacheMap).handle();
296
- }
297
- handleRename(file, oldPath) {
298
- if (!this.shouldInvokeHandler()) {
299
- return;
300
- }
301
- if (!(0, import_FileSystem.isFile)(file)) {
302
- return;
303
- }
304
- const newPath = file.path;
305
- (0, import_Debug.getLibDebugger)("RenameDeleteHandler:handleRename")(`Handle Rename ${oldPath} -> ${newPath}`);
306
- if (this.handledRenames.has(oldPath, newPath)) {
307
- this.handledRenames.delete(oldPath, newPath);
308
- return;
309
- }
310
- const settings = this.settingsManager.getSettings();
311
- if (!settings.shouldHandleRenames) {
312
- return;
313
- }
314
- if (settings.isPathIgnored?.(oldPath)) {
315
- (0, import_Debug.getLibDebugger)("RenameDeleteHandler:handleRename")(`Skipping rename handler of old path ${oldPath} as the path is ignored.`);
316
- return;
317
- }
318
- if (settings.isPathIgnored?.(newPath)) {
319
- (0, import_Debug.getLibDebugger)("RenameDeleteHandler:handleRename")(`Skipping rename handler of new path ${newPath} as the path is ignored.`);
320
- return;
321
- }
322
- const oldCache = this.app.metadataCache.getCache(oldPath) ?? this.app.metadataCache.getCache(newPath);
323
- const oldPathBacklinksMap = (0, import_MetadataCache.getBacklinksForFileOrPath)(this.app, oldPath).data;
324
- (0, import_Queue.addToQueue)({
325
- abortSignal: this.abortSignal,
326
- app: this.app,
327
- operationFn: (abortSignal) => new RenameHandler({
328
- abortSignal,
329
- app: this.app,
330
- handledRenames: this.handledRenames,
331
- interruptedRenamesMap: this.interruptedRenamesMap,
332
- newPath,
333
- oldCache,
334
- oldPath,
335
- oldPathBacklinksMap,
336
- settingsManager: this.settingsManager
337
- }).handle(),
338
- operationName: (0, import_i18next.t)(($) => $.obsidianDevUtils.renameDeleteHandler.handleRename, { newPath, oldPath })
339
- });
340
- }
341
- logRegisteredHandlers() {
342
- const renameDeleteHandlersMap = this.settingsManager.renameDeleteHandlersMap;
343
- (0, import_Debug.getLibDebugger)("RenameDeleteHandler:logRegisteredHandlers")(
344
- `Plugins with registered rename/delete handlers: ${JSON.stringify(Array.from(renameDeleteHandlersMap.keys()))}`
345
- );
346
- }
347
- async runAsyncLinkUpdate(next, linkUpdatesHandler) {
348
- if (next.renameDeleteHandlerPatched) {
349
- await next.call(this.app.fileManager, linkUpdatesHandler);
350
- return;
351
- }
352
- await next.call(this.app.fileManager, (linkUpdates) => this.wrapLinkUpdatesHandler(linkUpdates, linkUpdatesHandler));
353
- }
354
- shouldInvokeHandler() {
355
- const pluginId = this.plugin.manifest.id;
356
- const renameDeleteHandlersMap = this.settingsManager.renameDeleteHandlersMap;
357
- const mainPluginId = Array.from(renameDeleteHandlersMap.keys())[0];
358
- return mainPluginId === pluginId;
359
- }
360
- async wrapLinkUpdatesHandler(linkUpdates, linkUpdatesHandler) {
361
- let isRenameCalled = false;
362
- const eventRef = this.app.vault.on("rename", () => {
363
- isRenameCalled = true;
364
- });
365
- try {
366
- await linkUpdatesHandler(linkUpdates);
367
- } finally {
368
- this.app.vault.offref(eventRef);
369
- }
370
- const settings = this.settingsManager.getSettings();
371
- if (!isRenameCalled || !settings.shouldHandleRenames) {
372
- return;
373
- }
374
- (0, import_Array.filterInPlace)(
375
- linkUpdates,
376
- (linkUpdate) => {
377
- if (settings.isPathIgnored?.(linkUpdate.sourceFile.path)) {
378
- (0, import_Debug.getLibDebugger)("RenameDeleteHandler:runAsyncLinkUpdate")(
379
- `Roll back to default link update of source file ${linkUpdate.sourceFile.path} as the path is ignored.`
380
- );
381
- return true;
382
- }
383
- if (settings.isPathIgnored?.(linkUpdate.resolvedFile.path)) {
384
- (0, import_Debug.getLibDebugger)("RenameDeleteHandler:runAsyncLinkUpdate")(
385
- `Roll back to default link update of resolved file ${linkUpdate.resolvedFile.path} as the path is ignored.`
386
- );
387
- return true;
388
- }
389
- if (!this.app.internalPlugins.getEnabledPluginById(import_implementations.InternalPluginName.Canvas)) {
390
- return false;
391
- }
392
- if (this.app.plugins.getPlugin("backlink-cache")) {
393
- return false;
394
- }
395
- if (linkUpdate.sourceFile.extension === import_FileSystem.CANVAS_FILE_EXTENSION) {
396
- return true;
397
- }
398
- if (linkUpdate.resolvedFile.extension === import_FileSystem.CANVAS_FILE_EXTENSION) {
399
- return true;
400
- }
401
- return false;
402
- }
403
- );
404
- }
405
- }
406
- class SettingsManager {
407
- constructor(app) {
408
- this.app = app;
409
- this.renameDeleteHandlersMap = (0, import_App.getObsidianDevUtilsState)(app, "renameDeleteHandlersMap", /* @__PURE__ */ new Map()).value;
410
- }
411
- renameDeleteHandlersMap;
412
- getSettings() {
413
- const settingsBuilders = Array.from(this.renameDeleteHandlersMap.values()).reverse();
414
- const settings = {};
415
- settings.isNote = (path) => (0, import_FileSystem.isNote)(this.app, path);
416
- settings.isPathIgnored = () => false;
417
- for (const settingsBuilder of settingsBuilders) {
418
- const newSettings = settingsBuilder();
419
- settings.shouldDeleteConflictingAttachments ||= newSettings.shouldDeleteConflictingAttachments ?? false;
420
- if (newSettings.emptyFolderBehavior) {
421
- settings.emptyFolderBehavior ??= newSettings.emptyFolderBehavior;
422
- }
423
- settings.shouldHandleDeletions ||= newSettings.shouldHandleDeletions ?? false;
424
- settings.shouldHandleRenames ||= newSettings.shouldHandleRenames ?? false;
425
- settings.shouldRenameAttachmentFiles ||= newSettings.shouldRenameAttachmentFiles ?? false;
426
- settings.shouldRenameAttachmentFolder ||= newSettings.shouldRenameAttachmentFolder ?? false;
427
- settings.shouldUpdateFileNameAliases ||= newSettings.shouldUpdateFileNameAliases ?? false;
428
- const isPathIgnored = settings.isPathIgnored;
429
- settings.isPathIgnored = (path) => isPathIgnored(path) || (newSettings.isPathIgnored?.(path) ?? false);
430
- const currentIsNote = settings.isNote;
431
- settings.isNote = (path) => currentIsNote(path) && (newSettings.isNote?.(path) ?? true);
432
- }
433
- settings.emptyFolderBehavior ??= "Keep" /* Keep */;
434
- return settings;
435
- }
436
- isNoteEx(path) {
437
- const settings = this.getSettings();
438
- return settings.isNote?.(path) ?? false;
439
- }
440
- }
441
- class RenameHandler {
442
- abortSignal;
443
- app;
444
- handledRenames;
445
- interruptedCombinedBacklinksMap;
446
- interruptedRenamesMap;
447
- newPath;
448
- oldCache;
449
- oldPath;
450
- oldPathBacklinksMap;
451
- oldPathLinks;
452
- settingsManager;
453
- constructor(params) {
454
- this.app = params.app;
455
- this.oldPath = params.oldPath;
456
- this.newPath = params.newPath;
457
- this.oldPathBacklinksMap = params.oldPathBacklinksMap;
458
- this.oldCache = params.oldCache;
459
- this.abortSignal = params.abortSignal;
460
- this.settingsManager = params.settingsManager;
461
- this.interruptedRenamesMap = params.interruptedRenamesMap;
462
- this.oldPathLinks = this.oldCache ? (0, import_MetadataCache.getAllLinks)(this.oldCache) : [];
463
- this.handledRenames = params.handledRenames;
464
- this.interruptedCombinedBacklinksMap = params.interruptedCombinedBacklinksMap ?? /* @__PURE__ */ new Map();
465
- }
466
- async handle() {
467
- if (this.oldPath === this.newPath) {
468
- return;
469
- }
470
- this.abortSignal.throwIfAborted();
471
- await this.continueInterruptedRenames();
472
- this.abortSignal.throwIfAborted();
473
- await this.refreshLinks();
474
- this.abortSignal.throwIfAborted();
475
- if (await this.handleCaseCollision()) {
476
- return;
477
- }
478
- this.abortSignal.throwIfAborted();
479
- const renamedFilePaths = (0, import_App.getObsidianDevUtilsState)(this.app, "renamedFilePaths", /* @__PURE__ */ new Set()).value;
480
- const renamedLinks = (0, import_App.getObsidianDevUtilsState)(this.app, "renamedLinkPaths", /* @__PURE__ */ new Set()).value;
481
- try {
482
- const renameMap = new RenameMap({
483
- abortSignal: this.abortSignal,
484
- app: this.app,
485
- newPath: this.newPath,
486
- oldCache: this.oldCache,
487
- oldPath: this.oldPath,
488
- settingsManager: this.settingsManager
489
- });
490
- await renameMap.fill();
491
- this.abortSignal.throwIfAborted();
492
- const combinedBacklinksMap = /* @__PURE__ */ new Map();
493
- renameMap.initOriginalLinksMap(combinedBacklinksMap);
494
- renameMap.initBacklinksMap(this.oldPathBacklinksMap, combinedBacklinksMap, this.oldPath);
495
- for (const attachmentOldPath of renameMap.keys()) {
496
- if (attachmentOldPath === this.oldPath) {
497
- continue;
498
- }
499
- const attachmentOldPathBacklinksMap = (await (0, import_MetadataCache.getBacklinksForFileSafe)(this.app, attachmentOldPath)).data;
500
- this.abortSignal.throwIfAborted();
501
- renameMap.initBacklinksMap(attachmentOldPathBacklinksMap, combinedBacklinksMap, attachmentOldPath);
502
- }
503
- const parentFolderPaths = /* @__PURE__ */ new Set();
504
- for (const [oldAttachmentPath, newAttachmentPath] of renameMap.entries()) {
505
- if (oldAttachmentPath !== this.oldPath) {
506
- const fixedNewAttachmentPath = await this.renameHandled(oldAttachmentPath, newAttachmentPath);
507
- this.abortSignal.throwIfAborted();
508
- renameMap.set(oldAttachmentPath, fixedNewAttachmentPath);
509
- }
510
- if (!this.settingsManager.isNoteEx(oldAttachmentPath)) {
511
- parentFolderPaths.add((0, import_Path.dirname)(oldAttachmentPath));
512
- }
513
- }
514
- await cleanupParentFolders(this.app, this.settingsManager.getSettings(), Array.from(parentFolderPaths));
515
- this.abortSignal.throwIfAborted();
516
- const settings = this.settingsManager.getSettings();
517
- for (const [newBacklinkPath, linkJsonToPathMap] of Array.from(combinedBacklinksMap.entries()).concat(
518
- Array.from(this.interruptedCombinedBacklinksMap.entries())
519
- )) {
520
- let linkIndex = 0;
521
- await (0, import_Link.editLinks)(this.app, newBacklinkPath, (link) => {
522
- linkIndex++;
523
- const oldAttachmentPath = linkJsonToPathMap.get((0, import_ObjectUtils.toJson)(link));
524
- if (!oldAttachmentPath) {
525
- return;
526
- }
527
- const newAttachmentPath = renameMap.get(oldAttachmentPath) ?? oldAttachmentPath;
528
- renamedFilePaths.add(newBacklinkPath);
529
- renamedLinks.add(`${newBacklinkPath}//${String(linkIndex)}`);
530
- return (0, import_Link.updateLink)((0, import_ObjectUtils.normalizeOptionalProperties)({
531
- app: this.app,
532
- link,
533
- newSourcePathOrFile: newBacklinkPath,
534
- newTargetPathOrFile: newAttachmentPath,
535
- oldTargetPathOrFile: oldAttachmentPath,
536
- shouldUpdateFileNameAlias: settings.shouldUpdateFileNameAliases
537
- }));
538
- }, {
539
- shouldFailOnMissingFile: false
540
- });
541
- this.abortSignal.throwIfAborted();
542
- }
543
- if ((0, import_FileSystem.isNote)(this.app, this.newPath)) {
544
- await (0, import_Link.updateLinksInFile)((0, import_ObjectUtils.normalizeOptionalProperties)({
545
- app: this.app,
546
- newSourcePathOrFile: this.newPath,
547
- oldSourcePathOrFile: this.oldPath,
548
- shouldFailOnMissingFile: false,
549
- shouldUpdateFileNameAlias: settings.shouldUpdateFileNameAliases
550
- }));
551
- this.abortSignal.throwIfAborted();
552
- }
553
- if (!(0, import_FileSystem.getFileOrNull)(this.app, this.newPath)) {
554
- let interruptedRenames = this.interruptedRenamesMap.get(this.newPath);
555
- if (!interruptedRenames) {
556
- interruptedRenames = [];
557
- this.interruptedRenamesMap.set(this.newPath, interruptedRenames);
558
- }
559
- interruptedRenames.push({
560
- combinedBacklinksMap,
561
- oldPath: this.oldPath
562
- });
563
- }
564
- } finally {
565
- const orphanKeys = Array.from(this.handledRenames.keys());
566
- (0, import_Queue.addToQueue)({
567
- abortSignal: this.abortSignal,
568
- app: this.app,
569
- operationFn: () => {
570
- for (const orphanKey of orphanKeys) {
571
- this.handledRenames.delete(orphanKey.oldPath, orphanKey.newPath);
572
- }
573
- if (renamedLinks.size === 0) {
574
- return;
575
- }
576
- new import_obsidian.Notice((0, import_i18next.t)(($) => $.obsidianDevUtils.renameDeleteHandler.updatedLinks, { filesCount: renamedFilePaths.size, linksCount: renamedLinks.size }));
577
- renamedFilePaths.clear();
578
- renamedLinks.clear();
579
- },
580
- operationName: (0, import_i18next.t)(($) => $.obsidianDevUtils.renameDeleteHandler.handleOrphanedRenames)
581
- });
582
- }
583
- }
584
- async continueInterruptedRenames() {
585
- const interruptedRenames = this.interruptedRenamesMap.get(this.oldPath);
586
- if (interruptedRenames) {
587
- this.interruptedRenamesMap.delete(this.oldPath);
588
- for (const interruptedRename of interruptedRenames) {
589
- await new RenameHandler({
590
- abortSignal: this.abortSignal,
591
- app: this.app,
592
- handledRenames: this.handledRenames,
593
- interruptedCombinedBacklinksMap: interruptedRename.combinedBacklinksMap,
594
- interruptedRenamesMap: this.interruptedRenamesMap,
595
- newPath: this.newPath,
596
- oldCache: this.oldCache,
597
- oldPath: interruptedRename.oldPath,
598
- oldPathBacklinksMap: this.oldPathBacklinksMap,
599
- settingsManager: this.settingsManager
600
- }).handle();
601
- }
602
- }
603
- }
604
- async handleCaseCollision() {
605
- if (!this.app.vault.adapter.insensitive || this.oldPath.toLowerCase() !== this.newPath.toLowerCase()) {
606
- return false;
607
- }
608
- const tempPath = (0, import_Path.join)((0, import_Path.dirname)(this.newPath), `__temp__${(0, import_Path.basename)(this.newPath)}`);
609
- await this.renameHandled(this.newPath, tempPath);
610
- await new RenameHandler({
611
- abortSignal: this.abortSignal,
612
- app: this.app,
613
- handledRenames: this.handledRenames,
614
- interruptedRenamesMap: this.interruptedRenamesMap,
615
- newPath: tempPath,
616
- oldCache: this.oldCache,
617
- oldPath: this.oldPath,
618
- oldPathBacklinksMap: this.oldPathBacklinksMap,
619
- settingsManager: this.settingsManager
620
- }).handle();
621
- await this.app.fileManager.renameFile((0, import_FileSystem.getFile)(this.app, tempPath), this.newPath);
622
- return true;
623
- }
624
- async refreshLinks() {
625
- const cache = this.app.metadataCache.getCache(this.oldPath) ?? this.app.metadataCache.getCache(this.newPath);
626
- const oldPathLinksRefreshed = cache ? (0, import_MetadataCache.getAllLinks)(cache) : [];
627
- const fakeOldFile = (0, import_FileSystem.getFile)(this.app, this.oldPath, true);
628
- let oldPathBacklinksMapRefreshed = /* @__PURE__ */ new Map();
629
- await (0, import_MetadataCache.tempRegisterFilesAndRun)(this.app, [fakeOldFile], async () => {
630
- oldPathBacklinksMapRefreshed = (await (0, import_MetadataCache.getBacklinksForFileSafe)(this.app, fakeOldFile)).data;
631
- });
632
- for (const link of oldPathLinksRefreshed) {
633
- if (this.oldPathLinks.includes(link)) {
634
- continue;
635
- }
636
- this.oldPathLinks.push(link);
637
- }
638
- for (const [backlinkPath, refreshedLinks] of oldPathBacklinksMapRefreshed.entries()) {
639
- let oldLinks = this.oldPathBacklinksMap.get(backlinkPath);
640
- if (!oldLinks) {
641
- oldLinks = [];
642
- this.oldPathBacklinksMap.set(backlinkPath, oldLinks);
643
- }
644
- for (const link of refreshedLinks) {
645
- if (oldLinks.includes(link)) {
646
- continue;
647
- }
648
- oldLinks.push(link);
649
- }
650
- }
651
- }
652
- async renameHandled(oldPath, newPath) {
653
- newPath = (0, import_Vault.getSafeRenamePath)(this.app, oldPath, newPath);
654
- if (oldPath === newPath) {
655
- return newPath;
656
- }
657
- this.handledRenames.add(oldPath, newPath);
658
- newPath = await (0, import_Vault.renameSafe)(this.app, oldPath, newPath);
659
- return newPath;
660
- }
661
- }
662
- class RenameMap {
663
- abortSignal;
664
- app;
665
- map = /* @__PURE__ */ new Map();
666
- newPath;
667
- oldCache;
668
- oldPath;
669
- oldPathLinks;
670
- settingsManager;
671
- constructor(params) {
672
- this.abortSignal = params.abortSignal;
673
- this.app = params.app;
674
- this.settingsManager = params.settingsManager;
675
- this.oldCache = params.oldCache;
676
- this.oldPath = params.oldPath;
677
- this.newPath = params.newPath;
678
- this.oldPathLinks = this.oldCache ? (0, import_MetadataCache.getAllLinks)(this.oldCache) : [];
679
- }
680
- entries() {
681
- return this.map.entries();
682
- }
683
- async fill() {
684
- this.abortSignal.throwIfAborted();
685
- this.map.set(this.oldPath, this.newPath);
686
- if (!(0, import_FileSystem.isNote)(this.app, this.oldPath)) {
687
- return;
688
- }
689
- const settings = this.settingsManager.getSettings();
690
- const oldFile = (0, import_FileSystem.getFile)(this.app, this.oldPath, true);
691
- let oldAttachmentFolderPath = "";
692
- await (0, import_MetadataCache.tempRegisterFilesAndRunAsync)(this.app, [oldFile], async () => {
693
- const shouldFakeOldPathCache = this.oldCache && oldFile.deleted;
694
- if (shouldFakeOldPathCache) {
695
- (0, import_MetadataCache.registerFileCacheForNonExistingFile)(this.app, oldFile, this.oldCache);
696
- }
697
- try {
698
- oldAttachmentFolderPath = await (0, import_AttachmentPath.getAttachmentFolderPath)(this.app, this.oldPath, import_AttachmentPath.AttachmentPathContext.RenameNote);
699
- } finally {
700
- if (shouldFakeOldPathCache) {
701
- (0, import_MetadataCache.unregisterFileCacheForNonExistingFile)(this.app, oldFile);
702
- }
703
- }
704
- });
705
- const newAttachmentFolderPath = settings.shouldRenameAttachmentFolder ? await (0, import_AttachmentPath.getAttachmentFolderPath)(this.app, this.newPath, import_AttachmentPath.AttachmentPathContext.RenameNote) : oldAttachmentFolderPath;
706
- const isOldAttachmentFolderAtRoot = oldAttachmentFolderPath === "/";
707
- const oldAttachmentFolder = (0, import_FileSystem.getFolderOrNull)(this.app, oldAttachmentFolderPath);
708
- if (!oldAttachmentFolder) {
709
- return;
710
- }
711
- if (oldAttachmentFolderPath === newAttachmentFolderPath && !settings.shouldRenameAttachmentFiles) {
712
- return;
713
- }
714
- const oldAttachmentFiles = [];
715
- if (await (0, import_AttachmentPath.hasOwnAttachmentFolder)(this.app, this.oldPath, import_AttachmentPath.AttachmentPathContext.RenameNote)) {
716
- import_obsidian.Vault.recurseChildren(oldAttachmentFolder, (oldAttachmentFile) => {
717
- this.abortSignal.throwIfAborted();
718
- if ((0, import_FileSystem.isFile)(oldAttachmentFile)) {
719
- oldAttachmentFiles.push(oldAttachmentFile);
720
- }
721
- });
722
- } else {
723
- for (const oldPathLink of this.oldPathLinks) {
724
- this.abortSignal.throwIfAborted();
725
- const oldAttachmentFile = (0, import_Link.extractLinkFile)(this.app, oldPathLink, this.oldPath);
726
- if (!oldAttachmentFile) {
727
- continue;
728
- }
729
- if (isOldAttachmentFolderAtRoot || oldAttachmentFile.path.startsWith(oldAttachmentFolderPath)) {
730
- const oldAttachmentBacklinks = await (0, import_MetadataCache.getBacklinksForFileSafe)(this.app, oldAttachmentFile);
731
- this.abortSignal.throwIfAborted();
732
- const keys = new Set(oldAttachmentBacklinks.keys());
733
- keys.delete(this.oldPath);
734
- keys.delete(this.newPath);
735
- if (keys.size === 0) {
736
- oldAttachmentFiles.push(oldAttachmentFile);
737
- }
738
- }
739
- }
740
- }
741
- for (const oldAttachmentFile of oldAttachmentFiles) {
742
- this.abortSignal.throwIfAborted();
743
- if (this.settingsManager.isNoteEx(oldAttachmentFile.path)) {
744
- continue;
745
- }
746
- let newAttachmentFilePath;
747
- if (settings.shouldRenameAttachmentFiles) {
748
- newAttachmentFilePath = await (0, import_AttachmentPath.getAttachmentFilePath)({
749
- app: this.app,
750
- context: import_AttachmentPath.AttachmentPathContext.RenameNote,
751
- notePathOrFile: this.newPath,
752
- oldAttachmentPathOrFile: oldAttachmentFile,
753
- oldNotePathOrFile: this.oldPath,
754
- shouldSkipDuplicateCheck: true
755
- });
756
- this.abortSignal.throwIfAborted();
757
- } else {
758
- const relativePath = isOldAttachmentFolderAtRoot ? oldAttachmentFile.path : (0, import_Path.relative)(oldAttachmentFolderPath, oldAttachmentFile.path);
759
- const newFolder = (0, import_Path.join)(newAttachmentFolderPath, (0, import_Path.dirname)(relativePath));
760
- newAttachmentFilePath = (0, import_Path.join)(newFolder, oldAttachmentFile.name);
761
- }
762
- if (oldAttachmentFile.path === newAttachmentFilePath) {
763
- continue;
764
- }
765
- if (settings.shouldDeleteConflictingAttachments) {
766
- const newAttachmentFile = (0, import_FileSystem.getFileOrNull)(this.app, newAttachmentFilePath);
767
- if (newAttachmentFile) {
768
- (0, import_Debug.getLibDebugger)("RenameDeleteHandler:fillRenameMap")(`Removing conflicting attachment ${newAttachmentFile.path}.`);
769
- await this.app.fileManager.trashFile(newAttachmentFile);
770
- this.abortSignal.throwIfAborted();
771
- }
772
- } else {
773
- const dir = (0, import_Path.dirname)(newAttachmentFilePath);
774
- const ext = (0, import_Path.extname)(newAttachmentFilePath);
775
- const baseName = (0, import_Path.basename)(newAttachmentFilePath, ext);
776
- newAttachmentFilePath = this.app.vault.getAvailablePath((0, import_Path.join)(dir, baseName), ext.slice(1));
777
- }
778
- this.map.set(oldAttachmentFile.path, newAttachmentFilePath);
779
- }
780
- }
781
- get(oldPath) {
782
- return this.map.get(oldPath);
783
- }
784
- initBacklinksMap(singleBacklinksMap, combinedBacklinksMap, path) {
785
- for (const [backlinkPath, links] of singleBacklinksMap.entries()) {
786
- const newBacklinkPath = this.map.get(backlinkPath) ?? backlinkPath;
787
- const linkJsonToPathMap = combinedBacklinksMap.get(newBacklinkPath) ?? /* @__PURE__ */ new Map();
788
- combinedBacklinksMap.set(newBacklinkPath, linkJsonToPathMap);
789
- for (const link of links) {
790
- linkJsonToPathMap.set((0, import_ObjectUtils.toJson)(link), path);
791
- }
792
- }
793
- }
794
- initOriginalLinksMap(combinedBacklinksMap) {
795
- for (const oldPathLink of this.oldPathLinks) {
796
- const oldAttachmentFile = (0, import_Link.extractLinkFile)(this.app, oldPathLink, this.oldPath);
797
- if (!oldAttachmentFile) {
798
- continue;
799
- }
800
- const backlinksMap = /* @__PURE__ */ new Map();
801
- backlinksMap.set(this.newPath, [oldPathLink]);
802
- this.initBacklinksMap(backlinksMap, combinedBacklinksMap, oldAttachmentFile.path);
803
- }
804
- }
805
- keys() {
806
- return this.map.keys();
807
- }
808
- set(oldPath, newPath) {
809
- this.map.set(oldPath, newPath);
810
- }
811
- }
812
- function registerRenameDeleteHandlers(plugin, settingsBuilder) {
813
- new Registry(plugin, settingsBuilder, new SettingsManager(plugin.app)).register();
814
- }
815
- async function cleanupParentFolders(app, settings, parentFolderPaths) {
816
- if (settings.emptyFolderBehavior === "Keep" /* Keep */) {
817
- return;
818
- }
819
- for (const parentFolderPath of parentFolderPaths) {
820
- switch (settings.emptyFolderBehavior) {
821
- case "Delete" /* Delete */:
822
- await (0, import_VaultEx.deleteEmptyFolder)(app, parentFolderPath);
823
- break;
824
- case "DeleteWithEmptyParents" /* DeleteWithEmptyParents */:
825
- await (0, import_VaultEx.deleteEmptyFolderHierarchy)(app, parentFolderPath);
826
- break;
827
- default:
828
- break;
829
- }
830
- }
831
- }
832
- // Annotate the CommonJS export names for ESM import in node:
833
- 0 && (module.exports = {
834
- EmptyFolderBehavior,
835
- registerRenameDeleteHandlers
836
- });
837
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIHJlbmFtZSBhbmQgZGVsZXRlIGV2ZW50cyBpbiBPYnNpZGlhbi5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgQ2FjaGVkTWV0YWRhdGEsXG4gIEZpbGVNYW5hZ2VyLFxuICBQbHVnaW4sXG4gIFJlZmVyZW5jZSxcbiAgVEFic3RyYWN0RmlsZSxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBMaW5rVXBkYXRlLFxuICBMaW5rVXBkYXRlc0hhbmRsZXJcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncyc7XG5cbmltcG9ydCB7IHQgfSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB7XG4gIE5vdGljZSxcbiAgVmF1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgSW50ZXJuYWxQbHVnaW5OYW1lIH0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFVwZGF0ZUxpbmtQYXJhbXMsXG4gIFVwZGF0ZUxpbmtzSW5GaWxlUGFyYW1zXG59IGZyb20gJy4vTGluay50cyc7XG5cbmltcG9ydCB7IGFib3J0U2lnbmFsTmV2ZXIgfSBmcm9tICcuLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgZmlsdGVySW5QbGFjZSB9IGZyb20gJy4uL0FycmF5LnRzJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vRGVidWcudHMnO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzLFxuICB0b0pzb25cbn0gZnJvbSAnLi4vT2JqZWN0VXRpbHMudHMnO1xuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW4sXG4gIHJlbGF0aXZlXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnLi9BcHAudHMnO1xuaW1wb3J0IHtcbiAgQXR0YWNobWVudFBhdGhDb250ZXh0LFxuICBnZXRBdHRhY2htZW50RmlsZVBhdGgsXG4gIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoLFxuICBoYXNPd25BdHRhY2htZW50Rm9sZGVyXG59IGZyb20gJy4vQXR0YWNobWVudFBhdGgudHMnO1xuaW1wb3J0IHtcbiAgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OLFxuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgZWRpdExpbmtzLFxuICBleHRyYWN0TGlua0ZpbGUsXG4gIHVwZGF0ZUxpbmssXG4gIHVwZGF0ZUxpbmtzSW5GaWxlXG59IGZyb20gJy4vTGluay50cyc7XG5pbXBvcnQge1xuICBnZXRBbGxMaW5rcyxcbiAgZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aCxcbiAgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUsXG4gIHJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlLFxuICB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bixcbiAgdGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW5Bc3luYyxcbiAgdW5yZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZVxufSBmcm9tICcuL01ldGFkYXRhQ2FjaGUudHMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQYXRjaCB9IGZyb20gJy4vTW9ua2V5QXJvdW5kLnRzJztcbmltcG9ydCB7IGFkZFRvUXVldWUgfSBmcm9tICcuL1F1ZXVlLnRzJztcbmltcG9ydCB7XG4gIGdldFNhZmVSZW5hbWVQYXRoLFxuICByZW5hbWVTYWZlXG59IGZyb20gJy4vVmF1bHQudHMnO1xuaW1wb3J0IHtcbiAgZGVsZXRlRW1wdHlGb2xkZXIsXG4gIGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5LFxuICBkZWxldGVTYWZlXG59IGZyb20gJy4vVmF1bHRFeC50cyc7XG5cbi8qKlxuICogQSBiZWhhdmlvciBvZiB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVyIHdoZW4gZGVsZXRpbmcgZW1wdHkgZm9sZGVycy5cbiAqL1xuZXhwb3J0IGVudW0gRW1wdHlGb2xkZXJCZWhhdmlvciB7XG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIGVtcHR5IGZvbGRlci5cbiAgICovXG4gIERlbGV0ZSA9ICdEZWxldGUnLFxuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIGVtcHR5IGZvbGRlciBhbmQgYWxsIGl0cyBlbXB0eSBwYXJlbnRzLlxuICAgKi9cbiAgRGVsZXRlV2l0aEVtcHR5UGFyZW50cyA9ICdEZWxldGVXaXRoRW1wdHlQYXJlbnRzJyxcblxuICAvKipcbiAgICogS2VlcCB0aGUgZW1wdHkgZm9sZGVyLlxuICAgKi9cbiAgS2VlcCA9ICdLZWVwJ1xufVxuXG4vKipcbiAqIFNldHRpbmdzIGZvciB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBBIGJlaGF2aW9yIG9mIHRoZSByZW5hbWUvZGVsZXRlIGhhbmRsZXIgd2hlbiBkZWxldGluZyBlbXB0eSBmb2xkZXJzLlxuICAgKi9cbiAgZW1wdHlGb2xkZXJCZWhhdmlvcjogRW1wdHlGb2xkZXJCZWhhdmlvcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcGF0aCBpcyBhIG5vdGUuXG4gICAqL1xuICBpc05vdGUocGF0aDogc3RyaW5nKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpZ25vcmUgdGhlIHBhdGguXG4gICAqL1xuICBpc1BhdGhJZ25vcmVkKHBhdGg6IHN0cmluZyk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIGNvbmZsaWN0aW5nIGF0dGFjaG1lbnRzLlxuICAgKi9cbiAgc2hvdWxkRGVsZXRlQ29uZmxpY3RpbmdBdHRhY2htZW50czogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBoYW5kbGUgZGVsZXRpb25zLlxuICAgKi9cbiAgc2hvdWxkSGFuZGxlRGVsZXRpb25zOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhhbmRsZSByZW5hbWVzLlxuICAgKi9cbiAgc2hvdWxkSGFuZGxlUmVuYW1lczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW5hbWUgYXR0YWNobWVudCBmaWxlcyB3aGVuIGEgbm90ZSBpcyByZW5hbWVkLlxuICAgKi9cbiAgc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlbmFtZSBhdHRhY2htZW50IGZvbGRlciB3aGVuIGEgbm90ZSBpcyByZW5hbWVkLlxuICAgKi9cbiAgc2hvdWxkUmVuYW1lQXR0YWNobWVudEZvbGRlcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgZmlsZSBuYW1lIGFsaWFzZXMgd2hlbiBhIG5vdGUgaXMgcmVuYW1lZC5cbiAgICovXG4gIHNob3VsZFVwZGF0ZUZpbGVOYW1lQWxpYXNlczogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEFib3J0YWJsZVBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG59XG5cbmludGVyZmFjZSBIYW5kbGVkUmVuYW1lS2V5IHtcbiAgbmV3UGF0aDogc3RyaW5nO1xuICBvbGRQYXRoOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJbnRlcnJ1cHRlZFJlbmFtZSB7XG4gIGNvbWJpbmVkQmFja2xpbmtzTWFwOiBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PjtcbiAgb2xkUGF0aDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUmVuYW1lSGFuZGxlclBhcmFtcyB7XG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHJlYWRvbmx5IGhhbmRsZWRSZW5hbWVzOiBIYW5kbGVkUmVuYW1lcztcbiAgcmVhZG9ubHkgaW50ZXJydXB0ZWRDb21iaW5lZEJhY2tsaW5rc01hcD86IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+O1xuICByZWFkb25seSBpbnRlcnJ1cHRlZFJlbmFtZXNNYXA6IE1hcDxzdHJpbmcsIEludGVycnVwdGVkUmVuYW1lW10+O1xuICByZWFkb25seSBuZXdQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9sZENhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGw7XG4gIHJlYWRvbmx5IG9sZFBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgb2xkUGF0aEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgUmVmZXJlbmNlW10+O1xuICByZWFkb25seSBzZXR0aW5nc01hbmFnZXI6IFNldHRpbmdzTWFuYWdlcjtcbn1cblxuaW50ZXJmYWNlIFJlbmFtZU1hcFBhcmFtcyB7XG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHJlYWRvbmx5IG5ld1BhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgb2xkQ2FjaGU6IENhY2hlZE1ldGFkYXRhIHwgbnVsbDtcbiAgcmVhZG9ubHkgb2xkUGF0aDogc3RyaW5nO1xuICByZWFkb25seSBzZXR0aW5nc01hbmFnZXI6IFNldHRpbmdzTWFuYWdlcjtcbn1cblxudHlwZSBSdW5Bc3luY0xpbmtVcGRhdGVGbiA9IHsgcmVuYW1lRGVsZXRlSGFuZGxlclBhdGNoZWQ/OiBib29sZWFuIH0gJiBGaWxlTWFuYWdlclsncnVuQXN5bmNMaW5rVXBkYXRlJ107XG5cbmNsYXNzIERlbGV0ZUhhbmRsZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHA6IEFwcCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbGU6IFRBYnN0cmFjdEZpbGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nc01hbmFnZXI6IFNldHRpbmdzTWFuYWdlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwOiBNYXA8c3RyaW5nLCBDYWNoZWRNZXRhZGF0YT5cbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICBnZXRMaWJEZWJ1Z2dlcignUmVuYW1lRGVsZXRlSGFuZGxlcjpoYW5kbGVEZWxldGUnKShgSGFuZGxlIERlbGV0ZSAke3RoaXMuZmlsZS5wYXRofWApO1xuICAgIGlmICghaXNOb3RlKHRoaXMuYXBwLCB0aGlzLmZpbGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzTWFuYWdlci5nZXRTZXR0aW5ncygpO1xuXG4gICAgaWYgKHNldHRpbmdzLmlzUGF0aElnbm9yZWQ/Lih0aGlzLmZpbGUucGF0aCkpIHtcbiAgICAgIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOmhhbmRsZURlbGV0ZScpKGBTa2lwcGluZyBkZWxldGUgaGFuZGxlciBvZiAke3RoaXMuZmlsZS5wYXRofSBhcyB0aGUgcGF0aCBpcyBpZ25vcmVkLmApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudEZvbGRlclBhdGhzID0gbmV3IFNldDxzdHJpbmc+KFtkaXJuYW1lKHRoaXMuZmlsZS5wYXRoKV0pO1xuXG4gICAgaWYgKHNldHRpbmdzLnNob3VsZEhhbmRsZURlbGV0aW9ucykge1xuICAgICAgY29uc3QgY2FjaGUgPSB0aGlzLmRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwLmdldCh0aGlzLmZpbGUucGF0aCk7XG4gICAgICB0aGlzLmRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwLmRlbGV0ZSh0aGlzLmZpbGUucGF0aCk7XG4gICAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgY29uc3QgbGlua3MgPSBnZXRBbGxMaW5rcyhjYWNoZSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XG4gICAgICAgICAgY29uc3QgYXR0YWNobWVudEZpbGUgPSBleHRyYWN0TGlua0ZpbGUodGhpcy5hcHAsIGxpbmssIHRoaXMuZmlsZS5wYXRoKTtcbiAgICAgICAgICBpZiAoIWF0dGFjaG1lbnRGaWxlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zZXR0aW5nc01hbmFnZXIuaXNOb3RlRXgoYXR0YWNobWVudEZpbGUucGF0aCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhcmVudEZvbGRlclBhdGhzLmFkZChhdHRhY2htZW50RmlsZS5wYXJlbnQ/LnBhdGggPz8gJycpO1xuICAgICAgICAgIGF3YWl0IGRlbGV0ZVNhZmUodGhpcy5hcHAsIGF0dGFjaG1lbnRGaWxlLCB0aGlzLmZpbGUucGF0aCwgZmFsc2UsIHNldHRpbmdzLmVtcHR5Rm9sZGVyQmVoYXZpb3IgIT09IEVtcHR5Rm9sZGVyQmVoYXZpb3IuS2VlcCk7XG4gICAgICAgICAgdGhpcy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGFyZW50Rm9sZGVyUGF0aHMuZGVsZXRlKCcnKTtcbiAgICBhd2FpdCBjbGVhbnVwUGFyZW50Rm9sZGVycyh0aGlzLmFwcCwgdGhpcy5zZXR0aW5nc01hbmFnZXIuZ2V0U2V0dGluZ3MoKSwgQXJyYXkuZnJvbShwYXJlbnRGb2xkZXJQYXRocykpO1xuICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgIGlmICghc2V0dGluZ3Muc2hvdWxkSGFuZGxlRGVsZXRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCh0aGlzLmFwcCwgdGhpcy5maWxlLnBhdGgsIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5EZWxldGVOb3RlKTtcbiAgICBjb25zdCBhdHRhY2htZW50Rm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKHRoaXMuYXBwLCBhdHRhY2htZW50Rm9sZGVyUGF0aCk7XG5cbiAgICBpZiAoIWF0dGFjaG1lbnRGb2xkZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWF3YWl0IGhhc093bkF0dGFjaG1lbnRGb2xkZXIodGhpcy5hcHAsIHRoaXMuZmlsZS5wYXRoLCBBdHRhY2htZW50UGF0aENvbnRleHQuRGVsZXRlTm90ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICBhd2FpdCBkZWxldGVTYWZlKHRoaXMuYXBwLCBhdHRhY2htZW50Rm9sZGVyLCB0aGlzLmZpbGUucGF0aCwgZmFsc2UsIHNldHRpbmdzLmVtcHR5Rm9sZGVyQmVoYXZpb3IgIT09IEVtcHR5Rm9sZGVyQmVoYXZpb3IuS2VlcCk7XG4gICAgdGhpcy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICB9XG59XG5cbmNsYXNzIEhhbmRsZWRSZW5hbWVzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBuZXcgTWFwPHN0cmluZywgSGFuZGxlZFJlbmFtZUtleT4oKTtcblxuICBwdWJsaWMgYWRkKG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5tYXAuc2V0KHRoaXMua2V5VG9TdHJpbmcob2xkUGF0aCwgbmV3UGF0aCksIHsgbmV3UGF0aCwgb2xkUGF0aCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUob2xkUGF0aDogc3RyaW5nLCBuZXdQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1hcC5kZWxldGUodGhpcy5rZXlUb1N0cmluZyhvbGRQYXRoLCBuZXdQYXRoKSk7XG4gIH1cblxuICBwdWJsaWMgaGFzKG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmhhcyh0aGlzLmtleVRvU3RyaW5nKG9sZFBhdGgsIG5ld1BhdGgpKTtcbiAgfVxuXG4gIHB1YmxpYyBrZXlzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8SGFuZGxlZFJlbmFtZUtleT4ge1xuICAgIHJldHVybiB0aGlzLm1hcC52YWx1ZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUga2V5VG9TdHJpbmcob2xkUGF0aDogc3RyaW5nLCBuZXdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtvbGRQYXRofSAtPiAke25ld1BhdGh9YDtcbiAgfVxufVxuXG5jbGFzcyBNZXRhZGF0YURlbGV0ZWRIYW5kbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHAsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlOiBUQWJzdHJhY3RGaWxlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJldkNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGwsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nc01hbmFnZXI6IFNldHRpbmdzTWFuYWdlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwOiBNYXA8c3RyaW5nLCBDYWNoZWRNZXRhZGF0YT5cbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5nc01hbmFnZXIuZ2V0U2V0dGluZ3MoKTtcblxuICAgIGlmICghc2V0dGluZ3Muc2hvdWxkSGFuZGxlRGVsZXRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzLmlzUGF0aElnbm9yZWQ/Lih0aGlzLmZpbGUucGF0aCkpIHtcbiAgICAgIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOmhhbmRsZU1ldGFkYXRhRGVsZXRlZCcpKGBTa2lwcGluZyBtZXRhZGF0YSBkZWxldGUgaGFuZGxlciBvZiAke3RoaXMuZmlsZS5wYXRofSBhcyB0aGUgcGF0aCBpcyBpZ25vcmVkLmApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc01hcmtkb3duRmlsZSh0aGlzLmFwcCwgdGhpcy5maWxlKSAmJiB0aGlzLnByZXZDYWNoZSkge1xuICAgICAgdGhpcy5kZWxldGVkTWV0YWRhdGFDYWNoZU1hcC5zZXQodGhpcy5maWxlLnBhdGgsIHRoaXMucHJldkNhY2hlKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgUmVnaXN0cnkge1xuICBwcml2YXRlIHJlYWRvbmx5IGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHA6IEFwcDtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWxldGVkTWV0YWRhdGFDYWNoZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBDYWNoZWRNZXRhZGF0YT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVkUmVuYW1lcyA9IG5ldyBIYW5kbGVkUmVuYW1lcygpO1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVycnVwdGVkUmVuYW1lc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBJbnRlcnJ1cHRlZFJlbmFtZVtdPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luOiBBYm9ydGFibGVQbHVnaW4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nc0J1aWxkZXI6ICgpID0+IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzTWFuYWdlcjogU2V0dGluZ3NNYW5hZ2VyXG4gICkge1xuICAgIHRoaXMuYXBwID0gcGx1Z2luLmFwcDtcbiAgICB0aGlzLnBsdWdpbklkID0gcGx1Z2luLm1hbmlmZXN0LmlkO1xuICAgIHRoaXMuYWJvcnRTaWduYWwgPSBwbHVnaW4uYWJvcnRTaWduYWwgPz8gYWJvcnRTaWduYWxOZXZlcigpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gdGhpcy5zZXR0aW5nc01hbmFnZXIucmVuYW1lRGVsZXRlSGFuZGxlcnNNYXA7XG5cbiAgICByZW5hbWVEZWxldGVIYW5kbGVyc01hcC5zZXQodGhpcy5wbHVnaW5JZCwgdGhpcy5zZXR0aW5nc0J1aWxkZXIpO1xuICAgIHRoaXMubG9nUmVnaXN0ZXJlZEhhbmRsZXJzKCk7XG5cbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlcigoKSA9PiB7XG4gICAgICByZW5hbWVEZWxldGVIYW5kbGVyc01hcC5kZWxldGUodGhpcy5wbHVnaW5JZCk7XG4gICAgICB0aGlzLmxvZ1JlZ2lzdGVyZWRIYW5kbGVycygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC52YXVsdC5vbignZGVsZXRlJywgdGhpcy5oYW5kbGVEZWxldGUuYmluZCh0aGlzKSkpO1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRXZlbnQodGhpcy5hcHAudmF1bHQub24oJ3JlbmFtZScsIHRoaXMuaGFuZGxlUmVuYW1lLmJpbmQodGhpcykpKTtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLm1ldGFkYXRhQ2FjaGUub24oJ2RlbGV0ZWQnLCB0aGlzLmhhbmRsZU1ldGFkYXRhRGVsZXRlZC5iaW5kKHRoaXMpKSk7XG5cbiAgICByZWdpc3RlclBhdGNoKHRoaXMucGx1Z2luLCB0aGlzLmFwcC5maWxlTWFuYWdlciwge1xuICAgICAgcnVuQXN5bmNMaW5rVXBkYXRlOiAobmV4dDogUnVuQXN5bmNMaW5rVXBkYXRlRm4pOiBSdW5Bc3luY0xpbmtVcGRhdGVGbiA9PiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKChsaW5rVXBkYXRlc0hhbmRsZXIpID0+IHRoaXMucnVuQXN5bmNMaW5rVXBkYXRlKG5leHQsIGxpbmtVcGRhdGVzSGFuZGxlciksIHsgcmVuYW1lRGVsZXRlSGFuZGxlclBhdGNoZWQ6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURlbGV0ZShmaWxlOiBUQWJzdHJhY3RGaWxlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZEludm9rZUhhbmRsZXIoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhZGRUb1F1ZXVlKHtcbiAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICBvcGVyYXRpb25GbjogKGFib3J0U2lnbmFsKSA9PiBuZXcgRGVsZXRlSGFuZGxlcih0aGlzLmFwcCwgZmlsZSwgYWJvcnRTaWduYWwsIHRoaXMuc2V0dGluZ3NNYW5hZ2VyLCB0aGlzLmRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwKS5oYW5kbGUoKSxcbiAgICAgIG9wZXJhdGlvbk5hbWU6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5yZW5hbWVEZWxldGVIYW5kbGVyLmhhbmRsZURlbGV0ZSwgeyBmaWxlUGF0aDogZmlsZS5wYXRoIH0pXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU1ldGFkYXRhRGVsZXRlZChmaWxlOiBUQWJzdHJhY3RGaWxlLCBwcmV2Q2FjaGU6IENhY2hlZE1ldGFkYXRhIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRJbnZva2VIYW5kbGVyKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbmV3IE1ldGFkYXRhRGVsZXRlZEhhbmRsZXIodGhpcy5hcHAsIGZpbGUsIHByZXZDYWNoZSwgdGhpcy5zZXR0aW5nc01hbmFnZXIsIHRoaXMuZGVsZXRlZE1ldGFkYXRhQ2FjaGVNYXApLmhhbmRsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZW5hbWUoZmlsZTogVEFic3RyYWN0RmlsZSwgb2xkUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZEludm9rZUhhbmRsZXIoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghaXNGaWxlKGZpbGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UGF0aCA9IGZpbGUucGF0aDtcblxuICAgIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOmhhbmRsZVJlbmFtZScpKGBIYW5kbGUgUmVuYW1lICR7b2xkUGF0aH0gLT4gJHtuZXdQYXRofWApO1xuICAgIGlmICh0aGlzLmhhbmRsZWRSZW5hbWVzLmhhcyhvbGRQYXRoLCBuZXdQYXRoKSkge1xuICAgICAgdGhpcy5oYW5kbGVkUmVuYW1lcy5kZWxldGUob2xkUGF0aCwgbmV3UGF0aCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzTWFuYWdlci5nZXRTZXR0aW5ncygpO1xuICAgIGlmICghc2V0dGluZ3Muc2hvdWxkSGFuZGxlUmVuYW1lcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncy5pc1BhdGhJZ25vcmVkPy4ob2xkUGF0aCkpIHtcbiAgICAgIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOmhhbmRsZVJlbmFtZScpKGBTa2lwcGluZyByZW5hbWUgaGFuZGxlciBvZiBvbGQgcGF0aCAke29sZFBhdGh9IGFzIHRoZSBwYXRoIGlzIGlnbm9yZWQuYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzLmlzUGF0aElnbm9yZWQ/LihuZXdQYXRoKSkge1xuICAgICAgZ2V0TGliRGVidWdnZXIoJ1JlbmFtZURlbGV0ZUhhbmRsZXI6aGFuZGxlUmVuYW1lJykoYFNraXBwaW5nIHJlbmFtZSBoYW5kbGVyIG9mIG5ldyBwYXRoICR7bmV3UGF0aH0gYXMgdGhlIHBhdGggaXMgaWdub3JlZC5gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvbGRDYWNoZSA9IHRoaXMuYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Q2FjaGUob2xkUGF0aCkgPz8gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZShuZXdQYXRoKTtcbiAgICBjb25zdCBvbGRQYXRoQmFja2xpbmtzTWFwID0gZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aCh0aGlzLmFwcCwgb2xkUGF0aCkuZGF0YTtcbiAgICBhZGRUb1F1ZXVlKHtcbiAgICAgIGFib3J0U2lnbmFsOiB0aGlzLmFib3J0U2lnbmFsLFxuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIG9wZXJhdGlvbkZuOiAoYWJvcnRTaWduYWwpID0+XG4gICAgICAgIG5ldyBSZW5hbWVIYW5kbGVyKHtcbiAgICAgICAgICBhYm9ydFNpZ25hbCxcbiAgICAgICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgICAgIGhhbmRsZWRSZW5hbWVzOiB0aGlzLmhhbmRsZWRSZW5hbWVzLFxuICAgICAgICAgIGludGVycnVwdGVkUmVuYW1lc01hcDogdGhpcy5pbnRlcnJ1cHRlZFJlbmFtZXNNYXAsXG4gICAgICAgICAgbmV3UGF0aCxcbiAgICAgICAgICBvbGRDYWNoZSxcbiAgICAgICAgICBvbGRQYXRoLFxuICAgICAgICAgIG9sZFBhdGhCYWNrbGlua3NNYXAsXG4gICAgICAgICAgc2V0dGluZ3NNYW5hZ2VyOiB0aGlzLnNldHRpbmdzTWFuYWdlclxuICAgICAgICB9KS5oYW5kbGUoKSxcbiAgICAgIG9wZXJhdGlvbk5hbWU6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5yZW5hbWVEZWxldGVIYW5kbGVyLmhhbmRsZVJlbmFtZSwgeyBuZXdQYXRoLCBvbGRQYXRoIH0pXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvZ1JlZ2lzdGVyZWRIYW5kbGVycygpOiB2b2lkIHtcbiAgICBjb25zdCByZW5hbWVEZWxldGVIYW5kbGVyc01hcCA9IHRoaXMuc2V0dGluZ3NNYW5hZ2VyLnJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwO1xuICAgIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOmxvZ1JlZ2lzdGVyZWRIYW5kbGVycycpKFxuICAgICAgYFBsdWdpbnMgd2l0aCByZWdpc3RlcmVkIHJlbmFtZS9kZWxldGUgaGFuZGxlcnM6ICR7SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShyZW5hbWVEZWxldGVIYW5kbGVyc01hcC5rZXlzKCkpKX1gXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuQXN5bmNMaW5rVXBkYXRlKG5leHQ6IFJ1bkFzeW5jTGlua1VwZGF0ZUZuLCBsaW5rVXBkYXRlc0hhbmRsZXI6IExpbmtVcGRhdGVzSGFuZGxlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChuZXh0LnJlbmFtZURlbGV0ZUhhbmRsZXJQYXRjaGVkKSB7XG4gICAgICBhd2FpdCBuZXh0LmNhbGwodGhpcy5hcHAuZmlsZU1hbmFnZXIsIGxpbmtVcGRhdGVzSGFuZGxlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IG5leHQuY2FsbCh0aGlzLmFwcC5maWxlTWFuYWdlciwgKGxpbmtVcGRhdGVzKSA9PiB0aGlzLndyYXBMaW5rVXBkYXRlc0hhbmRsZXIobGlua1VwZGF0ZXMsIGxpbmtVcGRhdGVzSGFuZGxlcikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRJbnZva2VIYW5kbGVyKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBsdWdpbklkID0gdGhpcy5wbHVnaW4ubWFuaWZlc3QuaWQ7XG5cbiAgICBjb25zdCByZW5hbWVEZWxldGVIYW5kbGVyc01hcCA9IHRoaXMuc2V0dGluZ3NNYW5hZ2VyLnJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwO1xuICAgIGNvbnN0IG1haW5QbHVnaW5JZCA9IEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAua2V5cygpKVswXTtcbiAgICByZXR1cm4gbWFpblBsdWdpbklkID09PSBwbHVnaW5JZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd3JhcExpbmtVcGRhdGVzSGFuZGxlcihsaW5rVXBkYXRlczogTGlua1VwZGF0ZVtdLCBsaW5rVXBkYXRlc0hhbmRsZXI6IExpbmtVcGRhdGVzSGFuZGxlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBpc1JlbmFtZUNhbGxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGV2ZW50UmVmID0gdGhpcy5hcHAudmF1bHQub24oJ3JlbmFtZScsICgpID0+IHtcbiAgICAgIGlzUmVuYW1lQ2FsbGVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbGlua1VwZGF0ZXNIYW5kbGVyKGxpbmtVcGRhdGVzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5hcHAudmF1bHQub2ZmcmVmKGV2ZW50UmVmKTtcbiAgICB9XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzTWFuYWdlci5nZXRTZXR0aW5ncygpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIEl0IG1pZ2h0IGNoYW5nZWQgaW4gYHJlbmFtZWAgZXZlbnQgaGFuZGxlci4gRVNMaW50IG1pc3Rha2VubHkgZG9lcyBub3QgcmVjb2duaXplIGl0LlxuICAgIGlmICghaXNSZW5hbWVDYWxsZWQgfHwgIXNldHRpbmdzLnNob3VsZEhhbmRsZVJlbmFtZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmaWx0ZXJJblBsYWNlKFxuICAgICAgbGlua1VwZGF0ZXMsXG4gICAgICAobGlua1VwZGF0ZSkgPT4ge1xuICAgICAgICBpZiAoc2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKGxpbmtVcGRhdGUuc291cmNlRmlsZS5wYXRoKSkge1xuICAgICAgICAgIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOnJ1bkFzeW5jTGlua1VwZGF0ZScpKFxuICAgICAgICAgICAgYFJvbGwgYmFjayB0byBkZWZhdWx0IGxpbmsgdXBkYXRlIG9mIHNvdXJjZSBmaWxlICR7bGlua1VwZGF0ZS5zb3VyY2VGaWxlLnBhdGh9IGFzIHRoZSBwYXRoIGlzIGlnbm9yZWQuYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKGxpbmtVcGRhdGUucmVzb2x2ZWRGaWxlLnBhdGgpKSB7XG4gICAgICAgICAgZ2V0TGliRGVidWdnZXIoJ1JlbmFtZURlbGV0ZUhhbmRsZXI6cnVuQXN5bmNMaW5rVXBkYXRlJykoXG4gICAgICAgICAgICBgUm9sbCBiYWNrIHRvIGRlZmF1bHQgbGluayB1cGRhdGUgb2YgcmVzb2x2ZWQgZmlsZSAke2xpbmtVcGRhdGUucmVzb2x2ZWRGaWxlLnBhdGh9IGFzIHRoZSBwYXRoIGlzIGlnbm9yZWQuYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuYXBwLmludGVybmFsUGx1Z2lucy5nZXRFbmFibGVkUGx1Z2luQnlJZChJbnRlcm5hbFBsdWdpbk5hbWUuQ2FudmFzKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFwcC5wbHVnaW5zLmdldFBsdWdpbignYmFja2xpbmstY2FjaGUnKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsaW5rVXBkYXRlLnNvdXJjZUZpbGUuZXh0ZW5zaW9uID09PSBDQU5WQVNfRklMRV9FWFRFTlNJT04pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsaW5rVXBkYXRlLnJlc29sdmVkRmlsZS5leHRlbnNpb24gPT09IENBTlZBU19GSUxFX0VYVEVOU0lPTikge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cblxuY2xhc3MgU2V0dGluZ3NNYW5hZ2VyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwOiBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFwcDogQXBwKSB7XG4gICAgdGhpcy5yZW5hbWVEZWxldGVIYW5kbGVyc01hcCA9XG4gICAgICBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUoYXBwLCAncmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAnLCBuZXcgTWFwPHN0cmluZywgKCkgPT4gUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+PigpKS52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZXR0aW5ncygpOiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4ge1xuICAgIGNvbnN0IHNldHRpbmdzQnVpbGRlcnMgPSBBcnJheS5mcm9tKHRoaXMucmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAudmFsdWVzKCkpLnJldmVyc2UoKTtcblxuICAgIGNvbnN0IHNldHRpbmdzOiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4gPSB7fTtcbiAgICBzZXR0aW5ncy5pc05vdGUgPSAocGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiBpc05vdGUodGhpcy5hcHAsIHBhdGgpO1xuICAgIHNldHRpbmdzLmlzUGF0aElnbm9yZWQgPSAoKTogYm9vbGVhbiA9PiBmYWxzZTtcblxuICAgIGZvciAoY29uc3Qgc2V0dGluZ3NCdWlsZGVyIG9mIHNldHRpbmdzQnVpbGRlcnMpIHtcbiAgICAgIGNvbnN0IG5ld1NldHRpbmdzID0gc2V0dGluZ3NCdWlsZGVyKCk7XG4gICAgICBzZXR0aW5ncy5zaG91bGREZWxldGVDb25mbGljdGluZ0F0dGFjaG1lbnRzIHx8PSBuZXdTZXR0aW5ncy5zaG91bGREZWxldGVDb25mbGljdGluZ0F0dGFjaG1lbnRzID8/IGZhbHNlO1xuICAgICAgaWYgKG5ld1NldHRpbmdzLmVtcHR5Rm9sZGVyQmVoYXZpb3IpIHtcbiAgICAgICAgc2V0dGluZ3MuZW1wdHlGb2xkZXJCZWhhdmlvciA/Pz0gbmV3U2V0dGluZ3MuZW1wdHlGb2xkZXJCZWhhdmlvcjtcbiAgICAgIH1cbiAgICAgIHNldHRpbmdzLnNob3VsZEhhbmRsZURlbGV0aW9ucyB8fD0gbmV3U2V0dGluZ3Muc2hvdWxkSGFuZGxlRGVsZXRpb25zID8/IGZhbHNlO1xuICAgICAgc2V0dGluZ3Muc2hvdWxkSGFuZGxlUmVuYW1lcyB8fD0gbmV3U2V0dGluZ3Muc2hvdWxkSGFuZGxlUmVuYW1lcyA/PyBmYWxzZTtcbiAgICAgIHNldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlcyB8fD0gbmV3U2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzID8/IGZhbHNlO1xuICAgICAgc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZvbGRlciB8fD0gbmV3U2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZvbGRlciA/PyBmYWxzZTtcbiAgICAgIHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVOYW1lQWxpYXNlcyB8fD0gbmV3U2V0dGluZ3Muc2hvdWxkVXBkYXRlRmlsZU5hbWVBbGlhc2VzID8/IGZhbHNlO1xuICAgICAgY29uc3QgaXNQYXRoSWdub3JlZCA9IHNldHRpbmdzLmlzUGF0aElnbm9yZWQ7XG4gICAgICBzZXR0aW5ncy5pc1BhdGhJZ25vcmVkID0gKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4gPT4gaXNQYXRoSWdub3JlZChwYXRoKSB8fCAobmV3U2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKHBhdGgpID8/IGZhbHNlKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJc05vdGUgPSBzZXR0aW5ncy5pc05vdGU7XG4gICAgICBzZXR0aW5ncy5pc05vdGUgPSAocGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiBjdXJyZW50SXNOb3RlKHBhdGgpICYmIChuZXdTZXR0aW5ncy5pc05vdGU/LihwYXRoKSA/PyB0cnVlKTtcbiAgICB9XG5cbiAgICBzZXR0aW5ncy5lbXB0eUZvbGRlckJlaGF2aW9yID8/PSBFbXB0eUZvbGRlckJlaGF2aW9yLktlZXA7XG4gICAgcmV0dXJuIHNldHRpbmdzO1xuICB9XG5cbiAgcHVibGljIGlzTm90ZUV4KHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5nZXRTZXR0aW5ncygpO1xuICAgIHJldHVybiBzZXR0aW5ncy5pc05vdGU/LihwYXRoKSA/PyBmYWxzZTtcbiAgfVxufVxuXG5jbGFzcyBSZW5hbWVIYW5kbGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlZFJlbmFtZXM6IEhhbmRsZWRSZW5hbWVzO1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVycnVwdGVkQ29tYmluZWRCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+O1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVycnVwdGVkUmVuYW1lc01hcDogTWFwPHN0cmluZywgSW50ZXJydXB0ZWRSZW5hbWVbXT47XG4gIHByaXZhdGUgcmVhZG9ubHkgbmV3UGF0aDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG9sZENhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgb2xkUGF0aDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG9sZFBhdGhCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIFJlZmVyZW5jZVtdPjtcbiAgcHJpdmF0ZSByZWFkb25seSBvbGRQYXRoTGlua3M6IFJlZmVyZW5jZVtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzTWFuYWdlcjogU2V0dGluZ3NNYW5hZ2VyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFJlbmFtZUhhbmRsZXJQYXJhbXMpIHtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5vbGRQYXRoID0gcGFyYW1zLm9sZFBhdGg7XG4gICAgdGhpcy5uZXdQYXRoID0gcGFyYW1zLm5ld1BhdGg7XG4gICAgdGhpcy5vbGRQYXRoQmFja2xpbmtzTWFwID0gcGFyYW1zLm9sZFBhdGhCYWNrbGlua3NNYXA7XG4gICAgdGhpcy5vbGRDYWNoZSA9IHBhcmFtcy5vbGRDYWNoZTtcbiAgICB0aGlzLmFib3J0U2lnbmFsID0gcGFyYW1zLmFib3J0U2lnbmFsO1xuICAgIHRoaXMuc2V0dGluZ3NNYW5hZ2VyID0gcGFyYW1zLnNldHRpbmdzTWFuYWdlcjtcbiAgICB0aGlzLmludGVycnVwdGVkUmVuYW1lc01hcCA9IHBhcmFtcy5pbnRlcnJ1cHRlZFJlbmFtZXNNYXA7XG4gICAgdGhpcy5vbGRQYXRoTGlua3MgPSB0aGlzLm9sZENhY2hlID8gZ2V0QWxsTGlua3ModGhpcy5vbGRDYWNoZSkgOiBbXTtcbiAgICB0aGlzLmhhbmRsZWRSZW5hbWVzID0gcGFyYW1zLmhhbmRsZWRSZW5hbWVzO1xuICAgIHRoaXMuaW50ZXJydXB0ZWRDb21iaW5lZEJhY2tsaW5rc01hcCA9IHBhcmFtcy5pbnRlcnJ1cHRlZENvbWJpbmVkQmFja2xpbmtzTWFwID8/IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5vbGRQYXRoID09PSB0aGlzLm5ld1BhdGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIGF3YWl0IHRoaXMuY29udGludWVJbnRlcnJ1cHRlZFJlbmFtZXMoKTtcbiAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoTGlua3MoKTtcbiAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgaWYgKGF3YWl0IHRoaXMuaGFuZGxlQ2FzZUNvbGxpc2lvbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgY29uc3QgcmVuYW1lZEZpbGVQYXRocyA9IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSh0aGlzLmFwcCwgJ3JlbmFtZWRGaWxlUGF0aHMnLCBuZXcgU2V0PHN0cmluZz4oKSkudmFsdWU7XG4gICAgY29uc3QgcmVuYW1lZExpbmtzID0gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlKHRoaXMuYXBwLCAncmVuYW1lZExpbmtQYXRocycsIG5ldyBTZXQ8c3RyaW5nPigpKS52YWx1ZTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZW5hbWVNYXAgPSBuZXcgUmVuYW1lTWFwKHtcbiAgICAgICAgYWJvcnRTaWduYWw6IHRoaXMuYWJvcnRTaWduYWwsXG4gICAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICAgIG5ld1BhdGg6IHRoaXMubmV3UGF0aCxcbiAgICAgICAgb2xkQ2FjaGU6IHRoaXMub2xkQ2FjaGUsXG4gICAgICAgIG9sZFBhdGg6IHRoaXMub2xkUGF0aCxcbiAgICAgICAgc2V0dGluZ3NNYW5hZ2VyOiB0aGlzLnNldHRpbmdzTWFuYWdlclxuICAgICAgfSk7XG4gICAgICBhd2FpdCByZW5hbWVNYXAuZmlsbCgpO1xuICAgICAgdGhpcy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICBjb25zdCBjb21iaW5lZEJhY2tsaW5rc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PigpO1xuICAgICAgcmVuYW1lTWFwLmluaXRPcmlnaW5hbExpbmtzTWFwKGNvbWJpbmVkQmFja2xpbmtzTWFwKTtcbiAgICAgIHJlbmFtZU1hcC5pbml0QmFja2xpbmtzTWFwKHRoaXMub2xkUGF0aEJhY2tsaW5rc01hcCwgY29tYmluZWRCYWNrbGlua3NNYXAsIHRoaXMub2xkUGF0aCk7XG5cbiAgICAgIGZvciAoY29uc3QgYXR0YWNobWVudE9sZFBhdGggb2YgcmVuYW1lTWFwLmtleXMoKSkge1xuICAgICAgICBpZiAoYXR0YWNobWVudE9sZFBhdGggPT09IHRoaXMub2xkUGF0aCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnRPbGRQYXRoQmFja2xpbmtzTWFwID0gKGF3YWl0IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKHRoaXMuYXBwLCBhdHRhY2htZW50T2xkUGF0aCkpLmRhdGE7XG4gICAgICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgICAgcmVuYW1lTWFwLmluaXRCYWNrbGlua3NNYXAoYXR0YWNobWVudE9sZFBhdGhCYWNrbGlua3NNYXAsIGNvbWJpbmVkQmFja2xpbmtzTWFwLCBhdHRhY2htZW50T2xkUGF0aCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcmVudEZvbGRlclBhdGhzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgIGZvciAoY29uc3QgW29sZEF0dGFjaG1lbnRQYXRoLCBuZXdBdHRhY2htZW50UGF0aF0gb2YgcmVuYW1lTWFwLmVudHJpZXMoKSkge1xuICAgICAgICBpZiAob2xkQXR0YWNobWVudFBhdGggIT09IHRoaXMub2xkUGF0aCkge1xuICAgICAgICAgIGNvbnN0IGZpeGVkTmV3QXR0YWNobWVudFBhdGggPSBhd2FpdCB0aGlzLnJlbmFtZUhhbmRsZWQob2xkQXR0YWNobWVudFBhdGgsIG5ld0F0dGFjaG1lbnRQYXRoKTtcbiAgICAgICAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgICAgcmVuYW1lTWFwLnNldChvbGRBdHRhY2htZW50UGF0aCwgZml4ZWROZXdBdHRhY2htZW50UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzTWFuYWdlci5pc05vdGVFeChvbGRBdHRhY2htZW50UGF0aCkpIHtcbiAgICAgICAgICBwYXJlbnRGb2xkZXJQYXRocy5hZGQoZGlybmFtZShvbGRBdHRhY2htZW50UGF0aCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGNsZWFudXBQYXJlbnRGb2xkZXJzKHRoaXMuYXBwLCB0aGlzLnNldHRpbmdzTWFuYWdlci5nZXRTZXR0aW5ncygpLCBBcnJheS5mcm9tKHBhcmVudEZvbGRlclBhdGhzKSk7XG4gICAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3NNYW5hZ2VyLmdldFNldHRpbmdzKCk7XG5cbiAgICAgIGZvciAoXG4gICAgICAgIGNvbnN0IFtuZXdCYWNrbGlua1BhdGgsIGxpbmtKc29uVG9QYXRoTWFwXSBvZiBBcnJheS5mcm9tKGNvbWJpbmVkQmFja2xpbmtzTWFwLmVudHJpZXMoKSkuY29uY2F0KFxuICAgICAgICAgIEFycmF5LmZyb20odGhpcy5pbnRlcnJ1cHRlZENvbWJpbmVkQmFja2xpbmtzTWFwLmVudHJpZXMoKSlcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIGxldCBsaW5rSW5kZXggPSAwO1xuICAgICAgICBhd2FpdCBlZGl0TGlua3ModGhpcy5hcHAsIG5ld0JhY2tsaW5rUGF0aCwgKGxpbmspID0+IHtcbiAgICAgICAgICBsaW5rSW5kZXgrKztcbiAgICAgICAgICBjb25zdCBvbGRBdHRhY2htZW50UGF0aCA9IGxpbmtKc29uVG9QYXRoTWFwLmdldCh0b0pzb24obGluaykpO1xuICAgICAgICAgIGlmICghb2xkQXR0YWNobWVudFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBuZXdBdHRhY2htZW50UGF0aCA9IHJlbmFtZU1hcC5nZXQob2xkQXR0YWNobWVudFBhdGgpID8/IG9sZEF0dGFjaG1lbnRQYXRoO1xuXG4gICAgICAgICAgcmVuYW1lZEZpbGVQYXRocy5hZGQobmV3QmFja2xpbmtQYXRoKTtcbiAgICAgICAgICByZW5hbWVkTGlua3MuYWRkKGAke25ld0JhY2tsaW5rUGF0aH0vLyR7U3RyaW5nKGxpbmtJbmRleCl9YCk7XG5cbiAgICAgICAgICByZXR1cm4gdXBkYXRlTGluayhub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8VXBkYXRlTGlua1BhcmFtcz4oe1xuICAgICAgICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgICAgICAgIGxpbmssXG4gICAgICAgICAgICBuZXdTb3VyY2VQYXRoT3JGaWxlOiBuZXdCYWNrbGlua1BhdGgsXG4gICAgICAgICAgICBuZXdUYXJnZXRQYXRoT3JGaWxlOiBuZXdBdHRhY2htZW50UGF0aCxcbiAgICAgICAgICAgIG9sZFRhcmdldFBhdGhPckZpbGU6IG9sZEF0dGFjaG1lbnRQYXRoLFxuICAgICAgICAgICAgc2hvdWxkVXBkYXRlRmlsZU5hbWVBbGlhczogc2V0dGluZ3Muc2hvdWxkVXBkYXRlRmlsZU5hbWVBbGlhc2VzXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc05vdGUodGhpcy5hcHAsIHRoaXMubmV3UGF0aCkpIHtcbiAgICAgICAgYXdhaXQgdXBkYXRlTGlua3NJbkZpbGUobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFVwZGF0ZUxpbmtzSW5GaWxlUGFyYW1zPih7XG4gICAgICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgICAgICBuZXdTb3VyY2VQYXRoT3JGaWxlOiB0aGlzLm5ld1BhdGgsXG4gICAgICAgICAgb2xkU291cmNlUGF0aE9yRmlsZTogdGhpcy5vbGRQYXRoLFxuICAgICAgICAgIHNob3VsZEZhaWxPbk1pc3NpbmdGaWxlOiBmYWxzZSxcbiAgICAgICAgICBzaG91bGRVcGRhdGVGaWxlTmFtZUFsaWFzOiBzZXR0aW5ncy5zaG91bGRVcGRhdGVGaWxlTmFtZUFsaWFzZXNcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZ2V0RmlsZU9yTnVsbCh0aGlzLmFwcCwgdGhpcy5uZXdQYXRoKSkge1xuICAgICAgICBsZXQgaW50ZXJydXB0ZWRSZW5hbWVzID0gdGhpcy5pbnRlcnJ1cHRlZFJlbmFtZXNNYXAuZ2V0KHRoaXMubmV3UGF0aCk7XG4gICAgICAgIGlmICghaW50ZXJydXB0ZWRSZW5hbWVzKSB7XG4gICAgICAgICAgaW50ZXJydXB0ZWRSZW5hbWVzID0gW107XG4gICAgICAgICAgdGhpcy5pbnRlcnJ1cHRlZFJlbmFtZXNNYXAuc2V0KHRoaXMubmV3UGF0aCwgaW50ZXJydXB0ZWRSZW5hbWVzKTtcbiAgICAgICAgfVxuICAgICAgICBpbnRlcnJ1cHRlZFJlbmFtZXMucHVzaCh7XG4gICAgICAgICAgY29tYmluZWRCYWNrbGlua3NNYXAsXG4gICAgICAgICAgb2xkUGF0aDogdGhpcy5vbGRQYXRoXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBjb25zdCBvcnBoYW5LZXlzID0gQXJyYXkuZnJvbSh0aGlzLmhhbmRsZWRSZW5hbWVzLmtleXMoKSk7XG4gICAgICBhZGRUb1F1ZXVlKHtcbiAgICAgICAgYWJvcnRTaWduYWw6IHRoaXMuYWJvcnRTaWduYWwsXG4gICAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICAgIG9wZXJhdGlvbkZuOiAoKSA9PiB7XG4gICAgICAgICAgZm9yIChjb25zdCBvcnBoYW5LZXkgb2Ygb3JwaGFuS2V5cykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVkUmVuYW1lcy5kZWxldGUob3JwaGFuS2V5Lm9sZFBhdGgsIG9ycGhhbktleS5uZXdQYXRoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVuYW1lZExpbmtzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV3IE5vdGljZSh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMucmVuYW1lRGVsZXRlSGFuZGxlci51cGRhdGVkTGlua3MsIHsgZmlsZXNDb3VudDogcmVuYW1lZEZpbGVQYXRocy5zaXplLCBsaW5rc0NvdW50OiByZW5hbWVkTGlua3Muc2l6ZSB9KSk7XG4gICAgICAgICAgcmVuYW1lZEZpbGVQYXRocy5jbGVhcigpO1xuICAgICAgICAgIHJlbmFtZWRMaW5rcy5jbGVhcigpO1xuICAgICAgICB9LFxuICAgICAgICBvcGVyYXRpb25OYW1lOiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMucmVuYW1lRGVsZXRlSGFuZGxlci5oYW5kbGVPcnBoYW5lZFJlbmFtZXMpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnRpbnVlSW50ZXJydXB0ZWRSZW5hbWVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGludGVycnVwdGVkUmVuYW1lcyA9IHRoaXMuaW50ZXJydXB0ZWRSZW5hbWVzTWFwLmdldCh0aGlzLm9sZFBhdGgpO1xuICAgIGlmIChpbnRlcnJ1cHRlZFJlbmFtZXMpIHtcbiAgICAgIHRoaXMuaW50ZXJydXB0ZWRSZW5hbWVzTWFwLmRlbGV0ZSh0aGlzLm9sZFBhdGgpO1xuICAgICAgZm9yIChjb25zdCBpbnRlcnJ1cHRlZFJlbmFtZSBvZiBpbnRlcnJ1cHRlZFJlbmFtZXMpIHtcbiAgICAgICAgYXdhaXQgbmV3IFJlbmFtZUhhbmRsZXIoe1xuICAgICAgICAgIGFib3J0U2lnbmFsOiB0aGlzLmFib3J0U2lnbmFsLFxuICAgICAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICAgICAgaGFuZGxlZFJlbmFtZXM6IHRoaXMuaGFuZGxlZFJlbmFtZXMsXG4gICAgICAgICAgaW50ZXJydXB0ZWRDb21iaW5lZEJhY2tsaW5rc01hcDogaW50ZXJydXB0ZWRSZW5hbWUuY29tYmluZWRCYWNrbGlua3NNYXAsXG4gICAgICAgICAgaW50ZXJydXB0ZWRSZW5hbWVzTWFwOiB0aGlzLmludGVycnVwdGVkUmVuYW1lc01hcCxcbiAgICAgICAgICBuZXdQYXRoOiB0aGlzLm5ld1BhdGgsXG4gICAgICAgICAgb2xkQ2FjaGU6IHRoaXMub2xkQ2FjaGUsXG4gICAgICAgICAgb2xkUGF0aDogaW50ZXJydXB0ZWRSZW5hbWUub2xkUGF0aCxcbiAgICAgICAgICBvbGRQYXRoQmFja2xpbmtzTWFwOiB0aGlzLm9sZFBhdGhCYWNrbGlua3NNYXAsXG4gICAgICAgICAgc2V0dGluZ3NNYW5hZ2VyOiB0aGlzLnNldHRpbmdzTWFuYWdlclxuICAgICAgICB9KS5oYW5kbGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZUNhc2VDb2xsaXNpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLmFwcC52YXVsdC5hZGFwdGVyLmluc2Vuc2l0aXZlIHx8IHRoaXMub2xkUGF0aC50b0xvd2VyQ2FzZSgpICE9PSB0aGlzLm5ld1BhdGgudG9Mb3dlckNhc2UoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHRlbXBQYXRoID0gam9pbihkaXJuYW1lKHRoaXMubmV3UGF0aCksIGBfX3RlbXBfXyR7YmFzZW5hbWUodGhpcy5uZXdQYXRoKX1gKTtcbiAgICBhd2FpdCB0aGlzLnJlbmFtZUhhbmRsZWQodGhpcy5uZXdQYXRoLCB0ZW1wUGF0aCk7XG5cbiAgICBhd2FpdCBuZXcgUmVuYW1lSGFuZGxlcih7XG4gICAgICBhYm9ydFNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCxcbiAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICBoYW5kbGVkUmVuYW1lczogdGhpcy5oYW5kbGVkUmVuYW1lcyxcbiAgICAgIGludGVycnVwdGVkUmVuYW1lc01hcDogdGhpcy5pbnRlcnJ1cHRlZFJlbmFtZXNNYXAsXG4gICAgICBuZXdQYXRoOiB0ZW1wUGF0aCxcbiAgICAgIG9sZENhY2hlOiB0aGlzLm9sZENhY2hlLFxuICAgICAgb2xkUGF0aDogdGhpcy5vbGRQYXRoLFxuICAgICAgb2xkUGF0aEJhY2tsaW5rc01hcDogdGhpcy5vbGRQYXRoQmFja2xpbmtzTWFwLFxuICAgICAgc2V0dGluZ3NNYW5hZ2VyOiB0aGlzLnNldHRpbmdzTWFuYWdlclxuICAgIH0pLmhhbmRsZSgpO1xuXG4gICAgYXdhaXQgdGhpcy5hcHAuZmlsZU1hbmFnZXIucmVuYW1lRmlsZShnZXRGaWxlKHRoaXMuYXBwLCB0ZW1wUGF0aCksIHRoaXMubmV3UGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlZnJlc2hMaW5rcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjYWNoZSA9IHRoaXMuYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Q2FjaGUodGhpcy5vbGRQYXRoKSA/PyB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldENhY2hlKHRoaXMubmV3UGF0aCk7XG4gICAgY29uc3Qgb2xkUGF0aExpbmtzUmVmcmVzaGVkID0gY2FjaGUgPyBnZXRBbGxMaW5rcyhjYWNoZSkgOiBbXTtcbiAgICBjb25zdCBmYWtlT2xkRmlsZSA9IGdldEZpbGUodGhpcy5hcHAsIHRoaXMub2xkUGF0aCwgdHJ1ZSk7XG4gICAgbGV0IG9sZFBhdGhCYWNrbGlua3NNYXBSZWZyZXNoZWQgPSBuZXcgTWFwPHN0cmluZywgUmVmZXJlbmNlW10+KCk7XG4gICAgYXdhaXQgdGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW4odGhpcy5hcHAsIFtmYWtlT2xkRmlsZV0sIGFzeW5jICgpID0+IHtcbiAgICAgIG9sZFBhdGhCYWNrbGlua3NNYXBSZWZyZXNoZWQgPSAoYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUodGhpcy5hcHAsIGZha2VPbGRGaWxlKSkuZGF0YTtcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgbGluayBvZiBvbGRQYXRoTGlua3NSZWZyZXNoZWQpIHtcbiAgICAgIGlmICh0aGlzLm9sZFBhdGhMaW5rcy5pbmNsdWRlcyhsaW5rKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMub2xkUGF0aExpbmtzLnB1c2gobGluayk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbYmFja2xpbmtQYXRoLCByZWZyZXNoZWRMaW5rc10gb2Ygb2xkUGF0aEJhY2tsaW5rc01hcFJlZnJlc2hlZC5lbnRyaWVzKCkpIHtcbiAgICAgIGxldCBvbGRMaW5rcyA9IHRoaXMub2xkUGF0aEJhY2tsaW5rc01hcC5nZXQoYmFja2xpbmtQYXRoKTtcbiAgICAgIGlmICghb2xkTGlua3MpIHtcbiAgICAgICAgb2xkTGlua3MgPSBbXTtcbiAgICAgICAgdGhpcy5vbGRQYXRoQmFja2xpbmtzTWFwLnNldChiYWNrbGlua1BhdGgsIG9sZExpbmtzKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBsaW5rIG9mIHJlZnJlc2hlZExpbmtzKSB7XG4gICAgICAgIGlmIChvbGRMaW5rcy5pbmNsdWRlcyhsaW5rKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIG9sZExpbmtzLnB1c2gobGluayk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZW5hbWVIYW5kbGVkKG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBuZXdQYXRoID0gZ2V0U2FmZVJlbmFtZVBhdGgodGhpcy5hcHAsIG9sZFBhdGgsIG5ld1BhdGgpO1xuICAgIGlmIChvbGRQYXRoID09PSBuZXdQYXRoKSB7XG4gICAgICByZXR1cm4gbmV3UGF0aDtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVkUmVuYW1lcy5hZGQob2xkUGF0aCwgbmV3UGF0aCk7XG4gICAgbmV3UGF0aCA9IGF3YWl0IHJlbmFtZVNhZmUodGhpcy5hcHAsIG9sZFBhdGgsIG5ld1BhdGgpO1xuICAgIHJldHVybiBuZXdQYXRoO1xuICB9XG59XG5cbmNsYXNzIFJlbmFtZU1hcCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsO1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwcml2YXRlIHJlYWRvbmx5IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmV3UGF0aDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG9sZENhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgb2xkUGF0aDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG9sZFBhdGhMaW5rczogUmVmZXJlbmNlW107XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3NNYW5hZ2VyOiBTZXR0aW5nc01hbmFnZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUmVuYW1lTWFwUGFyYW1zKSB7XG4gICAgdGhpcy5hYm9ydFNpZ25hbCA9IHBhcmFtcy5hYm9ydFNpZ25hbDtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5zZXR0aW5nc01hbmFnZXIgPSBwYXJhbXMuc2V0dGluZ3NNYW5hZ2VyO1xuICAgIHRoaXMub2xkQ2FjaGUgPSBwYXJhbXMub2xkQ2FjaGU7XG4gICAgdGhpcy5vbGRQYXRoID0gcGFyYW1zLm9sZFBhdGg7XG4gICAgdGhpcy5uZXdQYXRoID0gcGFyYW1zLm5ld1BhdGg7XG4gICAgdGhpcy5vbGRQYXRoTGlua3MgPSB0aGlzLm9sZENhY2hlID8gZ2V0QWxsTGlua3ModGhpcy5vbGRDYWNoZSkgOiBbXTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgc3RyaW5nXT4ge1xuICAgIHJldHVybiB0aGlzLm1hcC5lbnRyaWVzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmlsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgdGhpcy5tYXAuc2V0KHRoaXMub2xkUGF0aCwgdGhpcy5uZXdQYXRoKTtcblxuICAgIGlmICghaXNOb3RlKHRoaXMuYXBwLCB0aGlzLm9sZFBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzTWFuYWdlci5nZXRTZXR0aW5ncygpO1xuXG4gICAgY29uc3Qgb2xkRmlsZSA9IGdldEZpbGUodGhpcy5hcHAsIHRoaXMub2xkUGF0aCwgdHJ1ZSk7XG4gICAgbGV0IG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoID0gJyc7XG4gICAgYXdhaXQgdGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW5Bc3luYyh0aGlzLmFwcCwgW29sZEZpbGVdLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzaG91bGRGYWtlT2xkUGF0aENhY2hlID0gdGhpcy5vbGRDYWNoZSAmJiBvbGRGaWxlLmRlbGV0ZWQ7XG4gICAgICBpZiAoc2hvdWxkRmFrZU9sZFBhdGhDYWNoZSkge1xuICAgICAgICByZWdpc3RlckZpbGVDYWNoZUZvck5vbkV4aXN0aW5nRmlsZSh0aGlzLmFwcCwgb2xkRmlsZSwgdGhpcy5vbGRDYWNoZSk7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgodGhpcy5hcHAsIHRoaXMub2xkUGF0aCwgQXR0YWNobWVudFBhdGhDb250ZXh0LlJlbmFtZU5vdGUpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKHNob3VsZEZha2VPbGRQYXRoQ2FjaGUpIHtcbiAgICAgICAgICB1bnJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlKHRoaXMuYXBwLCBvbGRGaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgbmV3QXR0YWNobWVudEZvbGRlclBhdGggPSBzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyXG4gICAgICA/IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHRoaXMuYXBwLCB0aGlzLm5ld1BhdGgsIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5SZW5hbWVOb3RlKVxuICAgICAgOiBvbGRBdHRhY2htZW50Rm9sZGVyUGF0aDtcblxuICAgIGNvbnN0IGlzT2xkQXR0YWNobWVudEZvbGRlckF0Um9vdCA9IG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSAnLyc7XG5cbiAgICBjb25zdCBvbGRBdHRhY2htZW50Rm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKHRoaXMuYXBwLCBvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCk7XG5cbiAgICBpZiAoIW9sZEF0dGFjaG1lbnRGb2xkZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAob2xkQXR0YWNobWVudEZvbGRlclBhdGggPT09IG5ld0F0dGFjaG1lbnRGb2xkZXJQYXRoICYmICFzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50RmlsZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvbGRBdHRhY2htZW50RmlsZXM6IFRGaWxlW10gPSBbXTtcblxuICAgIGlmIChhd2FpdCBoYXNPd25BdHRhY2htZW50Rm9sZGVyKHRoaXMuYXBwLCB0aGlzLm9sZFBhdGgsIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5SZW5hbWVOb3RlKSkge1xuICAgICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKG9sZEF0dGFjaG1lbnRGb2xkZXIsIChvbGRBdHRhY2htZW50RmlsZSkgPT4ge1xuICAgICAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIGlmIChpc0ZpbGUob2xkQXR0YWNobWVudEZpbGUpKSB7XG4gICAgICAgICAgb2xkQXR0YWNobWVudEZpbGVzLnB1c2gob2xkQXR0YWNobWVudEZpbGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBvbGRQYXRoTGluayBvZiB0aGlzLm9sZFBhdGhMaW5rcykge1xuICAgICAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIGNvbnN0IG9sZEF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKHRoaXMuYXBwLCBvbGRQYXRoTGluaywgdGhpcy5vbGRQYXRoKTtcbiAgICAgICAgaWYgKCFvbGRBdHRhY2htZW50RmlsZSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzT2xkQXR0YWNobWVudEZvbGRlckF0Um9vdCB8fCBvbGRBdHRhY2htZW50RmlsZS5wYXRoLnN0YXJ0c1dpdGgob2xkQXR0YWNobWVudEZvbGRlclBhdGgpKSB7XG4gICAgICAgICAgY29uc3Qgb2xkQXR0YWNobWVudEJhY2tsaW5rcyA9IGF3YWl0IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKHRoaXMuYXBwLCBvbGRBdHRhY2htZW50RmlsZSk7XG4gICAgICAgICAgdGhpcy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0PHN0cmluZz4ob2xkQXR0YWNobWVudEJhY2tsaW5rcy5rZXlzKCkpO1xuICAgICAgICAgIGtleXMuZGVsZXRlKHRoaXMub2xkUGF0aCk7XG4gICAgICAgICAga2V5cy5kZWxldGUodGhpcy5uZXdQYXRoKTtcbiAgICAgICAgICBpZiAoa2V5cy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICBvbGRBdHRhY2htZW50RmlsZXMucHVzaChvbGRBdHRhY2htZW50RmlsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBvbGRBdHRhY2htZW50RmlsZSBvZiBvbGRBdHRhY2htZW50RmlsZXMpIHtcbiAgICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIGlmICh0aGlzLnNldHRpbmdzTWFuYWdlci5pc05vdGVFeChvbGRBdHRhY2htZW50RmlsZS5wYXRoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IG5ld0F0dGFjaG1lbnRGaWxlUGF0aDogc3RyaW5nO1xuICAgICAgaWYgKHNldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlcykge1xuICAgICAgICBuZXdBdHRhY2htZW50RmlsZVBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50RmlsZVBhdGgoe1xuICAgICAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICAgICAgY29udGV4dDogQXR0YWNobWVudFBhdGhDb250ZXh0LlJlbmFtZU5vdGUsXG4gICAgICAgICAgbm90ZVBhdGhPckZpbGU6IHRoaXMubmV3UGF0aCxcbiAgICAgICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogb2xkQXR0YWNobWVudEZpbGUsXG4gICAgICAgICAgb2xkTm90ZVBhdGhPckZpbGU6IHRoaXMub2xkUGF0aCxcbiAgICAgICAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IGlzT2xkQXR0YWNobWVudEZvbGRlckF0Um9vdCA/IG9sZEF0dGFjaG1lbnRGaWxlLnBhdGggOiByZWxhdGl2ZShvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCwgb2xkQXR0YWNobWVudEZpbGUucGF0aCk7XG4gICAgICAgIGNvbnN0IG5ld0ZvbGRlciA9IGpvaW4obmV3QXR0YWNobWVudEZvbGRlclBhdGgsIGRpcm5hbWUocmVsYXRpdmVQYXRoKSk7XG4gICAgICAgIG5ld0F0dGFjaG1lbnRGaWxlUGF0aCA9IGpvaW4obmV3Rm9sZGVyLCBvbGRBdHRhY2htZW50RmlsZS5uYW1lKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9sZEF0dGFjaG1lbnRGaWxlLnBhdGggPT09IG5ld0F0dGFjaG1lbnRGaWxlUGF0aCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXR0aW5ncy5zaG91bGREZWxldGVDb25mbGljdGluZ0F0dGFjaG1lbnRzKSB7XG4gICAgICAgIGNvbnN0IG5ld0F0dGFjaG1lbnRGaWxlID0gZ2V0RmlsZU9yTnVsbCh0aGlzLmFwcCwgbmV3QXR0YWNobWVudEZpbGVQYXRoKTtcbiAgICAgICAgaWYgKG5ld0F0dGFjaG1lbnRGaWxlKSB7XG4gICAgICAgICAgZ2V0TGliRGVidWdnZXIoJ1JlbmFtZURlbGV0ZUhhbmRsZXI6ZmlsbFJlbmFtZU1hcCcpKGBSZW1vdmluZyBjb25mbGljdGluZyBhdHRhY2htZW50ICR7bmV3QXR0YWNobWVudEZpbGUucGF0aH0uYCk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKG5ld0F0dGFjaG1lbnRGaWxlKTtcbiAgICAgICAgICB0aGlzLmFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRpciA9IGRpcm5hbWUobmV3QXR0YWNobWVudEZpbGVQYXRoKTtcbiAgICAgICAgY29uc3QgZXh0ID0gZXh0bmFtZShuZXdBdHRhY2htZW50RmlsZVBhdGgpO1xuICAgICAgICBjb25zdCBiYXNlTmFtZSA9IGJhc2VuYW1lKG5ld0F0dGFjaG1lbnRGaWxlUGF0aCwgZXh0KTtcbiAgICAgICAgbmV3QXR0YWNobWVudEZpbGVQYXRoID0gdGhpcy5hcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKGRpciwgYmFzZU5hbWUpLCBleHQuc2xpY2UoMSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5tYXAuc2V0KG9sZEF0dGFjaG1lbnRGaWxlLnBhdGgsIG5ld0F0dGFjaG1lbnRGaWxlUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldChvbGRQYXRoOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm1hcC5nZXQob2xkUGF0aCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdEJhY2tsaW5rc01hcChcbiAgICBzaW5nbGVCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIFJlZmVyZW5jZVtdPixcbiAgICBjb21iaW5lZEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj4sXG4gICAgcGF0aDogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgW2JhY2tsaW5rUGF0aCwgbGlua3NdIG9mIHNpbmdsZUJhY2tsaW5rc01hcC5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IG5ld0JhY2tsaW5rUGF0aCA9IHRoaXMubWFwLmdldChiYWNrbGlua1BhdGgpID8/IGJhY2tsaW5rUGF0aDtcbiAgICAgIGNvbnN0IGxpbmtKc29uVG9QYXRoTWFwID0gY29tYmluZWRCYWNrbGlua3NNYXAuZ2V0KG5ld0JhY2tsaW5rUGF0aCkgPz8gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICAgIGNvbWJpbmVkQmFja2xpbmtzTWFwLnNldChuZXdCYWNrbGlua1BhdGgsIGxpbmtKc29uVG9QYXRoTWFwKTtcbiAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgICBsaW5rSnNvblRvUGF0aE1hcC5zZXQodG9Kc29uKGxpbmspLCBwYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5pdE9yaWdpbmFsTGlua3NNYXAoY29tYmluZWRCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBvbGRQYXRoTGluayBvZiB0aGlzLm9sZFBhdGhMaW5rcykge1xuICAgICAgY29uc3Qgb2xkQXR0YWNobWVudEZpbGUgPSBleHRyYWN0TGlua0ZpbGUodGhpcy5hcHAsIG9sZFBhdGhMaW5rLCB0aGlzLm9sZFBhdGgpO1xuICAgICAgaWYgKCFvbGRBdHRhY2htZW50RmlsZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJhY2tsaW5rc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZWZlcmVuY2VbXT4oKTtcbiAgICAgIGJhY2tsaW5rc01hcC5zZXQodGhpcy5uZXdQYXRoLCBbb2xkUGF0aExpbmtdKTtcbiAgICAgIHRoaXMuaW5pdEJhY2tsaW5rc01hcChiYWNrbGlua3NNYXAsIGNvbWJpbmVkQmFja2xpbmtzTWFwLCBvbGRBdHRhY2htZW50RmlsZS5wYXRoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMga2V5cygpOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLm1hcC5rZXlzKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0KG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5tYXAuc2V0KG9sZFBhdGgsIG5ld1BhdGgpO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSByZW5hbWUvZGVsZXRlIGhhbmRsZXJzLlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIGluc3RhbmNlLlxuICogQHBhcmFtIHNldHRpbmdzQnVpbGRlciAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZXR0aW5ncyBmb3IgdGhlIHJlbmFtZSBkZWxldGUgaGFuZGxlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUmVuYW1lRGVsZXRlSGFuZGxlcnMocGx1Z2luOiBBYm9ydGFibGVQbHVnaW4sIHNldHRpbmdzQnVpbGRlcjogKCkgPT4gUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+KTogdm9pZCB7XG4gIG5ldyBSZWdpc3RyeShwbHVnaW4sIHNldHRpbmdzQnVpbGRlciwgbmV3IFNldHRpbmdzTWFuYWdlcihwbHVnaW4uYXBwKSkucmVnaXN0ZXIoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW51cFBhcmVudEZvbGRlcnMoYXBwOiBBcHAsIHNldHRpbmdzOiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4sIHBhcmVudEZvbGRlclBhdGhzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoc2V0dGluZ3MuZW1wdHlGb2xkZXJCZWhhdmlvciA9PT0gRW1wdHlGb2xkZXJCZWhhdmlvci5LZWVwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAoY29uc3QgcGFyZW50Rm9sZGVyUGF0aCBvZiBwYXJlbnRGb2xkZXJQYXRocykge1xuICAgIHN3aXRjaCAoc2V0dGluZ3MuZW1wdHlGb2xkZXJCZWhhdmlvcikge1xuICAgICAgY2FzZSBFbXB0eUZvbGRlckJlaGF2aW9yLkRlbGV0ZTpcbiAgICAgICAgYXdhaXQgZGVsZXRlRW1wdHlGb2xkZXIoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVtcHR5Rm9sZGVyQmVoYXZpb3IuRGVsZXRlV2l0aEVtcHR5UGFyZW50czpcbiAgICAgICAgYXdhaXQgZGVsZXRlRW1wdHlGb2xkZXJIaWVyYXJjaHkoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQkEscUJBQWtCO0FBQ2xCLHNCQUdPO0FBQ1AsNkJBQW1DO0FBT25DLDZCQUFpQztBQUNqQyxtQkFBOEI7QUFDOUIsbUJBQStCO0FBQy9CLHlCQUdPO0FBQ1Asa0JBTU87QUFDUCxpQkFBeUM7QUFDekMsNEJBS087QUFDUCx3QkFRTztBQUNQLGtCQUtPO0FBQ1AsMkJBUU87QUFDUCwwQkFBOEI7QUFDOUIsbUJBQTJCO0FBQzNCLG1CQUdPO0FBQ1AscUJBSU87QUFLQSxJQUFLLHNCQUFMLGtCQUFLQSx5QkFBTDtBQUlMLEVBQUFBLHFCQUFBLFlBQVM7QUFLVCxFQUFBQSxxQkFBQSw0QkFBeUI7QUFLekIsRUFBQUEs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