@mnaoumov/obsidian-lib 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/README.md +9 -1
  2. package/dist/lib/cjs/__merged.cjs +54 -64
  3. package/dist/lib/cjs/__merged.d.cts +5 -3
  4. package/dist/lib/cjs/active-file-provider.cjs +40 -64
  5. package/dist/lib/cjs/app.cjs +40 -64
  6. package/dist/lib/cjs/async-with-notice.cjs +40 -64
  7. package/dist/lib/cjs/attachment-path.cjs +101 -72
  8. package/dist/lib/cjs/attachment-path.d.cts +21 -43
  9. package/dist/lib/cjs/attachment-unit-folder.cjs +40 -64
  10. package/dist/lib/cjs/attachment-unit-folder.d.cts +8 -9
  11. package/dist/lib/cjs/backlink-index.cjs +41 -65
  12. package/dist/lib/cjs/backlink.cjs +40 -64
  13. package/dist/lib/cjs/bases-view-registrar.cjs +40 -64
  14. package/dist/lib/cjs/callout.cjs +40 -64
  15. package/dist/lib/cjs/canvas.cjs +40 -64
  16. package/dist/lib/cjs/case-insensitive-file-index.cjs +40 -64
  17. package/dist/lib/cjs/code-block-markdown-information.cjs +40 -64
  18. package/dist/lib/cjs/code-block-reg-exp.cjs +40 -64
  19. package/dist/lib/cjs/codemirror/index.cjs +40 -64
  20. package/dist/lib/cjs/codemirror/state-field-spec.cjs +40 -64
  21. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +40 -64
  22. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +40 -64
  23. package/dist/lib/cjs/command-handlers/command-handler.cjs +40 -64
  24. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +40 -64
  25. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +40 -64
  26. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +40 -64
  27. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +40 -64
  28. package/dist/lib/cjs/command-handlers/index.cjs +40 -64
  29. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +40 -64
  30. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +40 -64
  31. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +40 -64
  32. package/dist/lib/cjs/command-registrar.cjs +40 -64
  33. package/dist/lib/cjs/community-plugins.cjs +40 -64
  34. package/dist/lib/cjs/components/abort-signal-component.cjs +40 -64
  35. package/dist/lib/cjs/components/all-windows-event-component.cjs +40 -64
  36. package/dist/lib/cjs/components/async-error-handler-component.cjs +40 -64
  37. package/dist/lib/cjs/components/async-events-component.cjs +40 -64
  38. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +40 -64
  39. package/dist/lib/cjs/components/component-ex.cjs +41 -65
  40. package/dist/lib/cjs/components/console-debug-component.cjs +40 -64
  41. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +40 -64
  42. package/dist/lib/cjs/components/disposable-component.cjs +40 -64
  43. package/dist/lib/cjs/components/embed-extensions-component.cjs +40 -64
  44. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +40 -64
  45. package/dist/lib/cjs/components/index.cjs +40 -64
  46. package/dist/lib/cjs/components/layout-ready-component.cjs +40 -64
  47. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +40 -64
  48. package/dist/lib/cjs/components/monkey-around-component.cjs +40 -64
  49. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +40 -64
  50. package/dist/lib/cjs/components/plugin-context-component.cjs +40 -64
  51. package/dist/lib/cjs/components/plugin-gate-component.cjs +41 -65
  52. package/dist/lib/cjs/components/plugin-notice-component.cjs +46 -65
  53. package/dist/lib/cjs/components/plugin-notice-component.d.cts +3 -0
  54. package/dist/lib/cjs/components/plugin-settings-component.cjs +41 -65
  55. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +40 -64
  56. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +40 -64
  57. package/dist/lib/cjs/components/pointer-position-component.cjs +40 -64
  58. package/dist/lib/cjs/components/registry-component.cjs +40 -64
  59. package/dist/lib/cjs/components/release-notes-component.cjs +42 -65
  60. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +40 -64
  61. package/dist/lib/cjs/components/rmdir-guard-component.cjs +40 -64
  62. package/dist/lib/cjs/components/settings-migration-component.cjs +44 -68
  63. package/dist/lib/cjs/components/settings-migration-component.d.cts +6 -4
  64. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +40 -64
  65. package/dist/lib/cjs/components/templates-language-component.cjs +40 -64
  66. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +40 -64
  67. package/dist/lib/cjs/constructors/index.cjs +40 -64
  68. package/dist/lib/cjs/css-class.cjs +40 -64
  69. package/dist/lib/cjs/data-handler.cjs +40 -64
  70. package/dist/lib/cjs/dataview-link.cjs +40 -64
  71. package/dist/lib/cjs/dataview.cjs +40 -64
  72. package/dist/lib/cjs/debug.cjs +40 -64
  73. package/dist/lib/cjs/demo-vault-helper-settings.cjs +40 -64
  74. package/dist/lib/cjs/demo-vault-helper.cjs +42 -65
  75. package/dist/lib/cjs/demo-vault-naming.cjs +40 -64
  76. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +48 -71
  77. package/dist/lib/cjs/desktop-trusted-input.cjs +40 -64
  78. package/dist/lib/cjs/editor-extension-registrar.cjs +40 -64
  79. package/dist/lib/cjs/editor-suggest-registrar.cjs +40 -64
  80. package/dist/lib/cjs/editor.cjs +40 -64
  81. package/dist/lib/cjs/events.cjs +40 -64
  82. package/dist/lib/cjs/extensions-registrar.cjs +40 -64
  83. package/dist/lib/cjs/file-change.cjs +40 -64
  84. package/dist/lib/cjs/file-explorer.cjs +40 -64
  85. package/dist/lib/cjs/file-manager.cjs +40 -64
  86. package/dist/lib/cjs/file-system.cjs +45 -64
  87. package/dist/lib/cjs/file-system.d.cts +7 -0
  88. package/dist/lib/cjs/folder-note.cjs +40 -64
  89. package/dist/lib/cjs/frontmatter-formatting.cjs +41 -65
  90. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +40 -64
  91. package/dist/lib/cjs/frontmatter.cjs +40 -64
  92. package/dist/lib/cjs/generated-during-build.cjs +42 -66
  93. package/dist/lib/cjs/generated-during-build.d.cts +8 -2
  94. package/dist/lib/cjs/hover-link-source-registrar.cjs +40 -64
  95. package/dist/lib/cjs/html-element.cjs +40 -64
  96. package/dist/lib/cjs/i18n/custom-type-options.cjs +40 -64
  97. package/dist/lib/cjs/i18n/default-translations.cjs +40 -64
  98. package/dist/lib/cjs/i18n/i18n.cjs +40 -64
  99. package/dist/lib/cjs/i18n/index.cjs +40 -64
  100. package/dist/lib/cjs/i18n/locales/en.cjs +40 -64
  101. package/dist/lib/cjs/i18n/locales/index.cjs +40 -64
  102. package/dist/lib/cjs/i18n/locales/translations-map.cjs +40 -64
  103. package/dist/lib/cjs/index.cjs +40 -64
  104. package/dist/lib/cjs/is-in-obsidian.cjs +40 -64
  105. package/dist/lib/cjs/library-styles.cjs +40 -64
  106. package/dist/lib/cjs/library.cjs +40 -64
  107. package/dist/lib/cjs/link-name.cjs +40 -64
  108. package/dist/lib/cjs/link-update-progress.cjs +40 -64
  109. package/dist/lib/cjs/link.cjs +40 -64
  110. package/dist/lib/cjs/logger.cjs +40 -64
  111. package/dist/lib/cjs/loop.cjs +40 -64
  112. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +40 -64
  113. package/dist/lib/cjs/markdown-code-block-processor.cjs +40 -64
  114. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +40 -64
  115. package/dist/lib/cjs/markdown-view.cjs +40 -64
  116. package/dist/lib/cjs/markdown.cjs +40 -64
  117. package/dist/lib/cjs/menu-event-registrar.cjs +40 -64
  118. package/dist/lib/cjs/metadata-cache.cjs +64 -70
  119. package/dist/lib/cjs/metadata-cache.d.cts +8 -19
  120. package/dist/lib/cjs/mobile-trusted-input.cjs +40 -64
  121. package/dist/lib/cjs/modals/alert.cjs +40 -64
  122. package/dist/lib/cjs/modals/confirm.cjs +40 -64
  123. package/dist/lib/cjs/modals/index.cjs +40 -64
  124. package/dist/lib/cjs/modals/minimizable-modal.cjs +40 -64
  125. package/dist/lib/cjs/modals/modal-command-builder.cjs +40 -64
  126. package/dist/lib/cjs/modals/modal.cjs +40 -64
  127. package/dist/lib/cjs/modals/prompt.cjs +40 -64
  128. package/dist/lib/cjs/modals/select-item.cjs +40 -64
  129. package/dist/lib/cjs/modals/select-option.cjs +40 -64
  130. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +40 -64
  131. package/dist/lib/cjs/note-priority.cjs +41 -65
  132. package/dist/lib/cjs/notebook-navigator.cjs +40 -64
  133. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +40 -64
  134. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +40 -64
  135. package/dist/lib/cjs/obsidian-settings.cjs +40 -64
  136. package/dist/lib/cjs/parse-link.cjs +40 -64
  137. package/dist/lib/cjs/path-settings.cjs +40 -64
  138. package/dist/lib/cjs/pdf.cjs +40 -64
  139. package/dist/lib/cjs/plugin/index.cjs +43 -64
  140. package/dist/lib/cjs/plugin/index.d.cts +1 -0
  141. package/dist/lib/cjs/plugin/plugin-api-schema.cjs +171 -0
  142. package/dist/lib/cjs/plugin/plugin-api-schema.d.cts +59 -0
  143. package/dist/lib/cjs/plugin/plugin-api.cjs +46 -64
  144. package/dist/lib/cjs/plugin/plugin-api.d.cts +83 -10
  145. package/dist/lib/cjs/plugin/plugin-context.cjs +40 -64
  146. package/dist/lib/cjs/plugin/plugin-event-source.cjs +40 -64
  147. package/dist/lib/cjs/plugin/plugin-install-state.cjs +40 -64
  148. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +40 -64
  149. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +41 -65
  150. package/dist/lib/cjs/plugin/plugin.cjs +41 -65
  151. package/dist/lib/cjs/plugin/settings-migration-api.cjs +69 -64
  152. package/dist/lib/cjs/plugin/settings-migration-api.d.cts +16 -3
  153. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +40 -64
  154. package/dist/lib/cjs/popovers/field-popover.cjs +40 -64
  155. package/dist/lib/cjs/popovers/index.cjs +40 -64
  156. package/dist/lib/cjs/popovers/popover-anchor.cjs +40 -64
  157. package/dist/lib/cjs/popovers/popover.cjs +40 -64
  158. package/dist/lib/cjs/property-entry.cjs +40 -64
  159. package/dist/lib/cjs/queue.cjs +40 -64
  160. package/dist/lib/cjs/react/app-context.cjs +40 -64
  161. package/dist/lib/cjs/react/index.cjs +40 -64
  162. package/dist/lib/cjs/reference.cjs +40 -64
  163. package/dist/lib/cjs/resource-lock.cjs +40 -64
  164. package/dist/lib/cjs/resource-url.cjs +40 -64
  165. package/dist/lib/cjs/ribbon-icon-registrar.cjs +40 -64
  166. package/dist/lib/cjs/setting-components/checkbox-component.cjs +40 -64
  167. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +40 -64
  168. package/dist/lib/cjs/setting-components/date-component.cjs +40 -64
  169. package/dist/lib/cjs/setting-components/date-time-component.cjs +40 -64
  170. package/dist/lib/cjs/setting-components/email-component.cjs +40 -64
  171. package/dist/lib/cjs/setting-components/file-component.cjs +40 -64
  172. package/dist/lib/cjs/setting-components/index.cjs +40 -64
  173. package/dist/lib/cjs/setting-components/month-component.cjs +40 -64
  174. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +41 -65
  175. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +40 -64
  176. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +40 -64
  177. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +40 -64
  178. package/dist/lib/cjs/setting-components/number-component.cjs +40 -64
  179. package/dist/lib/cjs/setting-components/password-component.cjs +40 -64
  180. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +40 -64
  181. package/dist/lib/cjs/setting-components/telephone-component.cjs +40 -64
  182. package/dist/lib/cjs/setting-components/text-based-component.cjs +40 -64
  183. package/dist/lib/cjs/setting-components/time-component.cjs +40 -64
  184. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +40 -64
  185. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +40 -64
  186. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +40 -64
  187. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +40 -64
  188. package/dist/lib/cjs/setting-components/typed-text-component.cjs +41 -65
  189. package/dist/lib/cjs/setting-components/url-component.cjs +40 -64
  190. package/dist/lib/cjs/setting-components/validator-component.cjs +41 -65
  191. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +40 -64
  192. package/dist/lib/cjs/setting-components/week-component.cjs +40 -64
  193. package/dist/lib/cjs/setting-ex.cjs +40 -64
  194. package/dist/lib/cjs/setting-group-ex.cjs +40 -64
  195. package/dist/lib/cjs/status-bar-item-registrar.cjs +40 -64
  196. package/dist/lib/cjs/templater.cjs +40 -64
  197. package/dist/lib/cjs/transformers/duration-transformer.cjs +40 -64
  198. package/dist/lib/cjs/transformers/index.cjs +40 -64
  199. package/dist/lib/cjs/trusted-input.cjs +40 -64
  200. package/dist/lib/cjs/validation.cjs +40 -64
  201. package/dist/lib/cjs/vault-delete.cjs +40 -64
  202. package/dist/lib/cjs/vault-transaction.cjs +40 -64
  203. package/dist/lib/cjs/vault.cjs +41 -65
  204. package/dist/lib/cjs/view-registrar.cjs +40 -64
  205. package/dist/lib/cjs/workspace.cjs +40 -64
  206. package/dist/lib/esm/__merged.d.mts +5 -3
  207. package/dist/lib/esm/__merged.mjs +20 -14
  208. package/dist/lib/esm/active-file-provider.mjs +6 -14
  209. package/dist/lib/esm/app.mjs +6 -14
  210. package/dist/lib/esm/async-with-notice.mjs +6 -14
  211. package/dist/lib/esm/attachment-path.d.mts +21 -43
  212. package/dist/lib/esm/attachment-path.mjs +70 -22
  213. package/dist/lib/esm/attachment-unit-folder.d.mts +8 -9
  214. package/dist/lib/esm/attachment-unit-folder.mjs +6 -14
  215. package/dist/lib/esm/backlink-index.mjs +6 -14
  216. package/dist/lib/esm/backlink.mjs +6 -14
  217. package/dist/lib/esm/bases-view-registrar.mjs +6 -14
  218. package/dist/lib/esm/callout.mjs +6 -14
  219. package/dist/lib/esm/canvas.mjs +6 -14
  220. package/dist/lib/esm/case-insensitive-file-index.mjs +6 -14
  221. package/dist/lib/esm/code-block-markdown-information.mjs +5 -13
  222. package/dist/lib/esm/code-block-reg-exp.mjs +6 -14
  223. package/dist/lib/esm/codemirror/index.mjs +6 -14
  224. package/dist/lib/esm/codemirror/state-field-spec.mjs +5 -13
  225. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +6 -14
  226. package/dist/lib/esm/command-handlers/command-handler-component.mjs +6 -14
  227. package/dist/lib/esm/command-handlers/command-handler.mjs +6 -14
  228. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +6 -14
  229. package/dist/lib/esm/command-handlers/file-command-handler.mjs +6 -14
  230. package/dist/lib/esm/command-handlers/folder-command-handler.mjs +6 -14
  231. package/dist/lib/esm/command-handlers/global-command-handler.mjs +6 -14
  232. package/dist/lib/esm/command-handlers/index.mjs +6 -14
  233. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +6 -14
  234. package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +6 -14
  235. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +6 -14
  236. package/dist/lib/esm/command-registrar.mjs +6 -14
  237. package/dist/lib/esm/community-plugins.mjs +6 -14
  238. package/dist/lib/esm/components/abort-signal-component.mjs +6 -14
  239. package/dist/lib/esm/components/all-windows-event-component.mjs +6 -14
  240. package/dist/lib/esm/components/async-error-handler-component.mjs +6 -14
  241. package/dist/lib/esm/components/async-events-component.mjs +6 -14
  242. package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +6 -14
  243. package/dist/lib/esm/components/component-ex.mjs +6 -14
  244. package/dist/lib/esm/components/console-debug-component.mjs +6 -14
  245. package/dist/lib/esm/components/core-plugin-toggle-component.mjs +6 -14
  246. package/dist/lib/esm/components/disposable-component.mjs +6 -14
  247. package/dist/lib/esm/components/embed-extensions-component.mjs +6 -14
  248. package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +6 -14
  249. package/dist/lib/esm/components/index.mjs +6 -14
  250. package/dist/lib/esm/components/layout-ready-component.mjs +6 -14
  251. package/dist/lib/esm/components/menu-event-registrar-component.mjs +6 -14
  252. package/dist/lib/esm/components/monkey-around-component.mjs +6 -14
  253. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +6 -14
  254. package/dist/lib/esm/components/plugin-context-component.mjs +6 -14
  255. package/dist/lib/esm/components/plugin-gate-component.mjs +6 -14
  256. package/dist/lib/esm/components/plugin-notice-component.d.mts +3 -0
  257. package/dist/lib/esm/components/plugin-notice-component.mjs +12 -15
  258. package/dist/lib/esm/components/plugin-settings-component.mjs +6 -14
  259. package/dist/lib/esm/components/plugin-settings-tab-component.mjs +6 -14
  260. package/dist/lib/esm/components/plugin-suggestion-component.mjs +6 -14
  261. package/dist/lib/esm/components/pointer-position-component.mjs +6 -14
  262. package/dist/lib/esm/components/registry-component.mjs +6 -14
  263. package/dist/lib/esm/components/release-notes-component.mjs +11 -15
  264. package/dist/lib/esm/components/rename-delete-handler-component.mjs +6 -14
  265. package/dist/lib/esm/components/rmdir-guard-component.mjs +6 -14
  266. package/dist/lib/esm/components/settings-migration-component.d.mts +6 -4
  267. package/dist/lib/esm/components/settings-migration-component.mjs +10 -18
  268. package/dist/lib/esm/components/syntax-highlighting-component.mjs +6 -14
  269. package/dist/lib/esm/components/templates-language-component.mjs +6 -14
  270. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +6 -14
  271. package/dist/lib/esm/constructors/index.mjs +6 -14
  272. package/dist/lib/esm/css-class.mjs +6 -14
  273. package/dist/lib/esm/data-handler.mjs +6 -14
  274. package/dist/lib/esm/dataview-link.mjs +6 -14
  275. package/dist/lib/esm/dataview.mjs +6 -14
  276. package/dist/lib/esm/debug.mjs +6 -14
  277. package/dist/lib/esm/demo-vault-helper-settings.mjs +5 -13
  278. package/dist/lib/esm/demo-vault-helper.mjs +8 -15
  279. package/dist/lib/esm/demo-vault-naming.mjs +6 -14
  280. package/dist/lib/esm/desktop-demo-vault-opener.mjs +17 -21
  281. package/dist/lib/esm/desktop-trusted-input.mjs +6 -14
  282. package/dist/lib/esm/editor-extension-registrar.mjs +6 -14
  283. package/dist/lib/esm/editor-suggest-registrar.mjs +6 -14
  284. package/dist/lib/esm/editor.mjs +6 -14
  285. package/dist/lib/esm/events.mjs +6 -14
  286. package/dist/lib/esm/extensions-registrar.mjs +6 -14
  287. package/dist/lib/esm/file-change.mjs +6 -14
  288. package/dist/lib/esm/file-explorer.mjs +6 -14
  289. package/dist/lib/esm/file-manager.mjs +6 -14
  290. package/dist/lib/esm/file-system.d.mts +7 -0
  291. package/dist/lib/esm/file-system.mjs +10 -14
  292. package/dist/lib/esm/folder-note.mjs +6 -14
  293. package/dist/lib/esm/frontmatter-formatting.mjs +6 -14
  294. package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +6 -14
  295. package/dist/lib/esm/frontmatter.mjs +6 -14
  296. package/dist/lib/esm/generated-during-build.d.mts +8 -2
  297. package/dist/lib/esm/generated-during-build.mjs +8 -16
  298. package/dist/lib/esm/hover-link-source-registrar.mjs +6 -14
  299. package/dist/lib/esm/html-element.mjs +6 -14
  300. package/dist/lib/esm/i18n/custom-type-options.mjs +6 -14
  301. package/dist/lib/esm/i18n/default-translations.mjs +6 -14
  302. package/dist/lib/esm/i18n/i18n.mjs +6 -14
  303. package/dist/lib/esm/i18n/index.mjs +6 -14
  304. package/dist/lib/esm/i18n/locales/en.mjs +6 -14
  305. package/dist/lib/esm/i18n/locales/index.mjs +6 -14
  306. package/dist/lib/esm/i18n/locales/translations-map.mjs +6 -14
  307. package/dist/lib/esm/index.mjs +6 -14
  308. package/dist/lib/esm/is-in-obsidian.mjs +6 -14
  309. package/dist/lib/esm/library-styles.mjs +6 -14
  310. package/dist/lib/esm/library.mjs +6 -14
  311. package/dist/lib/esm/link-name.mjs +6 -14
  312. package/dist/lib/esm/link-update-progress.mjs +5 -13
  313. package/dist/lib/esm/link.mjs +6 -14
  314. package/dist/lib/esm/logger.mjs +6 -14
  315. package/dist/lib/esm/loop.mjs +6 -14
  316. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +6 -14
  317. package/dist/lib/esm/markdown-code-block-processor.mjs +6 -14
  318. package/dist/lib/esm/markdown-post-processor-registrar.mjs +6 -14
  319. package/dist/lib/esm/markdown-view.mjs +6 -14
  320. package/dist/lib/esm/markdown.mjs +6 -14
  321. package/dist/lib/esm/menu-event-registrar.mjs +5 -13
  322. package/dist/lib/esm/metadata-cache.d.mts +8 -19
  323. package/dist/lib/esm/metadata-cache.mjs +35 -21
  324. package/dist/lib/esm/mobile-trusted-input.mjs +6 -14
  325. package/dist/lib/esm/modals/alert.mjs +6 -14
  326. package/dist/lib/esm/modals/confirm.mjs +6 -14
  327. package/dist/lib/esm/modals/index.mjs +6 -14
  328. package/dist/lib/esm/modals/minimizable-modal.mjs +6 -14
  329. package/dist/lib/esm/modals/modal-command-builder.mjs +6 -14
  330. package/dist/lib/esm/modals/modal.mjs +6 -14
  331. package/dist/lib/esm/modals/prompt.mjs +6 -14
  332. package/dist/lib/esm/modals/select-item.mjs +6 -14
  333. package/dist/lib/esm/modals/select-option.mjs +6 -14
  334. package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +6 -14
  335. package/dist/lib/esm/note-priority.mjs +6 -14
  336. package/dist/lib/esm/notebook-navigator.mjs +6 -14
  337. package/dist/lib/esm/obsidian-dev-utils-state.mjs +6 -14
  338. package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +6 -14
  339. package/dist/lib/esm/obsidian-settings.mjs +6 -14
  340. package/dist/lib/esm/parse-link.mjs +6 -14
  341. package/dist/lib/esm/path-settings.mjs +6 -14
  342. package/dist/lib/esm/pdf.mjs +6 -14
  343. package/dist/lib/esm/plugin/index.d.mts +1 -0
  344. package/dist/lib/esm/plugin/index.mjs +8 -14
  345. package/dist/lib/esm/plugin/plugin-api-schema.d.mts +59 -0
  346. package/dist/lib/esm/plugin/plugin-api-schema.mjs +73 -0
  347. package/dist/lib/esm/plugin/plugin-api.d.mts +83 -10
  348. package/dist/lib/esm/plugin/plugin-api.mjs +11 -14
  349. package/dist/lib/esm/plugin/plugin-context.mjs +6 -14
  350. package/dist/lib/esm/plugin/plugin-event-source.mjs +6 -14
  351. package/dist/lib/esm/plugin/plugin-install-state.mjs +6 -14
  352. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +6 -14
  353. package/dist/lib/esm/plugin/plugin-settings-tab.mjs +6 -14
  354. package/dist/lib/esm/plugin/plugin.mjs +6 -14
  355. package/dist/lib/esm/plugin/settings-migration-api.d.mts +16 -3
  356. package/dist/lib/esm/plugin/settings-migration-api.mjs +30 -14
  357. package/dist/lib/esm/plugin-cli-handler-registrar.mjs +6 -14
  358. package/dist/lib/esm/popovers/field-popover.mjs +6 -14
  359. package/dist/lib/esm/popovers/index.mjs +6 -14
  360. package/dist/lib/esm/popovers/popover-anchor.mjs +6 -14
  361. package/dist/lib/esm/popovers/popover.mjs +6 -14
  362. package/dist/lib/esm/property-entry.mjs +6 -14
  363. package/dist/lib/esm/queue.mjs +6 -14
  364. package/dist/lib/esm/react/app-context.mjs +6 -14
  365. package/dist/lib/esm/react/index.mjs +6 -14
  366. package/dist/lib/esm/reference.mjs +6 -14
  367. package/dist/lib/esm/resource-lock.mjs +6 -14
  368. package/dist/lib/esm/resource-url.mjs +6 -14
  369. package/dist/lib/esm/ribbon-icon-registrar.mjs +6 -14
  370. package/dist/lib/esm/setting-components/checkbox-component.mjs +6 -14
  371. package/dist/lib/esm/setting-components/code-highlighter-component.mjs +6 -14
  372. package/dist/lib/esm/setting-components/date-component.mjs +6 -14
  373. package/dist/lib/esm/setting-components/date-time-component.mjs +6 -14
  374. package/dist/lib/esm/setting-components/email-component.mjs +6 -14
  375. package/dist/lib/esm/setting-components/file-component.mjs +6 -14
  376. package/dist/lib/esm/setting-components/index.mjs +6 -14
  377. package/dist/lib/esm/setting-components/month-component.mjs +6 -14
  378. package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +6 -14
  379. package/dist/lib/esm/setting-components/multiple-email-component.mjs +6 -14
  380. package/dist/lib/esm/setting-components/multiple-file-component.mjs +6 -14
  381. package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -14
  382. package/dist/lib/esm/setting-components/number-component.mjs +6 -14
  383. package/dist/lib/esm/setting-components/password-component.mjs +6 -14
  384. package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +6 -14
  385. package/dist/lib/esm/setting-components/telephone-component.mjs +6 -14
  386. package/dist/lib/esm/setting-components/text-based-component.mjs +6 -14
  387. package/dist/lib/esm/setting-components/time-component.mjs +6 -14
  388. package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +6 -14
  389. package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +6 -14
  390. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +6 -14
  391. package/dist/lib/esm/setting-components/typed-range-text-component.mjs +6 -14
  392. package/dist/lib/esm/setting-components/typed-text-component.mjs +6 -14
  393. package/dist/lib/esm/setting-components/url-component.mjs +6 -14
  394. package/dist/lib/esm/setting-components/validator-component.mjs +6 -14
  395. package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +5 -13
  396. package/dist/lib/esm/setting-components/week-component.mjs +6 -14
  397. package/dist/lib/esm/setting-ex.mjs +6 -14
  398. package/dist/lib/esm/setting-group-ex.mjs +6 -14
  399. package/dist/lib/esm/status-bar-item-registrar.mjs +6 -14
  400. package/dist/lib/esm/templater.mjs +6 -14
  401. package/dist/lib/esm/transformers/duration-transformer.mjs +6 -14
  402. package/dist/lib/esm/transformers/index.mjs +6 -14
  403. package/dist/lib/esm/trusted-input.mjs +6 -14
  404. package/dist/lib/esm/validation.mjs +6 -14
  405. package/dist/lib/esm/vault-delete.mjs +6 -14
  406. package/dist/lib/esm/vault-transaction.mjs +6 -14
  407. package/dist/lib/esm/vault.mjs +6 -14
  408. package/dist/lib/esm/view-registrar.mjs +6 -14
  409. package/dist/lib/esm/workspace.mjs +6 -14
  410. package/dist/styles.css +4 -1
  411. package/package.json +69 -24
  412. package/plugin/plugin-api-schema/package.json +6 -0
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function () {
7
7
  function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
10
  }
