@mnaoumov/obsidian-lib 10.11.0 → 11.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 (460) hide show
  1. package/README.md +26 -0
  2. package/components/all-windows-status-bar-item-component/package.json +6 -0
  3. package/components/shared-component-pool-component/package.json +6 -0
  4. package/components/worker-component/package.json +6 -0
  5. package/components/worker-pool-component/package.json +6 -0
  6. package/components/workspace-layout-state-component/package.json +6 -0
  7. package/dist/lib/cjs/__merged.cjs +477 -285
  8. package/dist/lib/cjs/__merged.d.cts +26 -10
  9. package/dist/lib/cjs/anchored-suggest.cjs +1 -1
  10. package/dist/lib/cjs/app.cjs +2 -2
  11. package/dist/lib/cjs/async-with-notice.cjs +4 -4
  12. package/dist/lib/cjs/attachment-path.cjs +9 -9
  13. package/dist/lib/cjs/attachment-path.d.cts +3 -3
  14. package/dist/lib/cjs/attachment-unit-folder.cjs +2 -2
  15. package/dist/lib/cjs/backlink-index.cjs +5 -5
  16. package/dist/lib/cjs/backlink.cjs +7 -7
  17. package/dist/lib/cjs/bases-view-registrar.cjs +1 -1
  18. package/dist/lib/cjs/broken-link-candidates.cjs +1 -1
  19. package/dist/lib/cjs/bug-report-diagnostics.cjs +222 -0
  20. package/dist/lib/cjs/bug-report-diagnostics.d.cts +186 -0
  21. package/dist/lib/cjs/bug-report.cjs +38 -12
  22. package/dist/lib/cjs/bug-report.d.cts +65 -0
  23. package/dist/lib/cjs/bulk-operation-progress.cjs +1 -1
  24. package/dist/lib/cjs/bulk-operation.cjs +2 -2
  25. package/dist/lib/cjs/callout.cjs +6 -6
  26. package/dist/lib/cjs/canvas.cjs +11 -9
  27. package/dist/lib/cjs/canvas.d.cts +13 -0
  28. package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -3
  29. package/dist/lib/cjs/code-block-render-handoff.cjs +5 -5
  30. package/dist/lib/cjs/codemirror/editor-mode-extension.cjs +4 -4
  31. package/dist/lib/cjs/codemirror/incremental-parse-state-field.cjs +2 -2
  32. package/dist/lib/cjs/codemirror/index.cjs +7 -7
  33. package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +5 -5
  34. package/dist/lib/cjs/codemirror/markdown-editor-views.cjs +2 -2
  35. package/dist/lib/cjs/codemirror/settings-facet.cjs +1 -1
  36. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +17 -17
  37. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +13 -13
  38. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -2
  39. package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -2
  40. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +10 -10
  41. package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +7 -7
  42. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -3
  43. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -3
  44. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +2 -2
  45. package/dist/lib/cjs/command-handlers/index.cjs +15 -15
  46. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +95 -4
  47. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +34 -2
  48. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -2
  49. package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +2 -2
  50. package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +2 -2
  51. package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +1 -1
  52. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +2 -2
  53. package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.cjs +2 -2
  54. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -1
  55. package/dist/lib/cjs/community-plugins.cjs +3 -3
  56. package/dist/lib/cjs/components/abort-signal-component.cjs +2 -2
  57. package/dist/lib/cjs/components/all-windows-event-component.cjs +5 -5
  58. package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +245 -0
  59. package/dist/lib/cjs/components/all-windows-status-bar-item-component.d.cts +146 -0
  60. package/dist/lib/cjs/components/async-error-handler-component.cjs +5 -5
  61. package/dist/lib/cjs/components/async-events-component.cjs +1 -1
  62. package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +12 -12
  63. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +2 -2
  64. package/dist/lib/cjs/components/component-ex.cjs +21 -11
  65. package/dist/lib/cjs/components/component-ex.d.cts +11 -0
  66. package/dist/lib/cjs/components/console-debug-component.cjs +2 -2
  67. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -2
  68. package/dist/lib/cjs/components/disposable-component.cjs +2 -2
  69. package/dist/lib/cjs/components/embed-extensions-component.cjs +21 -4
  70. package/dist/lib/cjs/components/embed-extensions-component.d.cts +8 -0
  71. package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +24 -10
  72. package/dist/lib/cjs/components/embeddable-markdown-editor-component.d.cts +9 -0
  73. package/dist/lib/cjs/components/file-explorer-root-menu-component.cjs +7 -7
  74. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +2 -2
  75. package/dist/lib/cjs/components/incremental-file-index-component.cjs +4 -4
  76. package/dist/lib/cjs/components/index.cjs +54 -39
  77. package/dist/lib/cjs/components/index.d.cts +5 -0
  78. package/dist/lib/cjs/components/layout-ready-component.cjs +3 -3
  79. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +2 -2
  80. package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
  81. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +5 -5
  82. package/dist/lib/cjs/components/plugin-context-component.cjs +5 -5
  83. package/dist/lib/cjs/components/plugin-gate-component.cjs +69 -36
  84. package/dist/lib/cjs/components/plugin-gate-component.d.cts +36 -13
  85. package/dist/lib/cjs/components/plugin-notice-component.cjs +39 -33
  86. package/dist/lib/cjs/components/plugin-notice-component.d.cts +4 -3
  87. package/dist/lib/cjs/components/plugin-settings-component.cjs +119 -18
  88. package/dist/lib/cjs/components/plugin-settings-component.d.cts +35 -5
  89. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -2
  90. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +8 -8
  91. package/dist/lib/cjs/components/pointer-position-component.cjs +2 -2
  92. package/dist/lib/cjs/components/reconfigurable-editor-extension-component.cjs +3 -3
  93. package/dist/lib/cjs/components/registry-component.cjs +2 -2
  94. package/dist/lib/cjs/components/release-notes-component.cjs +6 -6
  95. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +25 -25
  96. package/dist/lib/cjs/components/rmdir-guard-component.cjs +2 -2
  97. package/dist/lib/cjs/components/settings-facet-component.cjs +1 -1
  98. package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
  99. package/dist/lib/cjs/components/shared-component-pool-component.cjs +368 -0
  100. package/dist/lib/cjs/components/shared-component-pool-component.d.cts +129 -0
  101. package/dist/lib/cjs/components/style-sheet-component.cjs +3 -3
  102. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -3
  103. package/dist/lib/cjs/components/templates-language-component.cjs +1 -1
  104. package/dist/lib/cjs/components/worker-component.cjs +363 -0
  105. package/dist/lib/cjs/components/worker-component.d.cts +156 -0
  106. package/dist/lib/cjs/components/worker-pool-component.cjs +185 -0
  107. package/dist/lib/cjs/components/worker-pool-component.d.cts +102 -0
  108. package/dist/lib/cjs/components/workspace-layout-state-component.cjs +495 -0
  109. package/dist/lib/cjs/components/workspace-layout-state-component.d.cts +239 -0
  110. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +5 -5
  111. package/dist/lib/cjs/constructors/index.cjs +1 -1
  112. package/dist/lib/cjs/css-class.cjs +5 -1
  113. package/dist/lib/cjs/css-class.d.cts +16 -0
  114. package/dist/lib/cjs/data-handler.cjs +264 -6
  115. package/dist/lib/cjs/data-handler.d.cts +219 -2
  116. package/dist/lib/cjs/data-stores/data-store-locations.cjs +82 -24
  117. package/dist/lib/cjs/data-stores/data-store-locations.d.cts +15 -0
  118. package/dist/lib/cjs/data-stores/data-store-replica.cjs +33 -5
  119. package/dist/lib/cjs/data-stores/data-store-seeds.cjs +6 -6
  120. package/dist/lib/cjs/data-stores/data-store-seeds.d.cts +2 -2
  121. package/dist/lib/cjs/data-stores/data-store-transport.cjs +81 -8
  122. package/dist/lib/cjs/data-stores/data-store-transport.d.cts +30 -1
  123. package/dist/lib/cjs/data-stores/index.cjs +6 -6
  124. package/dist/lib/cjs/data-stores/local-data-store.cjs +74 -10
  125. package/dist/lib/cjs/data-stores/local-data-store.d.cts +58 -1
  126. package/dist/lib/cjs/data-stores/shared-data-store.cjs +76 -19
  127. package/dist/lib/cjs/data-stores/shared-data-store.d.cts +18 -1
  128. package/dist/lib/cjs/dataview-link.cjs +2 -2
  129. package/dist/lib/cjs/dataview.cjs +27 -7
  130. package/dist/lib/cjs/dataview.d.cts +14 -0
  131. package/dist/lib/cjs/debug.cjs +3 -3
  132. package/dist/lib/cjs/demo-vault-helper.cjs +34 -6
  133. package/dist/lib/cjs/demo-vault-helper.d.cts +6 -2
  134. package/dist/lib/cjs/desktop-bulk-operation-git.cjs +10 -10
  135. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +13 -13
  136. package/dist/lib/cjs/desktop-git-runner.cjs +4 -14
  137. package/dist/lib/cjs/desktop-git-runner.d.cts +8 -2
  138. package/dist/lib/cjs/desktop-operating-system.cjs +1 -1
  139. package/dist/lib/cjs/desktop-request-url-stream.cjs +8 -14
  140. package/dist/lib/cjs/desktop-trusted-input.cjs +2 -2
  141. package/dist/lib/cjs/disposable.cjs +150 -0
  142. package/dist/lib/cjs/disposable.d.cts +39 -0
  143. package/dist/lib/cjs/editor-extension-registrar.cjs +1 -1
  144. package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -2
  145. package/dist/lib/cjs/editor-suggest.cjs +1 -1
  146. package/dist/lib/cjs/editor.cjs +6 -6
  147. package/dist/lib/cjs/events.cjs +2 -2
  148. package/dist/lib/cjs/extensions-registrar.cjs +1 -1
  149. package/dist/lib/cjs/feature-request.cjs +1 -1
  150. package/dist/lib/cjs/file-change.cjs +10 -10
  151. package/dist/lib/cjs/file-explorer.cjs +2 -2
  152. package/dist/lib/cjs/file-manager.cjs +5 -5
  153. package/dist/lib/cjs/file-system.cjs +10 -10
  154. package/dist/lib/cjs/folder-note.cjs +4 -4
  155. package/dist/lib/cjs/frontmatter-formatting.cjs +7 -6
  156. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +1 -1
  157. package/dist/lib/cjs/frontmatter.cjs +5 -5
  158. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  159. package/dist/lib/cjs/git-rename-history.cjs +1 -1
  160. package/dist/lib/cjs/git-rename-history.d.cts +2 -2
  161. package/dist/lib/cjs/hotkey.cjs +1 -1
  162. package/dist/lib/cjs/hover-link-source-registrar.cjs +1 -1
  163. package/dist/lib/cjs/html-element.cjs +2 -2
  164. package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -1
  165. package/dist/lib/cjs/i18n/default-translations.cjs +1 -1
  166. package/dist/lib/cjs/i18n/i18n.cjs +7 -7
  167. package/dist/lib/cjs/i18n/index.cjs +4 -4
  168. package/dist/lib/cjs/i18n/locales/en.cjs +27 -1
  169. package/dist/lib/cjs/i18n/locales/en.d.cts +26 -0
  170. package/dist/lib/cjs/i18n/locales/index.cjs +2 -2
  171. package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -1
  172. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +26 -0
  173. package/dist/lib/cjs/index.cjs +147 -126
  174. package/dist/lib/cjs/index.d.cts +7 -0
  175. package/dist/lib/cjs/inline-token-renderer.cjs +2 -2
  176. package/dist/lib/cjs/is-in-obsidian.cjs +1 -1
  177. package/dist/lib/cjs/library-styles.cjs +3 -3
  178. package/dist/lib/cjs/link-and-tag-input-suggest.cjs +2 -2
  179. package/dist/lib/cjs/link.cjs +76 -56
  180. package/dist/lib/cjs/link.d.cts +20 -14
  181. package/dist/lib/cjs/logger.cjs +4 -4
  182. package/dist/lib/cjs/loop.cjs +10 -16
  183. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +17 -2
  184. package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +7 -0
  185. package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -13
  186. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -2
  187. package/dist/lib/cjs/markdown-view.cjs +191 -3
  188. package/dist/lib/cjs/markdown-view.d.cts +48 -1
  189. package/dist/lib/cjs/markdown.cjs +12 -12
  190. package/dist/lib/cjs/metadata-cache.cjs +23 -23
  191. package/dist/lib/cjs/metadata-cache.d.cts +5 -4
  192. package/dist/lib/cjs/misplaced-attachment.cjs +297 -0
  193. package/dist/lib/cjs/misplaced-attachment.d.cts +228 -0
  194. package/dist/lib/cjs/mobile-app-info.cjs +1 -1
  195. package/dist/lib/cjs/modals/alert.cjs +4 -4
  196. package/dist/lib/cjs/modals/code-block-builder.cjs +7 -7
  197. package/dist/lib/cjs/modals/confirm.cjs +4 -4
  198. package/dist/lib/cjs/modals/copy-text-manually.cjs +181 -0
  199. package/dist/lib/cjs/modals/copy-text-manually.d.cts +38 -0
  200. package/dist/lib/cjs/modals/index.cjs +17 -11
  201. package/dist/lib/cjs/modals/index.d.cts +2 -0
  202. package/dist/lib/cjs/modals/minimizable-modal.cjs +6 -6
  203. package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -3
  204. package/dist/lib/cjs/modals/modal.cjs +3 -3
  205. package/dist/lib/cjs/modals/prompt.cjs +10 -10
  206. package/dist/lib/cjs/modals/prompt.d.cts +1 -1
  207. package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +202 -0
  208. package/dist/lib/cjs/modals/review-bug-report-diagnostics.d.cts +30 -0
  209. package/dist/lib/cjs/modals/select-item.cjs +6 -6
  210. package/dist/lib/cjs/modals/select-option.cjs +3 -3
  211. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
  212. package/dist/lib/cjs/note-priority.cjs +2 -2
  213. package/dist/lib/cjs/notebook-navigator.cjs +12 -2
  214. package/dist/lib/cjs/notebook-navigator.d.cts +6 -0
  215. package/dist/lib/cjs/obsidian-lib-state.cjs +1 -1
  216. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +1 -1
  217. package/dist/lib/cjs/obsidian-settings.cjs +1 -1
  218. package/dist/lib/cjs/obsidian-word-characters.cjs +1 -1
  219. package/dist/lib/cjs/parse-link.cjs +14 -14
  220. package/dist/lib/cjs/path-compatibility.cjs +368 -0
  221. package/dist/lib/cjs/path-compatibility.d.cts +263 -0
  222. package/dist/lib/cjs/path-settings.cjs +3 -3
  223. package/dist/lib/cjs/pdf.cjs +2 -2
  224. package/dist/lib/cjs/plugin/index.cjs +18 -12
  225. package/dist/lib/cjs/plugin/index.d.cts +2 -0
  226. package/dist/lib/cjs/plugin/plugin-api.cjs +21 -12
  227. package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -1
  228. package/dist/lib/cjs/plugin/plugin-async-cleanup.cjs +6 -3
  229. package/dist/lib/cjs/plugin/plugin-async-cleanup.d.cts +5 -0
  230. package/dist/lib/cjs/plugin/plugin-context.cjs +10 -9
  231. package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -1
  232. package/dist/lib/cjs/plugin/plugin-event-source.d.cts +4 -4
  233. package/dist/lib/cjs/plugin/plugin-install-state.cjs +49 -4
  234. package/dist/lib/cjs/plugin/plugin-install-state.d.cts +30 -0
  235. package/dist/lib/cjs/plugin/plugin-instance.cjs +450 -0
  236. package/dist/lib/cjs/plugin/plugin-instance.d.cts +258 -0
  237. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -1
  238. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +6 -4
  239. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +15 -15
  240. package/dist/lib/cjs/plugin/plugin.cjs +133 -34
  241. package/dist/lib/cjs/plugin/plugin.d.cts +35 -5
  242. package/dist/lib/cjs/plugin/settings-migration-api.cjs +1 -1
  243. package/dist/lib/cjs/plugin/third-party-plugin.cjs +231 -0
  244. package/dist/lib/cjs/plugin/third-party-plugin.d.cts +244 -0
  245. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -2
  246. package/dist/lib/cjs/popovers/field-popover.cjs +4 -4
  247. package/dist/lib/cjs/popovers/index.cjs +3 -3
  248. package/dist/lib/cjs/popovers/popover-anchor.cjs +1 -1
  249. package/dist/lib/cjs/popovers/popover.cjs +5 -5
  250. package/dist/lib/cjs/queue.cjs +8 -8
  251. package/dist/lib/cjs/react/app-context.cjs +3 -3
  252. package/dist/lib/cjs/react/index.cjs +1 -1
  253. package/dist/lib/cjs/reference-definition.cjs +1 -1
  254. package/dist/lib/cjs/reference.cjs +3 -3
  255. package/dist/lib/cjs/release-asset.cjs +5 -5
  256. package/dist/lib/cjs/rendered-markdown.cjs +4 -4
  257. package/dist/lib/cjs/request-url.cjs +4 -4
  258. package/dist/lib/cjs/resource-lock.cjs +46 -42
  259. package/dist/lib/cjs/resource-lock.d.cts +8 -7
  260. package/dist/lib/cjs/resource-url.cjs +3 -3
  261. package/dist/lib/cjs/ribbon-icon-registrar.cjs +1 -1
  262. package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -3
  263. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +7 -7
  264. package/dist/lib/cjs/setting-components/date-component.cjs +4 -4
  265. package/dist/lib/cjs/setting-components/date-time-component.cjs +4 -4
  266. package/dist/lib/cjs/setting-components/email-component.cjs +2 -2
  267. package/dist/lib/cjs/setting-components/file-component.cjs +2 -2
  268. package/dist/lib/cjs/setting-components/folder-list-component.cjs +3 -3
  269. package/dist/lib/cjs/setting-components/hotkey-component.cjs +5 -5
  270. package/dist/lib/cjs/setting-components/index.cjs +30 -30
  271. package/dist/lib/cjs/setting-components/list-component.cjs +5 -5
  272. package/dist/lib/cjs/setting-components/month-component.cjs +4 -4
  273. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -3
  274. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +2 -2
  275. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -3
  276. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +9 -6
  277. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +4 -1
  278. package/dist/lib/cjs/setting-components/number-component.cjs +2 -2
  279. package/dist/lib/cjs/setting-components/password-component.cjs +2 -2
  280. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -3
  281. package/dist/lib/cjs/setting-components/tag-list-component.cjs +4 -4
  282. package/dist/lib/cjs/setting-components/telephone-component.cjs +2 -2
  283. package/dist/lib/cjs/setting-components/text-based-component.cjs +1 -1
  284. package/dist/lib/cjs/setting-components/time-component.cjs +3 -3
  285. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -3
  286. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -3
  287. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +4 -4
  288. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -1
  289. package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -3
  290. package/dist/lib/cjs/setting-components/url-component.cjs +2 -2
  291. package/dist/lib/cjs/setting-components/validator-component.cjs +4 -4
  292. package/dist/lib/cjs/setting-components/week-component.cjs +4 -4
  293. package/dist/lib/cjs/setting-ex.cjs +26 -26
  294. package/dist/lib/cjs/setting-group-ex.cjs +2 -2
  295. package/dist/lib/cjs/settings-recovery.cjs +217 -0
  296. package/dist/lib/cjs/settings-recovery.d.cts +178 -0
  297. package/dist/lib/cjs/settings-tabs.cjs +5 -5
  298. package/dist/lib/cjs/status-bar-item-registrar.cjs +1 -1
  299. package/dist/lib/cjs/templater.cjs +14 -4
  300. package/dist/lib/cjs/templater.d.cts +6 -0
  301. package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -2
  302. package/dist/lib/cjs/transformers/index.cjs +1 -1
  303. package/dist/lib/cjs/trusted-input.cjs +1 -1
  304. package/dist/lib/cjs/validation.cjs +4 -4
  305. package/dist/lib/cjs/vault-delete.cjs +6 -6
  306. package/dist/lib/cjs/vault-transaction.cjs +5 -5
  307. package/dist/lib/cjs/vault.cjs +12 -12
  308. package/dist/lib/cjs/view-registrar.cjs +1 -1
  309. package/dist/lib/cjs/virtual-file.cjs +16 -14
  310. package/dist/lib/cjs/virtual-file.d.cts +2 -1
  311. package/dist/lib/cjs/wasm.cjs +119 -0
  312. package/dist/lib/cjs/wasm.d.cts +54 -0
  313. package/dist/lib/cjs/worker-protocol.cjs +209 -0
  314. package/dist/lib/cjs/worker-protocol.d.cts +282 -0
  315. package/dist/lib/cjs/workspace.cjs +1 -1
  316. package/dist/lib/esm/__merged.d.mts +26 -10
  317. package/dist/lib/esm/__merged.mjs +215 -5
  318. package/dist/lib/esm/app.mjs +2 -2
  319. package/dist/lib/esm/attachment-path.d.mts +3 -3
  320. package/dist/lib/esm/attachment-path.mjs +2 -2
  321. package/dist/lib/esm/backlink-index.mjs +2 -2
  322. package/dist/lib/esm/bug-report-diagnostics.d.mts +186 -0
  323. package/dist/lib/esm/bug-report-diagnostics.mjs +127 -0
  324. package/dist/lib/esm/bug-report.d.mts +65 -0
  325. package/dist/lib/esm/bug-report.mjs +33 -10
  326. package/dist/lib/esm/canvas.d.mts +13 -0
  327. package/dist/lib/esm/canvas.mjs +6 -5
  328. package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +13 -13
  329. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +14 -14
  330. package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +7 -7
  331. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +8 -8
  332. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +34 -2
  333. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +99 -3
  334. package/dist/lib/esm/components/all-windows-status-bar-item-component.d.mts +146 -0
  335. package/dist/lib/esm/components/all-windows-status-bar-item-component.mjs +154 -0
  336. package/dist/lib/esm/components/component-ex.d.mts +11 -0
  337. package/dist/lib/esm/components/component-ex.mjs +19 -6
  338. package/dist/lib/esm/components/disposable-component.mjs +1 -1
  339. package/dist/lib/esm/components/embed-extensions-component.d.mts +8 -0
  340. package/dist/lib/esm/components/embed-extensions-component.mjs +20 -3
  341. package/dist/lib/esm/components/embeddable-markdown-editor-component.d.mts +9 -0
  342. package/dist/lib/esm/components/embeddable-markdown-editor-component.mjs +16 -2
  343. package/dist/lib/esm/components/index.d.mts +5 -0
  344. package/dist/lib/esm/components/index.mjs +12 -2
  345. package/dist/lib/esm/components/plugin-gate-component.d.mts +36 -13
  346. package/dist/lib/esm/components/plugin-gate-component.mjs +61 -26
  347. package/dist/lib/esm/components/plugin-notice-component.d.mts +4 -3
  348. package/dist/lib/esm/components/plugin-notice-component.mjs +30 -21
  349. package/dist/lib/esm/components/plugin-settings-component.d.mts +35 -5
  350. package/dist/lib/esm/components/plugin-settings-component.mjs +105 -4
  351. package/dist/lib/esm/components/rename-delete-handler-component.mjs +2 -2
  352. package/dist/lib/esm/components/shared-component-pool-component.d.mts +129 -0
  353. package/dist/lib/esm/components/shared-component-pool-component.mjs +280 -0
  354. package/dist/lib/esm/components/worker-component.d.mts +156 -0
  355. package/dist/lib/esm/components/worker-component.mjs +279 -0
  356. package/dist/lib/esm/components/worker-pool-component.d.mts +102 -0
  357. package/dist/lib/esm/components/worker-pool-component.mjs +95 -0
  358. package/dist/lib/esm/components/workspace-layout-state-component.d.mts +239 -0
  359. package/dist/lib/esm/components/workspace-layout-state-component.mjs +404 -0
  360. package/dist/lib/esm/css-class.d.mts +16 -0
  361. package/dist/lib/esm/css-class.mjs +5 -1
  362. package/dist/lib/esm/data-handler.d.mts +219 -2
  363. package/dist/lib/esm/data-handler.mjs +262 -5
  364. package/dist/lib/esm/data-stores/data-store-locations.d.mts +15 -0
  365. package/dist/lib/esm/data-stores/data-store-locations.mjs +80 -22
  366. package/dist/lib/esm/data-stores/data-store-replica.mjs +33 -5
  367. package/dist/lib/esm/data-stores/data-store-seeds.d.mts +2 -2
  368. package/dist/lib/esm/data-stores/data-store-seeds.mjs +4 -4
  369. package/dist/lib/esm/data-stores/data-store-transport.d.mts +30 -1
  370. package/dist/lib/esm/data-stores/data-store-transport.mjs +78 -5
  371. package/dist/lib/esm/data-stores/local-data-store.d.mts +58 -1
  372. package/dist/lib/esm/data-stores/local-data-store.mjs +71 -9
  373. package/dist/lib/esm/data-stores/shared-data-store.d.mts +18 -1
  374. package/dist/lib/esm/data-stores/shared-data-store.mjs +72 -15
  375. package/dist/lib/esm/dataview.d.mts +14 -0
  376. package/dist/lib/esm/dataview.mjs +19 -1
  377. package/dist/lib/esm/demo-vault-helper.d.mts +6 -2
  378. package/dist/lib/esm/demo-vault-helper.mjs +29 -1
  379. package/dist/lib/esm/desktop-demo-vault-opener.mjs +1 -1
  380. package/dist/lib/esm/desktop-git-runner.d.mts +8 -2
  381. package/dist/lib/esm/desktop-git-runner.mjs +3 -3
  382. package/dist/lib/esm/desktop-request-url-stream.mjs +4 -10
  383. package/dist/lib/esm/disposable.d.mts +39 -0
  384. package/dist/lib/esm/disposable.mjs +64 -0
  385. package/dist/lib/esm/file-system.mjs +2 -2
  386. package/dist/lib/esm/frontmatter-formatting.mjs +2 -1
  387. package/dist/lib/esm/generated-during-build.mjs +2 -2
  388. package/dist/lib/esm/git-rename-history.d.mts +2 -2
  389. package/dist/lib/esm/git-rename-history.mjs +1 -1
  390. package/dist/lib/esm/i18n/locales/en.d.mts +26 -0
  391. package/dist/lib/esm/i18n/locales/en.mjs +27 -1
  392. package/dist/lib/esm/i18n/locales/translations-map.d.mts +26 -0
  393. package/dist/lib/esm/index.d.mts +7 -0
  394. package/dist/lib/esm/index.mjs +15 -1
  395. package/dist/lib/esm/link.d.mts +20 -14
  396. package/dist/lib/esm/link.mjs +57 -38
  397. package/dist/lib/esm/loop.mjs +2 -8
  398. package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +7 -0
  399. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +16 -1
  400. package/dist/lib/esm/markdown-view.d.mts +48 -1
  401. package/dist/lib/esm/markdown-view.mjs +192 -2
  402. package/dist/lib/esm/metadata-cache.d.mts +5 -4
  403. package/dist/lib/esm/metadata-cache.mjs +6 -6
  404. package/dist/lib/esm/misplaced-attachment.d.mts +228 -0
  405. package/dist/lib/esm/misplaced-attachment.mjs +212 -0
  406. package/dist/lib/esm/modals/copy-text-manually.d.mts +38 -0
  407. package/dist/lib/esm/modals/copy-text-manually.mjs +99 -0
  408. package/dist/lib/esm/modals/index.d.mts +2 -0
  409. package/dist/lib/esm/modals/index.mjs +5 -1
  410. package/dist/lib/esm/modals/prompt.d.mts +1 -1
  411. package/dist/lib/esm/modals/prompt.mjs +1 -1
  412. package/dist/lib/esm/modals/review-bug-report-diagnostics.d.mts +30 -0
  413. package/dist/lib/esm/modals/review-bug-report-diagnostics.mjs +120 -0
  414. package/dist/lib/esm/notebook-navigator.d.mts +6 -0
  415. package/dist/lib/esm/notebook-navigator.mjs +11 -2
  416. package/dist/lib/esm/parse-link.mjs +4 -4
  417. package/dist/lib/esm/path-compatibility.d.mts +263 -0
  418. package/dist/lib/esm/path-compatibility.mjs +277 -0
  419. package/dist/lib/esm/plugin/index.d.mts +2 -0
  420. package/dist/lib/esm/plugin/index.mjs +6 -2
  421. package/dist/lib/esm/plugin/plugin-api.d.mts +5 -1
  422. package/dist/lib/esm/plugin/plugin-api.mjs +13 -4
  423. package/dist/lib/esm/plugin/plugin-async-cleanup.d.mts +5 -0
  424. package/dist/lib/esm/plugin/plugin-async-cleanup.mjs +3 -1
  425. package/dist/lib/esm/plugin/plugin-context.mjs +2 -1
  426. package/dist/lib/esm/plugin/plugin-event-source.d.mts +4 -4
  427. package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -1
  428. package/dist/lib/esm/plugin/plugin-install-state.d.mts +30 -0
  429. package/dist/lib/esm/plugin/plugin-install-state.mjs +44 -1
  430. package/dist/lib/esm/plugin/plugin-instance.d.mts +258 -0
  431. package/dist/lib/esm/plugin/plugin-instance.mjs +367 -0
  432. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +6 -4
  433. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -1
  434. package/dist/lib/esm/plugin/plugin.d.mts +35 -5
  435. package/dist/lib/esm/plugin/plugin.mjs +118 -9
  436. package/dist/lib/esm/plugin/third-party-plugin.d.mts +244 -0
  437. package/dist/lib/esm/plugin/third-party-plugin.mjs +147 -0
  438. package/dist/lib/esm/release-asset.mjs +1 -1
  439. package/dist/lib/esm/resource-lock.d.mts +8 -7
  440. package/dist/lib/esm/resource-lock.mjs +31 -26
  441. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +4 -1
  442. package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -3
  443. package/dist/lib/esm/settings-recovery.d.mts +178 -0
  444. package/dist/lib/esm/settings-recovery.mjs +125 -0
  445. package/dist/lib/esm/settings-tabs.mjs +2 -2
  446. package/dist/lib/esm/templater.d.mts +6 -0
  447. package/dist/lib/esm/templater.mjs +11 -2
  448. package/dist/lib/esm/vault.mjs +1 -1
  449. package/dist/lib/esm/virtual-file.d.mts +2 -1
  450. package/dist/lib/esm/virtual-file.mjs +7 -5
  451. package/dist/lib/esm/wasm.d.mts +54 -0
  452. package/dist/lib/esm/wasm.mjs +30 -0
  453. package/dist/lib/esm/worker-protocol.d.mts +282 -0
  454. package/dist/lib/esm/worker-protocol.mjs +113 -0
  455. package/dist/styles.css +16 -1
  456. package/modals/copy-text-manually/package.json +6 -0
  457. package/modals/review-bug-report-diagnostics/package.json +6 -0
  458. package/package.json +10 -8
  459. package/plugin/plugin-instance/package.json +6 -0
  460. package/plugin/third-party-plugin/package.json +6 -0
