@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
@@ -117,8 +117,8 @@ __export(data_store_locations_exports, {
117
117
  DataStoreLocations: () => DataStoreLocations
118
118
  });
119
119
  module.exports = __toCommonJS(data_store_locations_exports);
120
- var import_type_guards = require('@mnaoumov/typescript-lib/type-guards');
121
- var import_data_store_transport = require('./data-store-transport.cjs');
120
+ var import_type_guards = require("@mnaoumov/typescript-lib/type-guards");
121
+ var import_data_store_transport = require("./data-store-transport.cjs");
122
122
  const MAX_LOCATIONS = 32;
123
123
  class DataStoreLocations {
124
124
  /**
@@ -164,25 +164,7 @@ class DataStoreLocations {
164
164
  this.validateLocation(value.to);
165
165
  transitions.push(value);
166
166
  }
167
- const locations = [this.initial];
168
- let currentIdentity = identity(this.initial);
169
- while (transitions.length > 0) {
170
- const sourceIdentity = currentIdentity;
171
- const next = transitions.filter((transition) => identity(transition.from) === sourceIdentity);
172
- const targets = new Set(next.map((transition) => identity(transition.to)));
173
- if (targets.size !== 1) {
174
- throw new Error("Conflicting or incomplete data-store relocation chain");
175
- }
176
- const target = (0, import_type_guards.ensureNonNullable)(next[0]);
177
- if (locations.some((location) => identity(location) === identity(target.to)) || locations.length >= MAX_LOCATIONS) {
178
- throw new Error("Data-store relocation loop or location limit");
179
- }
180
- locations.push(target.to);
181
- currentIdentity = identity(target.to);
182
- for (const transition of next) {
183
- transitions.splice(transitions.indexOf(transition), 1);
184
- }
185
- }
167
+ const locations = this.buildChain(await this.resolveMovedAnchor(transitions));
186
168
  for (const location of locations) {
187
169
  this.validateLocation(location, locations);
188
170
  }
@@ -215,13 +197,73 @@ class DataStoreLocations {
215
197
  if (this.locations.some((previous) => identity(previous) === identity(location)) || this.locations.length >= MAX_LOCATIONS) {
216
198
  throw new Error("Data-store relocation loop or location limit");
217
199
  }
218
- const value = { format: 1, from, to: location };
200
+ const value = { anchor: this.initial, format: 1, from, to: location };
219
201
  await this.anchor.write(`${this.anchor.root}/locations-v1/${window.crypto.randomUUID()}.json`, value);
220
202
  await this.refresh();
221
203
  }
204
+ buildChain(transitions) {
205
+ const remaining = [...transitions];
206
+ const locations = [this.initial];
207
+ let currentIdentity = identity(this.initial);
208
+ while (remaining.length > 0) {
209
+ const sourceIdentity = currentIdentity;
210
+ const next = remaining.filter((transition) => identity(transition.from) === sourceIdentity);
211
+ const targets = new Set(next.map((transition) => identity(transition.to)));
212
+ if (targets.size !== 1) {
213
+ throw new Error("Conflicting or incomplete data-store relocation chain");
214
+ }
215
+ const target = (0, import_type_guards.ensureNonNullable)(next[0]);
216
+ if (locations.some((location) => identity(location) === identity(target.to)) || locations.length >= MAX_LOCATIONS) {
217
+ throw new Error("Data-store relocation loop or location limit");
218
+ }
219
+ locations.push(target.to);
220
+ currentIdentity = identity(target.to);
221
+ for (const transition of next) {
222
+ remaining.splice(remaining.indexOf(transition), 1);
223
+ }
224
+ }
225
+ return locations;
226
+ }
222
227
  createTransport(location) {
223
228
  return new import_data_store_transport.DataStoreTransport({ ...this.params, folder: location.folder, format: location.format ?? "markdown" });
224
229
  }
230
+ /**
231
+ * Maps the records of an anchor folder that was moved (or sits under a moved folder) onto the folder the store is open
232
+ * at, because records name absolute folders.
233
+ *
234
+ * A transition that names its `anchor` is remapped from that folder exactly, so several successive moves resolve too.
235
+ * A transition written before that field existed names no anchor, and a moved anchor then looks the same as a chain whose
236
+ * first record has not arrived yet. So the former folder is inferred only when nothing starts at the initial identity,
237
+ * exactly one candidate folder (one the legacy records start from, in the initial format) yields a complete chain, and
238
+ * that folder no longer holds this store. Anything else is left for `buildChain` to reject.
239
+ *
240
+ * @param transitions - The transitions recorded at the anchor.
241
+ * @returns The transitions to build the chain from.
242
+ */
243
+ async resolveMovedAnchor(transitions) {
244
+ const anchored = transitions.map((transition) => transition.anchor ? remapTransition(transition, transition.anchor.folder, this.initial.folder) : transition);
245
+ const initialIdentity = identity(this.initial);
246
+ if (anchored.some((transition) => identity(transition.from) === initialIdentity)) {
247
+ return anchored;
248
+ }
249
+ const candidates = new Set(anchored.filter((transition) => !transition.anchor).map((transition) => transition.from.folder));
250
+ const resolved = [];
251
+ for (const formerFolder of candidates) {
252
+ const remapped = anchored.map((transition) => transition.anchor ? transition : remapTransition(transition, formerFolder, this.initial.folder));
253
+ try {
254
+ this.buildChain(remapped);
255
+ } catch {
256
+ continue;
257
+ }
258
+ resolved.push({ formerFolder, transitions: remapped });
259
+ }
260
+ const match = resolved.length === 1 ? (0, import_type_guards.ensureNonNullable)(resolved[0]) : null;
261
+ if (!match) {
262
+ return anchored;
263
+ }
264
+ const formerFiles = await this.createTransport({ ...this.initial, folder: match.formerFolder }).list();
265
+ return formerFiles.length > 0 ? anchored : match.transitions;
266
+ }
225
267
  validateLocation(location, locations = this.locations) {
226
268
  const transport = this.createTransport(location);
227
269
  for (const previous of locations) {
@@ -239,10 +281,26 @@ function isLocation(value) {
239
281
  return typeof value === "object" && value !== null && "folder" in value && typeof value.folder === "string" && (!("format" in value) || value.format === "json" || value.format === "markdown");
240
282
  }
241
283
  function isTransition(value) {
242
- return typeof value === "object" && value !== null && "format" in value && value.format === 1 && "from" in value && isLocation(value.from) && "to" in value && isLocation(value.to);
284
+ return typeof value === "object" && value !== null && "format" in value && value.format === 1 && "from" in value && isLocation(value.from) && "to" in value && isLocation(value.to) && (!("anchor" in value) || isLocation(value.anchor));
285
+ }
286
+ function remapLocation(location, formerFolder, folder) {
287
+ if (location.folder === formerFolder) {
288
+ return { ...location, folder };
289
+ }
290
+ if (location.folder.startsWith(`${formerFolder}/`)) {
291
+ return { ...location, folder: `${folder}${location.folder.slice(formerFolder.length)}` };
292
+ }
293
+ return location;
294
+ }
295
+ function remapTransition(transition, formerFolder, folder) {
296
+ return {
297
+ ...transition,
298
+ from: remapLocation(transition.from, formerFolder, folder),
299
+ to: remapLocation(transition.to, formerFolder, folder)
300
+ };
243
301
  }
244
302
  // Annotate the CommonJS export names for ESM import in node:
245
303
  0 && (module.exports = {
246
304
  DataStoreLocations
247
305
  });
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhLXN0b3Jlcy9kYXRhLXN0b3JlLWxvY2F0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL25vZGUtYnVpbHRpbnMgLS0gVGhlc2UgYXJlIE9ic2lkaWFuIHJlbmRlcmVyIFdlYiBBUElzLCBub3QgTm9kZSBidWlsdGlucy4gKi9cbi8qKlxuICogQGZpbGVcbiAqIEFwcGVuZC1vbmx5LCBhbmNob3JlZCBkaXNjb3Zlcnkgb2YgaGlzdG9yeS1wcmVzZXJ2aW5nIHRyYW5zcG9ydCB0cmFuc2l0aW9ucy5cbiAqL1xuXG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB0eXBlIHsgRGF0YVN0b3JlVHJhbnNwb3J0Q29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2RhdGEtc3RvcmUtdHJhbnNwb3J0LnRzJztcblxuaW1wb3J0IHsgRGF0YVN0b3JlVHJhbnNwb3J0IH0gZnJvbSAnLi9kYXRhLXN0b3JlLXRyYW5zcG9ydC50cyc7XG5cbmNvbnN0IE1BWF9MT0NBVElPTlMgPSAzMjtcblxuLyoqXG5BIHRyYW5zcG9ydCBkZXN0aW5hdGlvbi4gS2VlcCB0aGUgb3JpZ2luYWwgb3BlbiBwYXJhbWV0ZXJzIGFzIHRoZSBkaXNjb3ZlcnkgYW5jaG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTdG9yZUxvY2F0aW9uIHtcbiAgLyoqXG4gIFZhdWx0LXJlbGF0aXZlIHBhcmVudCBvZiB0aGUgcGx1Z2luL3N0b3JlIHN1YnRyZWUuXG4gICAqL1xuICByZWFkb25seSBmb2xkZXI6IHN0cmluZztcbiAgLyoqXG4gICAqIE5ldyBkb2N1bWVudCBlbmNvZGluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgYCdtYXJrZG93bidgXG4gICAqL1xuICByZWFkb25seSBmb3JtYXQ/OiAnanNvbicgfCAnbWFya2Rvd24nO1xufVxuXG5pbnRlcmZhY2UgVHJhbnNpdGlvbiB7XG4gIHJlYWRvbmx5IGZvcm1hdDogMTtcbiAgcmVhZG9ubHkgZnJvbTogRGF0YVN0b3JlTG9jYXRpb247XG4gIHJlYWRvbmx5IHRvOiBEYXRhU3RvcmVMb2NhdGlvbjtcbn1cblxuLyoqXG5BbmNob3JlZCByZWxvY2F0aW9uIGNvb3JkaW5hdG9yOyBzb3VyY2UgaGlzdG9yaWVzIGFyZSBuZXZlciByZW1vdmVkLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YVN0b3JlTG9jYXRpb25zIHtcbiAgLyoqXG4gIEFsbCByZWFkZXJzLCBvbGRlc3QgZmlyc3Q7IHRoZSBsYXN0IHRyYW5zcG9ydCBpcyB0aGUgYWN0aXZlIHdyaXRlci5cbiAgICpcbiAgICogQHJldHVybnMgQWxsIHJldGFpbmVkIHJlYWRlciB0cmFuc3BvcnRzIGluIHRyYW5zaXRpb24gb3JkZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRyYW5zcG9ydHMoKTogRGF0YVN0b3JlVHJhbnNwb3J0W10ge1xuICAgIHJldHVybiB0aGlzLmxvY2F0aW9ucy5tYXAoKGxvY2F0aW9uKSA9PiB0aGlzLmNyZWF0ZVRyYW5zcG9ydChsb2NhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhbmNob3I6IERhdGFTdG9yZVRyYW5zcG9ydDtcbiAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsOiBEYXRhU3RvcmVMb2NhdGlvbjtcblxuICBwcml2YXRlIGxvY2F0aW9uczogRGF0YVN0b3JlTG9jYXRpb25bXTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNvb3JkaW5hdG9yIHdpdGhvdXQgYWRhcHRlciBjYWxscy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFBlcm1hbmVudCBkaXNjb3ZlcnkgYW5jaG9yIGFuZCBzdG9yZSBpZGVudGl0eS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhcmFtczogRGF0YVN0b3JlVHJhbnNwb3J0Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICB0aGlzLmFuY2hvciA9IG5ldyBEYXRhU3RvcmVUcmFuc3BvcnQocGFyYW1zKTtcbiAgICB0aGlzLmluaXRpYWwgPSB7IGZvbGRlcjogcGFyYW1zLmZvbGRlciA/PyAnUGx1Z2luIGRhdGEnLCBmb3JtYXQ6IHBhcmFtcy5mb3JtYXQgPz8gJ21hcmtkb3duJyB9O1xuICAgIHRoaXMubG9jYXRpb25zID0gW3RoaXMuaW5pdGlhbF07XG4gIH1cblxuICAvKipcbiAgICogRGlzY292ZXJzIGFuZCBmaW5pc2hlcyBwZW5kaW5nIGNvcGllcyBiZWZvcmUgYWxsb3dpbmcgYSB3cml0ZXIgdG8gc3dpdGNoIGRlc3RpbmF0aW9ucy5cbiAgICogQ29uZmxpY3RpbmcgYnJhbmNoZXMgYW5kIHJlb3JkZXJlZCBpbmNvbXBsZXRlIGNoYWlucyBmYWlsIGNsb3NlZCB1bnRpbCBkZWxpdmVyeSBpcyBjb21wbGV0ZS5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgZGlzY292ZXJ5IGFuZCB2ZXJpZmljYXRpb24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVmcmVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0cmFuc2l0aW9uczogVHJhbnNpdGlvbltdID0gW107XG4gICAgZm9yIChjb25zdCBwYXRoIG9mIGF3YWl0IHRoaXMuYW5jaG9yLmxpc3QoKSkge1xuICAgICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoYCR7dGhpcy5hbmNob3Iucm9vdH0vbG9jYXRpb25zLXYxL2ApIHx8ICFwYXRoLmVuZHNXaXRoKCcuanNvbicpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLmFuY2hvci5yZWFkKHBhdGgpO1xuICAgICAgaWYgKCFpc1RyYW5zaXRpb24odmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb21wbGV0ZSBvciBpbnZhbGlkIGRhdGEtc3RvcmUgdHJhbnNpdGlvbicpO1xuICAgICAgfVxuICAgICAgdGhpcy52YWxpZGF0ZUxvY2F0aW9uKHZhbHVlLmZyb20pO1xuICAgICAgdGhpcy52YWxpZGF0ZUxvY2F0aW9uKHZhbHVlLnRvKTtcbiAgICAgIHRyYW5zaXRpb25zLnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBsb2NhdGlvbnMgPSBbdGhpcy5pbml0aWFsXTtcbiAgICBsZXQgY3VycmVudElkZW50aXR5ID0gaWRlbnRpdHkodGhpcy5pbml0aWFsKTtcbiAgICB3aGlsZSAodHJhbnNpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc291cmNlSWRlbnRpdHkgPSBjdXJyZW50SWRlbnRpdHk7XG4gICAgICBjb25zdCBuZXh0ID0gdHJhbnNpdGlvbnMuZmlsdGVyKCh0cmFuc2l0aW9uKSA9PiBpZGVudGl0eSh0cmFuc2l0aW9uLmZyb20pID09PSBzb3VyY2VJZGVudGl0eSk7XG4gICAgICBjb25zdCB0YXJnZXRzID0gbmV3IFNldChuZXh0Lm1hcCgodHJhbnNpdGlvbikgPT4gaWRlbnRpdHkodHJhbnNpdGlvbi50bykpKTtcbiAgICAgIGlmICh0YXJnZXRzLnNpemUgIT09IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25mbGljdGluZyBvciBpbmNvbXBsZXRlIGRhdGEtc3RvcmUgcmVsb2NhdGlvbiBjaGFpbicpO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFyZ2V0ID0gZW5zdXJlTm9uTnVsbGFibGUobmV4dFswXSk7XG4gICAgICBpZiAobG9jYXRpb25zLnNvbWUoKGxvY2F0aW9uKSA9PiBpZGVudGl0eShsb2NhdGlvbikgPT09IGlkZW50aXR5KHRhcmdldC50bykpIHx8IGxvY2F0aW9ucy5sZW5ndGggPj0gTUFYX0xPQ0FUSU9OUykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEtc3RvcmUgcmVsb2NhdGlvbiBsb29wIG9yIGxvY2F0aW9uIGxpbWl0Jyk7XG4gICAgICB9XG4gICAgICBsb2NhdGlvbnMucHVzaCh0YXJnZXQudG8pO1xuICAgICAgY3VycmVudElkZW50aXR5ID0gaWRlbnRpdHkodGFyZ2V0LnRvKTtcbiAgICAgIGZvciAoY29uc3QgdHJhbnNpdGlvbiBvZiBuZXh0KSB7XG4gICAgICAgIHRyYW5zaXRpb25zLnNwbGljZSh0cmFuc2l0aW9ucy5pbmRleE9mKHRyYW5zaXRpb24pLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVmFsaWRhdGUgdGhlIGVudGlyZSBjaGFpbiBiZWZvcmUgbWFraW5nIGFueSBjb3BpZXMgb3IgYWN0aXZhdGluZyBhIHdyaXRlci5cbiAgICBmb3IgKGNvbnN0IGxvY2F0aW9uIG9mIGxvY2F0aW9ucykge1xuICAgICAgdGhpcy52YWxpZGF0ZUxvY2F0aW9uKGxvY2F0aW9uLCBsb2NhdGlvbnMpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGxvY2F0aW9uIG9mIGxvY2F0aW9ucy5zbGljZSgxKSkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5jcmVhdGVUcmFuc3BvcnQobG9jYXRpb24pO1xuICAgICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgbG9jYXRpb25zLnNsaWNlKDAsIGxvY2F0aW9ucy5pbmRleE9mKGxvY2F0aW9uKSkpIHtcbiAgICAgICAgY29uc3QgdHJhbnNwb3J0ID0gdGhpcy5jcmVhdGVUcmFuc3BvcnQoc291cmNlKTtcbiAgICAgICAgaWYgKHRyYW5zcG9ydC5yb290ICE9PSB0YXJnZXQucm9vdCkge1xuICAgICAgICAgIGF3YWl0IHRyYW5zcG9ydC5jb3B5SGlzdG9yeVRvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sb2NhdGlvbnMgPSBsb2NhdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQW5ub3VuY2VzIGEgdHJhbnNpdGlvbiBkdXJhYmx5IGF0IHRoZSBhbmNob3IsIHRoZW4gY29waWVzIGFuZCB2ZXJpZmllcyBiZWZvcmUgYWN0aXZhdGlvbi5cbiAgICogUmV0cnlpbmcgdGhlIHNhbWUgZGVzdGluYXRpb24gZmluaXNoZXMgYW4gaW50ZXJydXB0ZWQgY29weS5cbiAgICpcbiAgICogQHBhcmFtIGxvY2F0aW9uIC0gUmVxdWVzdGVkIGRlc3RpbmF0aW9uLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBuZXcgd3JpdGVyIGlzIHJlYWR5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlbG9jYXRlKGxvY2F0aW9uOiBEYXRhU3RvcmVMb2NhdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmFsaWRhdGVMb2NhdGlvbihsb2NhdGlvbik7XG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoKCk7XG4gICAgdGhpcy52YWxpZGF0ZUxvY2F0aW9uKGxvY2F0aW9uKTtcbiAgICBjb25zdCBmcm9tID0gZW5zdXJlTm9uTnVsbGFibGUodGhpcy5sb2NhdGlvbnMuYXQoLTEpKTtcbiAgICBpZiAoaWRlbnRpdHkoZnJvbSkgPT09IGlkZW50aXR5KGxvY2F0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2NhdGlvbnMuc29tZSgocHJldmlvdXMpID0+IGlkZW50aXR5KHByZXZpb3VzKSA9PT0gaWRlbnRpdHkobG9jYXRpb24pKSB8fCB0aGlzLmxvY2F0aW9ucy5sZW5ndGggPj0gTUFYX0xPQ0FUSU9OUykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhLXN0b3JlIHJlbG9jYXRpb24gbG9vcCBvciBsb2NhdGlvbiBsaW1pdCcpO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZTogVHJhbnNpdGlvbiA9IHsgZm9ybWF0OiAxLCBmcm9tLCB0bzogbG9jYXRpb24gfTtcbiAgICBhd2FpdCB0aGlzLmFuY2hvci53cml0ZShgJHt0aGlzLmFuY2hvci5yb290fS9sb2NhdGlvbnMtdjEvJHt3aW5kb3cuY3J5cHRvLnJhbmRvbVVVSUQoKX0uanNvbmAsIHZhbHVlKTtcbiAgICBhd2FpdCB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVHJhbnNwb3J0KGxvY2F0aW9uOiBEYXRhU3RvcmVMb2NhdGlvbik6IERhdGFTdG9yZVRyYW5zcG9ydCB7XG4gICAgcmV0dXJuIG5ldyBEYXRhU3RvcmVUcmFuc3BvcnQoeyAuLi50aGlzLnBhcmFtcywgZm9sZGVyOiBsb2NhdGlvbi5mb2xkZXIsIGZvcm1hdDogbG9jYXRpb24uZm9ybWF0ID8/ICdtYXJrZG93bicgfSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlTG9jYXRpb24obG9jYXRpb246IERhdGFTdG9yZUxvY2F0aW9uLCBsb2NhdGlvbnM6IHJlYWRvbmx5IERhdGFTdG9yZUxvY2F0aW9uW10gPSB0aGlzLmxvY2F0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zcG9ydCA9IHRoaXMuY3JlYXRlVHJhbnNwb3J0KGxvY2F0aW9uKTtcbiAgICBmb3IgKGNvbnN0IHByZXZpb3VzIG9mIGxvY2F0aW9ucykge1xuICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuY3JlYXRlVHJhbnNwb3J0KHByZXZpb3VzKS5yb290O1xuICAgICAgaWYgKHRyYW5zcG9ydC5yb290ICE9PSByb290ICYmICh0cmFuc3BvcnQucm9vdC5zdGFydHNXaXRoKGAke3Jvb3R9L2ApIHx8IHJvb3Quc3RhcnRzV2l0aChgJHt0cmFuc3BvcnQucm9vdH0vYCkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignT3ZlcmxhcHBpbmcgZGF0YS1zdG9yZSByZWxvY2F0aW9uIHJvb3RzJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qIGVzbGludC1lbmFibGUgbi9uby11bnN1cHBvcnRlZC1mZWF0dXJlcy9ub2RlLWJ1aWx0aW5zIC0tIFRoZXNlIGFyZSBPYnNpZGlhbiByZW5kZXJlciBXZWIgQVBJcywgbm90IE5vZGUgYnVpbHRpbnMuICovXG5cbmZ1bmN0aW9uIGlkZW50aXR5KGxvY2F0aW9uOiBEYXRhU3RvcmVMb2NhdGlvbik6IHN0cmluZyB7XG4gIHJldHVybiBgJHtsb2NhdGlvbi5mb2xkZXJ9OiR7bG9jYXRpb24uZm9ybWF0ID8/ICdtYXJrZG93bid9YDtcbn1cblxuZnVuY3Rpb24gaXNMb2NhdGlvbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIERhdGFTdG9yZUxvY2F0aW9uIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgJ2ZvbGRlcicgaW4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlLmZvbGRlciA9PT0gJ3N0cmluZydcbiAgICAmJiAoISgnZm9ybWF0JyBpbiB2YWx1ZSkgfHwgdmFsdWUuZm9ybWF0ID09PSAnanNvbicgfHwgdmFsdWUuZm9ybWF0ID09PSAnbWFya2Rvd24nKTtcbn1cblxuZnVuY3Rpb24gaXNUcmFuc2l0aW9uKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVHJhbnNpdGlvbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICdmb3JtYXQnIGluIHZhbHVlICYmIHZhbHVlLmZvcm1hdCA9PT0gMVxuICAgICYmICdmcm9tJyBpbiB2YWx1ZSAmJiBpc0xvY2F0aW9uKHZhbHVlLmZyb20pICYmICd0bycgaW4gdmFsdWUgJiYgaXNMb2NhdGlvbih2YWx1ZS50byk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSx5QkFBa0M7QUFJbEMsa0NBQW1DO0FBRW5DLE1BQU0sZ0JBQWdCO0FBMkJmLE1BQU0sbUJBQW1CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBb0J2QixZQUE2QixRQUE2QztBQUE3QztBQUNsQyxTQUFLLFNBQVMsSUFBSSwrQ0FBbUIsTUFB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
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhLXN0b3Jlcy9kYXRhLXN0b3JlLWxvY2F0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKiBBcHBlbmQtb25seSwgYW5jaG9yZWQgZGlzY292ZXJ5IG9mIGhpc3RvcnktcHJlc2VydmluZyB0cmFuc3BvcnQgdHJhbnNpdGlvbnMuXG4gKi9cblxuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuXG5pbXBvcnQgdHlwZSB7IERhdGFTdG9yZVRyYW5zcG9ydENvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9kYXRhLXN0b3JlLXRyYW5zcG9ydC50cyc7XG5cbmltcG9ydCB7IERhdGFTdG9yZVRyYW5zcG9ydCB9IGZyb20gJy4vZGF0YS1zdG9yZS10cmFuc3BvcnQudHMnO1xuXG5jb25zdCBNQVhfTE9DQVRJT05TID0gMzI7XG5cbi8qKlxuQSB0cmFuc3BvcnQgZGVzdGluYXRpb24uIEtlZXAgdGhlIG9yaWdpbmFsIG9wZW4gcGFyYW1ldGVycyBhcyB0aGUgZGlzY292ZXJ5IGFuY2hvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU3RvcmVMb2NhdGlvbiB7XG4gIC8qKlxuICBWYXVsdC1yZWxhdGl2ZSBwYXJlbnQgb2YgdGhlIHBsdWdpbi9zdG9yZSBzdWJ0cmVlLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOZXcgZG9jdW1lbnQgZW5jb2RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnbWFya2Rvd24nYFxuICAgKi9cbiAgcmVhZG9ubHkgZm9ybWF0PzogJ2pzb24nIHwgJ21hcmtkb3duJztcbn1cblxuaW50ZXJmYWNlIEluZmVycmVkQ2hhaW4ge1xuICByZWFkb25seSBmb3JtZXJGb2xkZXI6IHN0cmluZztcbiAgcmVhZG9ubHkgdHJhbnNpdGlvbnM6IHJlYWRvbmx5IFRyYW5zaXRpb25bXTtcbn1cblxuaW50ZXJmYWNlIFRyYW5zaXRpb24ge1xuICAvKipcbiAgICogVGhlIGFuY2hvciB0aGUgdHJhbnNpdGlvbiB3YXMgd3JpdHRlbiBhdC4gQWJzZW50IGZyb20gdHJhbnNpdGlvbnMgd3JpdHRlbiBiZWZvcmUgaXQgd2FzIGFkZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYW5jaG9yPzogRGF0YVN0b3JlTG9jYXRpb247XG4gIHJlYWRvbmx5IGZvcm1hdDogMTtcbiAgcmVhZG9ubHkgZnJvbTogRGF0YVN0b3JlTG9jYXRpb247XG4gIHJlYWRvbmx5IHRvOiBEYXRhU3RvcmVMb2NhdGlvbjtcbn1cblxuLyoqXG5BbmNob3JlZCByZWxvY2F0aW9uIGNvb3JkaW5hdG9yOyBzb3VyY2UgaGlzdG9yaWVzIGFyZSBuZXZlciByZW1vdmVkLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YVN0b3JlTG9jYXRpb25zIHtcbiAgLyoqXG4gIEFsbCByZWFkZXJzLCBvbGRlc3QgZmlyc3Q7IHRoZSBsYXN0IHRyYW5zcG9ydCBpcyB0aGUgYWN0aXZlIHdyaXRlci5cbiAgICpcbiAgICogQHJldHVybnMgQWxsIHJldGFpbmVkIHJlYWRlciB0cmFuc3BvcnRzIGluIHRyYW5zaXRpb24gb3JkZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRyYW5zcG9ydHMoKTogRGF0YVN0b3JlVHJhbnNwb3J0W10ge1xuICAgIHJldHVybiB0aGlzLmxvY2F0aW9ucy5tYXAoKGxvY2F0aW9uKSA9PiB0aGlzLmNyZWF0ZVRyYW5zcG9ydChsb2NhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhbmNob3I6IERhdGFTdG9yZVRyYW5zcG9ydDtcbiAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsOiBEYXRhU3RvcmVMb2NhdGlvbjtcblxuICBwcml2YXRlIGxvY2F0aW9uczogRGF0YVN0b3JlTG9jYXRpb25bXTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNvb3JkaW5hdG9yIHdpdGhvdXQgYWRhcHRlciBjYWxscy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFBlcm1hbmVudCBkaXNjb3ZlcnkgYW5jaG9yIGFuZCBzdG9yZSBpZGVudGl0eS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhcmFtczogRGF0YVN0b3JlVHJhbnNwb3J0Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICB0aGlzLmFuY2hvciA9IG5ldyBEYXRhU3RvcmVUcmFuc3BvcnQocGFyYW1zKTtcbiAgICB0aGlzLmluaXRpYWwgPSB7IGZvbGRlcjogcGFyYW1zLmZvbGRlciA/PyAnUGx1Z2luIGRhdGEnLCBmb3JtYXQ6IHBhcmFtcy5mb3JtYXQgPz8gJ21hcmtkb3duJyB9O1xuICAgIHRoaXMubG9jYXRpb25zID0gW3RoaXMuaW5pdGlhbF07XG4gIH1cblxuICAvKipcbiAgICogRGlzY292ZXJzIGFuZCBmaW5pc2hlcyBwZW5kaW5nIGNvcGllcyBiZWZvcmUgYWxsb3dpbmcgYSB3cml0ZXIgdG8gc3dpdGNoIGRlc3RpbmF0aW9ucy5cbiAgICogQ29uZmxpY3RpbmcgYnJhbmNoZXMgYW5kIHJlb3JkZXJlZCBpbmNvbXBsZXRlIGNoYWlucyBmYWlsIGNsb3NlZCB1bnRpbCBkZWxpdmVyeSBpcyBjb21wbGV0ZS5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgZGlzY292ZXJ5IGFuZCB2ZXJpZmljYXRpb24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVmcmVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0cmFuc2l0aW9uczogVHJhbnNpdGlvbltdID0gW107XG4gICAgZm9yIChjb25zdCBwYXRoIG9mIGF3YWl0IHRoaXMuYW5jaG9yLmxpc3QoKSkge1xuICAgICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoYCR7dGhpcy5hbmNob3Iucm9vdH0vbG9jYXRpb25zLXYxL2ApIHx8ICFwYXRoLmVuZHNXaXRoKCcuanNvbicpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLmFuY2hvci5yZWFkKHBhdGgpO1xuICAgICAgaWYgKCFpc1RyYW5zaXRpb24odmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb21wbGV0ZSBvciBpbnZhbGlkIGRhdGEtc3RvcmUgdHJhbnNpdGlvbicpO1xuICAgICAgfVxuICAgICAgdGhpcy52YWxpZGF0ZUxvY2F0aW9uKHZhbHVlLmZyb20pO1xuICAgICAgdGhpcy52YWxpZGF0ZUxvY2F0aW9uKHZhbHVlLnRvKTtcbiAgICAgIHRyYW5zaXRpb25zLnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBsb2NhdGlvbnMgPSB0aGlzLmJ1aWxkQ2hhaW4oYXdhaXQgdGhpcy5yZXNvbHZlTW92ZWRBbmNob3IodHJhbnNpdGlvbnMpKTtcbiAgICAvLyBWYWxpZGF0ZSB0aGUgZW50aXJlIGNoYWluIGJlZm9yZSBtYWtpbmcgYW55IGNvcGllcyBvciBhY3RpdmF0aW5nIGEgd3JpdGVyLlxuICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlTG9jYXRpb24obG9jYXRpb24sIGxvY2F0aW9ucyk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zLnNsaWNlKDEpKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmNyZWF0ZVRyYW5zcG9ydChsb2NhdGlvbik7XG4gICAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBsb2NhdGlvbnMuc2xpY2UoMCwgbG9jYXRpb25zLmluZGV4T2YobG9jYXRpb24pKSkge1xuICAgICAgICBjb25zdCB0cmFuc3BvcnQgPSB0aGlzLmNyZWF0ZVRyYW5zcG9ydChzb3VyY2UpO1xuICAgICAgICBpZiAodHJhbnNwb3J0LnJvb3QgIT09IHRhcmdldC5yb290KSB7XG4gICAgICAgICAgYXdhaXQgdHJhbnNwb3J0LmNvcHlIaXN0b3J5VG8odGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxvY2F0aW9ucyA9IGxvY2F0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBBbm5vdW5jZXMgYSB0cmFuc2l0aW9uIGR1cmFibHkgYXQgdGhlIGFuY2hvciwgdGhlbiBjb3BpZXMgYW5kIHZlcmlmaWVzIGJlZm9yZSBhY3RpdmF0aW9uLlxuICAgKiBSZXRyeWluZyB0aGUgc2FtZSBkZXN0aW5hdGlvbiBmaW5pc2hlcyBhbiBpbnRlcnJ1cHRlZCBjb3B5LlxuICAgKlxuICAgKiBAcGFyYW0gbG9jYXRpb24gLSBSZXF1ZXN0ZWQgZGVzdGluYXRpb24uXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5ldyB3cml0ZXIgaXMgcmVhZHkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVsb2NhdGUobG9jYXRpb246IERhdGFTdG9yZUxvY2F0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy52YWxpZGF0ZUxvY2F0aW9uKGxvY2F0aW9uKTtcbiAgICBhd2FpdCB0aGlzLnJlZnJlc2goKTtcbiAgICB0aGlzLnZhbGlkYXRlTG9jYXRpb24obG9jYXRpb24pO1xuICAgIGNvbnN0IGZyb20gPSBlbnN1cmVOb25OdWxsYWJsZSh0aGlzLmxvY2F0aW9ucy5hdCgtMSkpO1xuICAgIGlmIChpZGVudGl0eShmcm9tKSA9PT0gaWRlbnRpdHkobG9jYXRpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxvY2F0aW9ucy5zb21lKChwcmV2aW91cykgPT4gaWRlbnRpdHkocHJldmlvdXMpID09PSBpZGVudGl0eShsb2NhdGlvbikpIHx8IHRoaXMubG9jYXRpb25zLmxlbmd0aCA+PSBNQVhfTE9DQVRJT05TKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEtc3RvcmUgcmVsb2NhdGlvbiBsb29wIG9yIGxvY2F0aW9uIGxpbWl0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlOiBUcmFuc2l0aW9uID0geyBhbmNob3I6IHRoaXMuaW5pdGlhbCwgZm9ybWF0OiAxLCBmcm9tLCB0bzogbG9jYXRpb24gfTtcbiAgICBhd2FpdCB0aGlzLmFuY2hvci53cml0ZShgJHt0aGlzLmFuY2hvci5yb290fS9sb2NhdGlvbnMtdjEvJHt3aW5kb3cuY3J5cHRvLnJhbmRvbVVVSUQoKX0uanNvbmAsIHZhbHVlKTtcbiAgICBhd2FpdCB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDaGFpbih0cmFuc2l0aW9uczogcmVhZG9ubHkgVHJhbnNpdGlvbltdKTogRGF0YVN0b3JlTG9jYXRpb25bXSB7XG4gICAgY29uc3QgcmVtYWluaW5nID0gWy4uLnRyYW5zaXRpb25zXTtcbiAgICBjb25zdCBsb2NhdGlvbnMgPSBbdGhpcy5pbml0aWFsXTtcbiAgICBsZXQgY3VycmVudElkZW50aXR5ID0gaWRlbnRpdHkodGhpcy5pbml0aWFsKTtcbiAgICB3aGlsZSAocmVtYWluaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNvdXJjZUlkZW50aXR5ID0gY3VycmVudElkZW50aXR5O1xuICAgICAgY29uc3QgbmV4dCA9IHJlbWFpbmluZy5maWx0ZXIoKHRyYW5zaXRpb24pID0+IGlkZW50aXR5KHRyYW5zaXRpb24uZnJvbSkgPT09IHNvdXJjZUlkZW50aXR5KTtcbiAgICAgIGNvbnN0IHRhcmdldHMgPSBuZXcgU2V0KG5leHQubWFwKCh0cmFuc2l0aW9uKSA9PiBpZGVudGl0eSh0cmFuc2l0aW9uLnRvKSkpO1xuICAgICAgaWYgKHRhcmdldHMuc2l6ZSAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbmZsaWN0aW5nIG9yIGluY29tcGxldGUgZGF0YS1zdG9yZSByZWxvY2F0aW9uIGNoYWluJyk7XG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXQgPSBlbnN1cmVOb25OdWxsYWJsZShuZXh0WzBdKTtcbiAgICAgIGlmIChsb2NhdGlvbnMuc29tZSgobG9jYXRpb24pID0+IGlkZW50aXR5KGxvY2F0aW9uKSA9PT0gaWRlbnRpdHkodGFyZ2V0LnRvKSkgfHwgbG9jYXRpb25zLmxlbmd0aCA+PSBNQVhfTE9DQVRJT05TKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGF0YS1zdG9yZSByZWxvY2F0aW9uIGxvb3Agb3IgbG9jYXRpb24gbGltaXQnKTtcbiAgICAgIH1cbiAgICAgIGxvY2F0aW9ucy5wdXNoKHRhcmdldC50byk7XG4gICAgICBjdXJyZW50SWRlbnRpdHkgPSBpZGVudGl0eSh0YXJnZXQudG8pO1xuICAgICAgZm9yIChjb25zdCB0cmFuc2l0aW9uIG9mIG5leHQpIHtcbiAgICAgICAgcmVtYWluaW5nLnNwbGljZShyZW1haW5pbmcuaW5kZXhPZih0cmFuc2l0aW9uKSwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsb2NhdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRyYW5zcG9ydChsb2NhdGlvbjogRGF0YVN0b3JlTG9jYXRpb24pOiBEYXRhU3RvcmVUcmFuc3BvcnQge1xuICAgIHJldHVybiBuZXcgRGF0YVN0b3JlVHJhbnNwb3J0KHsgLi4udGhpcy5wYXJhbXMsIGZvbGRlcjogbG9jYXRpb24uZm9sZGVyLCBmb3JtYXQ6IGxvY2F0aW9uLmZvcm1hdCA/PyAnbWFya2Rvd24nIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgdGhlIHJlY29yZHMgb2YgYW4gYW5jaG9yIGZvbGRlciB0aGF0IHdhcyBtb3ZlZCAob3Igc2l0cyB1bmRlciBhIG1vdmVkIGZvbGRlcikgb250byB0aGUgZm9sZGVyIHRoZSBzdG9yZSBpcyBvcGVuXG4gICAqIGF0LCBiZWNhdXNlIHJlY29yZHMgbmFtZSBhYnNvbHV0ZSBmb2xkZXJzLlxuICAgKlxuICAgKiBBIHRyYW5zaXRpb24gdGhhdCBuYW1lcyBpdHMgYGFuY2hvcmAgaXMgcmVtYXBwZWQgZnJvbSB0aGF0IGZvbGRlciBleGFjdGx5LCBzbyBzZXZlcmFsIHN1Y2Nlc3NpdmUgbW92ZXMgcmVzb2x2ZSB0b28uXG4gICAqIEEgdHJhbnNpdGlvbiB3cml0dGVuIGJlZm9yZSB0aGF0IGZpZWxkIGV4aXN0ZWQgbmFtZXMgbm8gYW5jaG9yLCBhbmQgYSBtb3ZlZCBhbmNob3IgdGhlbiBsb29rcyB0aGUgc2FtZSBhcyBhIGNoYWluIHdob3NlXG4gICAqIGZpcnN0IHJlY29yZCBoYXMgbm90IGFycml2ZWQgeWV0LiBTbyB0aGUgZm9ybWVyIGZvbGRlciBpcyBpbmZlcnJlZCBvbmx5IHdoZW4gbm90aGluZyBzdGFydHMgYXQgdGhlIGluaXRpYWwgaWRlbnRpdHksXG4gICAqIGV4YWN0bHkgb25lIGNhbmRpZGF0ZSBmb2xkZXIgKG9uZSB0aGUgbGVnYWN5IHJlY29yZHMgc3RhcnQgZnJvbSwgaW4gdGhlIGluaXRpYWwgZm9ybWF0KSB5aWVsZHMgYSBjb21wbGV0ZSBjaGFpbiwgYW5kXG4gICAqIHRoYXQgZm9sZGVyIG5vIGxvbmdlciBob2xkcyB0aGlzIHN0b3JlLiBBbnl0aGluZyBlbHNlIGlzIGxlZnQgZm9yIGBidWlsZENoYWluYCB0byByZWplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc2l0aW9ucyAtIFRoZSB0cmFuc2l0aW9ucyByZWNvcmRlZCBhdCB0aGUgYW5jaG9yLlxuICAgKiBAcmV0dXJucyBUaGUgdHJhbnNpdGlvbnMgdG8gYnVpbGQgdGhlIGNoYWluIGZyb20uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlc29sdmVNb3ZlZEFuY2hvcih0cmFuc2l0aW9uczogcmVhZG9ubHkgVHJhbnNpdGlvbltdKTogUHJvbWlzZTxyZWFkb25seSBUcmFuc2l0aW9uW10+IHtcbiAgICBjb25zdCBhbmNob3JlZCA9IHRyYW5zaXRpb25zLm1hcCgodHJhbnNpdGlvbikgPT4gdHJhbnNpdGlvbi5hbmNob3IgPyByZW1hcFRyYW5zaXRpb24odHJhbnNpdGlvbiwgdHJhbnNpdGlvbi5hbmNob3IuZm9sZGVyLCB0aGlzLmluaXRpYWwuZm9sZGVyKSA6IHRyYW5zaXRpb24pO1xuICAgIGNvbnN0IGluaXRpYWxJZGVudGl0eSA9IGlkZW50aXR5KHRoaXMuaW5pdGlhbCk7XG4gICAgaWYgKGFuY2hvcmVkLnNvbWUoKHRyYW5zaXRpb24pID0+IGlkZW50aXR5KHRyYW5zaXRpb24uZnJvbSkgPT09IGluaXRpYWxJZGVudGl0eSkpIHtcbiAgICAgIHJldHVybiBhbmNob3JlZDtcbiAgICB9XG4gICAgLy8gQSBjYW5kaWRhdGUgdGhhdCBjYW5ub3QgcHJvZHVjZSBhIHRyYW5zaXRpb24gZnJvbSB0aGUgaW5pdGlhbCBpZGVudGl0eSBmYWlscyBgYnVpbGRDaGFpbmAgYmVsb3cuXG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IG5ldyBTZXQoYW5jaG9yZWQuZmlsdGVyKCh0cmFuc2l0aW9uKSA9PiAhdHJhbnNpdGlvbi5hbmNob3IpLm1hcCgodHJhbnNpdGlvbikgPT4gdHJhbnNpdGlvbi5mcm9tLmZvbGRlcikpO1xuICAgIGNvbnN0IHJlc29sdmVkOiBJbmZlcnJlZENoYWluW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZvcm1lckZvbGRlciBvZiBjYW5kaWRhdGVzKSB7XG4gICAgICBjb25zdCByZW1hcHBlZCA9IGFuY2hvcmVkLm1hcCgodHJhbnNpdGlvbikgPT4gdHJhbnNpdGlvbi5hbmNob3IgPyB0cmFuc2l0aW9uIDogcmVtYXBUcmFuc2l0aW9uKHRyYW5zaXRpb24sIGZvcm1lckZvbGRlciwgdGhpcy5pbml0aWFsLmZvbGRlcikpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5idWlsZENoYWluKHJlbWFwcGVkKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmVkLnB1c2goeyBmb3JtZXJGb2xkZXIsIHRyYW5zaXRpb25zOiByZW1hcHBlZCB9KTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2ggPSByZXNvbHZlZC5sZW5ndGggPT09IDEgPyBlbnN1cmVOb25OdWxsYWJsZShyZXNvbHZlZFswXSkgOiBudWxsO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHJldHVybiBhbmNob3JlZDtcbiAgICB9XG4gICAgY29uc3QgZm9ybWVyRmlsZXMgPSBhd2FpdCB0aGlzLmNyZWF0ZVRyYW5zcG9ydCh7IC4uLnRoaXMuaW5pdGlhbCwgZm9sZGVyOiBtYXRjaC5mb3JtZXJGb2xkZXIgfSkubGlzdCgpO1xuICAgIHJldHVybiBmb3JtZXJGaWxlcy5sZW5ndGggPiAwID8gYW5jaG9yZWQgOiBtYXRjaC50cmFuc2l0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVMb2NhdGlvbihsb2NhdGlvbjogRGF0YVN0b3JlTG9jYXRpb24sIGxvY2F0aW9uczogcmVhZG9ubHkgRGF0YVN0b3JlTG9jYXRpb25bXSA9IHRoaXMubG9jYXRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgdHJhbnNwb3J0ID0gdGhpcy5jcmVhdGVUcmFuc3BvcnQobG9jYXRpb24pO1xuICAgIGZvciAoY29uc3QgcHJldmlvdXMgb2YgbG9jYXRpb25zKSB7XG4gICAgICBjb25zdCByb290ID0gdGhpcy5jcmVhdGVUcmFuc3BvcnQocHJldmlvdXMpLnJvb3Q7XG4gICAgICBpZiAodHJhbnNwb3J0LnJvb3QgIT09IHJvb3QgJiYgKHRyYW5zcG9ydC5yb290LnN0YXJ0c1dpdGgoYCR7cm9vdH0vYCkgfHwgcm9vdC5zdGFydHNXaXRoKGAke3RyYW5zcG9ydC5yb290fS9gKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPdmVybGFwcGluZyBkYXRhLXN0b3JlIHJlbG9jYXRpb24gcm9vdHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaWRlbnRpdHkobG9jYXRpb246IERhdGFTdG9yZUxvY2F0aW9uKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke2xvY2F0aW9uLmZvbGRlcn06JHtsb2NhdGlvbi5mb3JtYXQgPz8gJ21hcmtkb3duJ31gO1xufVxuXG5mdW5jdGlvbiBpc0xvY2F0aW9uKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRGF0YVN0b3JlTG9jYXRpb24ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAnZm9sZGVyJyBpbiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUuZm9sZGVyID09PSAnc3RyaW5nJ1xuICAgICYmICghKCdmb3JtYXQnIGluIHZhbHVlKSB8fCB2YWx1ZS5mb3JtYXQgPT09ICdqc29uJyB8fCB2YWx1ZS5mb3JtYXQgPT09ICdtYXJrZG93bicpO1xufVxuXG5mdW5jdGlvbiBpc1RyYW5zaXRpb24odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBUcmFuc2l0aW9uIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgJ2Zvcm1hdCcgaW4gdmFsdWUgJiYgdmFsdWUuZm9ybWF0ID09PSAxXG4gICAgJiYgJ2Zyb20nIGluIHZhbHVlICYmIGlzTG9jYXRpb24odmFsdWUuZnJvbSkgJiYgJ3RvJyBpbiB2YWx1ZSAmJiBpc0xvY2F0aW9uKHZhbHVlLnRvKVxuICAgICYmICghKCdhbmNob3InIGluIHZhbHVlKSB8fCBpc0xvY2F0aW9uKHZhbHVlLmFuY2hvcikpO1xufVxuXG5mdW5jdGlvbiByZW1hcExvY2F0aW9uKGxvY2F0aW9uOiBEYXRhU3RvcmVMb2NhdGlvbiwgZm9ybWVyRm9sZGVyOiBzdHJpbmcsIGZvbGRlcjogc3RyaW5nKTogRGF0YVN0b3JlTG9jYXRpb24ge1xuICBpZiAobG9jYXRpb24uZm9sZGVyID09PSBmb3JtZXJGb2xkZXIpIHtcbiAgICByZXR1cm4geyAuLi5sb2NhdGlvbiwgZm9sZGVyIH07XG4gIH1cbiAgaWYgKGxvY2F0aW9uLmZvbGRlci5zdGFydHNXaXRoKGAke2Zvcm1lckZvbGRlcn0vYCkpIHtcbiAgICByZXR1cm4geyAuLi5sb2NhdGlvbiwgZm9sZGVyOiBgJHtmb2xkZXJ9JHtsb2NhdGlvbi5mb2xkZXIuc2xpY2UoZm9ybWVyRm9sZGVyLmxlbmd0aCl9YCB9O1xuICB9XG4gIHJldHVybiBsb2NhdGlvbjtcbn1cblxuZnVuY3Rpb24gcmVtYXBUcmFuc2l0aW9uKHRyYW5zaXRpb246IFRyYW5zaXRpb24sIGZvcm1lckZvbGRlcjogc3RyaW5nLCBmb2xkZXI6IHN0cmluZyk6IFRyYW5zaXRpb24ge1xuICByZXR1cm4ge1xuICAgIC4uLnRyYW5zaXRpb24sXG4gICAgZnJvbTogcmVtYXBMb2NhdGlvbih0cmFuc2l0aW9uLmZyb20sIGZvcm1lckZvbGRlciwgZm9sZGVyKSxcbiAgICB0bzogcmVtYXBMb2NhdGlvbih0cmFuc2l0aW9uLnRvLCBmb3JtZXJGb2xkZXIsIGZvbGRlcilcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBLHlCQUFrQztBQUlsQyxrQ0FBbUM7QUFFbkMsTUFBTSxnQkFBZ0I7QUFvQ2YsTUFBTSxtQkFBbUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFvQnZCLFlBQTZCLFFBQTZDO0FBQTdDO0FBQ2xDLFNBQUssU0FBUyxJQUFJLCtDQUFtQixNQUFNO0FBQzNDLFNBQUssVUFBVSxFQUFFLFFBQVEsT0FBTyxVQUFVLGVBQWUsUUFBUSxPQUFPLFVBQVUsV0FBVztBQUM3RixTQUFLLFlBQVksQ0FBQyxLQUFLLE9BQU87QUFBQSxFQUNoQztBQUFBLEVBSm9DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBZHBDLElBQVcsYUFBbUM7QUFDNUMsV0FBTyxLQUFLLFVBQVUsSUFBSSxDQUFDLGFBQWEsS0FBSyxnQkFBZ0IsUUFBUSxDQUFDO0FBQUEsRUFDeEU7QUFBQSxFQUVpQjtBQUFBLEVBQ0E7QUFBQSxFQUVUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFtQlIsTUFBYSxV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
@@ -55,6 +55,21 @@ export declare class DataStoreLocations {
55
55
  * @returns A promise that resolves when the new writer is ready.
56
56
  */
57
57
  relocate(location: DataStoreLocation): Promise<void>;
58
+ private buildChain;
58
59
  private createTransport;
60
+ /**
61
+ * Maps the records of an anchor folder that was moved (or sits under a moved folder) onto the folder the store is open
62
+ * at, because records name absolute folders.
63
+ *
64
+ * A transition that names its `anchor` is remapped from that folder exactly, so several successive moves resolve too.
65
+ * A transition written before that field existed names no anchor, and a moved anchor then looks the same as a chain whose
66
+ * first record has not arrived yet. So the former folder is inferred only when nothing starts at the initial identity,
67
+ * exactly one candidate folder (one the legacy records start from, in the initial format) yields a complete chain, and
68
+ * that folder no longer holds this store. Anything else is left for `buildChain` to reject.
69
+ *
70
+ * @param transitions - The transitions recorded at the anchor.
71
+ * @returns The transitions to build the chain from.
72
+ */
73
+ private resolveMovedAnchor;
59
74
  private validateLocation;
60
75
  }
@@ -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) {
@@ -92,6 +119,7 @@ __export(data_store_replica_exports, {
92
119
  isDataStoreOperation: () => isDataStoreOperation
93
120
  });
94
121
  module.exports = __toCommonJS(data_store_replica_exports);
122
+ var import_type_guards = require("@mnaoumov/typescript-lib/type-guards");
95
123
  class DataStoreReplica {
96
124
  /**
97
125
  * Creates an empty replica.
@@ -120,7 +148,7 @@ class DataStoreReplica {
120
148
  return;
121
149
  }
122
150
  const previous = this.registers.get(operation.key);
123
- if (this.kind !== "last-write-wins" && (operation.deleted || rankOf(operation.value) === void 0)) {
151
+ if (this.kind !== "last-write-wins" && (operation.deleted || rankOf(operation.value) === null)) {
124
152
  throw new Error("Min/max stores accept finite numbers or ranked JSON values and do not support deletion");
125
153
  }
126
154
  if (!previous || this.wins(operation, previous)) {
@@ -196,9 +224,9 @@ class DataStoreReplica {
196
224
  const nextRank = rankOf(next.value);
197
225
  const previousRank = rankOf(previous.value);
198
226
  if (this.kind === "minimum" && nextRank !== previousRank) {
199
- return Number(nextRank) < Number(previousRank);
227
+ return (0, import_type_guards.ensureNonNullable)(nextRank) < (0, import_type_guards.ensureNonNullable)(previousRank);
200
228
  }
201
- return this.kind === "maximum" && nextRank !== previousRank ? Number(nextRank) > Number(previousRank) : next.time > previous.time || next.time === previous.time && (next.counter > previous.counter || next.counter === previous.counter && next.device > previous.device);
229
+ return this.kind === "maximum" && nextRank !== previousRank ? (0, import_type_guards.ensureNonNullable)(nextRank) > (0, import_type_guards.ensureNonNullable)(previousRank) : next.time > previous.time || next.time === previous.time && (next.counter > previous.counter || next.counter === previous.counter && next.device > previous.device);
202
230
  }
203
231
  }
204
232
  function isDataStoreJsonValue(value) {
@@ -236,7 +264,7 @@ function rankOf(value) {
236
264
  if (typeof value === "number" && Number.isFinite(value)) {
237
265
  return value;
238
266
  }
239
- return typeof value === "object" && value !== null && "rank" in value && "value" in value && typeof value.rank === "number" && Number.isFinite(value.rank) ? value.rank : void 0;
267
+ return typeof value === "object" && value !== null && "rank" in value && "value" in value && typeof value.rank === "number" && Number.isFinite(value.rank) ? value.rank : null;
240
268
  }
241
269
  function tag(operation) {
242
270
  return `${operation.device}:${String(operation.sequence)}`;
@@ -260,4 +288,4 @@ function tagVector(tags) {
260
288
  isDataStoreJsonValue,
261
289
  isDataStoreOperation
262
290
  });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhLXN0b3Jlcy9kYXRhLXN0b3JlLXJlcGxpY2EudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbi9uby11bnN1cHBvcnRlZC1mZWF0dXJlcy9ub2RlLWJ1aWx0aW5zIC0tIFRoZXNlIGFyZSBPYnNpZGlhbiByZW5kZXJlciBXZWIgQVBJcywgbm90IE5vZGUgYnVpbHRpbnMuICovXG4vKipcbiAqIEBmaWxlXG4gKlxuICogTWVyZ2Utc2FmZSByZWdpc3RlcnMgYW5kIG9ic2VydmVkLXJlbW92ZSBzZXRzIHVzZWQgYnkgc2hhcmVkIGRhdGEgc3RvcmVzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgSnNvblZhbHVlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuLyoqXG4gKiBBIHN0b3JlIGZpeGVzIGl0cyBtZXJnZSBydWxlIGZvciBpdHMgZW50aXJlIGxpZmV0aW1lIGFuZCBzY2hlbWEgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IHR5cGUgRGF0YVN0b3JlTWVyZ2VLaW5kID0gJ2xhc3Qtd3JpdGUtd2lucycgfCAnbWF4aW11bScgfCAnbWluaW11bScgfCAnb2JzZXJ2ZWQtcmVtb3ZlLXNldCc7XG5cbi8qKlxuICogQSB2ZXJzaW9uLW9uZSBqb3VybmFsIG9wZXJhdGlvbi4gVGhlc2UgZmllbGRzIGZvcm0gYSBwdWJsaXNoZWQgd2lyZSBmb3JtYXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVN0b3JlT3BlcmF0aW9uIHtcbiAgLyoqXG4gICAqIExvZ2ljYWwgY291bnRlciB3aXRoaW4gdGhlIHdhbGwtY2xvY2sgbWlsbGlzZWNvbmQuXG4gICAqL1xuICByZWFkb25seSBjb3VudGVyOiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgYSByZW1vdmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVuaXF1ZSB3cml0ZXIgaW5jYXJuYXRpb24sIHN0b3JlZCBsb2NhbGx5IHJhdGhlciB0aGFuIGluIHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IGRldmljZTogc3RyaW5nO1xuICAvKipcbiAgICogUmVjb3JkIGtleSwgb3Igc2V0IG1lbWJlci5cbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICAvKipcbiAgICogU3RyaWN0bHkgaW5jcmVhc2luZyB3cml0ZXIgc2VxdWVuY2UsIHN0YXJ0aW5nIGF0IG9uZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcXVlbmNlOiBudW1iZXI7XG4gIC8qKlxuICAgKiBPYnNlcnZlZCBhZGRpdGlvbiB0YWdzIHJlbW92ZWQgYnkgYSBzZXQgb3BlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKipcbiAgICogSHlicmlkIGxvZ2ljYWwgY2xvY2sgd2FsbCB0aW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZTogbnVtYmVyO1xuICAvKipcbiAgICogSlNPTi1jb21wYXRpYmxlIHZhbHVlOyBzZXQgbWVtYmVycyB1c2UgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHVua25vd247XG59XG5cbi8qKlxuICogSW4tbWVtb3J5IENSRFQgc3RhdGUuIEV4cG9ydGVkIG9wZXJhdGlvbnMgY2FuIGJlIGpvaW5lZCBpbiBhbnkgb3JkZXIsIHJlcGVhdGVkbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhU3RvcmVSZXBsaWNhIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhZGRpdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgRGF0YVN0b3JlT3BlcmF0aW9uPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdGVycyA9IG5ldyBNYXA8c3RyaW5nLCBEYXRhU3RvcmVPcGVyYXRpb24+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVtb3ZhbHMgPSBuZXcgTWFwPHN0cmluZywgRGF0YVN0b3JlT3BlcmF0aW9uPigpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVtcHR5IHJlcGxpY2EuXG4gICAqXG4gICAqIEBwYXJhbSBraW5kIC0gSW1tdXRhYmxlIG1lcmdlIHJ1bGUgZm9yIHRoZSBzdG9yZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkga2luZDogRGF0YVN0b3JlTWVyZ2VLaW5kKSB7fVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIGpvaW5zIG9uZSBqb3VybmFsIG9yIHNuYXBzaG90IG9wZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVW50cnVzdGVkIHBhcnNlZCBvcGVyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgYXBwbHkodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAoIWlzRGF0YVN0b3JlT3BlcmF0aW9uKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGEtc3RvcmUgb3BlcmF0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHdpbmRvdy5zdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpO1xuICAgIGlmICh0aGlzLmtpbmQgPT09ICdvYnNlcnZlZC1yZW1vdmUtc2V0Jykge1xuICAgICAgdGhpcy5hcHBseVNldChvcGVyYXRpb24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMucmVnaXN0ZXJzLmdldChvcGVyYXRpb24ua2V5KTtcbiAgICBpZiAodGhpcy5raW5kICE9PSAnbGFzdC13cml0ZS13aW5zJyAmJiAob3BlcmF0aW9uLmRlbGV0ZWQgfHwgcmFua09mKG9wZXJhdGlvbi52YWx1ZSkgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWluL21heCBzdG9yZXMgYWNjZXB0IGZpbml0ZSBudW1iZXJzIG9yIHJhbmtlZCBKU09OIHZhbHVlcyBhbmQgZG8gbm90IHN1cHBvcnQgZGVsZXRpb24nKTtcbiAgICB9XG4gICAgaWYgKCFwcmV2aW91cyB8fCB0aGlzLndpbnMob3BlcmF0aW9uLCBwcmV2aW91cykpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJzLnNldChvcGVyYXRpb24ua2V5LCBvcGVyYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyB2aXNpYmxlIHJlY29yZHMsIGRldGFjaGVkIGZyb20gaW50ZXJuYWwgc3RhdGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFBhaXJzIGluIGRldGVybWluaXN0aWMga2V5IG9yZGVyLlxuICAgKi9cbiAgcHVibGljIGVudHJpZXMoKTogW3N0cmluZywgdW5rbm93bl1bXSB7XG4gICAgaWYgKHRoaXMua2luZCA9PT0gJ29ic2VydmVkLXJlbW92ZS1zZXQnKSB7XG4gICAgICBjb25zdCBrZXlzID0gbmV3IFNldCh0aGlzLmFjdGl2ZUFkZGl0aW9ucygpLm1hcCgob3BlcmF0aW9uKSA9PiBvcGVyYXRpb24ua2V5KSk7XG4gICAgICByZXR1cm4gWy4uLmtleXNdLnNvcnQoKS5tYXAoKGtleSkgPT4gW2tleSwgdHJ1ZV0pO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLnRoaXMucmVnaXN0ZXJzLnZhbHVlcygpXS5maWx0ZXIoKG9wZXJhdGlvbikgPT4gIW9wZXJhdGlvbi5kZWxldGVkKVxuICAgICAgLnNvcnQoKGZpcnN0LCBzZWNvbmQpID0+IGZpcnN0LmtleS5sb2NhbGVDb21wYXJlKHNlY29uZC5rZXkpKVxuICAgICAgLm1hcCgob3BlcmF0aW9uKSA9PiBbb3BlcmF0aW9uLmtleSwgd2luZG93LnN0cnVjdHVyZWRDbG9uZShvcGVyYXRpb24udmFsdWUpXSk7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0cyBtZXJnZWFibGUgc3RhdGUsIHJldGFpbmluZyB0b21ic3RvbmVzIGZvciBsYXRlIG9yIHJldGlyZWQgcmVwbGljYXMuXG4gICAqXG4gICAqIEByZXR1cm5zIERldGVybWluaXN0aWNhbGx5IG9yZGVyZWQgb3BlcmF0aW9ucyBzdWZmaWNpZW50IHRvIHJlY29uc3RydWN0IHRoaXMgc3RhdGUuXG4gICAqL1xuICBwdWJsaWMgZXhwb3J0KCk6IERhdGFTdG9yZU9wZXJhdGlvbltdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMucmVnaXN0ZXJzLnZhbHVlcygpLCAuLi50aGlzLmFjdGl2ZUFkZGl0aW9ucygpLCAuLi50aGlzLnJlbW92YWxzLnZhbHVlcygpXVxuICAgICAgLnNvcnQoKGZpcnN0LCBzZWNvbmQpID0+IHRhZyhmaXJzdCkubG9jYWxlQ29tcGFyZSh0YWcoc2Vjb25kKSkpLm1hcCgob3BlcmF0aW9uKSA9PiB3aW5kb3cuc3RydWN0dXJlZENsb25lKG9wZXJhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIGEgcmVnaXN0ZXIgb3Igc2V0IG1lbWJlcnNoaXAgd2l0aG91dCBlbnVtZXJhdGluZyByZWdpc3RlciBrZXlzLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gUmVjb3JkIGtleSBvciBzZXQgbWVtYmVyLlxuICAgKiBAcmV0dXJucyBBIGRldGFjaGVkIHZhbHVlLCBvciBgdW5kZWZpbmVkYCB3aGVuIGFic2VudCBvciBkZWxldGVkLlxuICAgKi9cbiAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IHVua25vd24ge1xuICAgIGlmICh0aGlzLmtpbmQgPT09ICdvYnNlcnZlZC1yZW1vdmUtc2V0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlQWRkaXRpb25zKCkuc29tZSgob3BlcmF0aW9uKSA9PiBvcGVyYXRpb24ua2V5ID09PSBrZXkpIHx8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5yZWdpc3RlcnMuZ2V0KGtleSk7XG4gICAgcmV0dXJuIG9wZXJhdGlvbiAmJiAhb3BlcmF0aW9uLmRlbGV0ZWQgPyB3aW5kb3cuc3RydWN0dXJlZENsb25lKG9wZXJhdGlvbi52YWx1ZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYWRkaXRpb25zIG9ic2VydmVkIGZvciBhIHNldCBtZW1iZXIsIGZvciBhbiBvYnNlcnZlZCByZW1vdmFsLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gU2V0IG1lbWJlci5cbiAgICogQHJldHVybnMgQWRkaXRpb24gaWRlbnRpdGllcy4gQ29uY3VycmVudCB1bnNlZW4gYWRkaXRpb25zIHN1cnZpdmUgcmVtb3ZhbC5cbiAgICovXG4gIHB1YmxpYyBvYnNlcnZlZFRhZ3Moa2V5OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmFkZGl0aW9ucy52YWx1ZXMoKV0uZmlsdGVyKChvcGVyYXRpb24pID0+IG9wZXJhdGlvbi5rZXkgPT09IGtleSkubWFwKChvcGVyYXRpb24pID0+IHRhZyhvcGVyYXRpb24pKS5zb3J0KCk7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2ZUFkZGl0aW9ucygpOiBEYXRhU3RvcmVPcGVyYXRpb25bXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmFkZGl0aW9ucy52YWx1ZXMoKV0uZmlsdGVyKChvcGVyYXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHJlbW92ZWQgPSB0YWdWZWN0b3IodGhpcy5yZW1vdmFscy5nZXQob3BlcmF0aW9uLmtleSk/LnRhZ3MgPz8gW10pO1xuICAgICAgcmV0dXJuIG9wZXJhdGlvbi5zZXF1ZW5jZSA+IChyZW1vdmVkLmdldChvcGVyYXRpb24uZGV2aWNlKSA/PyAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTZXQob3BlcmF0aW9uOiBEYXRhU3RvcmVPcGVyYXRpb24pOiB2b2lkIHtcbiAgICBpZiAob3BlcmF0aW9uLmRlbGV0ZWQpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5yZW1vdmFscy5nZXQob3BlcmF0aW9uLmtleSk7XG4gICAgICBjb25zdCB2ZWN0b3IgPSB0YWdWZWN0b3IoWy4uLihwcmV2aW91cz8udGFncyA/PyBbXSksIC4uLihvcGVyYXRpb24udGFncyA/PyBbXSldKTtcbiAgICAgIGNvbnN0IHdpbm5lciA9IHByZXZpb3VzICYmIHRoaXMud2lucyhwcmV2aW91cywgb3BlcmF0aW9uKSA/IHByZXZpb3VzIDogb3BlcmF0aW9uO1xuICAgICAgdGhpcy5yZW1vdmFscy5zZXQob3BlcmF0aW9uLmtleSwgeyAuLi53aW5uZXIsIHRhZ3M6IFsuLi52ZWN0b3JdLnNvcnQoKFtmaXJzdF0sIFtzZWNvbmRdKSA9PiBmaXJzdC5sb2NhbGVDb21wYXJlKHNlY29uZCkpLm1hcCgoW2RldmljZSwgc2VxdWVuY2VdKSA9PiBgJHtkZXZpY2V9OiR7U3RyaW5nKHNlcXVlbmNlKX1gKSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wZXJhdGlvbi52YWx1ZSAhPT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldCBhZGRpdGlvbnMgdXNlIHRydWUgYXMgdGhlaXIgdmFsdWUnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGtleSA9IGAke29wZXJhdGlvbi5rZXl9OiR7b3BlcmF0aW9uLmRldmljZX1gO1xuICAgICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmFkZGl0aW9ucy5nZXQoa2V5KTtcbiAgICAgIGlmICghcHJldmlvdXMgfHwgb3BlcmF0aW9uLnNlcXVlbmNlID4gcHJldmlvdXMuc2VxdWVuY2UpIHtcbiAgICAgICAgdGhpcy5hZGRpdGlvbnMuc2V0KGtleSwgb3BlcmF0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdpbnMobmV4dDogRGF0YVN0b3JlT3BlcmF0aW9uLCBwcmV2aW91czogRGF0YVN0b3JlT3BlcmF0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmV4dFJhbmsgPSByYW5rT2YobmV4dC52YWx1ZSk7XG4gICAgY29uc3QgcHJldmlvdXNSYW5rID0gcmFua09mKHByZXZpb3VzLnZhbHVlKTtcbiAgICBpZiAodGhpcy5raW5kID09PSAnbWluaW11bScgJiYgbmV4dFJhbmsgIT09IHByZXZpb3VzUmFuaykge1xuICAgICAgcmV0dXJuIE51bWJlcihuZXh0UmFuaykgPCBOdW1iZXIocHJldmlvdXNSYW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMua2luZCA9PT0gJ21heGltdW0nICYmIG5leHRSYW5rICE9PSBwcmV2aW91c1JhbmsgPyBOdW1iZXIobmV4dFJhbmspID4gTnVtYmVyKHByZXZpb3VzUmFuaykgOiBuZXh0LnRpbWUgPiBwcmV2aW91cy50aW1lIHx8IChuZXh0LnRpbWUgPT09IHByZXZpb3VzLnRpbWUgJiYgKG5leHQuY291bnRlciA+IHByZXZpb3VzLmNvdW50ZXJcbiAgICAgIHx8IChuZXh0LmNvdW50ZXIgPT09IHByZXZpb3VzLmNvdW50ZXIgJiYgbmV4dC5kZXZpY2UgPiBwcmV2aW91cy5kZXZpY2UpKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgdGhhdCBhIHZhbHVlIHN1cnZpdmVzIEpTT04gdHJhbnNwb3J0IHdpdGhvdXQgY2hhbmdpbmcgaXRzIG1lYW5pbmcuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gQ2FuZGlkYXRlIGRhdGEtc3RvcmUgdmFsdWUuXG4gKiBAcmV0dXJucyBXaGV0aGVyIGl0IGlzIGZpbml0ZSwgYWN5Y2xpYyBKU09OIGRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGFTdG9yZUpzb25WYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEpzb25WYWx1ZSB7XG4gIHJldHVybiBpc0pzb25WYWx1ZSh2YWx1ZSwgbmV3IFNldCgpKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgdGhlIHZlcnNpb24tb25lIG9wZXJhdGlvbiB3aXJlIHNoYXBlLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFBhcnNlZCBKU09OLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgb3BlcmF0aW9uIGhhcyB2YWxpZCBpZGVudGl0eSBhbmQgY2xvY2sgZmllbGRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhU3RvcmVPcGVyYXRpb24odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBEYXRhU3RvcmVPcGVyYXRpb24ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAna2V5JyBpbiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUua2V5ID09PSAnc3RyaW5nJ1xuICAgICYmICdkZXZpY2UnIGluIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5kZXZpY2UgPT09ICdzdHJpbmcnICYmIC9eW1xcdy1dKyQvLnRlc3QodmFsdWUuZGV2aWNlKVxuICAgICYmICdzZXF1ZW5jZScgaW4gdmFsdWUgJiYgaXNQb3NpdGl2ZUludGVnZXIodmFsdWUuc2VxdWVuY2UpXG4gICAgJiYgJ3RpbWUnIGluIHZhbHVlICYmIGlzTm9uTmVnYXRpdmVJbnRlZ2VyKHZhbHVlLnRpbWUpXG4gICAgJiYgJ2NvdW50ZXInIGluIHZhbHVlICYmIGlzTm9uTmVnYXRpdmVJbnRlZ2VyKHZhbHVlLmNvdW50ZXIpXG4gICAgJiYgJ2RlbGV0ZWQnIGluIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5kZWxldGVkID09PSAnYm9vbGVhbicgJiYgJ3ZhbHVlJyBpbiB2YWx1ZSAmJiBpc0RhdGFTdG9yZUpzb25WYWx1ZSh2YWx1ZS52YWx1ZSlcbiAgICAmJiAoISgndGFncycgaW4gdmFsdWUpIHx8IChBcnJheS5pc0FycmF5KHZhbHVlLnRhZ3MpICYmIHZhbHVlLnRhZ3MuZXZlcnkoKGl0ZW06IHVua25vd24pID0+IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykpKTtcbn1cblxuZnVuY3Rpb24gaXNKc29uVmFsdWUodmFsdWU6IHVua25vd24sIGFuY2VzdG9yczogU2V0PG9iamVjdD4pOiBib29sZWFuIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IGFuY2VzdG9ycy5oYXModmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgYW5jZXN0b3JzLmFkZCh2YWx1ZSk7XG4gIGNvbnN0IHZhbHVlczogdW5rbm93bltdID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBbLi4udmFsdWVdIDogT2JqZWN0LnZhbHVlcyh2YWx1ZSk7XG4gIGNvbnN0IGlzVmFsaWQgPSB2YWx1ZXMuZXZlcnkoKGNoaWxkKSA9PiBpc0pzb25WYWx1ZShjaGlsZCwgYW5jZXN0b3JzKSk7XG4gIGFuY2VzdG9ycy5kZWxldGUodmFsdWUpO1xuICByZXR1cm4gaXNWYWxpZDtcbn1cblxuZnVuY3Rpb24gaXNOb25OZWdhdGl2ZUludGVnZXIodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIE51bWJlci5pc1NhZmVJbnRlZ2VyKHZhbHVlKSAmJiBOdW1iZXIodmFsdWUpID49IDA7XG59XG5cbmZ1bmN0aW9uIGlzUG9zaXRpdmVJbnRlZ2VyKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiBOdW1iZXIuaXNTYWZlSW50ZWdlcih2YWx1ZSkgJiYgTnVtYmVyKHZhbHVlKSA+IDA7XG59XG5cbmZ1bmN0aW9uIHJhbmtPZih2YWx1ZTogdW5rbm93bik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgJ3JhbmsnIGluIHZhbHVlICYmICd2YWx1ZScgaW4gdmFsdWVcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5yYW5rID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUucmFuaylcbiAgICA/IHZhbHVlLnJhbmtcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gdGFnKG9wZXJhdGlvbjogRGF0YVN0b3JlT3BlcmF0aW9uKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke29wZXJhdGlvbi5kZXZpY2V9OiR7U3RyaW5nKG9wZXJhdGlvbi5zZXF1ZW5jZSl9YDtcbn1cblxuZnVuY3Rpb24gdGFnVmVjdG9yKHRhZ3M6IHJlYWRvbmx5IHN0cmluZ1tdKTogTWFwPHN0cmluZywgbnVtYmVyPiB7XG4gIGNvbnN0IHZlY3RvciA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIGZvciAoY29uc3QgdmFsdWUgb2YgdGFncykge1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHZhbHVlLmxhc3RJbmRleE9mKCc6Jyk7XG4gICAgY29uc3QgZGV2aWNlID0gdmFsdWUuc2xpY2UoMCwgc2VwYXJhdG9yKTtcbiAgICBjb25zdCBzZXF1ZW5jZSA9IE51bWJlcih2YWx1ZS5zbGljZShzZXBhcmF0b3IgKyAxKSk7XG4gICAgaWYgKCFkZXZpY2UgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHNlcXVlbmNlKSB8fCBzZXF1ZW5jZSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb2JzZXJ2ZWQtcmVtb3ZlIHRhZycpO1xuICAgIH1cbiAgICB2ZWN0b3Iuc2V0KGRldmljZSwgTWF0aC5tYXgoc2VxdWVuY2UsIHZlY3Rvci5nZXQoZGV2aWNlKSA/PyAwKSk7XG4gIH1cbiAgcmV0dXJuIHZlY3Rvcjtcbn1cblxuLyogZXNsaW50LWVuYWJsZSBuL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL25vZGUtYnVpbHRpbnMgLS0gVGhlc2UgYXJlIE9ic2lkaWFuIHJlbmRlcmVyIFdlYiBBUElzLCBub3QgTm9kZSBidWlsdGlucy4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7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
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhLXN0b3Jlcy9kYXRhLXN0b3JlLXJlcGxpY2EudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIE1lcmdlLXNhZmUgcmVnaXN0ZXJzIGFuZCBvYnNlcnZlZC1yZW1vdmUgc2V0cyB1c2VkIGJ5IHNoYXJlZCBkYXRhIHN0b3Jlcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEpzb25WYWx1ZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcblxuLyoqXG4gKiBBIHN0b3JlIGZpeGVzIGl0cyBtZXJnZSBydWxlIGZvciBpdHMgZW50aXJlIGxpZmV0aW1lIGFuZCBzY2hlbWEgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IHR5cGUgRGF0YVN0b3JlTWVyZ2VLaW5kID0gJ2xhc3Qtd3JpdGUtd2lucycgfCAnbWF4aW11bScgfCAnbWluaW11bScgfCAnb2JzZXJ2ZWQtcmVtb3ZlLXNldCc7XG5cbi8qKlxuICogQSB2ZXJzaW9uLW9uZSBqb3VybmFsIG9wZXJhdGlvbi4gVGhlc2UgZmllbGRzIGZvcm0gYSBwdWJsaXNoZWQgd2lyZSBmb3JtYXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVN0b3JlT3BlcmF0aW9uIHtcbiAgLyoqXG4gICAqIExvZ2ljYWwgY291bnRlciB3aXRoaW4gdGhlIHdhbGwtY2xvY2sgbWlsbGlzZWNvbmQuXG4gICAqL1xuICByZWFkb25seSBjb3VudGVyOiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgYSByZW1vdmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVuaXF1ZSB3cml0ZXIgaW5jYXJuYXRpb24sIHN0b3JlZCBsb2NhbGx5IHJhdGhlciB0aGFuIGluIHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IGRldmljZTogc3RyaW5nO1xuICAvKipcbiAgICogUmVjb3JkIGtleSwgb3Igc2V0IG1lbWJlci5cbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICAvKipcbiAgICogU3RyaWN0bHkgaW5jcmVhc2luZyB3cml0ZXIgc2VxdWVuY2UsIHN0YXJ0aW5nIGF0IG9uZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcXVlbmNlOiBudW1iZXI7XG4gIC8qKlxuICAgKiBPYnNlcnZlZCBhZGRpdGlvbiB0YWdzIHJlbW92ZWQgYnkgYSBzZXQgb3BlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKipcbiAgICogSHlicmlkIGxvZ2ljYWwgY2xvY2sgd2FsbCB0aW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZTogbnVtYmVyO1xuICAvKipcbiAgICogSlNPTi1jb21wYXRpYmxlIHZhbHVlOyBzZXQgbWVtYmVycyB1c2UgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHVua25vd247XG59XG5cbi8qKlxuICogSW4tbWVtb3J5IENSRFQgc3RhdGUuIEV4cG9ydGVkIG9wZXJhdGlvbnMgY2FuIGJlIGpvaW5lZCBpbiBhbnkgb3JkZXIsIHJlcGVhdGVkbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhU3RvcmVSZXBsaWNhIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhZGRpdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgRGF0YVN0b3JlT3BlcmF0aW9uPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdGVycyA9IG5ldyBNYXA8c3RyaW5nLCBEYXRhU3RvcmVPcGVyYXRpb24+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVtb3ZhbHMgPSBuZXcgTWFwPHN0cmluZywgRGF0YVN0b3JlT3BlcmF0aW9uPigpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVtcHR5IHJlcGxpY2EuXG4gICAqXG4gICAqIEBwYXJhbSBraW5kIC0gSW1tdXRhYmxlIG1lcmdlIHJ1bGUgZm9yIHRoZSBzdG9yZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkga2luZDogRGF0YVN0b3JlTWVyZ2VLaW5kKSB7fVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIGpvaW5zIG9uZSBqb3VybmFsIG9yIHNuYXBzaG90IG9wZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVW50cnVzdGVkIHBhcnNlZCBvcGVyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgYXBwbHkodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAoIWlzRGF0YVN0b3JlT3BlcmF0aW9uKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGEtc3RvcmUgb3BlcmF0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHdpbmRvdy5zdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpO1xuICAgIGlmICh0aGlzLmtpbmQgPT09ICdvYnNlcnZlZC1yZW1vdmUtc2V0Jykge1xuICAgICAgdGhpcy5hcHBseVNldChvcGVyYXRpb24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMucmVnaXN0ZXJzLmdldChvcGVyYXRpb24ua2V5KTtcbiAgICBpZiAodGhpcy5raW5kICE9PSAnbGFzdC13cml0ZS13aW5zJyAmJiAob3BlcmF0aW9uLmRlbGV0ZWQgfHwgcmFua09mKG9wZXJhdGlvbi52YWx1ZSkgPT09IG51bGwpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pbi9tYXggc3RvcmVzIGFjY2VwdCBmaW5pdGUgbnVtYmVycyBvciByYW5rZWQgSlNPTiB2YWx1ZXMgYW5kIGRvIG5vdCBzdXBwb3J0IGRlbGV0aW9uJyk7XG4gICAgfVxuICAgIGlmICghcHJldmlvdXMgfHwgdGhpcy53aW5zKG9wZXJhdGlvbiwgcHJldmlvdXMpKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVycy5zZXQob3BlcmF0aW9uLmtleSwgb3BlcmF0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdmlzaWJsZSByZWNvcmRzLCBkZXRhY2hlZCBmcm9tIGludGVybmFsIHN0YXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBQYWlycyBpbiBkZXRlcm1pbmlzdGljIGtleSBvcmRlci5cbiAgICovXG4gIHB1YmxpYyBlbnRyaWVzKCk6IFtzdHJpbmcsIHVua25vd25dW10ge1xuICAgIGlmICh0aGlzLmtpbmQgPT09ICdvYnNlcnZlZC1yZW1vdmUtc2V0Jykge1xuICAgICAgY29uc3Qga2V5cyA9IG5ldyBTZXQodGhpcy5hY3RpdmVBZGRpdGlvbnMoKS5tYXAoKG9wZXJhdGlvbikgPT4gb3BlcmF0aW9uLmtleSkpO1xuICAgICAgcmV0dXJuIFsuLi5rZXlzXS5zb3J0KCkubWFwKChrZXkpID0+IFtrZXksIHRydWVdKTtcbiAgICB9XG4gICAgcmV0dXJuIFsuLi50aGlzLnJlZ2lzdGVycy52YWx1ZXMoKV0uZmlsdGVyKChvcGVyYXRpb24pID0+ICFvcGVyYXRpb24uZGVsZXRlZClcbiAgICAgIC5zb3J0KChmaXJzdCwgc2Vjb25kKSA9PiBmaXJzdC5rZXkubG9jYWxlQ29tcGFyZShzZWNvbmQua2V5KSlcbiAgICAgIC5tYXAoKG9wZXJhdGlvbikgPT4gW29wZXJhdGlvbi5rZXksIHdpbmRvdy5zdHJ1Y3R1cmVkQ2xvbmUob3BlcmF0aW9uLnZhbHVlKV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydHMgbWVyZ2VhYmxlIHN0YXRlLCByZXRhaW5pbmcgdG9tYnN0b25lcyBmb3IgbGF0ZSBvciByZXRpcmVkIHJlcGxpY2FzLlxuICAgKlxuICAgKiBAcmV0dXJucyBEZXRlcm1pbmlzdGljYWxseSBvcmRlcmVkIG9wZXJhdGlvbnMgc3VmZmljaWVudCB0byByZWNvbnN0cnVjdCB0aGlzIHN0YXRlLlxuICAgKi9cbiAgcHVibGljIGV4cG9ydCgpOiBEYXRhU3RvcmVPcGVyYXRpb25bXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnJlZ2lzdGVycy52YWx1ZXMoKSwgLi4udGhpcy5hY3RpdmVBZGRpdGlvbnMoKSwgLi4udGhpcy5yZW1vdmFscy52YWx1ZXMoKV1cbiAgICAgIC5zb3J0KChmaXJzdCwgc2Vjb25kKSA9PiB0YWcoZmlyc3QpLmxvY2FsZUNvbXBhcmUodGFnKHNlY29uZCkpKS5tYXAoKG9wZXJhdGlvbikgPT4gd2luZG93LnN0cnVjdHVyZWRDbG9uZShvcGVyYXRpb24pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhIHJlZ2lzdGVyIG9yIHNldCBtZW1iZXJzaGlwIHdpdGhvdXQgZW51bWVyYXRpbmcgcmVnaXN0ZXIga2V5cy5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFJlY29yZCBrZXkgb3Igc2V0IG1lbWJlci5cbiAgICogQHJldHVybnMgQSBkZXRhY2hlZCB2YWx1ZSwgb3IgYHVuZGVmaW5lZGAgd2hlbiBhYnNlbnQgb3IgZGVsZXRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBpZiAodGhpcy5raW5kID09PSAnb2JzZXJ2ZWQtcmVtb3ZlLXNldCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZUFkZGl0aW9ucygpLnNvbWUoKG9wZXJhdGlvbikgPT4gb3BlcmF0aW9uLmtleSA9PT0ga2V5KSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMucmVnaXN0ZXJzLmdldChrZXkpO1xuICAgIHJldHVybiBvcGVyYXRpb24gJiYgIW9wZXJhdGlvbi5kZWxldGVkID8gd2luZG93LnN0cnVjdHVyZWRDbG9uZShvcGVyYXRpb24udmFsdWUpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFkZGl0aW9ucyBvYnNlcnZlZCBmb3IgYSBzZXQgbWVtYmVyLCBmb3IgYW4gb2JzZXJ2ZWQgcmVtb3ZhbC5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFNldCBtZW1iZXIuXG4gICAqIEByZXR1cm5zIEFkZGl0aW9uIGlkZW50aXRpZXMuIENvbmN1cnJlbnQgdW5zZWVuIGFkZGl0aW9ucyBzdXJ2aXZlIHJlbW92YWwuXG4gICAqL1xuICBwdWJsaWMgb2JzZXJ2ZWRUYWdzKGtleTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5hZGRpdGlvbnMudmFsdWVzKCldLmZpbHRlcigob3BlcmF0aW9uKSA9PiBvcGVyYXRpb24ua2V5ID09PSBrZXkpLm1hcCgob3BlcmF0aW9uKSA9PiB0YWcob3BlcmF0aW9uKSkuc29ydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVBZGRpdGlvbnMoKTogRGF0YVN0b3JlT3BlcmF0aW9uW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5hZGRpdGlvbnMudmFsdWVzKCldLmZpbHRlcigob3BlcmF0aW9uKSA9PiB7XG4gICAgICBjb25zdCByZW1vdmVkID0gdGFnVmVjdG9yKHRoaXMucmVtb3ZhbHMuZ2V0KG9wZXJhdGlvbi5rZXkpPy50YWdzID8/IFtdKTtcbiAgICAgIHJldHVybiBvcGVyYXRpb24uc2VxdWVuY2UgPiAocmVtb3ZlZC5nZXQob3BlcmF0aW9uLmRldmljZSkgPz8gMCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2V0KG9wZXJhdGlvbjogRGF0YVN0b3JlT3BlcmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKG9wZXJhdGlvbi5kZWxldGVkKSB7XG4gICAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMucmVtb3ZhbHMuZ2V0KG9wZXJhdGlvbi5rZXkpO1xuICAgICAgY29uc3QgdmVjdG9yID0gdGFnVmVjdG9yKFsuLi4ocHJldmlvdXM/LnRhZ3MgPz8gW10pLCAuLi4ob3BlcmF0aW9uLnRhZ3MgPz8gW10pXSk7XG4gICAgICBjb25zdCB3aW5uZXIgPSBwcmV2aW91cyAmJiB0aGlzLndpbnMocHJldmlvdXMsIG9wZXJhdGlvbikgPyBwcmV2aW91cyA6IG9wZXJhdGlvbjtcbiAgICAgIHRoaXMucmVtb3ZhbHMuc2V0KG9wZXJhdGlvbi5rZXksIHsgLi4ud2lubmVyLCB0YWdzOiBbLi4udmVjdG9yXS5zb3J0KChbZmlyc3RdLCBbc2Vjb25kXSkgPT4gZmlyc3QubG9jYWxlQ29tcGFyZShzZWNvbmQpKS5tYXAoKFtkZXZpY2UsIHNlcXVlbmNlXSkgPT4gYCR7ZGV2aWNlfToke1N0cmluZyhzZXF1ZW5jZSl9YCkgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcGVyYXRpb24udmFsdWUgIT09IHRydWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXQgYWRkaXRpb25zIHVzZSB0cnVlIGFzIHRoZWlyIHZhbHVlJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBrZXkgPSBgJHtvcGVyYXRpb24ua2V5fToke29wZXJhdGlvbi5kZXZpY2V9YDtcbiAgICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5hZGRpdGlvbnMuZ2V0KGtleSk7XG4gICAgICBpZiAoIXByZXZpb3VzIHx8IG9wZXJhdGlvbi5zZXF1ZW5jZSA+IHByZXZpb3VzLnNlcXVlbmNlKSB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25zLnNldChrZXksIG9wZXJhdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB3aW5zKG5leHQ6IERhdGFTdG9yZU9wZXJhdGlvbiwgcHJldmlvdXM6IERhdGFTdG9yZU9wZXJhdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5leHRSYW5rID0gcmFua09mKG5leHQudmFsdWUpO1xuICAgIGNvbnN0IHByZXZpb3VzUmFuayA9IHJhbmtPZihwcmV2aW91cy52YWx1ZSk7XG4gICAgLy8gYGFwcGx5YCBhZG1pdHMgb25seSByYW5rZWQgdmFsdWVzIGludG8gYSBtaW5pbXVtIG9yIG1heGltdW0gc3RvcmUsIHNvIGJvdGggcmFua3MgZXhpc3QgdGhlcmUuXG4gICAgaWYgKHRoaXMua2luZCA9PT0gJ21pbmltdW0nICYmIG5leHRSYW5rICE9PSBwcmV2aW91c1JhbmspIHtcbiAgICAgIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShuZXh0UmFuaykgPCBlbnN1cmVOb25OdWxsYWJsZShwcmV2aW91c1JhbmspO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5raW5kID09PSAnbWF4aW11bScgJiYgbmV4dFJhbmsgIT09IHByZXZpb3VzUmFuayA/IGVuc3VyZU5vbk51bGxhYmxlKG5leHRSYW5rKSA+IGVuc3VyZU5vbk51bGxhYmxlKHByZXZpb3VzUmFuaykgOiBuZXh0LnRpbWUgPiBwcmV2aW91cy50aW1lIHx8IChuZXh0LnRpbWUgPT09IHByZXZpb3VzLnRpbWUgJiYgKG5leHQuY291bnRlciA+IHByZXZpb3VzLmNvdW50ZXJcbiAgICAgIHx8IChuZXh0LmNvdW50ZXIgPT09IHByZXZpb3VzLmNvdW50ZXIgJiYgbmV4dC5kZXZpY2UgPiBwcmV2aW91cy5kZXZpY2UpKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgdGhhdCBhIHZhbHVlIHN1cnZpdmVzIEpTT04gdHJhbnNwb3J0IHdpdGhvdXQgY2hhbmdpbmcgaXRzIG1lYW5pbmcuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gQ2FuZGlkYXRlIGRhdGEtc3RvcmUgdmFsdWUuXG4gKiBAcmV0dXJucyBXaGV0aGVyIGl0IGlzIGZpbml0ZSwgYWN5Y2xpYyBKU09OIGRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGFTdG9yZUpzb25WYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEpzb25WYWx1ZSB7XG4gIHJldHVybiBpc0pzb25WYWx1ZSh2YWx1ZSwgbmV3IFNldCgpKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgdGhlIHZlcnNpb24tb25lIG9wZXJhdGlvbiB3aXJlIHNoYXBlLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFBhcnNlZCBKU09OLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgb3BlcmF0aW9uIGhhcyB2YWxpZCBpZGVudGl0eSBhbmQgY2xvY2sgZmllbGRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhU3RvcmVPcGVyYXRpb24odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBEYXRhU3RvcmVPcGVyYXRpb24ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAna2V5JyBpbiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUua2V5ID09PSAnc3RyaW5nJ1xuICAgICYmICdkZXZpY2UnIGluIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5kZXZpY2UgPT09ICdzdHJpbmcnICYmIC9eW1xcdy1dKyQvLnRlc3QodmFsdWUuZGV2aWNlKVxuICAgICYmICdzZXF1ZW5jZScgaW4gdmFsdWUgJiYgaXNQb3NpdGl2ZUludGVnZXIodmFsdWUuc2VxdWVuY2UpXG4gICAgJiYgJ3RpbWUnIGluIHZhbHVlICYmIGlzTm9uTmVnYXRpdmVJbnRlZ2VyKHZhbHVlLnRpbWUpXG4gICAgJiYgJ2NvdW50ZXInIGluIHZhbHVlICYmIGlzTm9uTmVnYXRpdmVJbnRlZ2VyKHZhbHVlLmNvdW50ZXIpXG4gICAgJiYgJ2RlbGV0ZWQnIGluIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5kZWxldGVkID09PSAnYm9vbGVhbicgJiYgJ3ZhbHVlJyBpbiB2YWx1ZSAmJiBpc0RhdGFTdG9yZUpzb25WYWx1ZSh2YWx1ZS52YWx1ZSlcbiAgICAmJiAoISgndGFncycgaW4gdmFsdWUpIHx8IChBcnJheS5pc0FycmF5KHZhbHVlLnRhZ3MpICYmIHZhbHVlLnRhZ3MuZXZlcnkoKGl0ZW06IHVua25vd24pID0+IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykpKTtcbn1cblxuZnVuY3Rpb24gaXNKc29uVmFsdWUodmFsdWU6IHVua25vd24sIGFuY2VzdG9yczogU2V0PG9iamVjdD4pOiBib29sZWFuIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IGFuY2VzdG9ycy5oYXModmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgYW5jZXN0b3JzLmFkZCh2YWx1ZSk7XG4gIGNvbnN0IHZhbHVlczogdW5rbm93bltdID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBbLi4udmFsdWVdIDogT2JqZWN0LnZhbHVlcyh2YWx1ZSk7XG4gIGNvbnN0IGlzVmFsaWQgPSB2YWx1ZXMuZXZlcnkoKGNoaWxkKSA9PiBpc0pzb25WYWx1ZShjaGlsZCwgYW5jZXN0b3JzKSk7XG4gIGFuY2VzdG9ycy5kZWxldGUodmFsdWUpO1xuICByZXR1cm4gaXNWYWxpZDtcbn1cblxuZnVuY3Rpb24gaXNOb25OZWdhdGl2ZUludGVnZXIodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIE51bWJlci5pc1NhZmVJbnRlZ2VyKHZhbHVlKSAmJiBOdW1iZXIodmFsdWUpID49IDA7XG59XG5cbmZ1bmN0aW9uIGlzUG9zaXRpdmVJbnRlZ2VyKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiBOdW1iZXIuaXNTYWZlSW50ZWdlcih2YWx1ZSkgJiYgTnVtYmVyKHZhbHVlKSA+IDA7XG59XG5cbmZ1bmN0aW9uIHJhbmtPZih2YWx1ZTogdW5rbm93bik6IG51bGwgfCBudW1iZXIge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICdyYW5rJyBpbiB2YWx1ZSAmJiAndmFsdWUnIGluIHZhbHVlXG4gICAgICAmJiB0eXBlb2YgdmFsdWUucmFuayA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlLnJhbmspXG4gICAgPyB2YWx1ZS5yYW5rXG4gICAgOiBudWxsO1xufVxuXG5mdW5jdGlvbiB0YWcob3BlcmF0aW9uOiBEYXRhU3RvcmVPcGVyYXRpb24pOiBzdHJpbmcge1xuICByZXR1cm4gYCR7b3BlcmF0aW9uLmRldmljZX06JHtTdHJpbmcob3BlcmF0aW9uLnNlcXVlbmNlKX1gO1xufVxuXG5mdW5jdGlvbiB0YWdWZWN0b3IodGFnczogcmVhZG9ubHkgc3RyaW5nW10pOiBNYXA8c3RyaW5nLCBudW1iZXI+IHtcbiAgY29uc3QgdmVjdG9yID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCB2YWx1ZSBvZiB0YWdzKSB7XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdmFsdWUubGFzdEluZGV4T2YoJzonKTtcbiAgICBjb25zdCBkZXZpY2UgPSB2YWx1ZS5zbGljZSgwLCBzZXBhcmF0b3IpO1xuICAgIGNvbnN0IHNlcXVlbmNlID0gTnVtYmVyKHZhbHVlLnNsaWNlKHNlcGFyYXRvciArIDEpKTtcbiAgICBpZiAoIWRldmljZSB8fCAhTnVtYmVyLmlzU2FmZUludGVnZXIoc2VxdWVuY2UpIHx8IHNlcXVlbmNlIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBvYnNlcnZlZC1yZW1vdmUgdGFnJyk7XG4gICAgfVxuICAgIHZlY3Rvci5zZXQoZGV2aWNlLCBNYXRoLm1heChzZXF1ZW5jZSwgdmVjdG9yLmdldChkZXZpY2UpID8/IDApKTtcbiAgfVxuICByZXR1cm4gdmVjdG9yO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -91,8 +91,8 @@ __export(data_store_seeds_exports, {
91
91
  validateDataStoreSeed: () => validateDataStoreSeed
92
92
  });
93
93
  module.exports = __toCommonJS(data_store_seeds_exports);
94
- var import_data_store_replica = require('./data-store-replica.cjs');
95
- var import_data_store_transport = require('./data-store-transport.cjs');
94
+ var import_data_store_replica = require("./data-store-replica.cjs");
95
+ var import_data_store_transport = require("./data-store-transport.cjs");
96
96
  class DataStoreSeeds {
97
97
  /**
98
98
  * Device-local identity and serialization boundary.
@@ -146,15 +146,15 @@ class DataStoreSeeds {
146
146
  /**
147
147
  * Reads the newest complete seed for this transport's schema.
148
148
  *
149
- * @returns Seed records, or `undefined` if sharing is disabled or no complete seed is available yet.
149
+ * @returns Seed records, or `null` if sharing is disabled or no complete seed is available yet.
150
150
  */
151
151
  async readLatest() {
152
152
  if (!this.share) {
153
- return void 0;
153
+ return null;
154
154
  }
155
155
  const files = await this.transport.list();
156
156
  let newest = -Infinity;
157
- let entries;
157
+ let entries = null;
158
158
  for (const path of files) {
159
159
  if (!/\/seed-[\w-]+-manifest\.(?:md|json)$/.test(path)) {
160
160
  continue;
@@ -201,4 +201,4 @@ function isSeed(value) {
201
201
  DataStoreSeeds,
202
202
  validateDataStoreSeed
203
203
  });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhLXN0b3Jlcy9kYXRhLXN0b3JlLXNlZWRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG4vbm8tdW5zdXBwb3J0ZWQtZmVhdHVyZXMvbm9kZS1idWlsdGlucyAtLSBUaGVzZSBhcmUgT2JzaWRpYW4gcmVuZGVyZXIgV2ViIEFQSXMsIG5vdCBOb2RlIGJ1aWx0aW5zLiAqL1xuLyoqXG4gKiBAZmlsZVxuICpcbiAqIE9wdGlvbmFsIGNodW5rZWQgc2VlZHMgZm9yIGV4cGVuc2l2ZSBkZXJpdmVkIGNhY2hlcywgd2l0aCBwZXItZmlsZSB2YWxpZGF0aW9uIGJlZm9yZSByZXVzZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEpzb25WYWx1ZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB0eXBlIHsgTG9jYWxEYXRhU3RvcmUgfSBmcm9tICcuL2xvY2FsLWRhdGEtc3RvcmUudHMnO1xuXG5pbXBvcnQgeyBpc0RhdGFTdG9yZUpzb25WYWx1ZSB9IGZyb20gJy4vZGF0YS1zdG9yZS1yZXBsaWNhLnRzJztcbmltcG9ydCB7IERhdGFTdG9yZVRyYW5zcG9ydCB9IGZyb20gJy4vZGF0YS1zdG9yZS10cmFuc3BvcnQudHMnO1xuXG4vKipcbiAqIEEgZGVyaXZlZCByZWNvcmQgdGFnZ2VkIHdpdGggYm90aCBjaGVhcCBzdGF0aXN0aWNzIGFuZCBhIGNvbnRlbnQgaGFzaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU3RvcmVTZWVkRW50cnkgZXh0ZW5kcyBEYXRhU3RvcmVTZWVkRmlsZSB7XG4gIC8qKlxuICAgKiBDb250ZW50IGhhc2gsIHVzaW5nIHRoZSBzYW1lIGFsZ29yaXRobSBvbiBldmVyeSBkZXZpY2UuXG4gICAqL1xuICByZWFkb25seSBoYXNoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb25zdW1lci1kZWZpbmVkIEpTT04gY2FjaGUgcmVjb3JkLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IEpzb25WYWx1ZTtcbn1cblxuLyoqXG4gKiBDaGVhcCBmaWxlIGlkZW50aXR5IGFscmVhZHkgYXZhaWxhYmxlIGZyb20gdGhlIHZhdWx0J3MgZmlsZSB0cmVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTdG9yZVNlZWRGaWxlIHtcbiAgLyoqXG4gICAqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUuXG4gICAqL1xuICByZWFkb25seSBtdGltZTogbnVtYmVyO1xuICAvKipcbiAgICogVmF1bHQtcmVsYXRpdmUgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIEZpbGUgc2l6ZSBpbiBieXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IHNpemU6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciBvcHRpb25hbCBjYWNoZS1zZWVkIHNoYXJpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVN0b3JlU2VlZHNDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBEZWRpY2F0ZWQgZGV2aWNlLWxvY2FsIHN0b3JlIHRoYXQgb3ducyB0aGUgc2VlZCBwdWJsaXNoZXIgaWRlbnRpdHkuXG4gICAqL1xuICByZWFkb25seSBsb2NhbDogTG9jYWxEYXRhU3RvcmU7XG4gIC8qKlxuICAgKiBQZXItc3RvcmUgdXNlciBzZXR0aW5nLiBEaXNhYmxlZCBtZWFucyBuZWl0aGVyIHB1Ymxpc2hpbmcgbm9yIGFkb3B0aW5nIHNlZWRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTdG9yZS1zY29wZWQsIGJvdW5kZWQgdHJhbnNwb3J0LiBJbmNsdWRlIHRoZSBjb25zdW1lciBzY2hlbWEgdmVyc2lvbiBpbiBpdHMgc3RvcmUgaWQuXG4gICAqL1xuICByZWFkb25seSB0cmFuc3BvcnQ6IERhdGFTdG9yZVRyYW5zcG9ydDtcbn1cblxuLyoqXG4gKiBSZXN1bHRzIG9mIHZhbGlkYXRpbmcgYSBzaGFyZWQgY2FjaGUgc2VlZCBhZ2FpbnN0IHRoZSBsb2NhbCB2YXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU3RvcmVTZWVkVmFsaWRhdGlvbiB7XG4gIC8qKlxuICAgKiBGaWxlcyBhYnNlbnQgZnJvbSB0aGUgc2VlZCwgb3Igd2l0aCBkaWZmZXJlbnQgY29udGVudC5cbiAgICovXG4gIHJlYWRvbmx5IHJlYnVpbGQ6IHN0cmluZ1tdO1xuICAvKipcbiAgICogVmFsaWRhdGVkIHNlZWQgcmVjb3Jkcywgd2l0aCBsb2NhbCBmaWxlIHN0YXRpc3RpY3MuXG4gICAqL1xuICByZWFkb25seSByZXVzYWJsZTogRGF0YVN0b3JlU2VlZEVudHJ5W107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgcGVyLWZpbGUgc2VlZCB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRlRGF0YVN0b3JlU2VlZFBhcmFtcyB7XG4gIC8qKlxuICAgKiBTZWVkIGVudHJpZXMgZnJvbSBhIHJlY29nbml6ZWQgY29uc3VtZXIgc2NoZW1hLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cmllczogcmVhZG9ubHkgRGF0YVN0b3JlU2VlZEVudHJ5W107XG4gIC8qKlxuICAgKiBDdXJyZW50IGZpbGUgdHJlZSwgYXZhaWxhYmxlIHdpdGhvdXQgcmVhZGluZyBub3RlIHRleHQuXG4gICAqL1xuICByZWFkb25seSBmaWxlczogcmVhZG9ubHkgRGF0YVN0b3JlU2VlZEZpbGVbXTtcbiAgLyoqXG4gICAqIEhhc2hlcyB0ZXh0IG9ubHkgd2hlbiBzaXplIG1hdGNoZXMgYnV0IG10aW1lIGRpZmZlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gRmlsZSByZXF1aXJpbmcgdmFsaWRhdGlvbi5cbiAgICogQHJldHVybnMgSXRzIGNvbnRlbnQgaGFzaC5cbiAgICovXG4gIHJlYWRvbmx5IGhhc2hGaWxlOiAocGF0aDogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG59XG5cbmludGVyZmFjZSBTZWVkIHtcbiAgcmVhZG9ubHkgZW50cmllczogRGF0YVN0b3JlU2VlZEVudHJ5W107XG4gIHJlYWRvbmx5IGZvcm1hdDogMTtcbiAgcmVhZG9ubHkgdGltZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIE9wdGlvbmFsIHBlcmZvcm1hbmNlIGhpbnRzLiBTZWVkcyBhcmUgbmV2ZXIgYXV0aG9yaXRhdGl2ZSBzdGF0ZSBhbmQgbXVzdCBiZSB2YWxpZGF0ZWQgYmVmb3JlIHJldXNlLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YVN0b3JlU2VlZHMge1xuICAvKipcbiAgICogRGV2aWNlLWxvY2FsIGlkZW50aXR5IGFuZCBzZXJpYWxpemF0aW9uIGJvdW5kYXJ5LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvY2FsOiBMb2NhbERhdGFTdG9yZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdG9yZSBzaGFyZXMgY2FjaGUgc2VlZHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hhcmU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTdG9yZS1zY29wZWQgc25hcHNob3QgdHJhbnNwb3J0LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYW5zcG9ydDogRGF0YVN0b3JlVHJhbnNwb3J0O1xuICAvKipcbiAgICogQ3JlYXRlcyBhIGNhY2hlLXNlZWQgcHVibGlzaGVyIGFuZCByZWFkZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBMb2NhbCBpZGVudGl0eSwgdHJhbnNwb3J0IGFuZCB0aGUgcGVyLXN0b3JlIHNoYXJpbmcgc2V0dGluZy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IERhdGFTdG9yZVNlZWRzQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICB0aGlzLmxvY2FsID0gcGFyYW1zLmxvY2FsO1xuICAgIHRoaXMuc2hhcmUgPSBwYXJhbXMuc2hhcmU7XG4gICAgdGhpcy50cmFuc3BvcnQgPSBwYXJhbXMudHJhbnNwb3J0O1xuICB9XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2hlcyBhIGJvdW5kZWQgc2VlZCwgcmVwbGFjaW5nIG9ubHkgdGhpcyBkZXZpY2UncyBlYXJsaWVyIHB1YmxpY2F0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGVudHJpZXMgLSBEZXJpdmVkIHJlY29yZHMgd2l0aCBmaWxlIHN0YXRpc3RpY3MgYW5kIGhhc2hlcy5cbiAgICogQHJldHVybnMgV2hldGhlciBzaGFyaW5nIHdhcyBlbmFibGVkIGFuZCB0aGUgc2VlZCB3YXMgcHVibGlzaGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHB1Ymxpc2goZW50cmllczogcmVhZG9ubHkgRGF0YVN0b3JlU2VlZEVudHJ5W10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuc2hhcmUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9jYWwuZXhjbHVzaXZlKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IHRoaXMubG9jYWwuZ2V0T3JDcmVhdGUoJ3NlZWQtZGV2aWNlLXYxJywgd2luZG93LmNyeXB0by5yYW5kb21VVUlEKCkpO1xuICAgICAgaWYgKHR5cGVvZiBkZXZpY2UgIT09ICdzdHJpbmcnIHx8ICEvXltcXHctXSskLy50ZXN0KGRldmljZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxvY2FsIHNlZWQgaWRlbnRpdHknKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJvb3QgPSBgJHt0aGlzLnRyYW5zcG9ydC5yb290fS9zZWVkcy8ke2RldmljZX1gO1xuICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCB0aGlzLnRyYW5zcG9ydC5saXN0KCk7XG4gICAgICBjb25zdCBiYXNlID0gYCR7cm9vdH0vc2VlZC0ke3dpbmRvdy5jcnlwdG8ucmFuZG9tVVVJRCgpfS1tYW5pZmVzdGA7XG4gICAgICBhd2FpdCB0aGlzLnRyYW5zcG9ydC53cml0ZVNuYXBzaG90KHsgYmFzZSwgcGF5bG9hZDogeyBlbnRyaWVzLCBmb3JtYXQ6IDEsIHRpbWU6IERhdGUubm93KCkgfSB9KTtcbiAgICAgIGZvciAoY29uc3QgcGF0aCBvZiBmaWxlcykge1xuICAgICAgICBpZiAocGF0aC5zdGFydHNXaXRoKGAke3Jvb3R9L3NlZWQtYCkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zcG9ydC5yZW1vdmUocGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBuZXdlc3QgY29tcGxldGUgc2VlZCBmb3IgdGhpcyB0cmFuc3BvcnQncyBzY2hlbWEuXG4gICAqXG4gICAqIEByZXR1cm5zIFNlZWQgcmVjb3Jkcywgb3IgYHVuZGVmaW5lZGAgaWYgc2hhcmluZyBpcyBkaXNhYmxlZCBvciBubyBjb21wbGV0ZSBzZWVkIGlzIGF2YWlsYWJsZSB5ZXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVhZExhdGVzdCgpOiBQcm9taXNlPERhdGFTdG9yZVNlZWRFbnRyeVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLnNoYXJlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IHRoaXMudHJhbnNwb3J0Lmxpc3QoKTtcbiAgICBsZXQgbmV3ZXN0ID0gLUluZmluaXR5O1xuICAgIGxldCBlbnRyaWVzOiBEYXRhU3RvcmVTZWVkRW50cnlbXSB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgZmlsZXMpIHtcbiAgICAgIGlmICghL1xcL3NlZWQtW1xcdy1dKy1tYW5pZmVzdFxcLig/Om1kfGpzb24pJC8udGVzdChwYXRoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGxldCBzZWVkOiB1bmtub3duO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2VlZCA9IGF3YWl0IHRoaXMudHJhbnNwb3J0LnJlYWRTbmFwc2hvdChwYXRoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBpZiAoIShpc1NlZWQoc2VlZCkgJiYgc2VlZC50aW1lID4gbmV3ZXN0KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbmV3ZXN0ID0gc2VlZC50aW1lO1xuICAgICAgZW50cmllcyA9IHNlZWQuZW50cmllcztcbiAgICB9XG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBzZWVkIHVzaW5nIGZyZWUgZmlsZSBzdGF0aXN0aWNzIGZpcnN0LCBoYXNoaW5nIG9ubHkgc2l6ZS1lcXVhbCBtdGltZSBtaXNtYXRjaGVzLlxuICogRmlsZXMgYWJzZW50IGxvY2FsbHkgYXJlIGRpc2NhcmRlZC4gQ29uc3VtZXJzIGluZGV4IG9ubHkgdGhlIHJldHVybmVkIHJlYnVpbGQgcGF0aHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFNlZWQsIGN1cnJlbnQgZmlsZSB0cmVlIGFuZCBjb250ZW50LWhhc2ggcmVhZGVyLlxuICogQHJldHVybnMgUmV1c2FibGUgcmVjb3JkcyBhbmQgdGhlIHBhdGhzIHRoYXQgc3RpbGwgbmVlZCBpbmRleGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlRGF0YVN0b3JlU2VlZChwYXJhbXM6IFZhbGlkYXRlRGF0YVN0b3JlU2VlZFBhcmFtcyk6IFByb21pc2U8RGF0YVN0b3JlU2VlZFZhbGlkYXRpb24+IHtcbiAgY29uc3Qgc2VlZCA9IG5ldyBNYXAocGFyYW1zLmVudHJpZXMubWFwKChlbnRyeSkgPT4gW2VudHJ5LnBhdGgsIGVudHJ5XSkpO1xuICBjb25zdCByZXVzYWJsZTogRGF0YVN0b3JlU2VlZEVudHJ5W10gPSBbXTtcbiAgY29uc3QgcmVidWlsZDogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBmaWxlIG9mIHBhcmFtcy5maWxlcykge1xuICAgIGNvbnN0IGVudHJ5ID0gc2VlZC5nZXQoZmlsZS5wYXRoKTtcbiAgICBpZiAoZW50cnk/LnNpemUgPT09IGZpbGUuc2l6ZSAmJiAoZW50cnkubXRpbWUgPT09IGZpbGUubXRpbWUgfHwgZW50cnkuaGFzaCA9PT0gYXdhaXQgcGFyYW1zLmhhc2hGaWxlKGZpbGUucGF0aCkpKSB7XG4gICAgICByZXVzYWJsZS5wdXNoKHsgLi4uZW50cnksIC4uLmZpbGUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlYnVpbGQucHVzaChmaWxlLnBhdGgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyByZWJ1aWxkLCByZXVzYWJsZSB9O1xufVxuXG5mdW5jdGlvbiBpc1NlZWQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTZWVkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgJ2Zvcm1hdCcgaW4gdmFsdWUgJiYgdmFsdWUuZm9ybWF0ID09PSAxXG4gICAgJiYgJ3RpbWUnIGluIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS50aW1lID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUudGltZSlcbiAgICAmJiAnZW50cmllcycgaW4gdmFsdWUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZS5lbnRyaWVzKSAmJiB2YWx1ZS5lbnRyaWVzLmV2ZXJ5KChlbnRyeTogdW5rbm93bikgPT5cbiAgICAgIHR5cGVvZiBlbnRyeSA9PT0gJ29iamVjdCcgJiYgZW50cnkgIT09IG51bGwgJiYgJ3BhdGgnIGluIGVudHJ5ICYmIHR5cGVvZiBlbnRyeS5wYXRoID09PSAnc3RyaW5nJ1xuICAgICAgJiYgJ210aW1lJyBpbiBlbnRyeSAmJiB0eXBlb2YgZW50cnkubXRpbWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZShlbnRyeS5tdGltZSlcbiAgICAgICYmICdzaXplJyBpbiBlbnRyeSAmJiB0eXBlb2YgZW50cnkuc2l6ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKGVudHJ5LnNpemUpXG4gICAgICAmJiAnaGFzaCcgaW4gZW50cnkgJiYgdHlwZW9mIGVudHJ5Lmhhc2ggPT09ICdzdHJpbmcnICYmICd2YWx1ZScgaW4gZW50cnkgJiYgaXNEYXRhU3RvcmVKc29uVmFsdWUoZW50cnkudmFsdWUpXG4gICAgKTtcbn1cblxuLyogZXNsaW50LWVuYWJsZSBuL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL25vZGUtYnVpbHRpbnMgLS0gVGhlc2UgYXJlIE9ic2lkaWFuIHJlbmRlcmVyIFdlYiBBUElzLCBub3QgTm9kZSBidWlsdGlucy4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0EsZ0NBQXFDO0FBQ3JDLGtDQUFtQztBQWdHNUIsTUFBTSxlQUFlO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJUDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTVosWUFBWSxRQUF5QztBQUMxRCxTQUFLLFFBQVEsT0FBTztBQUNwQixTQUFLLFFBQVEsT0FBTztBQUNwQixTQUFLLFlBQVksT0FBTztBQUFBLEVBQzFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxNQUFhLFFBQVEsU0FBMEQ7QUFDN0UsUUFBSSxDQUFDLEtBQUssT0FBTztBQUNmLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxNQUFNLEtBQUssTUFBTSxVQUFVLFlBQVk7QUFDNUMsWUFBTSxTQUFTLE1BQU0sS0FBSyxNQUFNLFlBQVksa0JB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
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhLXN0b3Jlcy9kYXRhLXN0b3JlLXNlZWRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBPcHRpb25hbCBjaHVua2VkIHNlZWRzIGZvciBleHBlbnNpdmUgZGVyaXZlZCBjYWNoZXMsIHdpdGggcGVyLWZpbGUgdmFsaWRhdGlvbiBiZWZvcmUgcmV1c2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBKc29uVmFsdWUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IExvY2FsRGF0YVN0b3JlIH0gZnJvbSAnLi9sb2NhbC1kYXRhLXN0b3JlLnRzJztcblxuaW1wb3J0IHsgaXNEYXRhU3RvcmVKc29uVmFsdWUgfSBmcm9tICcuL2RhdGEtc3RvcmUtcmVwbGljYS50cyc7XG5pbXBvcnQgeyBEYXRhU3RvcmVUcmFuc3BvcnQgfSBmcm9tICcuL2RhdGEtc3RvcmUtdHJhbnNwb3J0LnRzJztcblxuLyoqXG4gKiBBIGRlcml2ZWQgcmVjb3JkIHRhZ2dlZCB3aXRoIGJvdGggY2hlYXAgc3RhdGlzdGljcyBhbmQgYSBjb250ZW50IGhhc2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVN0b3JlU2VlZEVudHJ5IGV4dGVuZHMgRGF0YVN0b3JlU2VlZEZpbGUge1xuICAvKipcbiAgICogQ29udGVudCBoYXNoLCB1c2luZyB0aGUgc2FtZSBhbGdvcml0aG0gb24gZXZlcnkgZGV2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFzaDogc3RyaW5nO1xuICAvKipcbiAgICogQ29uc3VtZXItZGVmaW5lZCBKU09OIGNhY2hlIHJlY29yZC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBKc29uVmFsdWU7XG59XG5cbi8qKlxuICogQ2hlYXAgZmlsZSBpZGVudGl0eSBhbHJlYWR5IGF2YWlsYWJsZSBmcm9tIHRoZSB2YXVsdCdzIGZpbGUgdHJlZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhU3RvcmVTZWVkRmlsZSB7XG4gIC8qKlxuICAgKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgbXRpbWU6IG51bWJlcjtcbiAgLyoqXG4gICAqIFZhdWx0LXJlbGF0aXZlIHBhdGguXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGaWxlIHNpemUgaW4gYnl0ZXMuXG4gICAqL1xuICByZWFkb25seSBzaXplOiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Igb3B0aW9uYWwgY2FjaGUtc2VlZCBzaGFyaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTdG9yZVNlZWRzQ29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogRGVkaWNhdGVkIGRldmljZS1sb2NhbCBzdG9yZSB0aGF0IG93bnMgdGhlIHNlZWQgcHVibGlzaGVyIGlkZW50aXR5LlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYWw6IExvY2FsRGF0YVN0b3JlO1xuICAvKipcbiAgICogUGVyLXN0b3JlIHVzZXIgc2V0dGluZy4gRGlzYWJsZWQgbWVhbnMgbmVpdGhlciBwdWJsaXNoaW5nIG5vciBhZG9wdGluZyBzZWVkcy5cbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlOiBib29sZWFuO1xuICAvKipcbiAgICogU3RvcmUtc2NvcGVkLCBib3VuZGVkIHRyYW5zcG9ydC4gSW5jbHVkZSB0aGUgY29uc3VtZXIgc2NoZW1hIHZlcnNpb24gaW4gaXRzIHN0b3JlIGlkLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNwb3J0OiBEYXRhU3RvcmVUcmFuc3BvcnQ7XG59XG5cbi8qKlxuICogUmVzdWx0cyBvZiB2YWxpZGF0aW5nIGEgc2hhcmVkIGNhY2hlIHNlZWQgYWdhaW5zdCB0aGUgbG9jYWwgdmF1bHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVN0b3JlU2VlZFZhbGlkYXRpb24ge1xuICAvKipcbiAgICogRmlsZXMgYWJzZW50IGZyb20gdGhlIHNlZWQsIG9yIHdpdGggZGlmZmVyZW50IGNvbnRlbnQuXG4gICAqL1xuICByZWFkb25seSByZWJ1aWxkOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFZhbGlkYXRlZCBzZWVkIHJlY29yZHMsIHdpdGggbG9jYWwgZmlsZSBzdGF0aXN0aWNzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV1c2FibGU6IERhdGFTdG9yZVNlZWRFbnRyeVtdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHBlci1maWxlIHNlZWQgdmFsaWRhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0ZURhdGFTdG9yZVNlZWRQYXJhbXMge1xuICAvKipcbiAgICogU2VlZCBlbnRyaWVzIGZyb20gYSByZWNvZ25pemVkIGNvbnN1bWVyIHNjaGVtYS5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IERhdGFTdG9yZVNlZWRFbnRyeVtdO1xuICAvKipcbiAgICogQ3VycmVudCBmaWxlIHRyZWUsIGF2YWlsYWJsZSB3aXRob3V0IHJlYWRpbmcgbm90ZSB0ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXM6IHJlYWRvbmx5IERhdGFTdG9yZVNlZWRGaWxlW107XG4gIC8qKlxuICAgKiBIYXNoZXMgdGV4dCBvbmx5IHdoZW4gc2l6ZSBtYXRjaGVzIGJ1dCBtdGltZSBkaWZmZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIEZpbGUgcmVxdWlyaW5nIHZhbGlkYXRpb24uXG4gICAqIEByZXR1cm5zIEl0cyBjb250ZW50IGhhc2guXG4gICAqL1xuICByZWFkb25seSBoYXNoRmlsZTogKHBhdGg6IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmc+O1xufVxuXG5pbnRlcmZhY2UgU2VlZCB7XG4gIHJlYWRvbmx5IGVudHJpZXM6IERhdGFTdG9yZVNlZWRFbnRyeVtdO1xuICByZWFkb25seSBmb3JtYXQ6IDE7XG4gIHJlYWRvbmx5IHRpbWU6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBPcHRpb25hbCBwZXJmb3JtYW5jZSBoaW50cy4gU2VlZHMgYXJlIG5ldmVyIGF1dGhvcml0YXRpdmUgc3RhdGUgYW5kIG11c3QgYmUgdmFsaWRhdGVkIGJlZm9yZSByZXVzZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFTdG9yZVNlZWRzIHtcbiAgLyoqXG4gICAqIERldmljZS1sb2NhbCBpZGVudGl0eSBhbmQgc2VyaWFsaXphdGlvbiBib3VuZGFyeS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBsb2NhbDogTG9jYWxEYXRhU3RvcmU7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgc3RvcmUgc2hhcmVzIGNhY2hlIHNlZWRzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNoYXJlOiBib29sZWFuO1xuICAvKipcbiAgICogU3RvcmUtc2NvcGVkIHNuYXBzaG90IHRyYW5zcG9ydC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFuc3BvcnQ6IERhdGFTdG9yZVRyYW5zcG9ydDtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjYWNoZS1zZWVkIHB1Ymxpc2hlciBhbmQgcmVhZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gTG9jYWwgaWRlbnRpdHksIHRyYW5zcG9ydCBhbmQgdGhlIHBlci1zdG9yZSBzaGFyaW5nIHNldHRpbmcuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBEYXRhU3RvcmVTZWVkc0NvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgdGhpcy5sb2NhbCA9IHBhcmFtcy5sb2NhbDtcbiAgICB0aGlzLnNoYXJlID0gcGFyYW1zLnNoYXJlO1xuICAgIHRoaXMudHJhbnNwb3J0ID0gcGFyYW1zLnRyYW5zcG9ydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaXNoZXMgYSBib3VuZGVkIHNlZWQsIHJlcGxhY2luZyBvbmx5IHRoaXMgZGV2aWNlJ3MgZWFybGllciBwdWJsaWNhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBlbnRyaWVzIC0gRGVyaXZlZCByZWNvcmRzIHdpdGggZmlsZSBzdGF0aXN0aWNzIGFuZCBoYXNoZXMuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgc2hhcmluZyB3YXMgZW5hYmxlZCBhbmQgdGhlIHNlZWQgd2FzIHB1Ymxpc2hlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBwdWJsaXNoKGVudHJpZXM6IHJlYWRvbmx5IERhdGFTdG9yZVNlZWRFbnRyeVtdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLnNoYXJlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvY2FsLmV4Y2x1c2l2ZShhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCB0aGlzLmxvY2FsLmdldE9yQ3JlYXRlKCdzZWVkLWRldmljZS12MScsIHdpbmRvdy5jcnlwdG8ucmFuZG9tVVVJRCgpKTtcbiAgICAgIGlmICh0eXBlb2YgZGV2aWNlICE9PSAnc3RyaW5nJyB8fCAhL15bXFx3LV0rJC8udGVzdChkZXZpY2UpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBsb2NhbCBzZWVkIGlkZW50aXR5Jyk7XG4gICAgICB9XG4gICAgICBjb25zdCByb290ID0gYCR7dGhpcy50cmFuc3BvcnQucm9vdH0vc2VlZHMvJHtkZXZpY2V9YDtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgdGhpcy50cmFuc3BvcnQubGlzdCgpO1xuICAgICAgY29uc3QgYmFzZSA9IGAke3Jvb3R9L3NlZWQtJHt3aW5kb3cuY3J5cHRvLnJhbmRvbVVVSUQoKX0tbWFuaWZlc3RgO1xuICAgICAgYXdhaXQgdGhpcy50cmFuc3BvcnQud3JpdGVTbmFwc2hvdCh7IGJhc2UsIHBheWxvYWQ6IHsgZW50cmllcywgZm9ybWF0OiAxLCB0aW1lOiBEYXRlLm5vdygpIH0gfSk7XG4gICAgICBmb3IgKGNvbnN0IHBhdGggb2YgZmlsZXMpIHtcbiAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChgJHtyb290fS9zZWVkLWApKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy50cmFuc3BvcnQucmVtb3ZlKHBhdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgbmV3ZXN0IGNvbXBsZXRlIHNlZWQgZm9yIHRoaXMgdHJhbnNwb3J0J3Mgc2NoZW1hLlxuICAgKlxuICAgKiBAcmV0dXJucyBTZWVkIHJlY29yZHMsIG9yIGBudWxsYCBpZiBzaGFyaW5nIGlzIGRpc2FibGVkIG9yIG5vIGNvbXBsZXRlIHNlZWQgaXMgYXZhaWxhYmxlIHlldC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWFkTGF0ZXN0KCk6IFByb21pc2U8RGF0YVN0b3JlU2VlZEVudHJ5W10gfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLnNoYXJlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCB0aGlzLnRyYW5zcG9ydC5saXN0KCk7XG4gICAgbGV0IG5ld2VzdCA9IC1JbmZpbml0eTtcbiAgICBsZXQgZW50cmllczogRGF0YVN0b3JlU2VlZEVudHJ5W10gfCBudWxsID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgZmlsZXMpIHtcbiAgICAgIGlmICghL1xcL3NlZWQtW1xcdy1dKy1tYW5pZmVzdFxcLig/Om1kfGpzb24pJC8udGVzdChwYXRoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGxldCBzZWVkOiB1bmtub3duO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2VlZCA9IGF3YWl0IHRoaXMudHJhbnNwb3J0LnJlYWRTbmFwc2hvdChwYXRoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBpZiAoIShpc1NlZWQoc2VlZCkgJiYgc2VlZC50aW1lID4gbmV3ZXN0KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbmV3ZXN0ID0gc2VlZC50aW1lO1xuICAgICAgZW50cmllcyA9IHNlZWQuZW50cmllcztcbiAgICB9XG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBzZWVkIHVzaW5nIGZyZWUgZmlsZSBzdGF0aXN0aWNzIGZpcnN0LCBoYXNoaW5nIG9ubHkgc2l6ZS1lcXVhbCBtdGltZSBtaXNtYXRjaGVzLlxuICogRmlsZXMgYWJzZW50IGxvY2FsbHkgYXJlIGRpc2NhcmRlZC4gQ29uc3VtZXJzIGluZGV4IG9ubHkgdGhlIHJldHVybmVkIHJlYnVpbGQgcGF0aHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFNlZWQsIGN1cnJlbnQgZmlsZSB0cmVlIGFuZCBjb250ZW50LWhhc2ggcmVhZGVyLlxuICogQHJldHVybnMgUmV1c2FibGUgcmVjb3JkcyBhbmQgdGhlIHBhdGhzIHRoYXQgc3RpbGwgbmVlZCBpbmRleGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlRGF0YVN0b3JlU2VlZChwYXJhbXM6IFZhbGlkYXRlRGF0YVN0b3JlU2VlZFBhcmFtcyk6IFByb21pc2U8RGF0YVN0b3JlU2VlZFZhbGlkYXRpb24+IHtcbiAgY29uc3Qgc2VlZCA9IG5ldyBNYXAocGFyYW1zLmVudHJpZXMubWFwKChlbnRyeSkgPT4gW2VudHJ5LnBhdGgsIGVudHJ5XSkpO1xuICBjb25zdCByZXVzYWJsZTogRGF0YVN0b3JlU2VlZEVudHJ5W10gPSBbXTtcbiAgY29uc3QgcmVidWlsZDogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBmaWxlIG9mIHBhcmFtcy5maWxlcykge1xuICAgIGNvbnN0IGVudHJ5ID0gc2VlZC5nZXQoZmlsZS5wYXRoKTtcbiAgICBpZiAoZW50cnk/LnNpemUgPT09IGZpbGUuc2l6ZSAmJiAoZW50cnkubXRpbWUgPT09IGZpbGUubXRpbWUgfHwgZW50cnkuaGFzaCA9PT0gYXdhaXQgcGFyYW1zLmhhc2hGaWxlKGZpbGUucGF0aCkpKSB7XG4gICAgICByZXVzYWJsZS5wdXNoKHsgLi4uZW50cnksIC4uLmZpbGUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlYnVpbGQucHVzaChmaWxlLnBhdGgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyByZWJ1aWxkLCByZXVzYWJsZSB9O1xufVxuXG5mdW5jdGlvbiBpc1NlZWQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTZWVkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgJ2Zvcm1hdCcgaW4gdmFsdWUgJiYgdmFsdWUuZm9ybWF0ID09PSAxXG4gICAgJiYgJ3RpbWUnIGluIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS50aW1lID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUudGltZSlcbiAgICAmJiAnZW50cmllcycgaW4gdmFsdWUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZS5lbnRyaWVzKSAmJiB2YWx1ZS5lbnRyaWVzLmV2ZXJ5KChlbnRyeTogdW5rbm93bikgPT5cbiAgICAgIHR5cGVvZiBlbnRyeSA9PT0gJ29iamVjdCcgJiYgZW50cnkgIT09IG51bGwgJiYgJ3BhdGgnIGluIGVudHJ5ICYmIHR5cGVvZiBlbnRyeS5wYXRoID09PSAnc3RyaW5nJ1xuICAgICAgJiYgJ210aW1lJyBpbiBlbnRyeSAmJiB0eXBlb2YgZW50cnkubXRpbWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZShlbnRyeS5tdGltZSlcbiAgICAgICYmICdzaXplJyBpbiBlbnRyeSAmJiB0eXBlb2YgZW50cnkuc2l6ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKGVudHJ5LnNpemUpXG4gICAgICAmJiAnaGFzaCcgaW4gZW50cnkgJiYgdHlwZW9mIGVudHJ5Lmhhc2ggPT09ICdzdHJpbmcnICYmICd2YWx1ZScgaW4gZW50cnkgJiYgaXNEYXRhU3RvcmVKc29uVmFsdWUoZW50cnkudmFsdWUpXG4gICAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUEsZ0NBQXFDO0FBQ3JDLGtDQUFtQztBQWdHNUIsTUFBTSxlQUFlO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJUDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTVosWUFBWSxRQUF5QztBQUMxRCxTQUFLLFFBQVEsT0FBTztBQUNwQixTQUFLLFFBQVEsT0FBTztBQUNwQixTQUFLLFlBQVksT0FBTztBQUFBLEVBQzFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxNQUFhLFFBQVEsU0FBMEQ7QUFDN0UsUUFBSSxDQUFDLEtBQUssT0FBTztBQUNmLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxNQUFNLEtBQUssTUFBTSxVQUFVLFlBQVk7QUFDNUMsWUFBTSxTQUFTLE1BQU0sS0FBSyxNQUFNLFlBQVksa0JBQWtCLE9BQU8sT0FBTyxXQUFXLENBQUM7QUFDeEYsVUFBSSxPQUFPLFdBQVcsWUFBWSxDQUFDLFdBQVcsS0FBSyxNQUFNLEdBQUc7QUFDMUQsY0FBTSxJQUFJLE1BQU0sNkJBQTZCO0FBQUEsTUFDL0M7QUFDQSxZQUFNLE9BQU8sR0FBRyxLQUFLLFVBQVUsSUFBSSxVQUFVLE1BQU07QUFDbkQsWUFBTSxRQUFRLE1BQU0sS0FBSyxVQUFVLEtBQUs7QUFDeEMsWUFBTSxPQUFPLEdBQUcsSUFBSSxTQUFTLE9BQU8sT0FBTyxXQUFXLENBQUM7QUFDdkQsWUFBTSxL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
@@ -119,9 +119,9 @@ export declare class DataStoreSeeds {
119
119
  /**
120
120
  * Reads the newest complete seed for this transport's schema.
121
121
  *
122
- * @returns Seed records, or `undefined` if sharing is disabled or no complete seed is available yet.
122
+ * @returns Seed records, or `null` if sharing is disabled or no complete seed is available yet.
123
123
  */
124
- readLatest(): Promise<DataStoreSeedEntry[] | undefined>;
124
+ readLatest(): Promise<DataStoreSeedEntry[] | null>;
125
125
  }
126
126
  /**
127
127
  * Validates a seed using free file statistics first, hashing only size-equal mtime mismatches.