11
11
 
12
12
  function ensureBrowserProcess() {
13
13
  const browserProcess = {
14
14
  browser: true,
15
15
  cwd() {
16
- return '/';
16
+ return "/";
17
17
  },
18
18
  env: {},
19
- platform: 'android'
19
+ platform: "android"
20
20
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
21
  const existingProcess = globalThis.process;
24
-
25
22
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
23
  globalThis.process = browserProcess;
28
24
  return;
29
25
  }
30
-
31
26
  if (existingProcess.versions?.node) {
32
27
  return;
33
28
  }
34
-
35
29
  const existingProcessRecord = existingProcess;
36
-
37
30
  for (const [key, value] of Object.entries(browserProcess)) {
38
31
  existingProcessRecord[key] ??= value;
39
32
  }
40
-
41
- existingProcessRecord['browser'] = true;
33
+ existingProcessRecord["browser"] = true;
42
34
  }
43
35
 
44
36
  function keepName($unknown) {
@@ -46,17 +38,13 @@ function keepName($unknown) {
46
38
  }
47
39
 
48
40
  (function initCjs() {
49
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
41
  const globalThisRecord = globalThis;
51
42
  ensureDisposeSymbols();
52
- globalThisRecord['__name'] ??= keepName;
53
- globalThisRecord['__extractDefault'] ??= extractDefault;
54
-
43
+ globalThisRecord["__name"] ??= keepName;
44
+ globalThisRecord["__extractDefault"] ??= extractDefault;
55
45
  ensureBrowserProcess();
56
-
57
- // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
46
  function extractDefault(module) {
59
- return module && module.__esModule && 'default' in module ? module.default : module;
47
+ return module && module.__esModule && "default" in module ? module.default : module;
60
48
  }
61
49
  })();
62
50
  })();