@@ -2,6 +2,33 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
+ (function () {
6
+ function ensureBrowserProcess() {
7
+ const browserProcess = {
8
+ browser: true,
9
+ cwd() {
10
+ return "/";
11
+ },
12
+ env: {},
13
+ platform: "android"
14
+ };
15
+ const existingProcess = globalThis.process;
16
+ if (!existingProcess) {
17
+ globalThis.process = browserProcess;
18
+ return;
19
+ }
20
+ if (existingProcess.versions?.node) {
21
+ return;
22
+ }
23
+ const existingProcessRecord = existingProcess;
24
+ for (const [key, value] of Object.entries(browserProcess)) {
25
+ existingProcessRecord[key] ??= value;
26
+ }
27
+ existingProcessRecord["browser"] = true;
28
+ }
29
+
30
+ ensureBrowserProcess();
31
+ })();
5
32
  (function patchObsidianRequire() {
6
33
  const originalRequire = require;
7
34
  if (!originalRequire || originalRequire.__isPatched) {
@@ -90,13 +117,26 @@ __export(open_bug_report_command_handler_exports, {
90
117
  OpenBugReportCommandHandler: () => OpenBugReportCommandHandler
91
118
  });
92
119
  module.exports = __toCommonJS(open_bug_report_command_handler_exports);
93
- var import_bug_report = require('../bug-report.cjs');
94
- var import_open_git_hub_command_handler = require('./open-git-hub-command-handler.cjs');
120
+ var import_obsidian = require("obsidian");
121
+ var import_bug_report = require("../bug-report.cjs");
122
+ var import_i18n = require("../i18n/i18n.cjs");
123
+ var import_copy_text_manually = require("../modals/copy-text-manually.cjs");
124
+ var import_review_bug_report_diagnostics = require("../modals/review-bug-report-diagnostics.cjs");
125
+ var import_open_git_hub_command_handler = require("./open-git-hub-command-handler.cjs");
126
+ const CLIPBOARD_NOTICE_DURATION_IN_MILLISECONDS = 15e3;
95
127
  class OpenBugReportCommandHandler extends import_open_git_hub_command_handler.OpenGitHubCommandHandler {
96
128
  /**
97
129
  * The Obsidian app instance.
98
130
  */
99
131
  app;
132
+ /**
133
+ * Gets the optional diagnostics the report can carry.
134
+ */
135
+ getDiagnostics;
136
+ /**
137
+ * The most characters the encoded link may have before the report moves to the clipboard.
138
+ */
139
+ maxUrlLength;
100
140
  /**
101
141
  * The id of the reporting plugin.
102
142
  */
@@ -114,10 +154,46 @@ class OpenBugReportCommandHandler extends import_open_git_hub_command_handler.Op
114
154
  name: "Report a bug"
115
155
  });
116
156
  this.app = params.app;
157
+ this.getDiagnostics = params.getDiagnostics;
158
+ this.maxUrlLength = params.maxUrlLength;
117
159
  this.pluginId = params.pluginId;
118
160
  }
119
161
  /**
120
- * Builds the prefilled bug-report URL.
162
+ * Lets the user review the diagnostics, if any, then opens the issue form. When the report is too long
163
+ * for a link, it is copied to the clipboard first, or shown for copying by hand when the clipboard
164
+ * refuses it.
165
+ */
166
+ async execute() {
167
+ if (!this.canExecute()) {
168
+ return;
169
+ }
170
+ const environment = await (0, import_bug_report.getBugReportEnvironment)({ app: this.app, pluginId: this.pluginId });
171
+ const sections = await this.getDiagnostics?.() ?? [];
172
+ let diagnostics = [];
173
+ if (sections.length > 0) {
174
+ const reviewedSections = await (0, import_review_bug_report_diagnostics.reviewBugReportDiagnostics)({
175
+ alwaysIncludedText: (0, import_bug_report.formatBugReportEnvironment)(environment),
176
+ app: this.app,
177
+ sections
178
+ });
179
+ if (reviewedSections === null) {
180
+ return;
181
+ }
182
+ diagnostics = reviewedSections;
183
+ }
184
+ const link = (0, import_bug_report.buildBugReportIssueFormLink)({
185
+ diagnostics,
186
+ environment,
187
+ gitHubRepo: this.gitHubRepo,
188
+ ...this.maxUrlLength !== void 0 && { maxUrlLength: this.maxUrlLength }
189
+ });
190
+ if (link.clipboardText !== null && !await this.copyReport(link.clipboardText)) {
191
+ return;
192
+ }
193
+ window.open(link.url, "_blank");
194
+ }
195
+ /**
196
+ * Builds the prefilled bug-report URL, with the environment only.
121
197
  *
122
198
  * @returns The link.
123
199
  */
@@ -128,9 +204,24 @@ class OpenBugReportCommandHandler extends import_open_git_hub_command_handler.Op
128
204
  pluginId: this.pluginId
129
205
  });