@@ -65,8 +53,6 @@ function keepName($unknown) {
65
53
  if (!originalRequire || originalRequire.__isPatched) {
66
54
  return;
67
55
  }
68
-
69
- // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
70
56
  require = Object.assign(
71
57
  (id) => requirePatched(id),
72
58
  originalRequire,
@@ -74,53 +60,45 @@ function keepName($unknown) {
74
60
  __isPatched: true
75
61
  }
76
62
  );
77
-
78
63
  function extractDefault(module) {
79
- return module && module.__esModule && 'default' in module ? module.default : module;
64
+ return module && module.__esModule && "default" in module ? module.default : module;
80
65
  }
81
-
82
- const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
83
- '@codemirror/autocomplete',
84
- '@codemirror/collab',
85
- '@codemirror/commands',
86
- '@codemirror/language',
87
- '@codemirror/lint',
88
- '@codemirror/search',
89
- '@codemirror/state',
90
- '@codemirror/text',
91
- '@codemirror/view',
92
- '@lezer/common',
93
- '@lezer/highlight',
94
- '@lezer/lr',
95
- 'obsidian']
96
- );
97
-
98
- const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
99
- '@codemirror/closebrackets',
100
- '@codemirror/comment',
101
- '@codemirror/fold',
102
- '@codemirror/gutter',
103
- '@codemirror/highlight',
104
- '@codemirror/history',
105
- '@codemirror/matchbrackets',
106
- '@codemirror/panel',
107
- '@codemirror/rangeset',
108
- '@codemirror/rectangular-selection',
109
- '@codemirror/stream-parser',
110
- '@codemirror/tooltip']
111
- );
112
-
66
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
67
+ "@codemirror/autocomplete",
68
+ "@codemirror/collab",
69
+ "@codemirror/commands",
70
+ "@codemirror/language",
71
+ "@codemirror/lint",
72
+ "@codemirror/search",
73
+ "@codemirror/state",
74
+ "@codemirror/text",
75
+ "@codemirror/view",
76
+ "@lezer/common",
77
+ "@lezer/highlight",
78
+ "@lezer/lr",
79
+ "obsidian"
80
+ ]);
81
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
82
+ "@codemirror/closebrackets",
83
+ "@codemirror/comment",
84
+ "@codemirror/fold",
85
+ "@codemirror/gutter",
86
+ "@codemirror/highlight",
87
+ "@codemirror/history",
88
+ "@codemirror/matchbrackets",
89
+ "@codemirror/panel",
90
+ "@codemirror/rangeset",
91
+ "@codemirror/rectangular-selection",
92
+ "@codemirror/stream-parser",
93
+ "@codemirror/tooltip"
94
+ ]);
113
95
  function requirePatched(id) {
114
96
  if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
115
97
  return originalRequire?.(id);
116
98
  }