130
206
  }
207
+ async copyReport(text) {
208
+ try {
209
+ await activeWindow.navigator.clipboard.writeText(text);
210
+ new import_obsidian.Notice((0, import_i18n.t)(($) => $.obsidianLib.bugReport.clipboardCopied), CLIPBOARD_NOTICE_DURATION_IN_MILLISECONDS);
211
+ return true;
212
+ } catch {
213
+ return await (0, import_copy_text_manually.copyTextManually)({
214
+ app: this.app,
215
+ message: (0, import_i18n.t)(($) => $.obsidianLib.bugReport.copyManuallyMessage),
216
+ okButtonText: (0, import_i18n.t)(($) => $.obsidianLib.bugReport.openIssueForm),
217
+ text,
218
+ title: (0, import_i18n.t)(($) => $.obsidianLib.bugReport.copyManuallyTitle)
219
+ });
220
+ }
221
+ }
131
222
  }
132
223
  // Annotate the CommonJS export names for ESM import in node:
133
224
  0 && (module.exports = {
134
225
  OpenBugReportCommandHandler
135
226
  });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tYW5kLWhhbmRsZXJzL29wZW4tYnVnLXJlcG9ydC1jb21tYW5kLWhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhhbmRsZXMgdGhlIFwiUmVwb3J0IGEgYnVnXCIgY29tbWFuZC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZ2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsIH0gZnJvbSAnLi4vYnVnLXJlcG9ydC50cyc7XG5pbXBvcnQgeyBPcGVuR2l0SHViQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29wZW4tZ2l0LWh1Yi1jb21tYW5kLWhhbmRsZXIudHMnO1xuXG4vKipcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHtAbGluayBPcGVuQnVnUmVwb3J0Q29tbWFuZEhhbmRsZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5CdWdSZXBvcnRDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHBsdWdpbidzIEdpdEh1YiByZXBvc2l0b3J5LCBhcyBgb3duZXIvbmFtZWAuXG4gICAqL1xuICByZWFkb25seSBnaXRIdWJSZXBvOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgcmVwb3J0aW5nIHBsdWdpbi5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBjb21tYW5kIGhhbmRsZXIgdGhhdCBvcGVucyB0aGUgcGx1Z2luJ3MgYnVnLXJlcG9ydCBpc3N1ZSBmb3JtIG9uIEdpdEh1YiwgcHJlZmlsbGVkIHdpdGggdGhlXG4gKiBlbnZpcm9ubWVudC4gU2VlIHtAbGluayBnZXRCdWdSZXBvcnRJc3N1ZUZvcm1Vcmx9IGZvciB0aGUgZmllbGQgaWRzIHRoZSBmb3JtIG11c3QgdXNlLlxuICovXG5leHBvcnQgY2xhc3MgT3BlbkJ1Z1JlcG9ydENvbW1hbmRIYW5kbGVyIGV4dGVuZHMgT3BlbkdpdEh1YkNvbW1hbmRIYW5kbGVyIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgcmVwb3J0aW5nIHBsdWdpbi5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gQ29uc3RydWN0b3IgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IE9wZW5CdWdSZXBvcnRDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgZ2l0SHViUmVwbzogcGFyYW1zLmdpdEh1YlJlcG8sXG4gICAgICBpY29uOiAnYnVnJyxcbiAgICAgIGlkOiAncmVwb3J0LWJ1ZycsXG4gICAgICBuYW1lOiAnUmVwb3J0IGEgYnVnJ1xuICAgIH0pO1xuXG4gICAgdGhpcy5hcHAgPSBwYXJhbXMuYXBwO1xuICAgIHRoaXMucGx1Z2luSWQgPSBwYXJhbXMucGx1Z2luSWQ7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBwcmVmaWxsZWQgYnVnLXJlcG9ydCBVUkwuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBsaW5rLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGdldFVybCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBnZXRCdWdSZXBvcnRJc3N1ZUZvcm1Vcmwoe1xuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIGdpdEh1YlJlcG86IHRoaXMuZ2l0SHViUmVwbyxcbiAgICAgIHBsdWdpbklkOiB0aGlzLnBsdWdpbklkXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLHdCQUF5QztBQUN6QywwQ0FBeUM7QUEwQmxDLE1BQU0sb0NBQW9DLDZEQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSXJEO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9aLFlBQVksUUFBc0Q7QUFDdkUsVUFBTTtBQUFBLE1BQ0osWUFBWSxPQUFPO0FBQUEsTUFDbkIsTUFBTTtBQUFBLE1BQ04sSUFBSTtBQUFBLE1BQ0osTUFBTTtBQUFBLElBQ1IsQ0FBQztBQUVELFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssV0FBVyxPQUFPO0FBQUEsRUFDekI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxNQUF5QixTQUEwQjtBQUNqRCxlQUFPLDRDQUF5QjtBQUFBLE1BQzlCLEtBQUssS0FBSztBQUFBLE1BQ1YsWUFBWSxLQUFLO0FBQUEsTUFDakIsVUFBVSxLQUFLO0FBQUEsSUFDakIsQ0FBQztBQUFBLEVBQ0g7QUFDRjsiLCJuYW1lcyI6W119
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tYW5kLWhhbmRsZXJzL29wZW4tYnVnLXJlcG9ydC1jb21tYW5kLWhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhhbmRsZXMgdGhlIFwiUmVwb3J0IGEgYnVnXCIgY29tbWFuZC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IE5vdGljZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBCdWdSZXBvcnREaWFnbm9zdGljU2VjdGlvbiB9IGZyb20gJy4uL2J1Zy1yZXBvcnQtZGlhZ25vc3RpY3MudHMnO1xuXG5pbXBvcnQge1xuICBidWlsZEJ1Z1JlcG9ydElzc3VlRm9ybUxpbmssXG4gIGZvcm1hdEJ1Z1JlcG9ydEVudmlyb25tZW50LFxuICBnZXRCdWdSZXBvcnRFbnZpcm9ubWVudCxcbiAgZ2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsXG59IGZyb20gJy4uL2J1Zy1yZXBvcnQudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBjb3B5VGV4dE1hbnVhbGx5IH0gZnJvbSAnLi4vbW9kYWxzL2NvcHktdGV4dC1tYW51YWxseS50cyc7XG5pbXBvcnQgeyByZXZpZXdCdWdSZXBvcnREaWFnbm9zdGljcyB9IGZyb20gJy4uL21vZGFscy9yZXZpZXctYnVnLXJlcG9ydC1kaWFnbm9zdGljcy50cyc7XG5pbXBvcnQgeyBPcGVuR2l0SHViQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29wZW4tZ2l0LWh1Yi1jb21tYW5kLWhhbmRsZXIudHMnO1xuXG4vKipcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHtAbGluayBPcGVuQnVnUmVwb3J0Q29tbWFuZEhhbmRsZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5CdWdSZXBvcnRDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogR2V0cyB0aGUgb3B0aW9uYWwgZGlhZ25vc3RpY3MgdGhlIHJlcG9ydCBjYW4gY2FycnksIHN1Y2ggYXMgYSBgQnVnUmVwb3J0TG9nQnVmZmVyYCdzIHNlY3Rpb24gb3IgdGhlXG4gICAqIHBsdWdpbidzIG93biByZWRhY3RlZCBzZXR0aW5ncy4gQ2FsbGVkIGVhY2ggdGltZSB0aGUgY29tbWFuZCBydW5zLiBXaGVuIGl0IHJldHVybnMgYW55IHNlY3Rpb24sIHRoZVxuICAgKiB1c2VyIHJldmlld3MgdGhlbSBhbmQgY2hvb3NlcyB3aGljaCB0byBpbmNsdWRlIGJlZm9yZSB0aGUgZm9ybSBvcGVuczsgYSBwb3RlbnRpYWxseSBwcml2YXRlIHNlY3Rpb25cbiAgICogc3RhcnRzIGV4Y2x1ZGVkLiBMZWF2ZSBpdCBvdXQgdG8gb3BlbiB0aGUgZm9ybSB3aXRoIHRoZSBlbnZpcm9ubWVudCBvbmx5LCBhcyBiZWZvcmUuXG4gICAqL1xuICByZWFkb25seSBnZXREaWFnbm9zdGljcz86ICgpID0+IFByb21pc2FibGU8cmVhZG9ubHkgQnVnUmVwb3J0RGlhZ25vc3RpY1NlY3Rpb25bXT47XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4ncyBHaXRIdWIgcmVwb3NpdG9yeSwgYXMgYG93bmVyL25hbWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0SHViUmVwbzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCBjaGFyYWN0ZXJzIHRoZSBlbmNvZGVkIGxpbmsgbWF5IGhhdmUgYmVmb3JlIHRoZSByZXBvcnQgbW92ZXMgdG8gdGhlIGNsaXBib2FyZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYERFRkFVTFRfQlVHX1JFUE9SVF9NQVhfVVJMX0xFTkdUSGBcbiAgICovXG4gIHJlYWRvbmx5IG1heFVybExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSByZXBvcnRpbmcgcGx1Z2luLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbn1cblxuLy8gTG9uZyBlbm91Z2ggdG8gcmVhZCB0aGUgcGFzdGUgaW5zdHJ1Y3Rpb24gd2hpbGUgdGhlIGJyb3dzZXIgb3BlbnMuXG5jb25zdCBDTElQQk9BUkRfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyA9IDE1XzAwMDtcblxuLyoqXG4gKiBBIGNvbW1hbmQgaGFuZGxlciB0aGF0IG9wZW5zIHRoZSBwbHVnaW4ncyBidWctcmVwb3J0IGlzc3VlIGZvcm0gb24gR2l0SHViLCBwcmVmaWxsZWQgd2l0aCB0aGVcbiAqIGVudmlyb25tZW50IGFuZCBhbnkgZGlhZ25vc3RpY3MgdGhlIHVzZXIgYWdyZWVkIHRvIGluY2x1ZGUuIFNlZSB7QGxpbmsgZ2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsfSBmb3IgdGhlXG4gKiBmaWVsZCBpZHMgdGhlIGZvcm0gbXVzdCB1c2UsIGFuZCB7QGxpbmsgYnVpbGRCdWdSZXBvcnRJc3N1ZUZvcm1MaW5rfSBmb3Igd2hhdCBoYXBwZW5zIHRvIGEgcmVwb3J0IHRvbyBsb25nXG4gKiBmb3IgYSBsaW5rLlxuICovXG5leHBvcnQgY2xhc3MgT3BlbkJ1Z1JlcG9ydENvbW1hbmRIYW5kbGVyIGV4dGVuZHMgT3BlbkdpdEh1YkNvbW1hbmRIYW5kbGVyIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG9wdGlvbmFsIGRpYWdub3N0aWNzIHRoZSByZXBvcnQgY2FuIGNhcnJ5LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdldERpYWdub3N0aWNzOiAoKCkgPT4gUHJvbWlzYWJsZTxyZWFkb25seSBCdWdSZXBvcnREaWFnbm9zdGljU2VjdGlvbltdPikgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtb3N0IGNoYXJhY3RlcnMgdGhlIGVuY29kZWQgbGluayBtYXkgaGF2ZSBiZWZvcmUgdGhlIHJlcG9ydCBtb3ZlcyB0byB0aGUgY2xpcGJvYXJkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1heFVybExlbmd0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHJlcG9ydGluZyBwbHVnaW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBPcGVuQnVnUmVwb3J0Q29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKHtcbiAgICAgIGdpdEh1YlJlcG86IHBhcmFtcy5naXRIdWJSZXBvLFxuICAgICAgaWNvbjogJ2J1ZycsXG4gICAgICBpZDogJ3JlcG9ydC1idWcnLFxuICAgICAgbmFtZTogJ1JlcG9ydCBhIGJ1ZydcbiAgICB9KTtcblxuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLmdldERpYWdub3N0aWNzID0gcGFyYW1zLmdldERpYWdub3N0aWNzO1xuICAgIHRoaXMubWF4VXJsTGVuZ3RoID0gcGFyYW1zLm1heFVybExlbmd0aDtcbiAgICB0aGlzLnBsdWdpbklkID0gcGFyYW1zLnBsdWdpbklkO1xuICB9XG5cbiAgLyoqXG4gICAqIExldHMgdGhlIHVzZXIgcmV2aWV3IHRoZSBkaWFnbm9zdGljcywgaWYgYW55LCB0aGVuIG9wZW5zIHRoZSBpc3N1ZSBmb3JtLiBXaGVuIHRoZSByZXBvcnQgaXMgdG9vIGxvbmdcbiAgICogZm9yIGEgbGluaywgaXQgaXMgY29waWVkIHRvIHRoZSBjbGlwYm9hcmQgZmlyc3QsIG9yIHNob3duIGZvciBjb3B5aW5nIGJ5IGhhbmQgd2hlbiB0aGUgY2xpcGJvYXJkXG4gICAqIHJlZnVzZXMgaXQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuRXhlY3V0ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBhd2FpdCBnZXRCdWdSZXBvcnRFbnZpcm9ubWVudCh7IGFwcDogdGhpcy5hcHAsIHBsdWdpbklkOiB0aGlzLnBsdWdpbklkIH0pO1xuICAgIGNvbnN0IHNlY3Rpb25zID0gYXdhaXQgdGhpcy5nZXREaWFnbm9zdGljcz8uKCkgPz8gW107XG4gICAgbGV0IGRpYWdub3N0aWNzOiByZWFkb25seSBCdWdSZXBvcnREaWFnbm9zdGljU2VjdGlvbltdID0gW107XG4gICAgaWYgKHNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHJldmlld2VkU2VjdGlvbnMgPSBhd2FpdCByZXZpZXdCdWdSZXBvcnREaWFnbm9zdGljcyh7XG4gICAgICAgIGFsd2F5c0luY2x1ZGVkVGV4dDogZm9ybWF0QnVnUmVwb3J0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpLFxuICAgICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgICBzZWN0aW9uc1xuICAgICAgfSk7XG4gICAgICBpZiAocmV2aWV3ZWRTZWN0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkaWFnbm9zdGljcyA9IHJldmlld2VkU2VjdGlvbnM7XG4gICAgfVxuXG4gICAgY29uc3QgbGluayA9IGJ1aWxkQnVnUmVwb3J0SXNzdWVGb3JtTGluayh7XG4gICAgICBkaWFnbm9zdGljcyxcbiAgICAgIGVudmlyb25tZW50LFxuICAgICAgZ2l0SHViUmVwbzogdGhpcy5naXRIdWJSZXBvLFxuICAgICAgLi4udGhpcy5tYXhVcmxMZW5ndGggIT09IHVuZGVmaW5lZCAmJiB7IG1heFVybExlbmd0aDogdGhpcy5tYXhVcmxMZW5ndGggfVxuICAgIH0pO1xuXG4gICAgaWYgKGxpbmsuY2xpcGJvYXJkVGV4dCAhPT0gbnVsbCAmJiAhYXdhaXQgdGhpcy5jb3B5UmVwb3J0KGxpbmsuY2xpcGJvYXJkVGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cub3BlbihsaW5rLnVybCwgJ19ibGFuaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgcHJlZmlsbGVkIGJ1Zy1yZXBvcnQgVVJMLCB3aXRoIHRoZSBlbnZpcm9ubWVudCBvbmx5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbGluay5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBnZXRVcmwoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gZ2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsKHtcbiAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICBnaXRIdWJSZXBvOiB0aGlzLmdpdEh1YlJlcG8sXG4gICAgICBwbHVnaW5JZDogdGhpcy5wbHVnaW5JZFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb3B5UmVwb3J0KHRleHQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGUgY2xpcGJvYXJkIG9mIHRoZSBmb2N1c2VkIHdpbmRvdzogYSBwb3BvdXQncyBkb2N1bWVudCBpcyB0aGUgb25lIHRoYXQgaG9sZHMgdGhlIGZvY3VzLlxuICAgICAgYXdhaXQgYWN0aXZlV2luZG93Lm5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgICAgbmV3IE5vdGljZSh0KCgkKSA9PiAkLm9ic2lkaWFuTGliLmJ1Z1JlcG9ydC5jbGlwYm9hcmRDb3BpZWQpLCBDTElQQk9BUkRfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBhd2FpdCBjb3B5VGV4dE1hbnVhbGx5KHtcbiAgICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgICAgbWVzc2FnZTogdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5idWdSZXBvcnQuY29weU1hbnVhbGx5TWVzc2FnZSksXG4gICAgICAgIG9rQnV0dG9uVGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5idWdSZXBvcnQub3Blbklzc3VlRm9ybSksXG4gICAgICAgIHRleHQsXG4gICAgICAgIHRpdGxlOiB0KCgkKSA9PiAkLm9ic2lkaWFuTGliLmJ1Z1JlcG9ydC5jb3B5TWFudWFsbHlUaXRsZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0Esc0JBQXVCO0FBSXZCLHdCQUtPO0FBQ1Asa0JBQWtCO0FBQ2xCLGdDQUFpQztBQUNqQywyQ0FBMkM7QUFDM0MsMENBQXlDO0FBc0N6QyxNQUFNLDRDQUE0QztBQVEzQyxNQUFNLG9DQUFvQyw2REFBeUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlyRDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9aLFlBQVksUUFBc0Q7QUFDdkUsVUFBTTtBQUFBLE1BQ0osWUFBWSxPQUFPO0FBQUEsTUFDbkIsTUFBTTtBQUFBLE1BQ04sSUFBSTtBQUFBLE1BQ0osTUFBTTtBQUFBLElBQ1IsQ0FBQztBQUVELFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssaUJBQWlCLE9BQU87QUFDN0IsU0FBSyxlQUFlLE9BQU87QUFDM0IsU0FBSyxXQUFXLE9BQU87QUFBQSxFQUN6QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE1BQXNCLFVBQXlCO0FBQzdDLFFBQUksQ0FBQyxLQUFLLFdBQVcsR0FBRztBQUN0QjtBQUFBLElBQ0Y7QUFFQSxVQUFNLGNBQWMsVUFBTSwyQ0FBd0IsRUFBRSxLQUFLLEtBQUssS0FBSyxVQUFVLEtBQUssU0FBUyxDQUFDO0FBQzVGLFVBQU0sV0FBVyxNQUFNLEtBQUssaUJBQWlCLEtBQUssQ0FBQztBQUNuRCxRQUFJLGNBQXFELENBQUM7QUFDMUQsUUFBSSxTQUFTLFNBQVMsR0FBRztBQUN2QixZQUFNLG1CQUFtQixVQUFNLGlFQUEyQjtBQUFBLFFBQ3hELHdCQUFvQiw4Q0FBMkIsV0FBVztBQUFBLFFBQzFELEtBQUssS0FBSztBQUFBLFFBQ1Y7QUFBQSxNQUNGLENBQUM7QUFDRCxVQUFJLHFCQUFxQixNQUFNO0FBQzdCO0FBQUEsTUFDRjtBQUNBLG9CQUFjO0FBQUEsSUFDaEI7QUFFQSxVQUFNLFdBQU8sK0NBQTRCO0FBQUEsTUFDdkM7QUFBQSxNQUNBO0FBQUEsTUFDQSxZQUFZLEtBQUs7QUFBQSxNQUNqQixHQUFHLEtBQUssaUJBQWlCLFVBQWEsRUFBRSxjQUFjLEtBQUssYUFBYTtBQUFBLElBQzFFLENBQUM7QUFFRCxRQUFJLEtBQUssa0JBQWtCLFFBQVEsQ0FBQyxNQUFNLEtBQUssV0FBVyxLQUFLLGFBQWEsR0FBRztBQUM3RTtBQUFBLElBQ0Y7QUFFQSxXQUFPLEtBQUssS0FBSyxLQUFLLFFBQVE7QUFBQSxFQUNoQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE1BQXlCLFNBQTBCO0FBQ2pELGVBQU8sNENBQXlCO0FBQUEsTUFDOUIsS0FBSyxLQUFLO0FBQUEsTUFDVixZQUFZLEtBQUs7QUFBQSxNQUNqQixVQUFVLEtBQUs7QUFBQSxJQUNqQixDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRUEsTUFBYyxXQUFXLE1BQWdDO0FBQ3ZELFFBQUk7QUFFRixZQUFNLGFBQWEsVUFBVSxVQUFVLFVBQVUsSUFBSTtBQUNyRCxVQUFJLDJCQUFPLGVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxVQUFVLGVBQWUsR0FBRyx5Q0FBeUM7QUFDdkcsYUFBTztBQUFBLElBQ1QsUUFBUTtBQUNOLGFBQU8sVUFBTSw0Q0FBaUI7QUFBQSxRQUM1QixLQUFLLEtBQUs7QUFBQSxRQUNWLGFBQVMsZUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLFVBQVUsbUJBQW1CO0FBQUEsUUFDN0Qsa0JBQWMsZUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLFVBQVUsYUFBYTtBQUFBLFFBQzVEO0FBQUEsUUFDQSxXQUFPLGVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxVQUFVLGlCQUFpQjtBQUFBLE1BQzNELENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGOyIsIm5hbWVzIjpbXX0=
@@ -5,6 +5,8 @@
5
5
  * Handles the "Report a bug" command.