117
-
118
- // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
119
99
  if (globalThis.app.isMobile) {
120
- if (id === 'process' || id === 'node:process') {
121
- // eslint-disable-next-line no-console -- Valid usage.
100
+ if (id === "process" || id === "node:process") {
122
101
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
123
-
124
102
  return process;
125
103
  }
126
104
  } else {
@@ -129,8 +107,6 @@ function keepName($unknown) {
129
107
  return extractDefault(module);
130
108
  }
131
109
  }
132
-
133
- // eslint-disable-next-line no-console -- Valid usage.
134
110
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
135
111
  return {};
136
112
  }
@@ -160,6 +136,7 @@ __export(release_notes_component_exports, {
160
136
  });
161
137
  module.exports = __toCommonJS(release_notes_component_exports);
162
138
  var import_compare_versions = require('compare-versions');
139
+ var import_html_element = require('../html-element.cjs');
163
140
  var import_i18n = require('../i18n/i18n.cjs');
164
141
  var import_alert = require('../modals/alert.cjs');
165
142
  var import_component_ex = require('./component-ex.cjs');
@@ -238,7 +215,7 @@ class ReleaseNotesComponent extends import_component_ex.ComponentEx {
238
215
  await (0, import_alert.alert)({
239
216
  app: this.app,
240
217
  message,
241
- title: (0, import_i18n.t)(($) => $.obsidianDevUtils.releaseNotes.title, { pluginName: this.pluginName })
218
+ title: (0, import_html_element.createFragmentWithCodeBlocks)((0, import_i18n.t)(($) => $.obsidianDevUtils.releaseNotes.title, { pluginName: (0, import_html_element.asCodeBlock)(this.pluginName) }))
242
219
  });
243
220
  }
244
221
  }
@@ -246,4 +223,4 @@ class ReleaseNotesComponent extends import_component_ex.ComponentEx {
246
223
  0 && (module.exports = {
247
224
  ReleaseNotesComponent
248
225
  });
249
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVsZWFzZS1ub3Rlcy1jb21wb25lbnQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21wb25lbnQgdGhhdCBzaG93cyBhIHBsdWdpbidzIHJlbGVhc2Ugbm90ZXMgb25jZSwgd2hlbiB0aGUgd29ya3NwYWNlIGxheW91dCBpcyByZWFkeS5cbiAqXG4gKiBTZXZlcmFsIHBsdWdpbnMgaGFuZC1yb2xsZWQgdGhpcyBwb3B1cCwgYW5kIGV2ZXJ5IGNvcHkgaGFkIHRoZSBzYW1lIGRlZmVjdDogaXQgd2FzIHRpdGxlZCBvbmx5XG4gKiBgUmVsZWFzZSBub3Rlc2AsIG92ZXIgaGVhZGluZ3MgdGhhdCBhcmUgYmFyZSB2ZXJzaW9uIG51bWJlcnMsIHNvIG5vdGhpbmcgaW4gaXQgbmFtZWQgdGhlIHBsdWdpbi4gQSB1c2VyXG4gKiB3aXRoIGRvemVucyBvZiBwbHVnaW5zIGluc3RhbGxlZCBjb3VsZCBub3QgdGVsbCB3aG9zZSBwb3B1cCBpdCB3YXMuIFRoaXMgY29tcG9uZW50IGFsd2F5cyBuYW1lcyB0aGVcbiAqIHBsdWdpbiBpbiB0aGUgdGl0bGUuXG4gKlxuICogSXQgYWxzbyBvd25zIHRoZSB3YWl0IGV2ZXJ5IGNvcHkgbmVlZGVkLiBUaGUgbm90ZXMgYWxyZWFkeSBzaG93biBhcmUgc3RvcmVkIGluIHRoZSBob3N0J3Mgc2V0dGluZ3MsIGFuZFxuICogdGhlIGhvc3QncyBzZXR0aW5ncyBjb21wb25lbnQgaXMgYSBTSUJMSU5HIHdob3NlIG93biBhc3luYyBsb2FkIGlzIHN0aWxsIGluIGZsaWdodCB3aGVuIHRoZSBwbHVnaW4gaXNcbiAqIGVuYWJsZWQgYWZ0ZXIgdGhlIGxheW91dCBpcyByZWFkeS4gUmVhZGluZyB0aGUgbGlzdCB0aGVuIHNlZXMgdGhlIGRlZmF1bHQgZW1wdHkgb25lIGFuZCBzaG93cyBldmVyeSBub3RlXG4gKiBhZ2Fpbiwgb24gZXZlcnkgc3RhcnQuIFNlZSB7QGxpbmsgUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlLndoZW5Mb2FkZWRGcm9tRmlsZX0uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcblxuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgeyB0IH0gZnJvbSAnLi4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IGFsZXJ0IH0gZnJvbSAnLi4vbW9kYWxzL2FsZXJ0LnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuaW1wb3J0IHsgQ2FsbGJhY2tMYXlvdXRSZWFkeUNvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0LXJlYWR5LWNvbXBvbmVudC50cyc7XG5cbi8qKlxuICogUmVsZWFzZSBub3Rlcywga2V5ZWQgYnkgdGhlIHNlbWFudGljIHZlcnNpb24gdGhhdCBpbnRyb2R1Y2VkIGVhY2ggb25lLlxuICovXG5leHBvcnQgdHlwZSBSZWxlYXNlTm90ZXMgPSBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBEb2N1bWVudEZyYWdtZW50Pj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBSZWxlYXNlTm90ZXNDb21wb25lbnR9IGNvbnN0cnVjdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbGVhc2VOb3Rlc0NvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmVyc2lvbnMgd2hvc2Ugbm90ZXMgdGhlIHVzZXIgaGFzIGFscmVhZHkgc2Vlbi5cbiAgICpcbiAgICogU3RvcmFnZSBiZWxvbmdzIHRvIHRoZSBob3N0IHBsdWdpbiwgdHlwaWNhbGx5IGFzIG9uZSBvZiBpdHMgc2V0dGluZ3MsIGJlY2F1c2UgdGhpcyBjb21wb25lbnQgaGFzIG5vXG4gICAqIGBkYXRhLmpzb25gIG9mIGl0cyBvd24gYW5kIHRoZSBsaXN0IGhhcyB0byBvdXRsaXZlIGEgcmVsb2FkLlxuICAgKlxuICAgKiBPbmx5IGV2ZXIgY2FsbGVkIG9uY2Uge0BsaW5rIHBsdWdpblNldHRpbmdzQ29tcG9uZW50fSByZXBvcnRzIGl0cyBzZXR0aW5ncyBsb2FkZWQsIHNvIGFuIGltcGxlbWVudGF0aW9uXG4gICAqIHRoYXQgcmVhZHMgYSBzZXR0aW5nIHJlYWRzIHRoZSBzdG9yZWQgdmFsdWUgcmF0aGVyIHRoYW4gaXRzIGRlZmF1bHQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB2ZXJzaW9ucyBhbHJlYWR5IHNob3duLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0U2hvd25SZWxlYXNlTm90ZVZlcnNpb25zOiAoKSA9PiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgcGx1Z2luLCBzaG93biBpbiB0aGUgcG9wdXAgdGl0bGUuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBjb21wb25lbnQgaG9sZGluZyB3aGF0ZXZlciB7QGxpbmsgZ2V0U2hvd25SZWxlYXNlTm90ZVZlcnNpb25zfSByZWFkcy5cbiAgICpcbiAgICogVGFrZW4gYXMgYSB3aG9sZSBjb21wb25lbnQgcmF0aGVyIHRoYW4gYXMgYSBiYXJlIFwicmVhZHlcIiBmbGFnLCBzbyB0aGUgaG9zdCBjYW5ub3QgZm9yZ2V0IHRvIHdpcmUgdGhlXG4gICAqIHdhaXQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudDogUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlPG9iamVjdD47XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgcmVsZWFzZSBub3Rlcy5cbiAgICpcbiAgICogQ2FsbGVkIGF0IGxheW91dCByZWFkeSByYXRoZXIgdGhhbiBhdCBjb25zdHJ1Y3Rpb24sIHNvIHRoZSBmcmFnbWVudHMgYXJlIGJ1aWx0IG9ubHkgd2hlbiB0aGV5IG1heSBiZVxuICAgKiBzaG93biwgYW5kIGEgbG9jYWxpemVkIHN0cmluZyBpcyByZWFkIGFmdGVyIHRoZSBob3N0J3MgdHJhbnNsYXRpb25zIGFyZSBzZXQgdXAuXG4gICAqXG4gICAqIEV2ZXJ5IGtleSBtdXN0IGJlIGEgdmFsaWQgc2VtYW50aWMgdmVyc2lvbi4gVGhlIG5vdGVzIGFyZSBzaG93biBpbiBhc2NlbmRpbmcgdmVyc2lvbiBvcmRlciwgd2hhdGV2ZXJcbiAgICogb3JkZXIgdGhlIGtleXMgd2VyZSB3cml0dGVuIGluLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcmVsZWFzZSBub3Rlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VOb3Rlc1Byb3ZpZGVyOiAoKSA9PiBSZWxlYXNlTm90ZXM7XG5cbiAgLyoqXG4gICAqIFJlY29yZHMgdGhlIHZlcnNpb25zIHdob3NlIG5vdGVzIHRoZSB1c2VyIGhhcyBub3cgc2Vlbi5cbiAgICpcbiAgICogQ2FsbGVkIGJlZm9yZSB0aGUgcG9wdXAgaXMgc2hvd24sIHdpdGggdGhlIGZ1bGwgbGlzdDogdGhlIHZlcnNpb25zIGFscmVhZHkgc2hvd24gZm9sbG93ZWQgYnkgdGhlIG9uZXNcbiAgICogYWJvdXQgdG8gYmUuXG4gICAqXG4gICAqIEBwYXJhbSB2ZXJzaW9ucyAtIFRoZSB2ZXJzaW9ucyBzaG93bi5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBsaXN0IGlzIHBlcnNpc3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldFNob3duUmVsZWFzZU5vdGVWZXJzaW9uczogKHZlcnNpb25zOiByZWFkb25seSBzdHJpbmdbXSkgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogRGVjaWRlcyB3aGV0aGVyIHRoZSByZWxlYXNlIG5vdGVzIG1heSBiZSBzaG93biBub3cuXG4gICAqXG4gICAqIFdoZW4gaXQgcmV0dXJucyBgZmFsc2VgLCBub3RoaW5nIGlzIHNob3duIGFuZCBub3RoaW5nIGlzIHJlY29yZGVkLCBzbyB0aGUgbm90ZXMgYXJlIHNob3duIGF0IGEgbGF0ZXJcbiAgICogc3RhcnQgb25jZSBpdCByZXR1cm5zIGB0cnVlYC4gVXNlIGl0IHdoZW4gdGhlIG5vdGVzIG9ubHkgbWFrZSBzZW5zZSB3aGlsZSBzb21lIGZlYXR1cmUgaXMgb24uXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBub3RlcyBtYXkgYmUgc2hvd24uXG4gICAqIEBkZWZhdWx0IEFsd2F5cyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93UmVsZWFzZU5vdGVzPzogKCkgPT4gUHJvbWlzYWJsZTxib29sZWFuPjtcbn1cblxuLyoqXG4gKiBTaG93cyBhIHBsdWdpbidzIHJlbGVhc2Ugbm90ZXMgdGhhdCB0aGUgdXNlciBoYXMgbm90IHNlZW4geWV0LCBvbmNlIHRoZSB3b3Jrc3BhY2UgbGF5b3V0IGlzIHJlYWR5LlxuICovXG5leHBvcnQgY2xhc3MgUmVsZWFzZU5vdGVzQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgcGx1Z2luLCBzaG93biBpbiB0aGUgcG9wdXAgdGl0bGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgY29tcG9uZW50IHdob3NlIGxvYWQgaXMgYXdhaXRlZCBiZWZvcmUgdGhlIHNob3duIHZlcnNpb25zIGFyZSByZWFkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8b2JqZWN0PjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGdldFNob3duUmVsZWFzZU5vdGVWZXJzaW9uczogKCkgPT4gcmVhZG9ubHkgc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVsZWFzZU5vdGVzUHJvdmlkZXI6ICgpID0+IFJlbGVhc2VOb3RlcztcbiAgcHJpdmF0ZSByZWFkb25seSBzZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM6ICh2ZXJzaW9uczogcmVhZG9ubHkgc3RyaW5nW10pID0+IFByb21pc2FibGU8dm9pZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvdWxkU2hvd1JlbGVhc2VOb3RlczogKCkgPT4gUHJvbWlzYWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgUmVsZWFzZU5vdGVzQ29tcG9uZW50fS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUmVsZWFzZU5vdGVzQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLmdldFNob3duUmVsZWFzZU5vdGVWZXJzaW9ucyA9IHBhcmFtcy5nZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM7XG4gICAgdGhpcy5wbHVnaW5OYW1lID0gcGFyYW1zLnBsdWdpbk5hbWU7XG4gICAgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudCA9IHBhcmFtcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudDtcbiAgICB0aGlzLnJlbGVhc2VOb3Rlc1Byb3ZpZGVyID0gcGFyYW1zLnJlbGVhc2VOb3Rlc1Byb3ZpZGVyO1xuICAgIHRoaXMuc2V0U2hvd25SZWxlYXNlTm90ZVZlcnNpb25zID0gcGFyYW1zLnNldFNob3duUmVsZWFzZU5vdGVWZXJzaW9ucztcbiAgICB0aGlzLnNob3VsZFNob3dSZWxlYXNlTm90ZXMgPSBwYXJhbXMuc2hvdWxkU2hvd1JlbGVhc2VOb3RlcyA/PyAoKCk6IGJvb2xlYW4gPT4gdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIGNvbXBvbmVudCwgc2hvd2luZyB0aGUgdW5zZWVuIHJlbGVhc2Ugbm90ZXMgb25jZSB0aGUgbGF5b3V0IGlzIHJlYWR5IEFORCB0aGUgaG9zdCdzIHNldHRpbmdzXG4gICAqIGhhdmUgYmVlbiByZWFkIGZyb20gZGlzay5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDaGlsZChcbiAgICAgIG5ldyBDYWxsYmFja0xheW91dFJlYWR5Q29tcG9uZW50KHRoaXMuYXBwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQud2hlbkxvYWRlZEZyb21GaWxlKCk7XG4gICAgICAgIGlmICh0aGlzLmlzVW5sb2FkZWQoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuc2hvd1Vuc2VlblJlbGVhc2VOb3RlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHRoZSByZWxlYXNlIG5vdGVzIHRoZSB1c2VyIGhhcyBub3Qgc2VlbiB5ZXQsIGFuZCByZWNvcmRzIHRoZW0gYXMgc2Vlbi5cbiAgICpcbiAgICogRG9lcyBub3RoaW5nIHdoZW4ge0BsaW5rIFJlbGVhc2VOb3Rlc0NvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zLnNob3VsZFNob3dSZWxlYXNlTm90ZXN9IGRlY2xpbmVzLCBvciB3aGVuXG4gICAqIGV2ZXJ5IG5vdGUgaGFzIGJlZW4gc2hvd24gYWxyZWFkeS5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwb3B1cCBpcyBjbG9zZWQsIG9yIGF0IG9uY2Ugd2hlbiBub3RoaW5nIGlzIHNob3duLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHNob3dVbnNlZW5SZWxlYXNlTm90ZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFhd2FpdCB0aGlzLnNob3VsZFNob3dSZWxlYXNlTm90ZXMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3duVmVyc2lvbnMgPSB0aGlzLmdldFNob3duUmVsZWFzZU5vdGVWZXJzaW9ucygpO1xuICAgIGNvbnN0IHNob3duVmVyc2lvblNldCA9IG5ldyBTZXQoc2hvd25WZXJzaW9ucyk7XG4gICAgY29uc3QgdW5zZWVuUmVsZWFzZU5vdGVzID0gT2JqZWN0LmVudHJpZXModGhpcy5yZWxlYXNlTm90ZXNQcm92aWRlcigpKVxuICAgICAgLmZpbHRlcigoW3ZlcnNpb25dKSA9PiAhc2hvd25WZXJzaW9uU2V0Lmhhcyh2ZXJzaW9uKSlcbiAgICAgIC5zb3J0KChbdmVyc2lvbjFdLCBbdmVyc2lvbjJdKSA9PiBjb21wYXJlVmVyc2lvbnModmVyc2lvbjEsIHZlcnNpb24yKSk7XG5cbiAgICBpZiAodW5zZWVuUmVsZWFzZU5vdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVGcmFnbWVudCgpO1xuICAgIGZvciAoY29uc3QgW3ZlcnNpb24sIHJlbGVhc2VOb3RlXSBvZiB1bnNlZW5SZWxlYXNlTm90ZXMpIHtcbiAgICAgIG1lc3NhZ2UuY3JlYXRlRWwoJ2gzJywgeyB0ZXh0OiB2ZXJzaW9uIH0pO1xuICAgICAgbWVzc2FnZS5hcHBlbmQocmVsZWFzZU5vdGUpO1xuICAgIH1cblxuICAgIC8vIFJlY29yZGVkIGJlZm9yZSB0aGUgcG9wdXAgaXMgc2hvd24sIHNvIGEgdXNlciB3aG8gcmVsb2FkcyB3aXRob3V0IGNsb3NpbmcgaXQgaXMgbm90IHNob3duIGl0IGFnYWluLlxuICAgIGF3YWl0IHRoaXMuc2V0U2hvd25SZWxlYXNlTm90ZVZlcnNpb25zKFsuLi5zaG93blZlcnNpb25zLCAuLi51bnNlZW5SZWxlYXNlTm90ZXMubWFwKChbdmVyc2lvbl0pID0+IHZlcnNpb24pXSk7XG5cbiAgICBhd2FpdCBhbGVydCh7XG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHRpdGxlOiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMucmVsZWFzZU5vdGVzLnRpdGxlLCB7IHBsdWdpbk5hbWU6IHRoaXMucGx1Z2luTmFtZSB9KVxuICAgIH0pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJBLDhCQUFnQztBQUloQyxrQkFBa0I7QUFDbEIsbUJBQXNCO0FBQ3RCLDBCQUE0QjtBQUM1QixvQ0FBNkM7QUFpRnRDLE1BQU0sOEJBQThCLGdDQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJbEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBLEVBRUY7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVixZQUFZLFFBQWdEO0FBQ2pFLFVBQU07QUFDTixTQUFLLE1BQU0sT0FBTztBQUNsQixTQUFLLDhCQUE4QixPQUFPO0FBQzFDLFNBQUssYUFBYSxPQUFPO0FBQ3pCLFNBQUssMEJBQTBCLE9BQU87QUFDdEMsU0FBSyx1QkFBdUIsT0FBTztBQUNuQyxTQUFLLDhCQUE4QixPQUFPO0FBQzFDLFNBQUsseUJBQXlCLE9BQU8sMkJBQTJCLE1BQWU7QUFBQSxFQUNqRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNZ0IsU0FBZTtBQUM3QixTQUFLO0FBQUEsTUFDSCxJQUFJLDJEQUE2QixLQUFLLEtBQUssWUFBWTtBQUNyRCxjQUFNLEtBQUssd0JBQXdCLG1CQUFtQjtBQUN0RCxZQUFJLEtBQUssV0FBVyxHQUFHO0FBQ3JCO0FBQUEsUUFDRjtBQUVBLGNBQU0sS0FBSyx1QkFBdUI7QUFBQSxNQUNwQyxDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVQSxNQUFnQix5QkFBd0M7QUFDdEQsUUFBSSxDQUFDLE1BQU0sS0FBSyx1QkFBdUIsR0FBRztBQUN4QztBQUFBLElBQ0Y7QUFFQSxVQUFNLGdCQUFnQixLQUFLLDRCQUE0QjtBQUN2RCxVQUFNLGtCQUFrQixJQUFJLElBQUksYUFBYTtBQUM3QyxVQUFNLHFCQUFxQixPQUFPLFFBQVEsS0FBSyxxQkFBcUIsQ0FBQyxFQUNsRSxPQUFPLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsRUFDbkQsS0FBSyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsUUFBUSxVQUFNLHlDQUFnQixVQUFVLFFBQVEsQ0FBQztBQUV2RSxRQUFJLG1CQUFtQixXQUFXLEdBQUc7QUFDbkM7QUFBQSxJQUNGO0FBRUEsVUFBTSxVQUFVLGVBQWU7QUFDL0IsZUFBVyxDQUFDLFNBQVMsV0FBVyxLQUFLLG9CQUFvQjtBQUN2RCxjQUFRLFNBQVMsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hDLGNBQVEsT0FBTyxXQUFXO0FBQUEsSUFDNUI7QUFHQSxVQUFNLEtBQUssNEJBQTRCLENBQUMsR0FBRyxlQUFlLEdBQUcsbUJBQW1CLElBQUksQ0FBQyxDQUFDLE9BQU8sTUFBTSxPQUFPLENBQUMsQ0FBQztBQUU1RyxjQUFNLG9CQUFNO0FBQUEsTUFDVixLQUFLLEtBQUs7QUFBQSxNQUNWO0FBQUEsTUFDQSxXQUFPLGVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLGFBQWEsT0FBTyxFQUFFLFlBQVksS0FBSyxXQUFXLENBQUM7QUFBQSxJQUN4RixDQUFDO0FBQUEsRUFDSDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
226
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVsZWFzZS1ub3Rlcy1jb21wb25lbnQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21wb25lbnQgdGhhdCBzaG93cyBhIHBsdWdpbidzIHJlbGVhc2Ugbm90ZXMgb25jZSwgd2hlbiB0aGUgd29ya3NwYWNlIGxheW91dCBpcyByZWFkeS5cbiAqXG4gKiBTZXZlcmFsIHBsdWdpbnMgaGFuZC1yb2xsZWQgdGhpcyBwb3B1cCwgYW5kIGV2ZXJ5IGNvcHkgaGFkIHRoZSBzYW1lIGRlZmVjdDogaXQgd2FzIHRpdGxlZCBvbmx5XG4gKiBgUmVsZWFzZSBub3Rlc2AsIG92ZXIgaGVhZGluZ3MgdGhhdCBhcmUgYmFyZSB2ZXJzaW9uIG51bWJlcnMsIHNvIG5vdGhpbmcgaW4gaXQgbmFtZWQgdGhlIHBsdWdpbi4gQSB1c2VyXG4gKiB3aXRoIGRvemVucyBvZiBwbHVnaW5zIGluc3RhbGxlZCBjb3VsZCBub3QgdGVsbCB3aG9zZSBwb3B1cCBpdCB3YXMuIFRoaXMgY29tcG9uZW50IGFsd2F5cyBuYW1lcyB0aGVcbiAqIHBsdWdpbiBpbiB0aGUgdGl0bGUuXG4gKlxuICogSXQgYWxzbyBvd25zIHRoZSB3YWl0IGV2ZXJ5IGNvcHkgbmVlZGVkLiBUaGUgbm90ZXMgYWxyZWFkeSBzaG93biBhcmUgc3RvcmVkIGluIHRoZSBob3N0J3Mgc2V0dGluZ3MsIGFuZFxuICogdGhlIGhvc3QncyBzZXR0aW5ncyBjb21wb25lbnQgaXMgYSBTSUJMSU5HIHdob3NlIG93biBhc3luYyBsb2FkIGlzIHN0aWxsIGluIGZsaWdodCB3aGVuIHRoZSBwbHVnaW4gaXNcbiAqIGVuYWJsZWQgYWZ0ZXIgdGhlIGxheW91dCBpcyByZWFkeS4gUmVhZGluZyB0aGUgbGlzdCB0aGVuIHNlZXMgdGhlIGRlZmF1bHQgZW1wdHkgb25lIGFuZCBzaG93cyBldmVyeSBub3RlXG4gKiBhZ2Fpbiwgb24gZXZlcnkgc3RhcnQuIFNlZSB7QGxpbmsgUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlLndoZW5Mb2FkZWRGcm9tRmlsZX0uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcblxuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQge1xuICBhc0NvZGVCbG9jayxcbiAgY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrc1xufSBmcm9tICcuLi9odG1sLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBhbGVydCB9IGZyb20gJy4uL21vZGFscy9hbGVydC50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIFJlbGVhc2Ugbm90ZXMsIGtleWVkIGJ5IHRoZSBzZW1hbnRpYyB2ZXJzaW9uIHRoYXQgaW50cm9kdWNlZCBlYWNoIG9uZS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVsZWFzZU5vdGVzID0gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgRG9jdW1lbnRGcmFnbWVudD4+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgUmVsZWFzZU5vdGVzQ29tcG9uZW50fSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlTm90ZXNDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZlcnNpb25zIHdob3NlIG5vdGVzIHRoZSB1c2VyIGhhcyBhbHJlYWR5IHNlZW4uXG4gICAqXG4gICAqIFN0b3JhZ2UgYmVsb25ncyB0byB0aGUgaG9zdCBwbHVnaW4sIHR5cGljYWxseSBhcyBvbmUgb2YgaXRzIHNldHRpbmdzLCBiZWNhdXNlIHRoaXMgY29tcG9uZW50IGhhcyBub1xuICAgKiBgZGF0YS5qc29uYCBvZiBpdHMgb3duIGFuZCB0aGUgbGlzdCBoYXMgdG8gb3V0bGl2ZSBhIHJlbG9hZC5cbiAgICpcbiAgICogT25seSBldmVyIGNhbGxlZCBvbmNlIHtAbGluayBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudH0gcmVwb3J0cyBpdHMgc2V0dGluZ3MgbG9hZGVkLCBzbyBhbiBpbXBsZW1lbnRhdGlvblxuICAgKiB0aGF0IHJlYWRzIGEgc2V0dGluZyByZWFkcyB0aGUgc3RvcmVkIHZhbHVlIHJhdGhlciB0aGFuIGl0cyBkZWZhdWx0LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdmVyc2lvbnMgYWxyZWFkeSBzaG93bi5cbiAgICovXG4gIHJlYWRvbmx5IGdldFNob3duUmVsZWFzZU5vdGVWZXJzaW9uczogKCkgPT4gcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHBsdWdpbiwgc2hvd24gaW4gdGhlIHBvcHVwIHRpdGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgY29tcG9uZW50IGhvbGRpbmcgd2hhdGV2ZXIge0BsaW5rIGdldFNob3duUmVsZWFzZU5vdGVWZXJzaW9uc30gcmVhZHMuXG4gICAqXG4gICAqIFRha2VuIGFzIGEgd2hvbGUgY29tcG9uZW50IHJhdGhlciB0aGFuIGFzIGEgYmFyZSBcInJlYWR5XCIgZmxhZywgc28gdGhlIGhvc3QgY2Fubm90IGZvcmdldCB0byB3aXJlIHRoZVxuICAgKiB3YWl0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHJlbGVhc2Ugbm90ZXMuXG4gICAqXG4gICAqIENhbGxlZCBhdCBsYXlvdXQgcmVhZHkgcmF0aGVyIHRoYW4gYXQgY29uc3RydWN0aW9uLCBzbyB0aGUgZnJhZ21lbnRzIGFyZSBidWlsdCBvbmx5IHdoZW4gdGhleSBtYXkgYmVcbiAgICogc2hvd24sIGFuZCBhIGxvY2FsaXplZCBzdHJpbmcgaXMgcmVhZCBhZnRlciB0aGUgaG9zdCdzIHRyYW5zbGF0aW9ucyBhcmUgc2V0IHVwLlxuICAgKlxuICAgKiBFdmVyeSBrZXkgbXVzdCBiZSBhIHZhbGlkIHNlbWFudGljIHZlcnNpb24uIFRoZSBub3RlcyBhcmUgc2hvd24gaW4gYXNjZW5kaW5nIHZlcnNpb24gb3JkZXIsIHdoYXRldmVyXG4gICAqIG9yZGVyIHRoZSBrZXlzIHdlcmUgd3JpdHRlbiBpbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHJlbGVhc2Ugbm90ZXMuXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlTm90ZXNQcm92aWRlcjogKCkgPT4gUmVsZWFzZU5vdGVzO1xuXG4gIC8qKlxuICAgKiBSZWNvcmRzIHRoZSB2ZXJzaW9ucyB3aG9zZSBub3RlcyB0aGUgdXNlciBoYXMgbm93IHNlZW4uXG4gICAqXG4gICAqIENhbGxlZCBiZWZvcmUgdGhlIHBvcHVwIGlzIHNob3duLCB3aXRoIHRoZSBmdWxsIGxpc3Q6IHRoZSB2ZXJzaW9ucyBhbHJlYWR5IHNob3duIGZvbGxvd2VkIGJ5IHRoZSBvbmVzXG4gICAqIGFib3V0IHRvIGJlLlxuICAgKlxuICAgKiBAcGFyYW0gdmVyc2lvbnMgLSBUaGUgdmVyc2lvbnMgc2hvd24uXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgbGlzdCBpcyBwZXJzaXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBzZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM6ICh2ZXJzaW9uczogcmVhZG9ubHkgc3RyaW5nW10pID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIERlY2lkZXMgd2hldGhlciB0aGUgcmVsZWFzZSBub3RlcyBtYXkgYmUgc2hvd24gbm93LlxuICAgKlxuICAgKiBXaGVuIGl0IHJldHVybnMgYGZhbHNlYCwgbm90aGluZyBpcyBzaG93biBhbmQgbm90aGluZyBpcyByZWNvcmRlZCwgc28gdGhlIG5vdGVzIGFyZSBzaG93biBhdCBhIGxhdGVyXG4gICAqIHN0YXJ0IG9uY2UgaXQgcmV0dXJucyBgdHJ1ZWAuIFVzZSBpdCB3aGVuIHRoZSBub3RlcyBvbmx5IG1ha2Ugc2Vuc2Ugd2hpbGUgc29tZSBmZWF0dXJlIGlzIG9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgbm90ZXMgbWF5IGJlIHNob3duLlxuICAgKiBAZGVmYXVsdCBBbHdheXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd1JlbGVhc2VOb3Rlcz86ICgpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG59XG5cbi8qKlxuICogU2hvd3MgYSBwbHVnaW4ncyByZWxlYXNlIG5vdGVzIHRoYXQgdGhlIHVzZXIgaGFzIG5vdCBzZWVuIHlldCwgb25jZSB0aGUgd29ya3NwYWNlIGxheW91dCBpcyByZWFkeS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGVhc2VOb3Rlc0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHBsdWdpbiwgc2hvd24gaW4gdGhlIHBvcHVwIHRpdGxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIGNvbXBvbmVudCB3aG9zZSBsb2FkIGlzIGF3YWl0ZWQgYmVmb3JlIHRoZSBzaG93biB2ZXJzaW9ucyBhcmUgcmVhZC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudDogUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlPG9iamVjdD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBnZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM6ICgpID0+IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbGVhc2VOb3Rlc1Byb3ZpZGVyOiAoKSA9PiBSZWxlYXNlTm90ZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0U2hvd25SZWxlYXNlTm90ZVZlcnNpb25zOiAodmVyc2lvbnM6IHJlYWRvbmx5IHN0cmluZ1tdKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IHNob3VsZFNob3dSZWxlYXNlTm90ZXM6ICgpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIFJlbGVhc2VOb3Rlc0NvbXBvbmVudH0uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFJlbGVhc2VOb3Rlc0NvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5nZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnMgPSBwYXJhbXMuZ2V0U2hvd25SZWxlYXNlTm90ZVZlcnNpb25zO1xuICAgIHRoaXMucGx1Z2luTmFtZSA9IHBhcmFtcy5wbHVnaW5OYW1lO1xuICAgIHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQgPSBwYXJhbXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQ7XG4gICAgdGhpcy5yZWxlYXNlTm90ZXNQcm92aWRlciA9IHBhcmFtcy5yZWxlYXNlTm90ZXNQcm92aWRlcjtcbiAgICB0aGlzLnNldFNob3duUmVsZWFzZU5vdGVWZXJzaW9ucyA9IHBhcmFtcy5zZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM7XG4gICAgdGhpcy5zaG91bGRTaG93UmVsZWFzZU5vdGVzID0gcGFyYW1zLnNob3VsZFNob3dSZWxlYXNlTm90ZXMgPz8gKCgpOiBib29sZWFuID0+IHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjb21wb25lbnQsIHNob3dpbmcgdGhlIHVuc2VlbiByZWxlYXNlIG5vdGVzIG9uY2UgdGhlIGxheW91dCBpcyByZWFkeSBBTkQgdGhlIGhvc3QncyBzZXR0aW5nc1xuICAgKiBoYXZlIGJlZW4gcmVhZCBmcm9tIGRpc2suXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb25sb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQ2hpbGQoXG4gICAgICBuZXcgQ2FsbGJhY2tMYXlvdXRSZWFkeUNvbXBvbmVudCh0aGlzLmFwcCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LndoZW5Mb2FkZWRGcm9tRmlsZSgpO1xuICAgICAgICBpZiAodGhpcy5pc1VubG9hZGVkKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLnNob3dVbnNlZW5SZWxlYXNlTm90ZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyB0aGUgcmVsZWFzZSBub3RlcyB0aGUgdXNlciBoYXMgbm90IHNlZW4geWV0LCBhbmQgcmVjb3JkcyB0aGVtIGFzIHNlZW4uXG4gICAqXG4gICAqIERvZXMgbm90aGluZyB3aGVuIHtAbGluayBSZWxlYXNlTm90ZXNDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcy5zaG91bGRTaG93UmVsZWFzZU5vdGVzfSBkZWNsaW5lcywgb3Igd2hlblxuICAgKiBldmVyeSBub3RlIGhhcyBiZWVuIHNob3duIGFscmVhZHkuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcG9wdXAgaXMgY2xvc2VkLCBvciBhdCBvbmNlIHdoZW4gbm90aGluZyBpcyBzaG93bi5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBzaG93VW5zZWVuUmVsZWFzZU5vdGVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghYXdhaXQgdGhpcy5zaG91bGRTaG93UmVsZWFzZU5vdGVzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaG93blZlcnNpb25zID0gdGhpcy5nZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnMoKTtcbiAgICBjb25zdCBzaG93blZlcnNpb25TZXQgPSBuZXcgU2V0KHNob3duVmVyc2lvbnMpO1xuICAgIGNvbnN0IHVuc2VlblJlbGVhc2VOb3RlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMucmVsZWFzZU5vdGVzUHJvdmlkZXIoKSlcbiAgICAgIC5maWx0ZXIoKFt2ZXJzaW9uXSkgPT4gIXNob3duVmVyc2lvblNldC5oYXModmVyc2lvbikpXG4gICAgICAuc29ydCgoW3ZlcnNpb24xXSwgW3ZlcnNpb24yXSkgPT4gY29tcGFyZVZlcnNpb25zKHZlcnNpb24xLCB2ZXJzaW9uMikpO1xuXG4gICAgaWYgKHVuc2VlblJlbGVhc2VOb3Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlRnJhZ21lbnQoKTtcbiAgICBmb3IgKGNvbnN0IFt2ZXJzaW9uLCByZWxlYXNlTm90ZV0gb2YgdW5zZWVuUmVsZWFzZU5vdGVzKSB7XG4gICAgICBtZXNzYWdlLmNyZWF0ZUVsKCdoMycsIHsgdGV4dDogdmVyc2lvbiB9KTtcbiAgICAgIG1lc3NhZ2UuYXBwZW5kKHJlbGVhc2VOb3RlKTtcbiAgICB9XG5cbiAgICAvLyBSZWNvcmRlZCBiZWZvcmUgdGhlIHBvcHVwIGlzIHNob3duLCBzbyBhIHVzZXIgd2hvIHJlbG9hZHMgd2l0aG91dCBjbG9zaW5nIGl0IGlzIG5vdCBzaG93biBpdCBhZ2Fpbi5cbiAgICBhd2FpdCB0aGlzLnNldFNob3duUmVsZWFzZU5vdGVWZXJzaW9ucyhbLi4uc2hvd25WZXJzaW9ucywgLi4udW5zZWVuUmVsZWFzZU5vdGVzLm1hcCgoW3ZlcnNpb25dKSA9PiB2ZXJzaW9uKV0pO1xuXG4gICAgYXdhaXQgYWxlcnQoe1xuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICB0aXRsZTogY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrcyh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMucmVsZWFzZU5vdGVzLnRpdGxlLCB7IHBsdWdpbk5hbWU6IGFzQ29kZUJsb2NrKHRoaXMucGx1Z2luTmFtZSkgfSkpXG4gICAgfSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQkEsOEJBQWdDO0FBSWhDLDBCQUdPO0FBQ1Asa0JBQWtCO0FBQ2xCLG1CQUFzQjtBQUN0QiwwQkFBNEI7QUFDNUIsb0NBQTZDO0FBaUZ0QyxNQUFNLDhCQUE4QixnQ0FBWTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWxDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQSxFQUVGO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1YsWUFBWSxRQUFnRDtBQUNqRSxVQUFNO0FBQ04sU0FBSyxNQUFNLE9BQU87QUFDbEIsU0FBSyw4QkFBOEIsT0FBTztBQUMxQyxTQUFLLGFBQWEsT0FBTztBQUN6QixTQUFLLDBCQUEwQixPQUFPO0FBQ3RDLFNBQUssdUJBQXVCLE9BQU87QUFDbkMsU0FBSyw4QkFBOEIsT0FBTztBQUMxQyxTQUFLLHlCQUF5QixPQUFPLDJCQUEyQixNQUFlO0FBQUEsRUFDakY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTWdCLFNBQWU7QUFDN0IsU0FBSztBQUFBLE1BQ0gsSUFBSSwyREFBNkIsS0FBSyxLQUFLLFlBQVk7QUFDckQsY0FBTSxLQUFLLHdCQUF3QixtQkFBbUI7QUFDdEQsWUFBSSxLQUFLLFdBQVcsR0FBRztBQUNyQjtBQUFBLFFBQ0Y7QUFFQSxjQUFNLEtBQUssdUJBQXVCO0FBQUEsTUFDcEMsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVUEsTUFBZ0IseUJBQXdDO0FBQ3RELFFBQUksQ0FBQyxNQUFNLEtBQUssdUJBQXVCLEdBQUc7QUFDeEM7QUFBQSxJQUNGO0FBRUEsVUFBTSxnQkFBZ0IsS0FBSyw0QkFBNEI7QUFDdkQsVUFBTSxrQkFBa0IsSUFBSSxJQUFJLGFBQWE7QUFDN0MsVUFBTSxxQkFBcUIsT0FBTyxRQUFRLEtBQUsscUJBQXFCLENBQUMsRUFDbEUsT0FBTyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLElBQUksT0FBTyxDQUFDLEVBQ25ELEtBQUssQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLFFBQVEsVUFBTSx5Q0FBZ0IsVUFBVSxRQUFRLENBQUM7QUFFdkUsUUFBSSxtQkFBbUIsV0FBVyxHQUFHO0FBQ25DO0FBQUEsSUFDRjtBQUVBLFVBQU0sVUFBVSxlQUFlO0FBQy9CLGVBQVcsQ0FBQyxTQUFTLFdBQVcsS0FBSyxvQkFBb0I7QUFDdkQsY0FBUSxTQUFTLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN4QyxjQUFRLE9BQU8sV0FBVztBQUFBLElBQzVCO0FBR0EsVUFBTSxLQUFLLDRCQUE0QixDQUFDLEdBQUcsZUFBZSxHQUFHLG1CQUFtQixJQUFJLENBQUMsQ0FBQyxPQUFPLE1BQU0sT0FBTyxDQUFDLENBQUM7QUFFNUcsY0FBTSxvQkFBTTtBQUFBLE1BQ1YsS0FBSyxLQUFLO0FBQUEsTUFDVjtBQUFBLE1BQ0EsV0FBTyxzREFBNkIsZUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsYUFBYSxPQUFPLEVBQUUsZ0JBQVksaUNBQVksS0FBSyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQUEsSUFDbkksQ0FBQztBQUFBLEVBQ0g7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K