6
6
  */
7
7
  import type { App } from 'obsidian' with { 'resolution-mode': 'import' };
8
+ import type { Promisable } from 'type-fest' with { 'resolution-mode': 'import' };
9
+ import type { BugReportDiagnosticSection } from '../bug-report-diagnostics.cjs';
8
10
  import { OpenGitHubCommandHandler } from './open-git-hub-command-handler.cjs';
9
11
  /**
10
12
  * Constructor parameters for {@link OpenBugReportCommandHandler}.
@@ -14,10 +16,23 @@ export interface OpenBugReportCommandHandlerConstructorParams {
14
16
  * The Obsidian app instance.
15
17
  */
16
18
  readonly app: App;
19
+ /**
20
+ * Gets the optional diagnostics the report can carry, such as a `BugReportLogBuffer`'s section or the
21
+ * plugin's own redacted settings. Called each time the command runs. When it returns any section, the
22
+ * user reviews them and chooses which to include before the form opens; a potentially private section
23
+ * starts excluded. Leave it out to open the form with the environment only, as before.
24
+ */
25
+ readonly getDiagnostics?: () => Promisable<readonly BugReportDiagnosticSection[]>;
17
26
  /**
18
27
  * The plugin's GitHub repository, as `owner/name`.
19
28
  */
20
29
  readonly gitHubRepo: string;
30
+ /**
31
+ * The most characters the encoded link may have before the report moves to the clipboard.
32
+ *
33
+ * @default `DEFAULT_BUG_REPORT_MAX_URL_LENGTH`
34
+ */
35
+ readonly maxUrlLength?: number;
21
36
  /**
22
37
  * The id of the reporting plugin.
23
38
  */
@@ -25,13 +40,23 @@ export interface OpenBugReportCommandHandlerConstructorParams {
25
40
  }
26
41
  /**
27
42
  * A command handler that opens the plugin's bug-report issue form on GitHub, prefilled with the
28
- * environment. See {@link getBugReportIssueFormUrl} for the field ids the form must use.
43
+ * environment and any diagnostics the user agreed to include. See {@link getBugReportIssueFormUrl} for the
44
+ * field ids the form must use, and {@link buildBugReportIssueFormLink} for what happens to a report too long
45
+ * for a link.
29
46
  */
30
47
  export declare class OpenBugReportCommandHandler extends OpenGitHubCommandHandler {
31
48
  /**
32
49
  * The Obsidian app instance.
33
50
  */
34
51
  protected readonly app: App;
52
+ /**
53
+ * Gets the optional diagnostics the report can carry.
54
+ */
55
+ protected readonly getDiagnostics: (() => Promisable<readonly BugReportDiagnosticSection[]>) | undefined;
56
+ /**
57
+ * The most characters the encoded link may have before the report moves to the clipboard.
58
+ */
59
+ protected readonly maxUrlLength: number | undefined;
35
60
  /**
36
61
  * The id of the reporting plugin.
37
62
  */
@@ -43,9 +68,16 @@ export declare class OpenBugReportCommandHandler extends OpenGitHubCommandHandle
43
68
  */
44
69
  constructor(params: OpenBugReportCommandHandlerConstructorParams);
45
70
  /**
46
- * Builds the prefilled bug-report URL.
71
+ * Lets the user review the diagnostics, if any, then opens the issue form. When the report is too long
72
+ * for a link, it is copied to the clipboard first, or shown for copying by hand when the clipboard
73
+ * refuses it.
74
+ */
75
+ execute(): Promise<void>;
76
+ /**
77
+ * Builds the prefilled bug-report URL, with the environment only.
47
78
  *
48
79
  * @returns The link.
49
80
  */
50
81
  protected getUrl(): Promise<string>;
82
+ private copyReport;
51
83
  }
@@ -127,8 +127,8 @@ __export(open_demo_vault_command_handler_exports, {
127
127
  OpenDemoVaultCommandHandler: () => OpenDemoVaultCommandHandler
128
128
  });
129
129
  module.exports = __toCommonJS(open_demo_vault_command_handler_exports);
130
- var import_obsidian = require('obsidian');
131
- var import_global_command_handler = require('./global-command-handler.cjs');
130
+ var import_obsidian = require("obsidian");
131
+ var import_global_command_handler = require("./global-command-handler.cjs");
132
132
  class OpenDemoVaultCommandHandler extends import_global_command_handler.GlobalCommandHandler {
133
133
  /**
134
134
  * The Obsidian app instance.
@@ -90,8 +90,8 @@ __export(open_discussion_command_handler_exports, {
90
90
  OpenDiscussionCommandHandler: () => OpenDiscussionCommandHandler
91
91
  });
92
92
  module.exports = __toCommonJS(open_discussion_command_handler_exports);
93
- var import_git_hub_discussion = require('../git-hub-discussion.cjs');
94
- var import_open_git_hub_command_handler = require('./open-git-hub-command-handler.cjs');
93
+ var import_git_hub_discussion = require("../git-hub-discussion.cjs");
94
+ var import_open_git_hub_command_handler = require("./open-git-hub-command-handler.cjs");
95
95
  class OpenDiscussionCommandHandler extends import_open_git_hub_command_handler.OpenGitHubCommandHandler {
96
96
  params;
97
97
  /**
@@ -90,8 +90,8 @@ __export(open_feature_request_command_handler_exports, {
90
90
  OpenFeatureRequestCommandHandler: () => OpenFeatureRequestCommandHandler
91
91
  });
92
92
  module.exports = __toCommonJS(open_feature_request_command_handler_exports);
93
- var import_feature_request = require('../feature-request.cjs');
94
- var import_open_git_hub_command_handler = require('./open-git-hub-command-handler.cjs');
93
+ var import_feature_request = require("../feature-request.cjs");
94
+ var import_open_git_hub_command_handler = require("./open-git-hub-command-handler.cjs");
95
95
  class OpenFeatureRequestCommandHandler extends import_open_git_hub_command_handler.OpenGitHubCommandHandler {
96
96
  params;
97
97
  /**
@@ -90,7 +90,7 @@ __export(open_git_hub_command_handler_exports, {
90
90
  OpenGitHubCommandHandler: () => OpenGitHubCommandHandler
91
91
  });
92
92
  module.exports = __toCommonJS(open_git_hub_command_handler_exports);
93
- var import_global_command_handler = require('./global-command-handler.cjs');
93
+ var import_global_command_handler = require("./global-command-handler.cjs");
94
94
  class OpenGitHubCommandHandler extends import_global_command_handler.GlobalCommandHandler {
95
95
  /**
96
96
  * The plugin's repository, as `owner/name`.
@@ -90,8 +90,8 @@ __export(open_settings_command_handler_exports, {
90
90
  OpenSettingsCommandHandler: () => OpenSettingsCommandHandler
91
91
  });
92
92
  module.exports = __toCommonJS(open_settings_command_handler_exports);
93
- var import_settings_modal = require('../settings-modal.cjs');
94
- var import_global_command_handler = require('./global-command-handler.cjs');
93
+ var import_settings_modal = require("../settings-modal.cjs");
94
+ var import_global_command_handler = require("./global-command-handler.cjs");
95
95
  class OpenSettingsCommandHandler extends import_global_command_handler.GlobalCommandHandler {
96
96
  /**
97
97
  * The Obsidian app instance.
@@ -117,8 +117,8 @@ __export(undo_bulk_operation_command_handler_exports, {
117
117
  UndoBulkOperationCommandHandler: () => UndoBulkOperationCommandHandler
118
118
  });
119
119
  module.exports = __toCommonJS(undo_bulk_operation_command_handler_exports);
120
- var import_obsidian = require('obsidian');
121
- var import_global_command_handler = require('./global-command-handler.cjs');
120
+ var import_obsidian = require("obsidian");
121
+ var import_global_command_handler = require("./global-command-handler.cjs");
122
122
  class UndoBulkOperationCommandHandler extends import_global_command_handler.GlobalCommandHandler {
123
123
  /**
124
124
  * The component that commits the plugin's bulk operations.
@@ -90,7 +90,7 @@ __export(unlock_active_note_command_handler_exports, {
90
90
  UnlockActiveNoteCommandHandler: () => UnlockActiveNoteCommandHandler
91
91
  });
92
92
  module.exports = __toCommonJS(unlock_active_note_command_handler_exports);
93
- var import_global_command_handler = require('./global-command-handler.cjs');
93
+ var import_global_command_handler = require("./global-command-handler.cjs");
94
94
  class UnlockActiveNoteCommandHandler extends import_global_command_handler.GlobalCommandHandler {
95
95
  /**
96
96
  * The Obsidian app instance.
@@ -131,9 +131,9 @@ __export(community_plugins_exports, {
131
131
  updateCommunityPlugin: () => updateCommunityPlugin
132
132
  });
133
133
  module.exports = __toCommonJS(community_plugins_exports);
134
- var import_compare_versions = require('compare-versions');
135
- var import_obsidian = require('obsidian');
136
- var import_obsidian_lib_state = require('./obsidian-lib-state.cjs');
134
+ var import_compare_versions = require("compare-versions");
135
+ var import_obsidian = require("obsidian");
136
+ var import_obsidian_lib_state = require("./obsidian-lib-state.cjs");
137
137
  const COMMUNITY_PLUGINS_STATE_KEY = "communityPluginEntriesPromise";
138
138
  const COMMUNITY_PLUGINS_URL = "https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-plugins.json";
139
139
  const DATA_JSON_INDENT = 2;
@@ -117,8 +117,8 @@ __export(abort_signal_component_exports, {
117
117
  AbortSignalComponent: () => AbortSignalComponent
118
118
  });
119
119
  module.exports = __toCommonJS(abort_signal_component_exports);
120
- var import_error = require('@mnaoumov/typescript-lib/error');
121
- var import_component_ex = require('./component-ex.cjs');
120
+ var import_error = require("@mnaoumov/typescript-lib/error");
121
+ var import_component_ex = require("./component-ex.cjs");
122
122
  class AbortSignalComponent extends import_component_ex.ComponentEx {
123
123
  /**
124
124
  * Creates a new abort signal component.
@@ -119,11 +119,11 @@ __export(all_windows_event_component_exports, {
119
119
  registerBodyClass: () => registerBodyClass
120
120
  });
121
121
  module.exports = __toCommonJS(all_windows_event_component_exports);
122
- var import_type_guards = require('@mnaoumov/typescript-lib/type-guards');
123
- var import_obsidian = require('obsidian');
124
- var import_workspace = require('../workspace.cjs');
125
- var import_component_ex = require('./component-ex.cjs');
126
- var import_layout_ready_component = require('./layout-ready-component.cjs');
122
+ var import_type_guards = require("@mnaoumov/typescript-lib/type-guards");
123
+ var import_obsidian = require("obsidian");
124
+ var import_workspace = require("../workspace.cjs");
125
+ var import_component_ex = require("./component-ex.cjs");
126
+ var import_layout_ready_component = require("./layout-ready-component.cjs");
127
127
  class AllWindowsEventComponent extends import_component_ex.ComponentEx {
128
128
  /**
129
129
  * Creates a new instance of the `AllWindowsEventComponent` class.
@@ -0,0 +1,245 @@
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
+ (function () {
6
+ function ensureBrowserProcess() {
7
+ const browserProcess = {
8
+ browser: true,
9
+ cwd() {
10
+ return "/";
11
+ },
12
+ env: {},
13
+ platform: "android"
14
+ };
15
+ const existingProcess = globalThis.process;
16
+ if (!existingProcess) {
17
+ globalThis.process = browserProcess;
18
+ return;
19
+ }
20
+ if (existingProcess.versions?.node) {
21
+ return;
22
+ }
23
+ const existingProcessRecord = existingProcess;
24
+ for (const [key, value] of Object.entries(browserProcess)) {
25
+ existingProcessRecord[key] ??= value;
26
+ }
27
+ existingProcessRecord["browser"] = true;
28
+ }
29
+
30
+ ensureBrowserProcess();
31
+ })();
32
+ (function patchObsidianRequire() {
33
+ const originalRequire = require;
34
+ if (!originalRequire || originalRequire.__isPatched) {
35
+ return;
36
+ }
37
+ require = Object.assign(
38
+ (id) => requirePatched(id),
39
+ originalRequire,
40
+ {
41
+ __isPatched: true
42
+ }
43
+ );
44
+ function extractDefault($module) {
45
+ return $module && $module.__esModule && "default" in $module ? $module.default : $module;
46
+ }
47
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
48
+ "@codemirror/autocomplete",
49
+ "@codemirror/collab",
50
+ "@codemirror/commands",
51
+ "@codemirror/language",
52
+ "@codemirror/lint",
53
+ "@codemirror/search",
54
+ "@codemirror/state",
55
+ "@codemirror/text",
56
+ "@codemirror/view",
57
+ "@lezer/common",
58
+ "@lezer/highlight",
59
+ "@lezer/lr",
60
+ "obsidian"
61
+ ]);
62
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
63
+ "@codemirror/closebrackets",
64
+ "@codemirror/comment",
65
+ "@codemirror/fold",
66
+ "@codemirror/gutter",
67
+ "@codemirror/highlight",
68
+ "@codemirror/history",
69
+ "@codemirror/matchbrackets",
70
+ "@codemirror/panel",
71
+ "@codemirror/rangeset",
72
+ "@codemirror/rectangular-selection",
73
+ "@codemirror/stream-parser",
74
+ "@codemirror/tooltip"
75
+ ]);
76
+ function requirePatched(id) {
77
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
78
+ return originalRequire?.(id);
79
+ }
80
+ const app = globalThis.app;
81
+ if (app?.isMobile) {
82
+ if (id === "process" || id === "node:process") {
83
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
84
+ return process;
85
+ }
86
+ } else {
87
+ const $module = originalRequire?.(id);
88
+ if ($module) {
89
+ return extractDefault($module);
90
+ }
91
+ }
92
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
93
+ return {};
94
+ }
95
+ })();
96
+
97
+ "use strict";
98
+ var __defProp = Object.defineProperty;
99
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
100
+ var __getOwnPropNames = Object.getOwnPropertyNames;
101
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
102
+ var __export = (target, all) => {
103
+ for (var name in all)
104
+ __defProp(target, name, { get: all[name], enumerable: true });
105
+ };
106
+ var __copyProps = (to, from, except, desc) => {
107
+ if (from && typeof from === "object" || typeof from === "function") {
108
+ for (let key of __getOwnPropNames(from))
109
+ if (!__hasOwnProp.call(to, key) && key !== except)
110
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
111
+ }
112
+ return to;
113
+ };
114
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
115
+ var all_windows_status_bar_item_component_exports = {};
116
+ __export(all_windows_status_bar_item_component_exports, {
117
+ AllWindowsStatusBarItemComponent: () => AllWindowsStatusBarItemComponent,
118
+ WINDOW_STATUS_BAR_CSS_CLASS: () => WINDOW_STATUS_BAR_CSS_CLASS,
119
+ getPluginStatusBarItemCssClass: () => getPluginStatusBarItemCssClass,
120
+ registerAllWindowsStatusBarItem: () => registerAllWindowsStatusBarItem
121
+ });
122
+ module.exports = __toCommonJS(all_windows_status_bar_item_component_exports);
123
+ var import_obsidian = require("obsidian");
124
+ var import_all_windows_event_component = require("./all-windows-event-component.cjs");
125
+ var import_component_ex = require("./component-ex.cjs");
126
+ const WINDOW_STATUS_BAR_CSS_CLASS = "obsidian-lib-window-status-bar";
127
+ const APP_CONTAINER_CSS_CLASS = "app-container";
128
+ const STATUS_BAR_CSS_CLASS = "status-bar";
129
+ const STATUS_BAR_ITEM_CSS_CLASS = "status-bar-item";
130
+ class AllWindowsStatusBarItemComponent extends import_component_ex.ComponentEx {
131
+ /**
132
+ * The Obsidian app instance.
133
+ */
134
+ app;
135
+ /**
136
+ * The CSS classes added to each item.
137
+ */
138
+ itemClasses;
139
+ /**
140
+ * Renders the item of one window.
141
+ */
142
+ renderItem;
143
+ /**
144
+ * Whether a status bar is created in a window that has none.
145
+ */
146
+ shouldCreateMissingStatusBar;
147
+ itemElsByWindow = /* @__PURE__ */ new Map();
148
+ /**
149
+ * Creates a new instance of the `AllWindowsStatusBarItemComponent` class.
150
+ *
151
+ * @param params - The {@link AllWindowsStatusBarItemComponentConstructorParams}.
152
+ */
153
+ constructor(params) {
154
+ super();
155
+ this.app = params.app;
156
+ this.renderItem = params.render;
157
+ this.shouldCreateMissingStatusBar = params.shouldCreateMissingStatusBar ?? true;
158
+ this.itemClasses = [
159
+ STATUS_BAR_ITEM_CSS_CLASS,
160
+ ...params.pluginId === void 0 ? [] : [getPluginStatusBarItemCssClass(params.pluginId)],
161
+ ...params.cls ?? []
162
+ ];
163
+ }
164
+ /**
165
+ * Gets the item of a window.
166
+ *
167
+ * @param win - The window.
168
+ * @returns The item, or `null` when the window has none.
169
+ */
170
+ getItemEl(win) {
171
+ return this.itemElsByWindow.get(win) ?? null;
172
+ }
173
+ /**
174
+ * Gets the items of every window that has one.
175
+ *
176
+ * @returns The items.
177
+ */
178
+ getItemEls() {
179
+ return [...this.itemElsByWindow.values()];
180
+ }
181
+ /**
182
+ * Creates the item in every window, now and as popouts open. A no-op on mobile.
183
+ */
184
+ onload() {
185
+ super.onload();
186
+ if (import_obsidian.Platform.isMobile) {
187
+ return;
188
+ }
189
+ const allWindowsEventComponent = this.addChild(new import_all_windows_event_component.AllWindowsEventComponent(this.app));
190
+ allWindowsEventComponent.registerAllWindowsHandler((win) => this.attach(win));
191
+ }
192
+ /**
193
+ * Renders the item of every window again.
194
+ */
195
+ refresh() {
196
+ for (const [win, el] of this.itemElsByWindow) {
197
+ this.renderItem({ el, win });
198
+ }
199
+ }
200
+ attach(win) {
201
+ const statusBarEl = this.findOrCreateStatusBar(win.document);
202
+ if (!statusBarEl) {
203
+ return null;
204
+ }
205
+ const el = statusBarEl.createDiv({ cls: [...this.itemClasses] });
206
+ this.itemElsByWindow.set(win, el);
207
+ this.renderItem({ el, win });
208
+ return () => {
209
+ this.itemElsByWindow.delete(win);
210
+ el.remove();
211
+ if (statusBarEl.classList.contains(WINDOW_STATUS_BAR_CSS_CLASS) && !statusBarEl.querySelector(`:scope > .${STATUS_BAR_ITEM_CSS_CLASS}`)) {
212
+ statusBarEl.remove();
213
+ }
214
+ };
215
+ }
216
+ findOrCreateStatusBar(doc) {
217
+ const appContainerEl = doc.body.querySelector(`:scope > .${APP_CONTAINER_CSS_CLASS}`);
218
+ if (!appContainerEl) {
219
+ return null;
220
+ }
221
+ const statusBarEl = appContainerEl.querySelector(`:scope > .${STATUS_BAR_CSS_CLASS}`);
222
+ if (statusBarEl) {
223
+ return statusBarEl;
224
+ }
225
+ if (!this.shouldCreateMissingStatusBar) {
226
+ return null;
227
+ }
228
+ return appContainerEl.createDiv({ cls: [STATUS_BAR_CSS_CLASS, WINDOW_STATUS_BAR_CSS_CLASS] });
229
+ }
230
+ }
231
+ function getPluginStatusBarItemCssClass(pluginId) {
232
+ return `plugin-${pluginId.toLowerCase().replace(/[^_a-zA-Z0-9-]/, "-")}`;
233
+ }
234
+ function registerAllWindowsStatusBarItem(params) {
235
+ const { component, ...constructorParams } = params;
236
+ return component.addChild(new AllWindowsStatusBarItemComponent(constructorParams));
237
+ }
238
+ // Annotate the CommonJS export names for ESM import in node:
239
+ 0 && (module.exports = {
240
+ AllWindowsStatusBarItemComponent,
241
+ WINDOW_STATUS_BAR_CSS_CLASS,
242
+ getPluginStatusBarItemCssClass,
243
+ registerAllWindowsStatusBarItem
244
+ });
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2FsbC13aW5kb3dzLXN0YXR1cy1iYXItaXRlbS1jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFNob3dzIG9uZSBzdGF0dXMtYmFyIGl0ZW0gaW4gdGhlIG1haW4gd2luZG93IGFuZCBpbiBldmVyeSBkZXNrdG9wIHBvcG91dCwgaW5jbHVkaW5nIHBvcG91dHMgb3BlbmVkIGxhdGVyLCBhbmRcbiAqIHJlbW92ZXMgb25seSBpdHMgb3duIGl0ZW1zIHdoZW4gYSB3aW5kb3cgY2xvc2VzIG9yIHRoZSBjb21wb25lbnQgdW5sb2Fkcy5cbiAqXG4gKiBSZWFkIGZyb20gT2JzaWRpYW4gYDEuMTUuMWA6IHRoZSBtYWluIHdpbmRvdyBidWlsZHMgYGJvZHkgPiAuYXBwLWNvbnRhaW5lciA+IC5zdGF0dXMtYmFyYCwgYW5kXG4gKiBgUGx1Z2luLmFkZFN0YXR1c0Jhckl0ZW1gIGlzIGEgYC5zdGF0dXMtYmFyLWl0ZW1gIGNyZWF0ZWQgaW4gaXQuIEEgcG9wb3V0IGJ1aWxkcyBgYm9keSA+IC5hcHAtY29udGFpbmVyYCB3aXRoIHRoZVxuICogd29ya3NwYWNlIG9ubHksIGFuZCAqKm5vIHN0YXR1cyBiYXIqKi4gYGFwcC5jc3NgIHN0eWxlcyBgLnN0YXR1cy1iYXJgIHdpdGhvdXQgc2NvcGluZyBpdCB0byBhIHdpbmRvdywgc28gYVxuICogYC5zdGF0dXMtYmFyYCBjcmVhdGVkIGluc2lkZSBhIHBvcG91dCdzIGAuYXBwLWNvbnRhaW5lcmAgbG9va3MgYW5kIHNpdHMgZXhhY3RseSBsaWtlIHRoZSBtYWluIG9uZS4gQnkgZGVmYXVsdFxuICogdGhpcyBjb21wb25lbnQgY3JlYXRlcyB0aGF0IGJhciBpbiBhIHBvcG91dCB0aGF0IGxhY2tzIG9uZSwgYW5kIG1hcmtzIGl0IHdpdGhcbiAqIHtAbGluayBXSU5ET1dfU1RBVFVTX0JBUl9DU1NfQ0xBU1N9LiBUaGUgbWFya2VyIGlzIGEgd2lyZSBjb25zdGFudCBzaGFyZWQgYnkgZXZlcnkgY29weSBvZiB0aGlzIGxpYnJhcnk6IGFueSBjb3B5XG4gKiByZXVzZXMgYSBtYXJrZWQgYmFyLCBhbmQgd2hpY2hldmVyIGNvcHkgcmVtb3ZlcyB0aGUgbGFzdCBpdGVtIGZyb20gaXQgcmVtb3ZlcyB0aGUgYmFyIHRvby5cbiAqXG4gKiBNb2JpbGUgaGFzIG5vIHBvcG91dHMsIGFuZCBgYXBwLmNzc2AgaGlkZXMgYC5zdGF0dXMtYmFyYCB1bmRlciBgLmlzLW1vYmlsZWAsIHNvIG9uIG1vYmlsZSB0aGUgY29tcG9uZW50IGNyZWF0ZXNcbiAqIG5vdGhpbmcgYW5kIG5ldmVyIGNhbGxzIHRoZSByZW5kZXIgY2FsbGJhY2suXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBBbGxXaW5kb3dzRXZlbnRDb21wb25lbnQgfSBmcm9tICcuL2FsbC13aW5kb3dzLWV2ZW50LWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuLyoqXG4gKiBUaGUgY2xhc3MgdGhhdCBtYXJrcyBhIHN0YXR1cyBiYXIgdGhpcyBsaWJyYXJ5IGNyZWF0ZWQgaW4gYSB3aW5kb3cgdGhhdCBoYWQgbm9uZS5cbiAqIE90aGVyIGNvcGllcyBvZiB0aGUgbGlicmFyeSBtYXRjaCBpdCwgc28gaXRzIHZhbHVlIG11c3QgbmV2ZXIgY2hhbmdlLlxuICovXG5leHBvcnQgY29uc3QgV0lORE9XX1NUQVRVU19CQVJfQ1NTX0NMQVNTID0gJ29ic2lkaWFuLWxpYi13aW5kb3ctc3RhdHVzLWJhcic7XG5cbmNvbnN0IEFQUF9DT05UQUlORVJfQ1NTX0NMQVNTID0gJ2FwcC1jb250YWluZXInO1xuY29uc3QgU1RBVFVTX0JBUl9DU1NfQ0xBU1MgPSAnc3RhdHVzLWJhcic7XG5jb25zdCBTVEFUVVNfQkFSX0lURU1fQ1NTX0NMQVNTID0gJ3N0YXR1cy1iYXItaXRlbSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBBbGxXaW5kb3dzU3RhdHVzQmFySXRlbUNvbXBvbmVudH0gY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxsV2luZG93c1N0YXR1c0Jhckl0ZW1Db21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEV4dHJhIENTUyBjbGFzc2VzIGZvciBlYWNoIGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBjbHM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiBpZC4gV2hlbiBnaXZlbiwgZWFjaCBpdGVtIGdldHMgdGhlIGBwbHVnaW4tPGlkPmAgY2xhc3MgdGhhdCBgUGx1Z2luLmFkZFN0YXR1c0Jhckl0ZW1gIGFkZHMsIHNvXG4gICAqIHRoZW1lcyBhbmQgQ1NTIHNuaXBwZXRzIHRoYXQgdGFyZ2V0IHRoZSBwbHVnaW4ncyBzdGF0dXMtYmFyIGl0ZW1zIG1hdGNoIHRoZXNlIHRvby5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBpdGVtIG9mIG9uZSB3aW5kb3cuIENhbGxlZCB3aGVuIHRoZSBpdGVtIGlzIGNyZWF0ZWQgYW5kIGFnYWluIGJ5XG4gICAqIHtAbGluayBBbGxXaW5kb3dzU3RhdHVzQmFySXRlbUNvbXBvbmVudC5yZWZyZXNofSwgc28gaXQgbXVzdCBiZSBzYWZlIHRvIGNhbGwgcmVwZWF0ZWRseSBvbiB0aGUgc2FtZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGl0ZW0gYW5kIGl0cyB3aW5kb3cuXG4gICAqL1xuICByZWFkb25seSByZW5kZXI6IChwYXJhbXM6IEFsbFdpbmRvd3NTdGF0dXNCYXJJdGVtUmVuZGVyUGFyYW1zKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNyZWF0ZSBhIHN0YXR1cyBiYXIgaW4gYSB3aW5kb3cgdGhhdCBoYXMgbm9uZSwgYXMgZXZlcnkgcG9wb3V0IGluIE9ic2lkaWFuIGAxLjE1LjFgIGRvZXMuXG4gICAqIFdoZW4gYGZhbHNlYCwgc3VjaCBhIHdpbmRvdyBnZXRzIG5vIGl0ZW0uIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZENyZWF0ZU1pc3NpbmdTdGF0dXNCYXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIHtAbGluayBBbGxXaW5kb3dzU3RhdHVzQmFySXRlbUNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zLnJlbmRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxsV2luZG93c1N0YXR1c0Jhckl0ZW1SZW5kZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHN0YXR1cy1iYXIgaXRlbSBvd25lZCBieSB0aGlzIGNvbXBvbmVudCBpbiB7QGxpbmsgd2lufS5cbiAgICovXG4gIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIHdpbmRvdyB0aGUgaXRlbSBpcyBpbi4gVXNlIGl0cyBkb2N1bWVudCBmb3IgYW55dGhpbmcgdGhlIHJlbmRlciBjcmVhdGVzIG91dHNpZGUgdGhlIGl0ZW0uXG4gICAqL1xuICByZWFkb25seSB3aW46IFdpbmRvdztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVnaXN0ZXJBbGxXaW5kb3dzU3RhdHVzQmFySXRlbX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJBbGxXaW5kb3dzU3RhdHVzQmFySXRlbVBhcmFtcyBleHRlbmRzIEFsbFdpbmRvd3NTdGF0dXNCYXJJdGVtQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB0aGF0IG93bnMgdGhlIGl0ZW1zOiB0aGV5IGFyZSByZW1vdmVkIHdoZW4gaXQgdW5sb2Fkcy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudDogQ29tcG9uZW50O1xufVxuXG4vKipcbiAqIFNob3dzIG9uZSBzdGF0dXMtYmFyIGl0ZW0gaW4gdGhlIG1haW4gd2luZG93IGFuZCBpbiBldmVyeSBkZXNrdG9wIHBvcG91dCB3aGlsZSBsb2FkZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGxXaW5kb3dzU3RhdHVzQmFySXRlbUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3NlcyBhZGRlZCB0byBlYWNoIGl0ZW0uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXRlbUNsYXNzZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBpdGVtIG9mIG9uZSB3aW5kb3cuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVuZGVySXRlbTogKHBhcmFtczogQWxsV2luZG93c1N0YXR1c0Jhckl0ZW1SZW5kZXJQYXJhbXMpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBzdGF0dXMgYmFyIGlzIGNyZWF0ZWQgaW4gYSB3aW5kb3cgdGhhdCBoYXMgbm9uZS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBzaG91bGRDcmVhdGVNaXNzaW5nU3RhdHVzQmFyOiBib29sZWFuO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaXRlbUVsc0J5V2luZG93ID0gbmV3IE1hcDxXaW5kb3csIEhUTUxFbGVtZW50PigpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBgQWxsV2luZG93c1N0YXR1c0Jhckl0ZW1Db21wb25lbnRgIGNsYXNzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBBbGxXaW5kb3dzU3RhdHVzQmFySXRlbUNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zfS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEFsbFdpbmRvd3NTdGF0dXNCYXJJdGVtQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLnJlbmRlckl0ZW0gPSBwYXJhbXMucmVuZGVyO1xuICAgIHRoaXMuc2hvdWxkQ3JlYXRlTWlzc2luZ1N0YXR1c0JhciA9IHBhcmFtcy5zaG91bGRDcmVhdGVNaXNzaW5nU3RhdHVzQmFyID8/IHRydWU7XG4gICAgdGhpcy5pdGVtQ2xhc3NlcyA9IFtcbiAgICAgIFNUQVRVU19CQVJfSVRFTV9DU1NfQ0xBU1MsXG4gICAgICAuLi5wYXJhbXMucGx1Z2luSWQgPT09IHVuZGVmaW5lZCA/IFtdIDogW2dldFBsdWdpblN0YXR1c0Jhckl0ZW1Dc3NDbGFzcyhwYXJhbXMucGx1Z2luSWQpXSxcbiAgICAgIC4uLnBhcmFtcy5jbHMgPz8gW11cbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGl0ZW0gb2YgYSB3aW5kb3cuXG4gICAqXG4gICAqIEBwYXJhbSB3aW4gLSBUaGUgd2luZG93LlxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSwgb3IgYG51bGxgIHdoZW4gdGhlIHdpbmRvdyBoYXMgbm9uZS5cbiAgICovXG4gIHB1YmxpYyBnZXRJdGVtRWwod2luOiBXaW5kb3cpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLml0ZW1FbHNCeVdpbmRvdy5nZXQod2luKSA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGl0ZW1zIG9mIGV2ZXJ5IHdpbmRvdyB0aGF0IGhhcyBvbmUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBpdGVtcy5cbiAgICovXG4gIHB1YmxpYyBnZXRJdGVtRWxzKCk6IEhUTUxFbGVtZW50W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5pdGVtRWxzQnlXaW5kb3cudmFsdWVzKCldO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGl0ZW0gaW4gZXZlcnkgd2luZG93LCBub3cgYW5kIGFzIHBvcG91dHMgb3Blbi4gQSBuby1vcCBvbiBtb2JpbGUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb25sb2FkKCk6IHZvaWQge1xuICAgIHN1cGVyLm9ubG9hZCgpO1xuXG4gICAgaWYgKFBsYXRmb3JtLmlzTW9iaWxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWxsV2luZG93c0V2ZW50Q29tcG9uZW50ID0gdGhpcy5hZGRDaGlsZChuZXcgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50KHRoaXMuYXBwKSk7XG4gICAgYWxsV2luZG93c0V2ZW50Q29tcG9uZW50LnJlZ2lzdGVyQWxsV2luZG93c0hhbmRsZXIoKHdpbikgPT4gdGhpcy5hdHRhY2god2luKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgaXRlbSBvZiBldmVyeSB3aW5kb3cgYWdhaW4uXG4gICAqL1xuICBwdWJsaWMgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFt3aW4sIGVsXSBvZiB0aGlzLml0ZW1FbHNCeVdpbmRvdykge1xuICAgICAgdGhpcy5yZW5kZXJJdGVtKHsgZWwsIHdpbiB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaCh3aW46IFdpbmRvdyk6ICgoKSA9PiB2b2lkKSB8IG51bGwge1xuICAgIGNvbnN0IHN0YXR1c0JhckVsID0gdGhpcy5maW5kT3JDcmVhdGVTdGF0dXNCYXIod2luLmRvY3VtZW50KTtcbiAgICBpZiAoIXN0YXR1c0JhckVsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBlbCA9IHN0YXR1c0JhckVsLmNyZWF0ZURpdih7IGNsczogWy4uLnRoaXMuaXRlbUNsYXNzZXNdIH0pO1xuICAgIHRoaXMuaXRlbUVsc0J5V2luZG93LnNldCh3aW4sIGVsKTtcbiAgICB0aGlzLnJlbmRlckl0ZW0oeyBlbCwgd2luIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMuaXRlbUVsc0J5V2luZG93LmRlbGV0ZSh3aW4pO1xuICAgICAgZWwucmVtb3ZlKCk7XG4gICAgICBpZiAoc3RhdHVzQmFyRWwuY2xhc3NMaXN0LmNvbnRhaW5zKFdJTkRPV19TVEFUVVNfQkFSX0NTU19DTEFTUykgJiYgIXN0YXR1c0JhckVsLnF1ZXJ5U2VsZWN0b3IoYDpzY29wZSA+IC4ke1NUQVRVU19CQVJfSVRFTV9DU1NfQ0xBU1N9YCkpIHtcbiAgICAgICAgc3RhdHVzQmFyRWwucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZE9yQ3JlYXRlU3RhdHVzQmFyKGRvYzogRG9jdW1lbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGNvbnN0IGFwcENvbnRhaW5lckVsID0gZG9jLmJvZHkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oYDpzY29wZSA+IC4ke0FQUF9DT05UQUlORVJfQ1NTX0NMQVNTfWApO1xuICAgIGlmICghYXBwQ29udGFpbmVyRWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1c0JhckVsID0gYXBwQ29udGFpbmVyRWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oYDpzY29wZSA+IC4ke1NUQVRVU19CQVJfQ1NTX0NMQVNTfWApO1xuICAgIGlmIChzdGF0dXNCYXJFbCkge1xuICAgICAgcmV0dXJuIHN0YXR1c0JhckVsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zaG91bGRDcmVhdGVNaXNzaW5nU3RhdHVzQmFyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwQ29udGFpbmVyRWwuY3JlYXRlRGl2KHsgY2xzOiBbU1RBVFVTX0JBUl9DU1NfQ0xBU1MsIFdJTkRPV19TVEFUVVNfQkFSX0NTU19DTEFTU10gfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBjbGFzcyBgUGx1Z2luLmFkZFN0YXR1c0Jhckl0ZW1gIGFkZHMgdG8gYSBwbHVnaW4ncyBzdGF0dXMtYmFyIGl0ZW1zLlxuICogSXQgY29waWVzIE9ic2lkaWFuIGAxLjE1LjFgIGV4YWN0bHksIGluY2x1ZGluZyB0aGF0IG9ubHkgdGhlIGZpcnN0IGRpc2FsbG93ZWQgY2hhcmFjdGVyIGlzIHJlcGxhY2VkLlxuICpcbiAqIEBwYXJhbSBwbHVnaW5JZCAtIFRoZSBwbHVnaW4gaWQuXG4gKiBAcmV0dXJucyBUaGUgQ1NTIGNsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luU3RhdHVzQmFySXRlbUNzc0NsYXNzKHBsdWdpbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYHBsdWdpbi0ke3BsdWdpbklkLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15fYS16QS1aMC05LV0vLCAnLScpfWA7XG59XG5cbi8qKlxuICogU2hvd3Mgb25lIHN0YXR1cy1iYXIgaXRlbSBpbiB0aGUgbWFpbiB3aW5kb3cgYW5kIGluIGV2ZXJ5IGRlc2t0b3AgcG9wb3V0LCBpbmNsdWRpbmcgcG9wb3V0cyBvcGVuZWQgbGF0ZXIsIHVudGlsXG4gKiB0aGUgb3duaW5nIGNvbXBvbmVudCB1bmxvYWRzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIFJlZ2lzdGVyQWxsV2luZG93c1N0YXR1c0Jhckl0ZW1QYXJhbXN9LiBUaGUgb3duZXIgbXVzdCBiZSBsb2FkZWQuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIEFsbFdpbmRvd3NTdGF0dXNCYXJJdGVtQ29tcG9uZW50fS4gQ2FsbCBpdHMge0BsaW5rIEFsbFdpbmRvd3NTdGF0dXNCYXJJdGVtQ29tcG9uZW50LnJlZnJlc2h9IHRvXG4gKiAgIHJlbmRlciBldmVyeSBpdGVtIGFnYWluLCBvciByZW1vdmUgaXQgZnJvbSB0aGUgb3duZXIgdG8gc3RvcCBlYXJseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQWxsV2luZG93c1N0YXR1c0Jhckl0ZW0ocGFyYW1zOiBSZWdpc3RlckFsbFdpbmRvd3NTdGF0dXNCYXJJdGVtUGFyYW1zKTogQWxsV2luZG93c1N0YXR1c0Jhckl0ZW1Db21wb25lbnQge1xuICBjb25zdCB7IGNvbXBvbmVudCwgLi4uY29uc3RydWN0b3JQYXJhbXMgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGNvbXBvbmVudC5hZGRDaGlsZChuZXcgQWxsV2luZG93c1N0YXR1c0Jhckl0ZW1Db21wb25lbnQoY29uc3RydWN0b3JQYXJhbXMpKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVCQSxzQkFBeUI7QUFFekIseUNBQXlDO0FBQ3pDLDBCQUE0QjtBQU1yQixNQUFNLDhCQUE4QjtBQUUzQyxNQUFNLDBCQUEwQjtBQUNoQyxNQUFNLHVCQUF1QjtBQUM3QixNQUFNLDRCQUE0QjtBQWlFM0IsTUFBTSx5Q0FBeUMsZ0NBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUk3QztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBLEVBRUYsa0JBQWtCLG9CQUFJLElBQXlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT3pELFlBQVksUUFBMkQ7QUFDNUUsVUFBTTtBQUNOLFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssYUFBYSxPQUFPO0FBQ3pCLFNBQUssK0JBQStCLE9BQU8sZ0NBQWdDO0FBQzNFLFNBQUssY0FBYztBQUFBLE1BQ2pCO0FBQUEsTUFDQSxHQUFHLE9BQU8sYUFBYSxTQUFZLENBQUMsSUFBSSxDQUFDLCtCQUErQixPQUFPLFFBQVEsQ0FBQztBQUFBLE1BQ3hGLEdBQUcsT0FBTyxPQUFPLENBQUM7QUFBQSxJQUNwQjtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLFVBQVUsS0FBaUM7QUFDaEQsV0FBTyxLQUFLLGdCQUFnQixJQUFJLEdBQUcsS0FBSztBQUFBLEVBQzFDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sYUFBNEI7QUFDakMsV0FBTyxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsT0FBTyxDQUFDO0FBQUEsRUFDMUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtnQixTQUFlO0FBQzdCLFVBQU0sT0FBTztBQUViLFFBQUkseUJBQVMsVUFBVTtBQUNyQjtBQUFBLElBQ0Y7QUFFQSxVQUFNLDJCQUEyQixLQUFLLFNBQVMsSUFBSSw0REFBeUIsS0FBSyxHQUFHLENBQUM7QUFDckYsNkJBQXlCLDBCQUEwQixDQUFDLFFBQVEsS0FBSyxPQUFPLEdBQUcsQ0FBQztBQUFBLEVBQzlFO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxVQUFnQjtBQUNyQixlQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssS0FBSyxpQkFBaUI7QUFDNUMsV0FBSyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFBQSxJQUM3QjtBQUFBLEVBQ0Y7QUFBQSxFQUVRLE9BQU8sS0FBa0M7QUFDL0MsVUFBTSxjQUFjLEtBQUssc0JBQXNCLElBQUksUUFBUTtBQUMzRCxRQUFJLENBQUMsYUFBYTtBQUNoQixhQUFPO0FBQUEsSUFDVDtBQUVBLFVBQU0sS0FBSyxZQUFZLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBRSxDQUFDO0FBQy9ELFNBQUssZ0JBQWdCLElBQUksS0FBSyxFQUFFO0FBQ2hDLFNBQUssV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDO0FBRTNCLFdBQU8sTUFBTTtBQUNYLFdBQUssZ0JBQWdCLE9BQU8sR0FBRztBQUMvQixTQUFHLE9BQU87QUFDVixVQUFJLFlBQVksVUFBVSxTQUFTLDJCQUEyQixLQUFLLENBQUMsWUFBWSxjQUFjLGFBQWEseUJBQXlCLEVBQUUsR0FBRztBQUN2SSxvQkFBWSxPQUFPO0FBQUEsTUFDckI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBRVEsc0JBQXNCLEtBQW1DO0FBQy9ELFVBQU0saUJBQWlCLElBQUksS0FBSyxjQUEyQixhQUFhLHVCQUF1QixFQUFFO0FBQ2pHLFFBQUksQ0FBQyxnQkFBZ0I7QUFDbkIsYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLGNBQWMsZUFBZSxjQUEyQixhQUFhLG9CQUFvQixFQUFFO0FBQ2pHLFFBQUksYUFBYTtBQUNmLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSSxDQUFDLEtBQUssOEJBQThCO0FBQ3RDLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxlQUFlLFVBQVUsRUFBRSxLQUFLLENBQUMsc0JBQXNCLDJCQUEyQixFQUFFLENBQUM7QUFBQSxFQUM5RjtBQUNGO0FBU08sU0FBUywrQkFBK0IsVUFBMEI7QUFDdkUsU0FBTyxVQUFVLFNBQVMsWUFBWSxFQUFFLFFBQVEsa0JBQWtCLEdBQUcsQ0FBQztBQUN4RTtBQVVPLFNBQVMsZ0NBQWdDLFFBQWlGO0FBQy9ILFFBQU0sRUFBRSxXQUFXLEdBQUcsa0JBQWtCLElBQUk7QUFDNUMsU0FBTyxVQUFVLFNBQVMsSUFBSSxpQ0FBaUMsaUJBQWlCLENBQUM7QUFDbkY7IiwibmFtZXMiOltdfQ==