@mnaoumov/obsidian-lib 3.3.0 → 3.4.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 (776) hide show
  1. package/README.md +6 -0
  2. package/dist/lib/cjs/@types/i18next.d.cts +1 -1
  3. package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +3 -3
  4. package/dist/lib/cjs/@types/original-fs.d.cts +2 -1
  5. package/dist/lib/cjs/__merged.cjs +2 -21
  6. package/dist/lib/cjs/__merged.d.cts +1 -1
  7. package/dist/lib/cjs/active-file-provider.cjs +1 -47
  8. package/dist/lib/cjs/active-file-provider.d.cts +1 -1
  9. package/dist/lib/cjs/app.cjs +1 -47
  10. package/dist/lib/cjs/app.d.cts +1 -1
  11. package/dist/lib/cjs/async-with-notice.cjs +2 -21
  12. package/dist/lib/cjs/async-with-notice.d.cts +2 -1
  13. package/dist/lib/cjs/attachment-path.cjs +2 -21
  14. package/dist/lib/cjs/attachment-path.d.cts +1 -1
  15. package/dist/lib/cjs/attachment-unit-folder.cjs +2 -21
  16. package/dist/lib/cjs/attachment-unit-folder.d.cts +1 -1
  17. package/dist/lib/cjs/backlink-index.cjs +2 -21
  18. package/dist/lib/cjs/backlink-index.d.cts +1 -1
  19. package/dist/lib/cjs/backlink.cjs +2 -21
  20. package/dist/lib/cjs/backlink.d.cts +1 -1
  21. package/dist/lib/cjs/bases-view-registrar.cjs +2 -21
  22. package/dist/lib/cjs/bases-view-registrar.d.cts +1 -1
  23. package/dist/lib/cjs/callout.cjs +2 -21
  24. package/dist/lib/cjs/callout.d.cts +2 -1
  25. package/dist/lib/cjs/canvas.cjs +2 -21
  26. package/dist/lib/cjs/canvas.d.cts +1 -1
  27. package/dist/lib/cjs/case-insensitive-file-index.cjs +2 -21
  28. package/dist/lib/cjs/case-insensitive-file-index.d.cts +1 -1
  29. package/dist/lib/cjs/code-block-markdown-information.cjs +1 -47
  30. package/dist/lib/cjs/code-block-markdown-information.d.cts +1 -1
  31. package/dist/lib/cjs/code-block-reg-exp.cjs +1 -47
  32. package/dist/lib/cjs/code-block-reg-exp.d.cts +1 -1
  33. package/dist/lib/cjs/codemirror/index.cjs +2 -48
  34. package/dist/lib/cjs/codemirror/index.d.cts +1 -1
  35. package/dist/lib/cjs/codemirror/state-field-spec.cjs +1 -47
  36. package/dist/lib/cjs/codemirror/state-field-spec.d.cts +1 -1
  37. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +2 -21
  38. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +1 -1
  39. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -21
  40. package/dist/lib/cjs/command-handlers/command-handler-component.d.cts +1 -1
  41. package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -21
  42. package/dist/lib/cjs/command-handlers/command-handler.d.cts +1 -1
  43. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +2 -21
  44. package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +1 -1
  45. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +5 -24
  46. package/dist/lib/cjs/command-handlers/file-command-handler.d.cts +1 -1
  47. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +5 -24
  48. package/dist/lib/cjs/command-handlers/folder-command-handler.d.cts +1 -1
  49. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +3 -22
  50. package/dist/lib/cjs/command-handlers/global-command-handler.d.cts +1 -1
  51. package/dist/lib/cjs/command-handlers/index.cjs +11 -57
  52. package/dist/lib/cjs/command-handlers/index.d.cts +1 -1
  53. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -21
  54. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.d.cts +1 -1
  55. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +1 -47
  56. package/dist/lib/cjs/command-handlers/open-settings-command-handler.d.cts +1 -1
  57. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -47
  58. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.d.cts +1 -1
  59. package/dist/lib/cjs/command-registrar.cjs +1 -47
  60. package/dist/lib/cjs/command-registrar.d.cts +1 -1
  61. package/dist/lib/cjs/community-plugins.cjs +2 -21
  62. package/dist/lib/cjs/community-plugins.d.cts +1 -1
  63. package/dist/lib/cjs/components/abort-signal-component.cjs +2 -21
  64. package/dist/lib/cjs/components/abort-signal-component.d.cts +2 -1
  65. package/dist/lib/cjs/components/all-windows-event-component.cjs +1 -47
  66. package/dist/lib/cjs/components/all-windows-event-component.d.cts +2 -1
  67. package/dist/lib/cjs/components/async-error-handler-component.cjs +2 -21
  68. package/dist/lib/cjs/components/async-error-handler-component.d.cts +1 -1
  69. package/dist/lib/cjs/components/async-events-component.cjs +2 -21
  70. package/dist/lib/cjs/components/async-events-component.d.cts +1 -1
  71. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +1 -47
  72. package/dist/lib/cjs/components/case-insensitive-file-index-component.d.cts +1 -1
  73. package/dist/lib/cjs/components/component-ex.cjs +3 -16
  74. package/dist/lib/cjs/components/component-ex.d.cts +1 -1
  75. package/dist/lib/cjs/components/console-debug-component.cjs +2 -21
  76. package/dist/lib/cjs/components/console-debug-component.d.cts +2 -2
  77. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -21
  78. package/dist/lib/cjs/components/core-plugin-toggle-component.d.cts +1 -1
  79. package/dist/lib/cjs/components/disposable-component.cjs +3 -16
  80. package/dist/lib/cjs/components/disposable-component.d.cts +1 -1
  81. package/dist/lib/cjs/components/embed-extensions-component.cjs +1 -47
  82. package/dist/lib/cjs/components/embed-extensions-component.d.cts +1 -1
  83. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +1 -47
  84. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.d.cts +1 -1
  85. package/dist/lib/cjs/components/index.cjs +30 -76
  86. package/dist/lib/cjs/components/index.d.cts +1 -1
  87. package/dist/lib/cjs/components/layout-ready-component.cjs +2 -21
  88. package/dist/lib/cjs/components/layout-ready-component.d.cts +1 -1
  89. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +1 -47
  90. package/dist/lib/cjs/components/menu-event-registrar-component.d.cts +1 -1
  91. package/dist/lib/cjs/components/monkey-around-component.cjs +2 -21
  92. package/dist/lib/cjs/components/monkey-around-component.d.cts +1 -1
  93. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +2 -21
  94. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.d.cts +1 -1
  95. package/dist/lib/cjs/components/plugin-context-component.cjs +2 -21
  96. package/dist/lib/cjs/components/plugin-context-component.d.cts +1 -1
  97. package/dist/lib/cjs/components/plugin-gate-component.cjs +2 -21
  98. package/dist/lib/cjs/components/plugin-gate-component.d.cts +2 -1
  99. package/dist/lib/cjs/components/plugin-notice-component.cjs +3 -16
  100. package/dist/lib/cjs/components/plugin-notice-component.d.cts +2 -1
  101. package/dist/lib/cjs/components/plugin-settings-component.cjs +2 -21
  102. package/dist/lib/cjs/components/plugin-settings-component.d.cts +1 -1
  103. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -21
  104. package/dist/lib/cjs/components/plugin-settings-tab-component.d.cts +1 -1
  105. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +2 -21
  106. package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +2 -1
  107. package/dist/lib/cjs/components/pointer-position-component.cjs +1 -47
  108. package/dist/lib/cjs/components/pointer-position-component.d.cts +1 -1
  109. package/dist/lib/cjs/components/registry-component.cjs +2 -21
  110. package/dist/lib/cjs/components/registry-component.d.cts +1 -1
  111. package/dist/lib/cjs/components/release-notes-component.cjs +2 -21
  112. package/dist/lib/cjs/components/release-notes-component.d.cts +2 -1
  113. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +3 -16
  114. package/dist/lib/cjs/components/rename-delete-handler-component.d.cts +1 -1
  115. package/dist/lib/cjs/components/rmdir-guard-component.cjs +1 -47
  116. package/dist/lib/cjs/components/rmdir-guard-component.d.cts +1 -1
  117. package/dist/lib/cjs/components/settings-migration-component.cjs +2 -21
  118. package/dist/lib/cjs/components/settings-migration-component.d.cts +1 -1
  119. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +2 -21
  120. package/dist/lib/cjs/components/syntax-highlighting-component.d.cts +1 -1
  121. package/dist/lib/cjs/components/templates-language-component.cjs +3 -49
  122. package/dist/lib/cjs/components/templates-language-component.d.cts +1 -1
  123. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +3 -16
  124. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.d.cts +1 -1
  125. package/dist/lib/cjs/constructors/index.cjs +2 -48
  126. package/dist/lib/cjs/constructors/index.d.cts +1 -1
  127. package/dist/lib/cjs/css-class.cjs +1 -47
  128. package/dist/lib/cjs/css-class.d.cts +1 -1
  129. package/dist/lib/cjs/data-handler.cjs +1 -47
  130. package/dist/lib/cjs/data-handler.d.cts +1 -1
  131. package/dist/lib/cjs/dataview-link.cjs +2 -21
  132. package/dist/lib/cjs/dataview-link.d.cts +1 -1
  133. package/dist/lib/cjs/dataview.cjs +2 -21
  134. package/dist/lib/cjs/dataview.d.cts +2 -1
  135. package/dist/lib/cjs/debug.cjs +2 -21
  136. package/dist/lib/cjs/debug.d.cts +1 -1
  137. package/dist/lib/cjs/demo-vault-helper-settings.cjs +1 -47
  138. package/dist/lib/cjs/demo-vault-helper-settings.d.cts +1 -1
  139. package/dist/lib/cjs/demo-vault-helper.cjs +2 -21
  140. package/dist/lib/cjs/demo-vault-helper.d.cts +1 -1
  141. package/dist/lib/cjs/demo-vault-naming.cjs +1 -47
  142. package/dist/lib/cjs/demo-vault-naming.d.cts +1 -1
  143. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +3 -16
  144. package/dist/lib/cjs/desktop-demo-vault-opener.d.cts +1 -1
  145. package/dist/lib/cjs/desktop-trusted-input.cjs +2 -21
  146. package/dist/lib/cjs/desktop-trusted-input.d.cts +2 -1
  147. package/dist/lib/cjs/editor-extension-registrar.cjs +2 -21
  148. package/dist/lib/cjs/editor-extension-registrar.d.cts +1 -1
  149. package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -21
  150. package/dist/lib/cjs/editor-suggest-registrar.d.cts +1 -1
  151. package/dist/lib/cjs/editor.cjs +2 -21
  152. package/dist/lib/cjs/editor.d.cts +1 -1
  153. package/dist/lib/cjs/events.cjs +2 -21
  154. package/dist/lib/cjs/events.d.cts +1 -1
  155. package/dist/lib/cjs/extensions-registrar.cjs +2 -21
  156. package/dist/lib/cjs/extensions-registrar.d.cts +1 -1
  157. package/dist/lib/cjs/file-change.cjs +2 -21
  158. package/dist/lib/cjs/file-change.d.cts +2 -1
  159. package/dist/lib/cjs/file-explorer.cjs +2 -21
  160. package/dist/lib/cjs/file-explorer.d.cts +1 -1
  161. package/dist/lib/cjs/file-manager.cjs +2 -21
  162. package/dist/lib/cjs/file-manager.d.cts +2 -1
  163. package/dist/lib/cjs/file-system.cjs +2 -21
  164. package/dist/lib/cjs/file-system.d.cts +1 -1
  165. package/dist/lib/cjs/folder-note.cjs +2 -21
  166. package/dist/lib/cjs/folder-note.d.cts +1 -1
  167. package/dist/lib/cjs/frontmatter-formatting.cjs +2 -21
  168. package/dist/lib/cjs/frontmatter-formatting.d.cts +1 -1
  169. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +2 -21
  170. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.d.cts +1 -1
  171. package/dist/lib/cjs/frontmatter.cjs +2 -21
  172. package/dist/lib/cjs/frontmatter.d.cts +1 -1
  173. package/dist/lib/cjs/generated-during-build.cjs +2 -48
  174. package/dist/lib/cjs/generated-during-build.d.cts +1 -1
  175. package/dist/lib/cjs/hover-link-source-registrar.cjs +2 -21
  176. package/dist/lib/cjs/hover-link-source-registrar.d.cts +1 -1
  177. package/dist/lib/cjs/html-element.cjs +1 -47
  178. package/dist/lib/cjs/html-element.d.cts +2 -1
  179. package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -47
  180. package/dist/lib/cjs/i18n/custom-type-options.d.cts +1 -1
  181. package/dist/lib/cjs/i18n/default-translations.cjs +1 -47
  182. package/dist/lib/cjs/i18n/default-translations.d.cts +1 -1
  183. package/dist/lib/cjs/i18n/i18n.cjs +3 -22
  184. package/dist/lib/cjs/i18n/i18n.d.cts +2 -2
  185. package/dist/lib/cjs/i18n/index.cjs +5 -51
  186. package/dist/lib/cjs/i18n/index.d.cts +1 -1
  187. package/dist/lib/cjs/i18n/locales/en.cjs +1 -47
  188. package/dist/lib/cjs/i18n/locales/en.d.cts +1 -1
  189. package/dist/lib/cjs/i18n/locales/index.cjs +3 -49
  190. package/dist/lib/cjs/i18n/locales/index.d.cts +1 -1
  191. package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -47
  192. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +1 -1
  193. package/dist/lib/cjs/index.cjs +96 -142
  194. package/dist/lib/cjs/index.d.cts +1 -1
  195. package/dist/lib/cjs/is-in-obsidian.cjs +1 -47
  196. package/dist/lib/cjs/is-in-obsidian.d.cts +1 -1
  197. package/dist/lib/cjs/library-references.d.cts +2 -0
  198. package/dist/lib/cjs/library-styles.cjs +2 -21
  199. package/dist/lib/cjs/library-styles.d.cts +2 -1
  200. package/dist/lib/cjs/library.cjs +1 -47
  201. package/dist/lib/cjs/link-name.cjs +1 -47
  202. package/dist/lib/cjs/link-name.d.cts +1 -1
  203. package/dist/lib/cjs/link-update-progress.cjs +1 -47
  204. package/dist/lib/cjs/link-update-progress.d.cts +1 -1
  205. package/dist/lib/cjs/link.cjs +3 -16
  206. package/dist/lib/cjs/link.d.cts +2 -1
  207. package/dist/lib/cjs/logger.cjs +2 -21
  208. package/dist/lib/cjs/logger.d.cts +2 -1
  209. package/dist/lib/cjs/loop.cjs +3 -16
  210. package/dist/lib/cjs/loop.d.cts +2 -1
  211. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +2 -21
  212. package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +2 -1
  213. package/dist/lib/cjs/markdown-code-block-processor.cjs +2 -21
  214. package/dist/lib/cjs/markdown-code-block-processor.d.cts +2 -1
  215. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -21
  216. package/dist/lib/cjs/markdown-post-processor-registrar.d.cts +2 -1
  217. package/dist/lib/cjs/markdown-view.cjs +1 -47
  218. package/dist/lib/cjs/markdown-view.d.cts +1 -1
  219. package/dist/lib/cjs/markdown.cjs +3 -16
  220. package/dist/lib/cjs/markdown.d.cts +2 -1
  221. package/dist/lib/cjs/menu-event-registrar.cjs +1 -47
  222. package/dist/lib/cjs/menu-event-registrar.d.cts +1 -1
  223. package/dist/lib/cjs/metadata-cache.cjs +3 -16
  224. package/dist/lib/cjs/metadata-cache.d.cts +1 -1
  225. package/dist/lib/cjs/mobile-trusted-input.cjs +1 -47
  226. package/dist/lib/cjs/mobile-trusted-input.d.cts +1 -1
  227. package/dist/lib/cjs/modals/alert.cjs +2 -21
  228. package/dist/lib/cjs/modals/alert.d.cts +2 -1
  229. package/dist/lib/cjs/modals/confirm.cjs +2 -21
  230. package/dist/lib/cjs/modals/confirm.d.cts +2 -1
  231. package/dist/lib/cjs/modals/index.cjs +10 -56
  232. package/dist/lib/cjs/modals/index.d.cts +1 -1
  233. package/dist/lib/cjs/modals/minimizable-modal.cjs +2 -21
  234. package/dist/lib/cjs/modals/minimizable-modal.d.cts +1 -1
  235. package/dist/lib/cjs/modals/modal-command-builder.cjs +2 -21
  236. package/dist/lib/cjs/modals/modal-command-builder.d.cts +2 -1
  237. package/dist/lib/cjs/modals/modal.cjs +2 -21
  238. package/dist/lib/cjs/modals/modal.d.cts +1 -1
  239. package/dist/lib/cjs/modals/prompt.cjs +2 -21
  240. package/dist/lib/cjs/modals/prompt.d.cts +2 -1
  241. package/dist/lib/cjs/modals/select-item.cjs +2 -21
  242. package/dist/lib/cjs/modals/select-item.d.cts +1 -1
  243. package/dist/lib/cjs/modals/select-option.cjs +2 -21
  244. package/dist/lib/cjs/modals/select-option.d.cts +2 -1
  245. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -47
  246. package/dist/lib/cjs/modals/suggest-modal-command-builder.d.cts +1 -1
  247. package/dist/lib/cjs/note-priority.cjs +2 -21
  248. package/dist/lib/cjs/note-priority.d.cts +1 -1
  249. package/dist/lib/cjs/notebook-navigator.cjs +1 -47
  250. package/dist/lib/cjs/notebook-navigator.d.cts +1 -1
  251. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +2 -21
  252. package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +1 -1
  253. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +2 -21
  254. package/dist/lib/cjs/obsidian-protocol-handler-registrar.d.cts +1 -1
  255. package/dist/lib/cjs/obsidian-settings.cjs +2 -21
  256. package/dist/lib/cjs/obsidian-settings.d.cts +1 -1
  257. package/dist/lib/cjs/parse-link.cjs +3 -22
  258. package/dist/lib/cjs/parse-link.d.cts +1 -1
  259. package/dist/lib/cjs/path-settings.cjs +2 -21
  260. package/dist/lib/cjs/path-settings.d.cts +1 -1
  261. package/dist/lib/cjs/pdf.cjs +2 -21
  262. package/dist/lib/cjs/pdf.d.cts +2 -1
  263. package/dist/lib/cjs/plugin/index.cjs +10 -56
  264. package/dist/lib/cjs/plugin/index.d.cts +1 -1
  265. package/dist/lib/cjs/plugin/plugin-api-schema.cjs +2 -21
  266. package/dist/lib/cjs/plugin/plugin-api-schema.d.cts +1 -1
  267. package/dist/lib/cjs/plugin/plugin-api.cjs +2 -21
  268. package/dist/lib/cjs/plugin/plugin-api.d.cts +1 -1
  269. package/dist/lib/cjs/plugin/plugin-context.cjs +3 -22
  270. package/dist/lib/cjs/plugin/plugin-context.d.cts +2 -1
  271. package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -47
  272. package/dist/lib/cjs/plugin/plugin-event-source.d.cts +1 -1
  273. package/dist/lib/cjs/plugin/plugin-install-state.cjs +1 -47
  274. package/dist/lib/cjs/plugin/plugin-install-state.d.cts +1 -1
  275. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -47
  276. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +1 -1
  277. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +2 -21
  278. package/dist/lib/cjs/plugin/plugin-settings-tab.d.cts +2 -1
  279. package/dist/lib/cjs/plugin/plugin.cjs +2 -21
  280. package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
  281. package/dist/lib/cjs/plugin/settings-migration-api.cjs +2 -21
  282. package/dist/lib/cjs/plugin/settings-migration-api.d.cts +1 -1
  283. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -21
  284. package/dist/lib/cjs/plugin-cli-handler-registrar.d.cts +1 -1
  285. package/dist/lib/cjs/popovers/field-popover.cjs +2 -21
  286. package/dist/lib/cjs/popovers/field-popover.d.cts +1 -1
  287. package/dist/lib/cjs/popovers/index.cjs +4 -50
  288. package/dist/lib/cjs/popovers/index.d.cts +1 -1
  289. package/dist/lib/cjs/popovers/popover-anchor.cjs +2 -21
  290. package/dist/lib/cjs/popovers/popover-anchor.d.cts +2 -1
  291. package/dist/lib/cjs/popovers/popover.cjs +2 -21
  292. package/dist/lib/cjs/popovers/popover.d.cts +2 -1
  293. package/dist/lib/cjs/property-entry.cjs +1 -47
  294. package/dist/lib/cjs/property-entry.d.cts +1 -1
  295. package/dist/lib/cjs/queue.cjs +2 -21
  296. package/dist/lib/cjs/queue.d.cts +2 -1
  297. package/dist/lib/cjs/react/app-context.cjs +2 -21
  298. package/dist/lib/cjs/react/app-context.d.cts +1 -1
  299. package/dist/lib/cjs/react/index.cjs +2 -48
  300. package/dist/lib/cjs/react/index.d.cts +1 -1
  301. package/dist/lib/cjs/reference.cjs +2 -21
  302. package/dist/lib/cjs/reference.d.cts +1 -1
  303. package/dist/lib/cjs/resource-lock.cjs +2 -21
  304. package/dist/lib/cjs/resource-lock.d.cts +2 -1
  305. package/dist/lib/cjs/resource-url.cjs +2 -21
  306. package/dist/lib/cjs/resource-url.d.cts +1 -1
  307. package/dist/lib/cjs/ribbon-icon-registrar.cjs +2 -21
  308. package/dist/lib/cjs/ribbon-icon-registrar.d.cts +2 -1
  309. package/dist/lib/cjs/setting-components/checkbox-component.cjs +2 -21
  310. package/dist/lib/cjs/setting-components/checkbox-component.d.cts +2 -1
  311. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +2 -21
  312. package/dist/lib/cjs/setting-components/code-highlighter-component.d.cts +2 -1
  313. package/dist/lib/cjs/setting-components/date-component.cjs +2 -21
  314. package/dist/lib/cjs/setting-components/date-component.d.cts +2 -1
  315. package/dist/lib/cjs/setting-components/date-time-component.cjs +2 -21
  316. package/dist/lib/cjs/setting-components/date-time-component.d.cts +2 -1
  317. package/dist/lib/cjs/setting-components/email-component.cjs +1 -47
  318. package/dist/lib/cjs/setting-components/email-component.d.cts +2 -1
  319. package/dist/lib/cjs/setting-components/file-component.cjs +1 -47
  320. package/dist/lib/cjs/setting-components/file-component.d.cts +2 -1
  321. package/dist/lib/cjs/setting-components/index.cjs +27 -73
  322. package/dist/lib/cjs/setting-components/index.d.cts +1 -1
  323. package/dist/lib/cjs/setting-components/month-component.cjs +2 -21
  324. package/dist/lib/cjs/setting-components/month-component.d.cts +2 -1
  325. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +2 -21
  326. package/dist/lib/cjs/setting-components/multiple-dropdown-component.d.cts +3 -1
  327. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +1 -47
  328. package/dist/lib/cjs/setting-components/multiple-email-component.d.cts +2 -1
  329. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +2 -21
  330. package/dist/lib/cjs/setting-components/multiple-file-component.d.cts +2 -1
  331. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +2 -21
  332. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +2 -1
  333. package/dist/lib/cjs/setting-components/number-component.cjs +1 -47
  334. package/dist/lib/cjs/setting-components/number-component.d.cts +2 -1
  335. package/dist/lib/cjs/setting-components/password-component.cjs +1 -47
  336. package/dist/lib/cjs/setting-components/password-component.d.cts +2 -1
  337. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +2 -21
  338. package/dist/lib/cjs/setting-components/setting-component-wrapper.d.cts +2 -1
  339. package/dist/lib/cjs/setting-components/telephone-component.cjs +1 -47
  340. package/dist/lib/cjs/setting-components/telephone-component.d.cts +2 -1
  341. package/dist/lib/cjs/setting-components/text-based-component.cjs +2 -21
  342. package/dist/lib/cjs/setting-components/text-based-component.d.cts +1 -1
  343. package/dist/lib/cjs/setting-components/time-component.cjs +2 -21
  344. package/dist/lib/cjs/setting-components/time-component.d.cts +2 -1
  345. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +2 -21
  346. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.d.cts +2 -1
  347. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +2 -21
  348. package/dist/lib/cjs/setting-components/typed-dropdown-component.d.cts +3 -1
  349. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +2 -21
  350. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.d.cts +3 -1
  351. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -47
  352. package/dist/lib/cjs/setting-components/typed-range-text-component.d.cts +1 -1
  353. package/dist/lib/cjs/setting-components/typed-text-component.cjs +2 -21
  354. package/dist/lib/cjs/setting-components/typed-text-component.d.cts +2 -1
  355. package/dist/lib/cjs/setting-components/url-component.cjs +1 -47
  356. package/dist/lib/cjs/setting-components/url-component.d.cts +2 -1
  357. package/dist/lib/cjs/setting-components/validator-component.cjs +2 -21
  358. package/dist/lib/cjs/setting-components/validator-component.d.cts +1 -1
  359. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +1 -47
  360. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.d.cts +1 -1
  361. package/dist/lib/cjs/setting-components/week-component.cjs +2 -21
  362. package/dist/lib/cjs/setting-components/week-component.d.cts +2 -1
  363. package/dist/lib/cjs/setting-ex.cjs +2 -21
  364. package/dist/lib/cjs/setting-ex.d.cts +2 -1
  365. package/dist/lib/cjs/setting-group-ex.cjs +2 -21
  366. package/dist/lib/cjs/setting-group-ex.d.cts +2 -1
  367. package/dist/lib/cjs/status-bar-item-registrar.cjs +2 -21
  368. package/dist/lib/cjs/status-bar-item-registrar.d.cts +2 -1
  369. package/dist/lib/cjs/templater.cjs +1 -47
  370. package/dist/lib/cjs/templater.d.cts +1 -1
  371. package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -21
  372. package/dist/lib/cjs/transformers/duration-transformer.d.cts +1 -1
  373. package/dist/lib/cjs/transformers/index.cjs +2 -48
  374. package/dist/lib/cjs/transformers/index.d.cts +1 -1
  375. package/dist/lib/cjs/trusted-input.cjs +2 -21
  376. package/dist/lib/cjs/trusted-input.d.cts +1 -1
  377. package/dist/lib/cjs/validation.cjs +2 -21
  378. package/dist/lib/cjs/validation.d.cts +1 -1
  379. package/dist/lib/cjs/vault-delete.cjs +2 -21
  380. package/dist/lib/cjs/vault-delete.d.cts +1 -1
  381. package/dist/lib/cjs/vault-transaction.cjs +3 -16
  382. package/dist/lib/cjs/vault-transaction.d.cts +1 -1
  383. package/dist/lib/cjs/vault.cjs +3 -16
  384. package/dist/lib/cjs/vault.d.cts +1 -1
  385. package/dist/lib/cjs/view-registrar.cjs +2 -21
  386. package/dist/lib/cjs/view-registrar.d.cts +1 -1
  387. package/dist/lib/cjs/workspace.cjs +2 -21
  388. package/dist/lib/cjs/workspace.d.cts +2 -1
  389. package/dist/lib/esm/@types/i18next.d.mts +1 -1
  390. package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +3 -3
  391. package/dist/lib/esm/@types/original-fs.d.mts +2 -1
  392. package/dist/lib/esm/__merged.d.mts +1 -1
  393. package/dist/lib/esm/__merged.mjs +2 -11
  394. package/dist/lib/esm/active-file-provider.d.mts +1 -1
  395. package/dist/lib/esm/active-file-provider.mjs +1 -37
  396. package/dist/lib/esm/app.d.mts +1 -1
  397. package/dist/lib/esm/app.mjs +1 -37
  398. package/dist/lib/esm/async-with-notice.d.mts +2 -1
  399. package/dist/lib/esm/async-with-notice.mjs +2 -11
  400. package/dist/lib/esm/attachment-path.d.mts +1 -1
  401. package/dist/lib/esm/attachment-path.mjs +2 -11
  402. package/dist/lib/esm/attachment-unit-folder.d.mts +1 -1
  403. package/dist/lib/esm/attachment-unit-folder.mjs +2 -11
  404. package/dist/lib/esm/backlink-index.d.mts +1 -1
  405. package/dist/lib/esm/backlink-index.mjs +2 -11
  406. package/dist/lib/esm/backlink.d.mts +1 -1
  407. package/dist/lib/esm/backlink.mjs +2 -11
  408. package/dist/lib/esm/bases-view-registrar.d.mts +1 -1
  409. package/dist/lib/esm/bases-view-registrar.mjs +2 -11
  410. package/dist/lib/esm/callout.d.mts +2 -1
  411. package/dist/lib/esm/callout.mjs +2 -11
  412. package/dist/lib/esm/canvas.d.mts +1 -1
  413. package/dist/lib/esm/canvas.mjs +2 -11
  414. package/dist/lib/esm/case-insensitive-file-index.d.mts +1 -1
  415. package/dist/lib/esm/case-insensitive-file-index.mjs +2 -11
  416. package/dist/lib/esm/code-block-markdown-information.d.mts +1 -1
  417. package/dist/lib/esm/code-block-markdown-information.mjs +0 -36
  418. package/dist/lib/esm/code-block-reg-exp.d.mts +1 -1
  419. package/dist/lib/esm/code-block-reg-exp.mjs +1 -37
  420. package/dist/lib/esm/codemirror/index.d.mts +1 -1
  421. package/dist/lib/esm/codemirror/index.mjs +1 -37
  422. package/dist/lib/esm/codemirror/state-field-spec.d.mts +1 -1
  423. package/dist/lib/esm/codemirror/state-field-spec.mjs +0 -36
  424. package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +1 -1
  425. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +2 -11
  426. package/dist/lib/esm/command-handlers/command-handler-component.d.mts +1 -1
  427. package/dist/lib/esm/command-handlers/command-handler-component.mjs +2 -11
  428. package/dist/lib/esm/command-handlers/command-handler.d.mts +1 -1
  429. package/dist/lib/esm/command-handlers/command-handler.mjs +2 -11
  430. package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +1 -1
  431. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +2 -11
  432. package/dist/lib/esm/command-handlers/file-command-handler.d.mts +1 -1
  433. package/dist/lib/esm/command-handlers/file-command-handler.mjs +5 -14
  434. package/dist/lib/esm/command-handlers/folder-command-handler.d.mts +1 -1
  435. package/dist/lib/esm/command-handlers/folder-command-handler.mjs +5 -14
  436. package/dist/lib/esm/command-handlers/global-command-handler.d.mts +1 -1
  437. package/dist/lib/esm/command-handlers/global-command-handler.mjs +3 -12
  438. package/dist/lib/esm/command-handlers/index.d.mts +1 -1
  439. package/dist/lib/esm/command-handlers/index.mjs +1 -37
  440. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.d.mts +1 -1
  441. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +2 -11
  442. package/dist/lib/esm/command-handlers/open-settings-command-handler.d.mts +1 -1
  443. package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +1 -37
  444. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.d.mts +1 -1
  445. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +1 -37
  446. package/dist/lib/esm/command-registrar.d.mts +1 -1
  447. package/dist/lib/esm/command-registrar.mjs +1 -37
  448. package/dist/lib/esm/community-plugins.d.mts +1 -1
  449. package/dist/lib/esm/community-plugins.mjs +2 -11
  450. package/dist/lib/esm/components/abort-signal-component.d.mts +2 -1
  451. package/dist/lib/esm/components/abort-signal-component.mjs +2 -11
  452. package/dist/lib/esm/components/all-windows-event-component.d.mts +2 -1
  453. package/dist/lib/esm/components/all-windows-event-component.mjs +1 -37
  454. package/dist/lib/esm/components/async-error-handler-component.d.mts +1 -1
  455. package/dist/lib/esm/components/async-error-handler-component.mjs +2 -11
  456. package/dist/lib/esm/components/async-events-component.d.mts +1 -1
  457. package/dist/lib/esm/components/async-events-component.mjs +2 -11
  458. package/dist/lib/esm/components/case-insensitive-file-index-component.d.mts +1 -1
  459. package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +1 -37
  460. package/dist/lib/esm/components/component-ex.d.mts +1 -1
  461. package/dist/lib/esm/components/component-ex.mjs +3 -6
  462. package/dist/lib/esm/components/console-debug-component.d.mts +2 -2
  463. package/dist/lib/esm/components/console-debug-component.mjs +2 -11
  464. package/dist/lib/esm/components/core-plugin-toggle-component.d.mts +1 -1
  465. package/dist/lib/esm/components/core-plugin-toggle-component.mjs +2 -11
  466. package/dist/lib/esm/components/disposable-component.d.mts +1 -1
  467. package/dist/lib/esm/components/disposable-component.mjs +3 -6
  468. package/dist/lib/esm/components/embed-extensions-component.d.mts +1 -1
  469. package/dist/lib/esm/components/embed-extensions-component.mjs +1 -37
  470. package/dist/lib/esm/components/generate-markdown-link-default-params-component.d.mts +1 -1
  471. package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +1 -37
  472. package/dist/lib/esm/components/index.d.mts +1 -1
  473. package/dist/lib/esm/components/index.mjs +1 -37
  474. package/dist/lib/esm/components/layout-ready-component.d.mts +1 -1
  475. package/dist/lib/esm/components/layout-ready-component.mjs +2 -11
  476. package/dist/lib/esm/components/menu-event-registrar-component.d.mts +1 -1
  477. package/dist/lib/esm/components/menu-event-registrar-component.mjs +1 -37
  478. package/dist/lib/esm/components/monkey-around-component.d.mts +1 -1
  479. package/dist/lib/esm/components/monkey-around-component.mjs +2 -11
  480. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.d.mts +1 -1
  481. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +2 -11
  482. package/dist/lib/esm/components/plugin-context-component.d.mts +1 -1
  483. package/dist/lib/esm/components/plugin-context-component.mjs +2 -11
  484. package/dist/lib/esm/components/plugin-gate-component.d.mts +2 -1
  485. package/dist/lib/esm/components/plugin-gate-component.mjs +2 -11
  486. package/dist/lib/esm/components/plugin-notice-component.d.mts +2 -1
  487. package/dist/lib/esm/components/plugin-notice-component.mjs +3 -6
  488. package/dist/lib/esm/components/plugin-settings-component.d.mts +1 -1
  489. package/dist/lib/esm/components/plugin-settings-component.mjs +2 -11
  490. package/dist/lib/esm/components/plugin-settings-tab-component.d.mts +1 -1
  491. package/dist/lib/esm/components/plugin-settings-tab-component.mjs +2 -11
  492. package/dist/lib/esm/components/plugin-suggestion-component.d.mts +2 -1
  493. package/dist/lib/esm/components/plugin-suggestion-component.mjs +2 -11
  494. package/dist/lib/esm/components/pointer-position-component.d.mts +1 -1
  495. package/dist/lib/esm/components/pointer-position-component.mjs +1 -37
  496. package/dist/lib/esm/components/registry-component.d.mts +1 -1
  497. package/dist/lib/esm/components/registry-component.mjs +2 -11
  498. package/dist/lib/esm/components/release-notes-component.d.mts +2 -1
  499. package/dist/lib/esm/components/release-notes-component.mjs +2 -11
  500. package/dist/lib/esm/components/rename-delete-handler-component.d.mts +1 -1
  501. package/dist/lib/esm/components/rename-delete-handler-component.mjs +3 -6
  502. package/dist/lib/esm/components/rmdir-guard-component.d.mts +1 -1
  503. package/dist/lib/esm/components/rmdir-guard-component.mjs +1 -37
  504. package/dist/lib/esm/components/settings-migration-component.d.mts +1 -1
  505. package/dist/lib/esm/components/settings-migration-component.mjs +2 -11
  506. package/dist/lib/esm/components/syntax-highlighting-component.d.mts +1 -1
  507. package/dist/lib/esm/components/syntax-highlighting-component.mjs +2 -11
  508. package/dist/lib/esm/components/templates-language-component.d.mts +1 -1
  509. package/dist/lib/esm/components/templates-language-component.mjs +3 -39
  510. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.d.mts +1 -1
  511. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +3 -6
  512. package/dist/lib/esm/constructors/index.d.mts +1 -1
  513. package/dist/lib/esm/constructors/index.mjs +1 -37
  514. package/dist/lib/esm/css-class.d.mts +1 -1
  515. package/dist/lib/esm/css-class.mjs +1 -37
  516. package/dist/lib/esm/data-handler.d.mts +1 -1
  517. package/dist/lib/esm/data-handler.mjs +1 -37
  518. package/dist/lib/esm/dataview-link.d.mts +1 -1
  519. package/dist/lib/esm/dataview-link.mjs +2 -11
  520. package/dist/lib/esm/dataview.d.mts +2 -1
  521. package/dist/lib/esm/dataview.mjs +2 -11
  522. package/dist/lib/esm/debug.d.mts +1 -1
  523. package/dist/lib/esm/debug.mjs +2 -11
  524. package/dist/lib/esm/demo-vault-helper-settings.d.mts +1 -1
  525. package/dist/lib/esm/demo-vault-helper-settings.mjs +0 -36
  526. package/dist/lib/esm/demo-vault-helper.d.mts +1 -1
  527. package/dist/lib/esm/demo-vault-helper.mjs +2 -11
  528. package/dist/lib/esm/demo-vault-naming.d.mts +1 -1
  529. package/dist/lib/esm/demo-vault-naming.mjs +1 -37
  530. package/dist/lib/esm/desktop-demo-vault-opener.d.mts +1 -1
  531. package/dist/lib/esm/desktop-demo-vault-opener.mjs +3 -6
  532. package/dist/lib/esm/desktop-trusted-input.d.mts +2 -1
  533. package/dist/lib/esm/desktop-trusted-input.mjs +2 -11
  534. package/dist/lib/esm/editor-extension-registrar.d.mts +1 -1
  535. package/dist/lib/esm/editor-extension-registrar.mjs +2 -11
  536. package/dist/lib/esm/editor-suggest-registrar.d.mts +1 -1
  537. package/dist/lib/esm/editor-suggest-registrar.mjs +2 -11
  538. package/dist/lib/esm/editor.d.mts +1 -1
  539. package/dist/lib/esm/editor.mjs +2 -11
  540. package/dist/lib/esm/events.d.mts +1 -1
  541. package/dist/lib/esm/events.mjs +2 -11
  542. package/dist/lib/esm/extensions-registrar.d.mts +1 -1
  543. package/dist/lib/esm/extensions-registrar.mjs +2 -11
  544. package/dist/lib/esm/file-change.d.mts +2 -1
  545. package/dist/lib/esm/file-change.mjs +2 -11
  546. package/dist/lib/esm/file-explorer.d.mts +1 -1
  547. package/dist/lib/esm/file-explorer.mjs +2 -11
  548. package/dist/lib/esm/file-manager.d.mts +2 -1
  549. package/dist/lib/esm/file-manager.mjs +2 -11
  550. package/dist/lib/esm/file-system.d.mts +1 -1
  551. package/dist/lib/esm/file-system.mjs +2 -11
  552. package/dist/lib/esm/folder-note.d.mts +1 -1
  553. package/dist/lib/esm/folder-note.mjs +2 -11
  554. package/dist/lib/esm/frontmatter-formatting.d.mts +1 -1
  555. package/dist/lib/esm/frontmatter-formatting.mjs +2 -11
  556. package/dist/lib/esm/frontmatter-link-cache-with-offsets.d.mts +1 -1
  557. package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +2 -11
  558. package/dist/lib/esm/frontmatter.d.mts +1 -1
  559. package/dist/lib/esm/frontmatter.mjs +2 -11
  560. package/dist/lib/esm/generated-during-build.d.mts +1 -1
  561. package/dist/lib/esm/generated-during-build.mjs +2 -38
  562. package/dist/lib/esm/hover-link-source-registrar.d.mts +1 -1
  563. package/dist/lib/esm/hover-link-source-registrar.mjs +2 -11
  564. package/dist/lib/esm/html-element.d.mts +2 -1
  565. package/dist/lib/esm/html-element.mjs +1 -37
  566. package/dist/lib/esm/i18n/custom-type-options.d.mts +1 -1
  567. package/dist/lib/esm/i18n/custom-type-options.mjs +1 -37
  568. package/dist/lib/esm/i18n/default-translations.d.mts +1 -1
  569. package/dist/lib/esm/i18n/default-translations.mjs +1 -37
  570. package/dist/lib/esm/i18n/i18n.d.mts +2 -2
  571. package/dist/lib/esm/i18n/i18n.mjs +2 -11
  572. package/dist/lib/esm/i18n/index.d.mts +1 -1
  573. package/dist/lib/esm/i18n/index.mjs +1 -37
  574. package/dist/lib/esm/i18n/locales/en.d.mts +1 -1
  575. package/dist/lib/esm/i18n/locales/en.mjs +1 -37
  576. package/dist/lib/esm/i18n/locales/index.d.mts +1 -1
  577. package/dist/lib/esm/i18n/locales/index.mjs +1 -37
  578. package/dist/lib/esm/i18n/locales/translations-map.d.mts +1 -1
  579. package/dist/lib/esm/i18n/locales/translations-map.mjs +1 -37
  580. package/dist/lib/esm/index.d.mts +1 -1
  581. package/dist/lib/esm/index.mjs +1 -37
  582. package/dist/lib/esm/is-in-obsidian.d.mts +1 -1
  583. package/dist/lib/esm/is-in-obsidian.mjs +1 -37
  584. package/dist/lib/esm/library-references.d.mts +2 -0
  585. package/dist/lib/esm/library-styles.d.mts +2 -1
  586. package/dist/lib/esm/library-styles.mjs +2 -11
  587. package/dist/lib/esm/library.mjs +1 -37
  588. package/dist/lib/esm/link-name.d.mts +1 -1
  589. package/dist/lib/esm/link-name.mjs +1 -37
  590. package/dist/lib/esm/link-update-progress.d.mts +1 -1
  591. package/dist/lib/esm/link-update-progress.mjs +0 -36
  592. package/dist/lib/esm/link.d.mts +2 -1
  593. package/dist/lib/esm/link.mjs +3 -6
  594. package/dist/lib/esm/logger.d.mts +2 -1
  595. package/dist/lib/esm/logger.mjs +2 -11
  596. package/dist/lib/esm/loop.d.mts +2 -1
  597. package/dist/lib/esm/loop.mjs +3 -6
  598. package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +2 -1
  599. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +2 -11
  600. package/dist/lib/esm/markdown-code-block-processor.d.mts +2 -1
  601. package/dist/lib/esm/markdown-code-block-processor.mjs +2 -11
  602. package/dist/lib/esm/markdown-post-processor-registrar.d.mts +2 -1
  603. package/dist/lib/esm/markdown-post-processor-registrar.mjs +2 -11
  604. package/dist/lib/esm/markdown-view.d.mts +1 -1
  605. package/dist/lib/esm/markdown-view.mjs +1 -37
  606. package/dist/lib/esm/markdown.d.mts +2 -1
  607. package/dist/lib/esm/markdown.mjs +3 -6
  608. package/dist/lib/esm/menu-event-registrar.d.mts +1 -1
  609. package/dist/lib/esm/menu-event-registrar.mjs +0 -36
  610. package/dist/lib/esm/metadata-cache.d.mts +1 -1
  611. package/dist/lib/esm/metadata-cache.mjs +3 -6
  612. package/dist/lib/esm/mobile-trusted-input.d.mts +1 -1
  613. package/dist/lib/esm/mobile-trusted-input.mjs +1 -37
  614. package/dist/lib/esm/modals/alert.d.mts +2 -1
  615. package/dist/lib/esm/modals/alert.mjs +2 -11
  616. package/dist/lib/esm/modals/confirm.d.mts +2 -1
  617. package/dist/lib/esm/modals/confirm.mjs +2 -11
  618. package/dist/lib/esm/modals/index.d.mts +1 -1
  619. package/dist/lib/esm/modals/index.mjs +1 -37
  620. package/dist/lib/esm/modals/minimizable-modal.d.mts +1 -1
  621. package/dist/lib/esm/modals/minimizable-modal.mjs +2 -11
  622. package/dist/lib/esm/modals/modal-command-builder.d.mts +2 -1
  623. package/dist/lib/esm/modals/modal-command-builder.mjs +2 -11
  624. package/dist/lib/esm/modals/modal.d.mts +1 -1
  625. package/dist/lib/esm/modals/modal.mjs +2 -11
  626. package/dist/lib/esm/modals/prompt.d.mts +2 -1
  627. package/dist/lib/esm/modals/prompt.mjs +2 -11
  628. package/dist/lib/esm/modals/select-item.d.mts +1 -1
  629. package/dist/lib/esm/modals/select-item.mjs +2 -11
  630. package/dist/lib/esm/modals/select-option.d.mts +2 -1
  631. package/dist/lib/esm/modals/select-option.mjs +2 -11
  632. package/dist/lib/esm/modals/suggest-modal-command-builder.d.mts +1 -1
  633. package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +1 -37
  634. package/dist/lib/esm/note-priority.d.mts +1 -1
  635. package/dist/lib/esm/note-priority.mjs +2 -11
  636. package/dist/lib/esm/notebook-navigator.d.mts +1 -1
  637. package/dist/lib/esm/notebook-navigator.mjs +1 -37
  638. package/dist/lib/esm/obsidian-dev-utils-state.d.mts +1 -1
  639. package/dist/lib/esm/obsidian-dev-utils-state.mjs +2 -11
  640. package/dist/lib/esm/obsidian-protocol-handler-registrar.d.mts +1 -1
  641. package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +2 -11
  642. package/dist/lib/esm/obsidian-settings.d.mts +1 -1
  643. package/dist/lib/esm/obsidian-settings.mjs +2 -11
  644. package/dist/lib/esm/parse-link.d.mts +1 -1
  645. package/dist/lib/esm/parse-link.mjs +2 -11
  646. package/dist/lib/esm/path-settings.d.mts +1 -1
  647. package/dist/lib/esm/path-settings.mjs +2 -11
  648. package/dist/lib/esm/pdf.d.mts +2 -1
  649. package/dist/lib/esm/pdf.mjs +2 -11
  650. package/dist/lib/esm/plugin/index.d.mts +1 -1
  651. package/dist/lib/esm/plugin/index.mjs +1 -37
  652. package/dist/lib/esm/plugin/plugin-api-schema.d.mts +1 -1
  653. package/dist/lib/esm/plugin/plugin-api-schema.mjs +2 -11
  654. package/dist/lib/esm/plugin/plugin-api.d.mts +1 -1
  655. package/dist/lib/esm/plugin/plugin-api.mjs +2 -11
  656. package/dist/lib/esm/plugin/plugin-context.d.mts +2 -1
  657. package/dist/lib/esm/plugin/plugin-context.mjs +3 -12
  658. package/dist/lib/esm/plugin/plugin-event-source.d.mts +1 -1
  659. package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -37
  660. package/dist/lib/esm/plugin/plugin-install-state.d.mts +1 -1
  661. package/dist/lib/esm/plugin/plugin-install-state.mjs +1 -37
  662. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +1 -1
  663. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -37
  664. package/dist/lib/esm/plugin/plugin-settings-tab.d.mts +2 -1
  665. package/dist/lib/esm/plugin/plugin-settings-tab.mjs +2 -11
  666. package/dist/lib/esm/plugin/plugin.d.mts +1 -1
  667. package/dist/lib/esm/plugin/plugin.mjs +2 -11
  668. package/dist/lib/esm/plugin/settings-migration-api.d.mts +1 -1
  669. package/dist/lib/esm/plugin/settings-migration-api.mjs +2 -11
  670. package/dist/lib/esm/plugin-cli-handler-registrar.d.mts +1 -1
  671. package/dist/lib/esm/plugin-cli-handler-registrar.mjs +2 -11
  672. package/dist/lib/esm/popovers/field-popover.d.mts +1 -1
  673. package/dist/lib/esm/popovers/field-popover.mjs +2 -11
  674. package/dist/lib/esm/popovers/index.d.mts +1 -1
  675. package/dist/lib/esm/popovers/index.mjs +1 -37
  676. package/dist/lib/esm/popovers/popover-anchor.d.mts +2 -1
  677. package/dist/lib/esm/popovers/popover-anchor.mjs +2 -11
  678. package/dist/lib/esm/popovers/popover.d.mts +2 -1
  679. package/dist/lib/esm/popovers/popover.mjs +2 -11
  680. package/dist/lib/esm/property-entry.d.mts +1 -1
  681. package/dist/lib/esm/property-entry.mjs +1 -37
  682. package/dist/lib/esm/queue.d.mts +2 -1
  683. package/dist/lib/esm/queue.mjs +2 -11
  684. package/dist/lib/esm/react/app-context.d.mts +1 -1
  685. package/dist/lib/esm/react/app-context.mjs +2 -11
  686. package/dist/lib/esm/react/index.d.mts +1 -1
  687. package/dist/lib/esm/react/index.mjs +1 -37
  688. package/dist/lib/esm/reference.d.mts +1 -1
  689. package/dist/lib/esm/reference.mjs +2 -11
  690. package/dist/lib/esm/resource-lock.d.mts +2 -1
  691. package/dist/lib/esm/resource-lock.mjs +2 -11
  692. package/dist/lib/esm/resource-url.d.mts +1 -1
  693. package/dist/lib/esm/resource-url.mjs +2 -11
  694. package/dist/lib/esm/ribbon-icon-registrar.d.mts +2 -1
  695. package/dist/lib/esm/ribbon-icon-registrar.mjs +2 -11
  696. package/dist/lib/esm/setting-components/checkbox-component.d.mts +2 -1
  697. package/dist/lib/esm/setting-components/checkbox-component.mjs +2 -11
  698. package/dist/lib/esm/setting-components/code-highlighter-component.d.mts +2 -1
  699. package/dist/lib/esm/setting-components/code-highlighter-component.mjs +2 -11
  700. package/dist/lib/esm/setting-components/date-component.d.mts +2 -1
  701. package/dist/lib/esm/setting-components/date-component.mjs +2 -11
  702. package/dist/lib/esm/setting-components/date-time-component.d.mts +2 -1
  703. package/dist/lib/esm/setting-components/date-time-component.mjs +2 -11
  704. package/dist/lib/esm/setting-components/email-component.d.mts +2 -1
  705. package/dist/lib/esm/setting-components/email-component.mjs +1 -37
  706. package/dist/lib/esm/setting-components/file-component.d.mts +2 -1
  707. package/dist/lib/esm/setting-components/file-component.mjs +1 -37
  708. package/dist/lib/esm/setting-components/index.d.mts +1 -1
  709. package/dist/lib/esm/setting-components/index.mjs +1 -37
  710. package/dist/lib/esm/setting-components/month-component.d.mts +2 -1
  711. package/dist/lib/esm/setting-components/month-component.mjs +2 -11
  712. package/dist/lib/esm/setting-components/multiple-dropdown-component.d.mts +3 -1
  713. package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +2 -11
  714. package/dist/lib/esm/setting-components/multiple-email-component.d.mts +2 -1
  715. package/dist/lib/esm/setting-components/multiple-email-component.mjs +1 -37
  716. package/dist/lib/esm/setting-components/multiple-file-component.d.mts +2 -1
  717. package/dist/lib/esm/setting-components/multiple-file-component.mjs +2 -11
  718. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +2 -1
  719. package/dist/lib/esm/setting-components/multiple-text-component.mjs +2 -11
  720. package/dist/lib/esm/setting-components/number-component.d.mts +2 -1
  721. package/dist/lib/esm/setting-components/number-component.mjs +1 -37
  722. package/dist/lib/esm/setting-components/password-component.d.mts +2 -1
  723. package/dist/lib/esm/setting-components/password-component.mjs +1 -37
  724. package/dist/lib/esm/setting-components/setting-component-wrapper.d.mts +2 -1
  725. package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +2 -11
  726. package/dist/lib/esm/setting-components/telephone-component.d.mts +2 -1
  727. package/dist/lib/esm/setting-components/telephone-component.mjs +1 -37
  728. package/dist/lib/esm/setting-components/text-based-component.d.mts +1 -1
  729. package/dist/lib/esm/setting-components/text-based-component.mjs +2 -11
  730. package/dist/lib/esm/setting-components/time-component.d.mts +2 -1
  731. package/dist/lib/esm/setting-components/time-component.mjs +2 -11
  732. package/dist/lib/esm/setting-components/tri-state-checkbox-component.d.mts +2 -1
  733. package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +2 -11
  734. package/dist/lib/esm/setting-components/typed-dropdown-component.d.mts +3 -1
  735. package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +2 -11
  736. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.d.mts +3 -1
  737. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +2 -11
  738. package/dist/lib/esm/setting-components/typed-range-text-component.d.mts +1 -1
  739. package/dist/lib/esm/setting-components/typed-range-text-component.mjs +1 -37
  740. package/dist/lib/esm/setting-components/typed-text-component.d.mts +2 -1
  741. package/dist/lib/esm/setting-components/typed-text-component.mjs +2 -11
  742. package/dist/lib/esm/setting-components/url-component.d.mts +2 -1
  743. package/dist/lib/esm/setting-components/url-component.mjs +1 -37
  744. package/dist/lib/esm/setting-components/validator-component.d.mts +1 -1
  745. package/dist/lib/esm/setting-components/validator-component.mjs +2 -11
  746. package/dist/lib/esm/setting-components/value-component-with-change-tracking.d.mts +1 -1
  747. package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +0 -36
  748. package/dist/lib/esm/setting-components/week-component.d.mts +2 -1
  749. package/dist/lib/esm/setting-components/week-component.mjs +2 -11
  750. package/dist/lib/esm/setting-ex.d.mts +2 -1
  751. package/dist/lib/esm/setting-ex.mjs +2 -11
  752. package/dist/lib/esm/setting-group-ex.d.mts +2 -1
  753. package/dist/lib/esm/setting-group-ex.mjs +2 -11
  754. package/dist/lib/esm/status-bar-item-registrar.d.mts +2 -1
  755. package/dist/lib/esm/status-bar-item-registrar.mjs +2 -11
  756. package/dist/lib/esm/templater.d.mts +1 -1
  757. package/dist/lib/esm/templater.mjs +1 -37
  758. package/dist/lib/esm/transformers/duration-transformer.d.mts +1 -1
  759. package/dist/lib/esm/transformers/duration-transformer.mjs +2 -11
  760. package/dist/lib/esm/transformers/index.d.mts +1 -1
  761. package/dist/lib/esm/transformers/index.mjs +1 -37
  762. package/dist/lib/esm/trusted-input.d.mts +1 -1
  763. package/dist/lib/esm/trusted-input.mjs +2 -11
  764. package/dist/lib/esm/validation.d.mts +1 -1
  765. package/dist/lib/esm/validation.mjs +2 -11
  766. package/dist/lib/esm/vault-delete.d.mts +1 -1
  767. package/dist/lib/esm/vault-delete.mjs +2 -11
  768. package/dist/lib/esm/vault-transaction.d.mts +1 -1
  769. package/dist/lib/esm/vault-transaction.mjs +3 -6
  770. package/dist/lib/esm/vault.d.mts +1 -1
  771. package/dist/lib/esm/vault.mjs +3 -6
  772. package/dist/lib/esm/view-registrar.d.mts +1 -1
  773. package/dist/lib/esm/view-registrar.mjs +2 -11
  774. package/dist/lib/esm/workspace.d.mts +2 -1
  775. package/dist/lib/esm/workspace.mjs +2 -11
  776. package/package.json +24 -8
@@ -2,13 +2,7 @@
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
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,10 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- (function initEsm() {
37
- ensureDisposeSymbols();
38
- ensureBrowserProcess();
39
- })();
30
+ ensureBrowserProcess();
40
31
  })();
41
32
 
42
33
  import {
@@ -65,4 +56,4 @@ class PluginEditorSuggestRegistrar {
65
56
  export {
66
57
  PluginEditorSuggestRegistrar
67
58
  };
68
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2VkaXRvci1zdWdnZXN0LXJlZ2lzdHJhci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVkaXRvciBzdWdnZXN0IHJlZ2lzdHJhcnMuXG4gKi9cblxuaW1wb3J0IHtcbiAgRWRpdG9yU3VnZ2VzdCxcbiAgUGx1Z2luXG59IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBFZGl0b3Igc3VnZ2VzdCByZWdpc3RyYXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yU3VnZ2VzdFJlZ2lzdHJhciB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYW4gZWRpdG9yIHN1Z2dlc3QuXG4gICAqXG4gICAqIEBwYXJhbSBlZGl0b3JTdWdnZXN0IC0gVGhlIGVkaXRvciBzdWdnZXN0IHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcmVnaXN0ZXJFZGl0b3JTdWdnZXN0OiAoZWRpdG9yU3VnZ2VzdDogRWRpdG9yU3VnZ2VzdDx1bmtub3duPikgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBFZGl0b3Igc3VnZ2VzdCByZWdpc3RyYXIgaW4gYW4gT2JzaWRpYW4gcGx1Z2luLlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luRWRpdG9yU3VnZ2VzdFJlZ2lzdHJhciBpbXBsZW1lbnRzIEVkaXRvclN1Z2dlc3RSZWdpc3RyYXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUge0BsaW5rIFBsdWdpbkVkaXRvclN1Z2dlc3RSZWdpc3RyYXJ9IGNsYXNzLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIE9ic2lkaWFuIHBsdWdpbiBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luOiBQbHVnaW4pIHt9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhbiBlZGl0b3Igc3VnZ2VzdC5cbiAgICpcbiAgICogQHBhcmFtIGVkaXRvclN1Z2dlc3QgLSBUaGUgZWRpdG9yIHN1Z2dlc3QgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJFZGl0b3JTdWdnZXN0KGVkaXRvclN1Z2dlc3Q6IEVkaXRvclN1Z2dlc3Q8dW5rbm93bj4pOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvclN1Z2dlc3QoZWRpdG9yU3VnZ2VzdCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFpQkEsTUFBTSw2QkFBK0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNbkUsWUFBK0IsUUFBZ0I7QUFBaEI7QUFBQSxFQUFpQjtBQUFBLEVBQWpCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTy9CLHNCQUFzQixlQUE2QztBQUN4RSxTQUFLLE9BQU8sc0JBQXNCLGFBQWE7QUFBQSxFQUNqRDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lZGl0b3Itc3VnZ2VzdC1yZWdpc3RyYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVkaXRvciBzdWdnZXN0IHJlZ2lzdHJhcnMuXG4gKi9cblxuaW1wb3J0IHtcbiAgRWRpdG9yU3VnZ2VzdCxcbiAgUGx1Z2luXG59IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBFZGl0b3Igc3VnZ2VzdCByZWdpc3RyYXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yU3VnZ2VzdFJlZ2lzdHJhciB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYW4gZWRpdG9yIHN1Z2dlc3QuXG4gICAqXG4gICAqIEBwYXJhbSBlZGl0b3JTdWdnZXN0IC0gVGhlIGVkaXRvciBzdWdnZXN0IHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcmVnaXN0ZXJFZGl0b3JTdWdnZXN0OiAoZWRpdG9yU3VnZ2VzdDogRWRpdG9yU3VnZ2VzdDx1bmtub3duPikgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBFZGl0b3Igc3VnZ2VzdCByZWdpc3RyYXIgaW4gYW4gT2JzaWRpYW4gcGx1Z2luLlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luRWRpdG9yU3VnZ2VzdFJlZ2lzdHJhciBpbXBsZW1lbnRzIEVkaXRvclN1Z2dlc3RSZWdpc3RyYXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUge0BsaW5rIFBsdWdpbkVkaXRvclN1Z2dlc3RSZWdpc3RyYXJ9IGNsYXNzLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIE9ic2lkaWFuIHBsdWdpbiBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luOiBQbHVnaW4pIHt9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhbiBlZGl0b3Igc3VnZ2VzdC5cbiAgICpcbiAgICogQHBhcmFtIGVkaXRvclN1Z2dlc3QgLSBUaGUgZWRpdG9yIHN1Z2dlc3QgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJFZGl0b3JTdWdnZXN0KGVkaXRvclN1Z2dlc3Q6IEVkaXRvclN1Z2dlc3Q8dW5rbm93bj4pOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvclN1Z2dlc3QoZWRpdG9yU3VnZ2VzdCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWlCQSxNQUFNLDZCQUErRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1uRSxZQUErQixRQUFnQjtBQUFoQjtBQUFBLEVBQWlCO0FBQUEsRUFBakI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPL0Isc0JBQXNCLGVBQTZDO0FBQ3hFLFNBQUssT0FBTyxzQkFBc0IsYUFBYTtBQUFBLEVBQ2pEO0FBQ0Y7IiwibmFtZXMiOltdfQ==
@@ -1,4 +1,4 @@
1
- /// <reference path="./library.d.mts" />
1
+ /// <reference path="./library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,13 +2,7 @@
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
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,10 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- (function initEsm() {
37
- ensureDisposeSymbols();
38
- ensureBrowserProcess();
39
- })();
30
+ ensureBrowserProcess();
40
31
  })();
41
32
 
42
33
  import {
@@ -104,4 +95,4 @@ export {
104
95
  syncOpenEditorBuffersForPath,
105
96
  toggleEditorReadOnly
106
97
  };
107
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2VkaXRvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggbWFya2Rvd24gZWRpdG9ycyBpbiBPYnNpZGlhblxuICovXG5cbmltcG9ydCB0eXBlIHsgRXh0ZW5zaW9uIH0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEVkaXRvclxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7XG4gIENvbXBhcnRtZW50LFxuICBFZGl0b3JTdGF0ZSxcbiAgUHJlYyxcbiAgU3RhdGVFZmZlY3Rcbn0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHsgRWRpdG9yVmlldyB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHsgY2FzdFRvIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcbmltcG9ydCB7IE1hcmtkb3duVmlldyB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5cbmltcG9ydCB7IGdldFBhdGggfSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcblxuY29uc3QgY29tcGFydG1lbnRCeUNvZGVNaXJyb3IgPSBuZXcgV2Vha01hcDxFZGl0b3JbJ2NtJ10sIENvbXBhcnRtZW50PigpO1xuXG4vLyBTZXQgdHJ1ZSB3aGlsZSBhIGxvY2tlZCBlZGl0b3IgcHJvY2Vzc2VzIGEgYGtleWRvd25gIHN5bmNocm9ub3VzbHkuXG4vLyBUaGUgcmVhZC1vbmx5IGNoYW5nZSBmaWx0ZXIgcmVhZHMgaXQgdG8gYmxvY2sgYSBrZXlib2FyZC1kcml2ZW4gZWRpdCBidXQgcGFzcyBhIHByb2dyYW1tYXRpYyBvbmUuXG4vLyBJdCBpcyByZXNldCBpbiBhIG1pY3JvdGFzaywgYWZ0ZXIgdGhlIGtleSBldmVudCdzIHN5bmNocm9ub3VzIGRpc3BhdGNoIGNvbXBsZXRlcy5cbi8qKlxuTW9kdWxlLWxldmVsIG11dGFibGUgc3RhdGUsIGhlbGQgaW4gb25lIG9iamVjdCBzbyBlYWNoIG11dGF0aW9uIG5hbWVzIGl0IGV4cGxpY2l0bHkuXG4gKi9cbmNvbnN0IG1vZHVsZVN0YXRlID0ge1xuICBpc1Byb2Nlc3NpbmdMb2NrZWRFZGl0b3JLZXlkb3duOiBmYWxzZVxufTtcbi8qKlxuICogT3ZlcndyaXRlcyB0aGUgYnVmZmVyIG9mIGV2ZXJ5IG9wZW4ge0BsaW5rIE1hcmtkb3duVmlld30gY3VycmVudGx5IHNob3dpbmcgdGhlIGdpdmVuIHBhdGggc28gdGhhdFxuICogaXQgcmVmbGVjdHMgYGNvbnRlbnRgLCBpbiBhbnkgd2luZG93IG9yIHBvcG91dC5cbiAqXG4gKiBUaGlzIGlzIHRoZSBmaXggZm9yIGEgc3VidGxlIGRhdGEtbG9zcyB3aW5kb3c6IHdoZW4gYSBub3RlIGlzIG9wZW4gaW4gYW4gZWRpdG9yIHdpdGggYSAqKmRpcnR5XG4gKiBidWZmZXIqKiAoYSBwZW5kaW5nLCBub3QteWV0LXNhdmVkIGVkaXQpIGFuZCBpdHMgZmlsZSBjb250ZW50IGlzIHJld3JpdHRlbiBvbiBkaXNrIG91dCBmcm9tIHVuZGVyXG4gKiB0aGUgZWRpdG9yLCB0aGUgZWRpdG9yJ3MgbmV4dCBhdXRvc2F2ZSByZS13cml0ZXMgaXRzIHN0YWxlIGJ1ZmZlciBhbmQgY2xvYmJlcnMgdGhlIG9uLWRpc2sgY29udGVudC5cbiAqIEEgY2FsbGVyIHRoYXQgcmVzdG9yZXMgYSBmaWxlJ3MgY29udGVudCBvbiBkaXNrIChlLmcuIHJvbGxpbmcgYmFjayBhIHRyYW5zYWN0aW9uKSBtdXN0IGFsc28gcmVzZXRcbiAqIHRoZSBvcGVuIGVkaXRvcidzIGJ1ZmZlciB0byB0aGUgc2FtZSBjb250ZW50LCBzbyBpdHMgbmV4dCBzYXZlIGlzIGEgbm8tb3AgaW5zdGVhZCBvZiBhIGNsb2JiZXIuXG4gKlxuICogT25seSB0aGUgdmlldyB3aG9zZSB7QGxpbmsgTWFya2Rvd25WaWV3LmZpbGV9IHN0aWxsIG1hdGNoZXMgYHBhdGhPckZpbGVgIGlzIHRvdWNoZWQgXHUyMDE0IGlmIHRoZSBlZGl0b3JcbiAqIGhhcyBzaW5jZSBuYXZpZ2F0ZWQgdG8gYW5vdGhlciBub3RlLCBpdCBpcyBsZWZ0IGFsb25lLiBUaGUgYnVmZmVyIGlzIHJlcGxhY2VkIG9ubHkgd2hlbiBpdCBhY3R1YWxseVxuICogZGlmZmVycyBmcm9tIGBjb250ZW50YCwgc28gYSBjbGVhbiBlZGl0b3IgYWxyZWFkeSBpbiBzeW5jIGlzIG5vdCBkaXN0dXJiZWQgKG5vIGN1cnNvciByZXNldCkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgd2hvc2Ugb3BlbiBlZGl0b3JzIHNob3VsZCBiZSBzeW5jaHJvbml6ZWQuXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHRvIG92ZXJ3cml0ZSBlYWNoIG1hdGNoaW5nIGVkaXRvcidzIGJ1ZmZlciB3aXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3luY09wZW5FZGl0b3JCdWZmZXJzRm9yUGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgY29udGVudDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICBjb25zdCB2aWV3ID0gbGVhZi52aWV3O1xuICAgIGlmICghKHZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcpIHx8ICh2aWV3LmZpbGU/LnBhdGggIT09IHBhdGgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHZpZXcuZWRpdG9yLmdldFZhbHVlKCkgIT09IGNvbnRlbnQpIHtcbiAgICAgIHZpZXcuZWRpdG9yLnNldFZhbHVlKGNvbnRlbnQpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRvZ2dsZXMgdGhlIHJlYWQtb25seSBzdGF0ZSBvZiBhIHNpbmdsZSBDb2RlTWlycm9yIGluc3RhbmNlIFx1MjAxNCB0aGUgbG93LWxldmVsIHByaW1pdGl2ZSBiZWhpbmRcbiAqIGVkaXRvciBsb2NraW5nLlxuICpcbiAqIFdoZW4gcmVhZC1vbmx5LCB0aGUgZWRpdG9yIHN0YXlzIGZvY3VzYWJsZSBhbmQgaW50ZXJhY3RpdmUgKHNlbGVjdGlvbiwgY29weSwgYW5kIGFwcCBob3RrZXlzIHN1Y2hcbiAqIGFzIHRoZSBjb21tYW5kIHBhbGV0dGUga2VlcCB3b3JraW5nKSBcdTIwMTQgb25seSBkb2N1bWVudCBlZGl0cyBhcmUgcHJldmVudGVkLCB2aWEgdGhlIENvZGVNaXJyb3JcbiAqIGByZWFkT25seWAgc3RhdGUgcGx1cyBhIGNoYW5nZSBmaWx0ZXIgdGhhdCBkcm9wcyBhbnkgdXNlci1vcmlnaW5hdGVkIGNoYW5nZSAoc2VlXG4gKiB7QGxpbmsgcmVhZE9ubHlFeHRlbnNpb259KS5cbiAqXG4gKiBUaGlzIHRvZ2dsZXMgT05FIENvZGVNaXJyb3IgaW5zdGFuY2UsIG5vdCBcImEgZmlsZVwiOiBhbiBPYnNpZGlhbiB7QGxpbmsgRWRpdG9yfSBpcyByZXVzZWQgYXMgaXRzXG4gKiBsZWFmIG5hdmlnYXRlcyBiZXR3ZWVuIG5vdGVzLCBzbyB0aGlzIHByaW1pdGl2ZSBkb2VzIG5vdCBmb2xsb3cgYSBub3RlIGFyb3VuZC4gVG8gbG9jayBhIG5vdGVcbiAqIGFjcm9zcyBldmVyeSBlZGl0b3IgdGhhdCBzaG93cyBpdCAoY3VycmVudCBhbmQgZnV0dXJlLCBpbiBhbnkgd2luZG93KSwgdXNlIGBsb2NrUmVzb3VyY2VGb3JQYXRoYFxuICogZnJvbSBgLi9yZXNvdXJjZS1sb2NrLnRzYC5cbiAqXG4gKiBAcGFyYW0gZWRpdG9yIC0gVGhlIGVkaXRvciB3aG9zZSBDb2RlTWlycm9yIGluc3RhbmNlIHRvIHRvZ2dsZS5cbiAqIEBwYXJhbSBpc1JlYWRPbmx5IC0gYHRydWVgIHRvIG1ha2UgdGhlIGVkaXRvciByZWFkLW9ubHksIGBmYWxzZWAgdG8gbWFrZSBpdCBlZGl0YWJsZSBhZ2Fpbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUVkaXRvclJlYWRPbmx5KGVkaXRvcjogRWRpdG9yLCBpc1JlYWRPbmx5OiBib29sZWFuKTogdm9pZCB7XG4gIGNvbnN0IGNvbXBhcnRtZW50ID0gZW5zdXJlQ29tcGFydG1lbnQoZWRpdG9yKTtcbiAgZWRpdG9yLmNtLmRpc3BhdGNoKHtcbiAgICBlZmZlY3RzOiBjb21wYXJ0bWVudC5yZWNvbmZpZ3VyZShpc1JlYWRPbmx5ID8gcmVhZE9ubHlFeHRlbnNpb24oKSA6IFtdKVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZW5zdXJlQ29tcGFydG1lbnQoZWRpdG9yOiBFZGl0b3IpOiBDb21wYXJ0bWVudCB7XG4gIC8vIEtleSB0aGUgY2FjaGUgYnkgdGhlIENvZGVNaXJyb3IgaW5zdGFuY2UsIG5vdCBieSB0aGUgYEVkaXRvcmAgd3JhcHBlci5cbiAgLy8gQW4gYEVkaXRvcmAga2VlcHMgaXRzIGlkZW50aXR5IHdoaWxlIGl0cyB1bmRlcmx5aW5nIENvZGVNaXJyb3IgdmlldyBpcyBzd2FwcGVkIG91dC5cbiAgY29uc3QgY29kZU1pcnJvciA9IGVkaXRvci5jbTtcbiAgY29uc3QgY2FjaGVkQ29tcGFydG1lbnQgPSBjb21wYXJ0bWVudEJ5Q29kZU1pcnJvci5nZXQoY29kZU1pcnJvcik7XG4gIC8vIFJldXNlIHRoZSBjYWNoZWQgY29tcGFydG1lbnQgb25seSB3aGlsZSBpdCBpcyBzdGlsbCBwYXJ0IG9mIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXG4gIC8vIEEgdmlldyBjYW4gc2lsZW50bHkgZHJvcCBhbiBhcHBlbmRlZCBjb21wYXJ0bWVudCB3aGVuIGl0IHJlYnVpbGRzIGl0cyBzdGF0ZS5cbiAgLy8gT3BlbmluZyBhIG5vdGUgaW50byBhIGZyZXNobHkgY3JlYXRlZCBsZWFmIGRvZXMgdGhpczogaXQgaW5zdGFsbHMgdGhlIGNvbXBhcnRtZW50IG1pZC1vcGVuLlxuICAvLyBUaGUgc3Vic2VxdWVudCBsb2FkIHRoZW4gcmVwbGFjZXMgdGhlIHdob2xlIHN0YXRlLCB0YWtpbmcgdGhlIGNvbXBhcnRtZW50IHdpdGggaXQuXG4gIC8vIFRoZW4gYENvbXBhcnRtZW50LmdldGAgcmV0dXJucyBgdW5kZWZpbmVkYCwgc2luY2UgdGhlIGNvbXBhcnRtZW50IGlzIG5vIGxvbmdlciBjb25maWd1cmVkLlxuICAvLyBSZS1pbnN0YWxsIGl0IGluIHRoYXQgY2FzZSwgb3IgZXZlcnkgbGF0ZXIgYHJlY29uZmlndXJlYCBpcyBzaWxlbnRseSBpZ25vcmVkIGFuZCBub3RoaW5nIGxvY2tzLlxuICAvLyBUaGUgYGNhc3RUb2AgYnJpZGdlcyB0aGUgZHVhbCBDb21tb25KUyBhbmQgRVNNIGBFZGl0b3JTdGF0ZWAgZGVjbGFyYXRpb25zIG9mIGBAY29kZW1pcnJvci9zdGF0ZWAuXG4gIC8vIFRoZXkgYXJlIHN0cnVjdHVyYWxseSBpZGVudGljYWwsIGJ1dCBUeXBlU2NyaXB0IHRyZWF0cyB0aGVtIGFzIG5vbWluYWxseSBpbmNvbXBhdGlibGUuXG4gIGlmIChjYWNoZWRDb21wYXJ0bWVudD8uZ2V0KGNhc3RUbzxFZGl0b3JTdGF0ZT4oY29kZU1pcnJvci5zdGF0ZSkpICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gY2FjaGVkQ29tcGFydG1lbnQ7XG4gIH1cblxuICBjb25zdCBjb21wYXJ0bWVudCA9IG5ldyBDb21wYXJ0bWVudCgpO1xuICBjb21wYXJ0bWVudEJ5Q29kZU1pcnJvci5zZXQoY29kZU1pcnJvciwgY29tcGFydG1lbnQpO1xuICAvLyBBIGBDb21wYXJ0bWVudGAgb25seSB0YWtlcyBlZmZlY3Qgb25jZSBpdCBpcyBwYXJ0IG9mIHRoZSBlZGl0b3IncyBjb25maWd1cmF0aW9uLlxuICAvLyBUaGUgY29tcGFydG1lbnQgaXMgY3JlYXRlZCBsYXppbHkgaGVyZSwgc28gaW5zdGFsbCBpdCAoaW5pdGlhbGx5IGVtcHR5KSB2aWEgYGFwcGVuZENvbmZpZ2AuXG4gIGNvZGVNaXJyb3IuZGlzcGF0Y2goe1xuICAgIGVmZmVjdHM6IFN0YXRlRWZmZWN0LmFwcGVuZENvbmZpZy5vZihjb21wYXJ0bWVudC5vZihbXSkpXG4gIH0pO1xuICByZXR1cm4gY29tcGFydG1lbnQ7XG59XG5cbi8qKlxuICogVGhlIGV4dGVuc2lvbiBpbnN0YWxsZWQgaW50byB0aGUgcmVhZC1vbmx5IGNvbXBhcnRtZW50IHdoaWxlIGEgbm90ZSBpcyBsb2NrZWQuXG4gKlxuICogYEVkaXRvclN0YXRlLnJlYWRPbmx5YCBhbG9uZSBpcyBub3QgZW5vdWdoOiBpdCBibG9ja3MgQ29kZU1pcnJvcidzIG93biBlZGl0aW5nIGNvbW1hbmRzIGFuZCBET01cbiAqIGlucHV0LCBidXQgT2JzaWRpYW4gYmluZHMgc29tZSBrZXlzIChub3RhYmx5IGBTaGlmdCtFbnRlcmApIHRvIGhhbmRsZXJzIHRoYXQgZGlzcGF0Y2ggYSBjaGFuZ2VcbiAqIHRyYW5zYWN0aW9uIGRpcmVjdGx5LCB3aGljaCBzbGlwcyBwYXN0IHRoZSBgcmVhZE9ubHlgIGZhY2V0IGFuZCBlZGl0cyB0aGUgXCJsb2NrZWRcIiBub3RlLiBTdWNoIGFcbiAqIHRyYW5zYWN0aW9uIGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYSBwcm9ncmFtbWF0aWMgb25lIGJ5IGl0cyBjb250ZW50cyAobm8gdXNlci1ldmVudFxuICogYW5ub3RhdGlvbiksIHNvIGl0IGlzIHRvbGQgYXBhcnQgYnkgb3JpZ2luIGluc3RlYWQ6IGEgaGlnaGVzdC1wcmVjZWRlbmNlIGBrZXlkb3duYCBoYW5kbGVyIG1hcmtzXG4gKiB0aGUgd2luZG93IGR1cmluZyB3aGljaCB0aGUga2V5IGlzIHByb2Nlc3NlZCBzeW5jaHJvbm91c2x5LCBhbmQgdGhlIGFkZGVkIGBjaGFuZ2VGaWx0ZXJgIGRyb3BzIHRoZVxuICogY2hhbmdlcyBvZiBhbnkgdHJhbnNhY3Rpb24gcHJvZHVjZWQgaW5zaWRlIHRoYXQgd2luZG93LiBQcm9ncmFtbWF0aWMgZWRpdHMgKGUuZy5cbiAqIGBzeW5jT3BlbkVkaXRvckJ1ZmZlcnNGb3JQYXRoYCByZXN0b3JpbmcgYSBidWZmZXIgb24gcm9sbGJhY2ssIG9yIE9ic2lkaWFuIHJlbG9hZGluZyB0aGUgYnVmZmVyXG4gKiBmcm9tIGRpc2spIGhhcHBlbiBvdXRzaWRlIGEga2V5ZG93biwgc28gdGhleSBzdGlsbCBnbyB0aHJvdWdoLlxuICpcbiAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gZW5mb3JjaW5nIHJlYWQtb25seSBmb3IgYSBsb2NrZWQgZWRpdG9yLlxuICovXG5mdW5jdGlvbiByZWFkT25seUV4dGVuc2lvbigpOiBFeHRlbnNpb24ge1xuICByZXR1cm4gW1xuICAgIEVkaXRvclN0YXRlLnJlYWRPbmx5Lm9mKHRydWUpLFxuICAgIFByZWMuaGlnaGVzdChFZGl0b3JWaWV3LmRvbUV2ZW50SGFuZGxlcnMoe1xuICAgICAga2V5ZG93bjogKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBtb2R1bGVTdGF0ZS5pc1Byb2Nlc3NpbmdMb2NrZWRFZGl0b3JLZXlkb3duID0gdHJ1ZTtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgIG1vZHVsZVN0YXRlLmlzUHJvY2Vzc2luZ0xvY2tlZEVkaXRvcktleWRvd24gPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIERvIG5vdCBjb25zdW1lIHRoZSBldmVudDogbGV0IENvZGVNaXJyb3IncyBrZXltYXAgcnVuIHNvIG5hdmlnYXRpb24vc2VsZWN0aW9uIGtleXMgd29yay5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pKSxcbiAgICBFZGl0b3JTdGF0ZS5jaGFuZ2VGaWx0ZXIub2YoKCkgPT4gIW1vZHVsZVN0YXRlLmlzUHJvY2Vzc2luZ0xvY2tlZEVkaXRvcktleWRvd24pXG4gIF07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVlBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGtCQUFrQjtBQUMzQixTQUFTLGNBQWM7QUFDdkIsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxvQkFBb0I7QUFJN0IsU0FBUyxlQUFlO0FBRXhCLE1BQU0sMEJBQTBCLG9CQUFJLFFBQW1DO0FBUXZFLE1BQU0sY0FBYztBQUFBLEVBQ2xCLGlDQUFpQztBQUNuQztBQW1CTyxTQUFTLDZCQUE2QixLQUFVLFlBQXdCLFNBQXVCO0FBQ3BHLFFBQU0sT0FBTyxRQUFRLEtBQUssVUFBVTtBQUNwQyxhQUFXLFFBQVEsSUFBSSxVQUFVLGdCQUFnQixTQUFTLFFBQVEsR0FBRztBQUNuRSxVQUFNLE9BQU8sS0FBSztBQUNsQixRQUFJLEVBQUUsZ0JBQWdCLGlCQUFrQixLQUFLLE1BQU0sU0FBUyxNQUFPO0FBQ2pFO0FBQUEsSUFDRjtBQUNBLFFBQUksS0FBSyxPQUFPLFNBQVMsTUFBTSxTQUFTO0FBQ3RDLFdBQUssT0FBTyxTQUFTLE9BQU87QUFBQSxJQUM5QjtBQUFBLEVBQ0Y7QUFDRjtBQW1CTyxTQUFTLHFCQUFxQixRQUFnQixZQUEyQjtBQUM5RSxRQUFNLGNBQWMsa0JBQWtCLE1BQU07QUFDNUMsU0FBTyxHQUFHLFNBQVM7QUFBQSxJQUNqQixTQUFTLFlBQVksWUFBWSxhQUFhLGtCQUFrQixJQUFJLENBQUMsQ0FBQztBQUFBLEVBQ3hFLENBQUM7QUFDSDtBQUVBLFNBQVMsa0JBQWtCLFFBQTZCO0FBR3RELFFBQU0sYUFBYSxPQUFPO0FBQzFCLFFBQU0sb0JBQW9CLHdCQUF3QixJQUFJLFVBQVU7QUFTaEUsTUFBSSxtQkFBbUIsSUFBSSxPQUFvQixXQUFXLEtBQUssQ0FBQyxNQUFNLFFBQVc7QUFDL0UsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGNBQWMsSUFBSSxZQUFZO0FBQ3BDLDBCQUF3QixJQUFJLFlBQVksV0FBVztBQUduRCxhQUFXLFNBQVM7QUFBQSxJQUNsQixTQUFTLFlBQVksYUFBYSxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztBQUFBLEVBQ3pELENBQUM7QUFDRCxTQUFPO0FBQ1Q7QUFpQkEsU0FBUyxvQkFBK0I7QUFDdEMsU0FBTztBQUFBLElBQ0wsWUFBWSxTQUFTLEdBQUcsSUFBSTtBQUFBLElBQzVCLEtBQUssUUFBUSxXQUFXLGlCQUFpQjtBQUFBLE1BQ3ZDLFNBQVMsTUFBZTtBQUN0QixvQkFBWSxrQ0FBa0M7QUFDOUMsdUJBQWUsTUFBTTtBQUNuQixzQkFBWSxrQ0FBa0M7QUFBQSxRQUNoRCxDQUFDO0FBRUQsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGLENBQUMsQ0FBQztBQUFBLElBQ0YsWUFBWSxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksK0JBQStCO0FBQUEsRUFDaEY7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lZGl0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggbWFya2Rvd24gZWRpdG9ycyBpbiBPYnNpZGlhblxuICovXG5cbmltcG9ydCB0eXBlIHsgRXh0ZW5zaW9uIH0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEVkaXRvclxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7XG4gIENvbXBhcnRtZW50LFxuICBFZGl0b3JTdGF0ZSxcbiAgUHJlYyxcbiAgU3RhdGVFZmZlY3Rcbn0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHsgRWRpdG9yVmlldyB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHsgY2FzdFRvIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcbmltcG9ydCB7IE1hcmtkb3duVmlldyB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5cbmltcG9ydCB7IGdldFBhdGggfSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcblxuY29uc3QgY29tcGFydG1lbnRCeUNvZGVNaXJyb3IgPSBuZXcgV2Vha01hcDxFZGl0b3JbJ2NtJ10sIENvbXBhcnRtZW50PigpO1xuXG4vLyBTZXQgdHJ1ZSB3aGlsZSBhIGxvY2tlZCBlZGl0b3IgcHJvY2Vzc2VzIGEgYGtleWRvd25gIHN5bmNocm9ub3VzbHkuXG4vLyBUaGUgcmVhZC1vbmx5IGNoYW5nZSBmaWx0ZXIgcmVhZHMgaXQgdG8gYmxvY2sgYSBrZXlib2FyZC1kcml2ZW4gZWRpdCBidXQgcGFzcyBhIHByb2dyYW1tYXRpYyBvbmUuXG4vLyBJdCBpcyByZXNldCBpbiBhIG1pY3JvdGFzaywgYWZ0ZXIgdGhlIGtleSBldmVudCdzIHN5bmNocm9ub3VzIGRpc3BhdGNoIGNvbXBsZXRlcy5cbi8qKlxuTW9kdWxlLWxldmVsIG11dGFibGUgc3RhdGUsIGhlbGQgaW4gb25lIG9iamVjdCBzbyBlYWNoIG11dGF0aW9uIG5hbWVzIGl0IGV4cGxpY2l0bHkuXG4gKi9cbmNvbnN0IG1vZHVsZVN0YXRlID0ge1xuICBpc1Byb2Nlc3NpbmdMb2NrZWRFZGl0b3JLZXlkb3duOiBmYWxzZVxufTtcbi8qKlxuICogT3ZlcndyaXRlcyB0aGUgYnVmZmVyIG9mIGV2ZXJ5IG9wZW4ge0BsaW5rIE1hcmtkb3duVmlld30gY3VycmVudGx5IHNob3dpbmcgdGhlIGdpdmVuIHBhdGggc28gdGhhdFxuICogaXQgcmVmbGVjdHMgYGNvbnRlbnRgLCBpbiBhbnkgd2luZG93IG9yIHBvcG91dC5cbiAqXG4gKiBUaGlzIGlzIHRoZSBmaXggZm9yIGEgc3VidGxlIGRhdGEtbG9zcyB3aW5kb3c6IHdoZW4gYSBub3RlIGlzIG9wZW4gaW4gYW4gZWRpdG9yIHdpdGggYSAqKmRpcnR5XG4gKiBidWZmZXIqKiAoYSBwZW5kaW5nLCBub3QteWV0LXNhdmVkIGVkaXQpIGFuZCBpdHMgZmlsZSBjb250ZW50IGlzIHJld3JpdHRlbiBvbiBkaXNrIG91dCBmcm9tIHVuZGVyXG4gKiB0aGUgZWRpdG9yLCB0aGUgZWRpdG9yJ3MgbmV4dCBhdXRvc2F2ZSByZS13cml0ZXMgaXRzIHN0YWxlIGJ1ZmZlciBhbmQgY2xvYmJlcnMgdGhlIG9uLWRpc2sgY29udGVudC5cbiAqIEEgY2FsbGVyIHRoYXQgcmVzdG9yZXMgYSBmaWxlJ3MgY29udGVudCBvbiBkaXNrIChlLmcuIHJvbGxpbmcgYmFjayBhIHRyYW5zYWN0aW9uKSBtdXN0IGFsc28gcmVzZXRcbiAqIHRoZSBvcGVuIGVkaXRvcidzIGJ1ZmZlciB0byB0aGUgc2FtZSBjb250ZW50LCBzbyBpdHMgbmV4dCBzYXZlIGlzIGEgbm8tb3AgaW5zdGVhZCBvZiBhIGNsb2JiZXIuXG4gKlxuICogT25seSB0aGUgdmlldyB3aG9zZSB7QGxpbmsgTWFya2Rvd25WaWV3LmZpbGV9IHN0aWxsIG1hdGNoZXMgYHBhdGhPckZpbGVgIGlzIHRvdWNoZWQg4oCUIGlmIHRoZSBlZGl0b3JcbiAqIGhhcyBzaW5jZSBuYXZpZ2F0ZWQgdG8gYW5vdGhlciBub3RlLCBpdCBpcyBsZWZ0IGFsb25lLiBUaGUgYnVmZmVyIGlzIHJlcGxhY2VkIG9ubHkgd2hlbiBpdCBhY3R1YWxseVxuICogZGlmZmVycyBmcm9tIGBjb250ZW50YCwgc28gYSBjbGVhbiBlZGl0b3IgYWxyZWFkeSBpbiBzeW5jIGlzIG5vdCBkaXN0dXJiZWQgKG5vIGN1cnNvciByZXNldCkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgd2hvc2Ugb3BlbiBlZGl0b3JzIHNob3VsZCBiZSBzeW5jaHJvbml6ZWQuXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHRvIG92ZXJ3cml0ZSBlYWNoIG1hdGNoaW5nIGVkaXRvcidzIGJ1ZmZlciB3aXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3luY09wZW5FZGl0b3JCdWZmZXJzRm9yUGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgY29udGVudDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGZvciAoY29uc3QgbGVhZiBvZiBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShWaWV3VHlwZS5NYXJrZG93bikpIHtcbiAgICBjb25zdCB2aWV3ID0gbGVhZi52aWV3O1xuICAgIGlmICghKHZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcpIHx8ICh2aWV3LmZpbGU/LnBhdGggIT09IHBhdGgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHZpZXcuZWRpdG9yLmdldFZhbHVlKCkgIT09IGNvbnRlbnQpIHtcbiAgICAgIHZpZXcuZWRpdG9yLnNldFZhbHVlKGNvbnRlbnQpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRvZ2dsZXMgdGhlIHJlYWQtb25seSBzdGF0ZSBvZiBhIHNpbmdsZSBDb2RlTWlycm9yIGluc3RhbmNlIOKAlCB0aGUgbG93LWxldmVsIHByaW1pdGl2ZSBiZWhpbmRcbiAqIGVkaXRvciBsb2NraW5nLlxuICpcbiAqIFdoZW4gcmVhZC1vbmx5LCB0aGUgZWRpdG9yIHN0YXlzIGZvY3VzYWJsZSBhbmQgaW50ZXJhY3RpdmUgKHNlbGVjdGlvbiwgY29weSwgYW5kIGFwcCBob3RrZXlzIHN1Y2hcbiAqIGFzIHRoZSBjb21tYW5kIHBhbGV0dGUga2VlcCB3b3JraW5nKSDigJQgb25seSBkb2N1bWVudCBlZGl0cyBhcmUgcHJldmVudGVkLCB2aWEgdGhlIENvZGVNaXJyb3JcbiAqIGByZWFkT25seWAgc3RhdGUgcGx1cyBhIGNoYW5nZSBmaWx0ZXIgdGhhdCBkcm9wcyBhbnkgdXNlci1vcmlnaW5hdGVkIGNoYW5nZSAoc2VlXG4gKiB7QGxpbmsgcmVhZE9ubHlFeHRlbnNpb259KS5cbiAqXG4gKiBUaGlzIHRvZ2dsZXMgT05FIENvZGVNaXJyb3IgaW5zdGFuY2UsIG5vdCBcImEgZmlsZVwiOiBhbiBPYnNpZGlhbiB7QGxpbmsgRWRpdG9yfSBpcyByZXVzZWQgYXMgaXRzXG4gKiBsZWFmIG5hdmlnYXRlcyBiZXR3ZWVuIG5vdGVzLCBzbyB0aGlzIHByaW1pdGl2ZSBkb2VzIG5vdCBmb2xsb3cgYSBub3RlIGFyb3VuZC4gVG8gbG9jayBhIG5vdGVcbiAqIGFjcm9zcyBldmVyeSBlZGl0b3IgdGhhdCBzaG93cyBpdCAoY3VycmVudCBhbmQgZnV0dXJlLCBpbiBhbnkgd2luZG93KSwgdXNlIGBsb2NrUmVzb3VyY2VGb3JQYXRoYFxuICogZnJvbSBgLi9yZXNvdXJjZS1sb2NrLnRzYC5cbiAqXG4gKiBAcGFyYW0gZWRpdG9yIC0gVGhlIGVkaXRvciB3aG9zZSBDb2RlTWlycm9yIGluc3RhbmNlIHRvIHRvZ2dsZS5cbiAqIEBwYXJhbSBpc1JlYWRPbmx5IC0gYHRydWVgIHRvIG1ha2UgdGhlIGVkaXRvciByZWFkLW9ubHksIGBmYWxzZWAgdG8gbWFrZSBpdCBlZGl0YWJsZSBhZ2Fpbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUVkaXRvclJlYWRPbmx5KGVkaXRvcjogRWRpdG9yLCBpc1JlYWRPbmx5OiBib29sZWFuKTogdm9pZCB7XG4gIGNvbnN0IGNvbXBhcnRtZW50ID0gZW5zdXJlQ29tcGFydG1lbnQoZWRpdG9yKTtcbiAgZWRpdG9yLmNtLmRpc3BhdGNoKHtcbiAgICBlZmZlY3RzOiBjb21wYXJ0bWVudC5yZWNvbmZpZ3VyZShpc1JlYWRPbmx5ID8gcmVhZE9ubHlFeHRlbnNpb24oKSA6IFtdKVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZW5zdXJlQ29tcGFydG1lbnQoZWRpdG9yOiBFZGl0b3IpOiBDb21wYXJ0bWVudCB7XG4gIC8vIEtleSB0aGUgY2FjaGUgYnkgdGhlIENvZGVNaXJyb3IgaW5zdGFuY2UsIG5vdCBieSB0aGUgYEVkaXRvcmAgd3JhcHBlci5cbiAgLy8gQW4gYEVkaXRvcmAga2VlcHMgaXRzIGlkZW50aXR5IHdoaWxlIGl0cyB1bmRlcmx5aW5nIENvZGVNaXJyb3IgdmlldyBpcyBzd2FwcGVkIG91dC5cbiAgY29uc3QgY29kZU1pcnJvciA9IGVkaXRvci5jbTtcbiAgY29uc3QgY2FjaGVkQ29tcGFydG1lbnQgPSBjb21wYXJ0bWVudEJ5Q29kZU1pcnJvci5nZXQoY29kZU1pcnJvcik7XG4gIC8vIFJldXNlIHRoZSBjYWNoZWQgY29tcGFydG1lbnQgb25seSB3aGlsZSBpdCBpcyBzdGlsbCBwYXJ0IG9mIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXG4gIC8vIEEgdmlldyBjYW4gc2lsZW50bHkgZHJvcCBhbiBhcHBlbmRlZCBjb21wYXJ0bWVudCB3aGVuIGl0IHJlYnVpbGRzIGl0cyBzdGF0ZS5cbiAgLy8gT3BlbmluZyBhIG5vdGUgaW50byBhIGZyZXNobHkgY3JlYXRlZCBsZWFmIGRvZXMgdGhpczogaXQgaW5zdGFsbHMgdGhlIGNvbXBhcnRtZW50IG1pZC1vcGVuLlxuICAvLyBUaGUgc3Vic2VxdWVudCBsb2FkIHRoZW4gcmVwbGFjZXMgdGhlIHdob2xlIHN0YXRlLCB0YWtpbmcgdGhlIGNvbXBhcnRtZW50IHdpdGggaXQuXG4gIC8vIFRoZW4gYENvbXBhcnRtZW50LmdldGAgcmV0dXJucyBgdW5kZWZpbmVkYCwgc2luY2UgdGhlIGNvbXBhcnRtZW50IGlzIG5vIGxvbmdlciBjb25maWd1cmVkLlxuICAvLyBSZS1pbnN0YWxsIGl0IGluIHRoYXQgY2FzZSwgb3IgZXZlcnkgbGF0ZXIgYHJlY29uZmlndXJlYCBpcyBzaWxlbnRseSBpZ25vcmVkIGFuZCBub3RoaW5nIGxvY2tzLlxuICAvLyBUaGUgYGNhc3RUb2AgYnJpZGdlcyB0aGUgZHVhbCBDb21tb25KUyBhbmQgRVNNIGBFZGl0b3JTdGF0ZWAgZGVjbGFyYXRpb25zIG9mIGBAY29kZW1pcnJvci9zdGF0ZWAuXG4gIC8vIFRoZXkgYXJlIHN0cnVjdHVyYWxseSBpZGVudGljYWwsIGJ1dCBUeXBlU2NyaXB0IHRyZWF0cyB0aGVtIGFzIG5vbWluYWxseSBpbmNvbXBhdGlibGUuXG4gIGlmIChjYWNoZWRDb21wYXJ0bWVudD8uZ2V0KGNhc3RUbzxFZGl0b3JTdGF0ZT4oY29kZU1pcnJvci5zdGF0ZSkpICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gY2FjaGVkQ29tcGFydG1lbnQ7XG4gIH1cblxuICBjb25zdCBjb21wYXJ0bWVudCA9IG5ldyBDb21wYXJ0bWVudCgpO1xuICBjb21wYXJ0bWVudEJ5Q29kZU1pcnJvci5zZXQoY29kZU1pcnJvciwgY29tcGFydG1lbnQpO1xuICAvLyBBIGBDb21wYXJ0bWVudGAgb25seSB0YWtlcyBlZmZlY3Qgb25jZSBpdCBpcyBwYXJ0IG9mIHRoZSBlZGl0b3IncyBjb25maWd1cmF0aW9uLlxuICAvLyBUaGUgY29tcGFydG1lbnQgaXMgY3JlYXRlZCBsYXppbHkgaGVyZSwgc28gaW5zdGFsbCBpdCAoaW5pdGlhbGx5IGVtcHR5KSB2aWEgYGFwcGVuZENvbmZpZ2AuXG4gIGNvZGVNaXJyb3IuZGlzcGF0Y2goe1xuICAgIGVmZmVjdHM6IFN0YXRlRWZmZWN0LmFwcGVuZENvbmZpZy5vZihjb21wYXJ0bWVudC5vZihbXSkpXG4gIH0pO1xuICByZXR1cm4gY29tcGFydG1lbnQ7XG59XG5cbi8qKlxuICogVGhlIGV4dGVuc2lvbiBpbnN0YWxsZWQgaW50byB0aGUgcmVhZC1vbmx5IGNvbXBhcnRtZW50IHdoaWxlIGEgbm90ZSBpcyBsb2NrZWQuXG4gKlxuICogYEVkaXRvclN0YXRlLnJlYWRPbmx5YCBhbG9uZSBpcyBub3QgZW5vdWdoOiBpdCBibG9ja3MgQ29kZU1pcnJvcidzIG93biBlZGl0aW5nIGNvbW1hbmRzIGFuZCBET01cbiAqIGlucHV0LCBidXQgT2JzaWRpYW4gYmluZHMgc29tZSBrZXlzIChub3RhYmx5IGBTaGlmdCtFbnRlcmApIHRvIGhhbmRsZXJzIHRoYXQgZGlzcGF0Y2ggYSBjaGFuZ2VcbiAqIHRyYW5zYWN0aW9uIGRpcmVjdGx5LCB3aGljaCBzbGlwcyBwYXN0IHRoZSBgcmVhZE9ubHlgIGZhY2V0IGFuZCBlZGl0cyB0aGUgXCJsb2NrZWRcIiBub3RlLiBTdWNoIGFcbiAqIHRyYW5zYWN0aW9uIGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYSBwcm9ncmFtbWF0aWMgb25lIGJ5IGl0cyBjb250ZW50cyAobm8gdXNlci1ldmVudFxuICogYW5ub3RhdGlvbiksIHNvIGl0IGlzIHRvbGQgYXBhcnQgYnkgb3JpZ2luIGluc3RlYWQ6IGEgaGlnaGVzdC1wcmVjZWRlbmNlIGBrZXlkb3duYCBoYW5kbGVyIG1hcmtzXG4gKiB0aGUgd2luZG93IGR1cmluZyB3aGljaCB0aGUga2V5IGlzIHByb2Nlc3NlZCBzeW5jaHJvbm91c2x5LCBhbmQgdGhlIGFkZGVkIGBjaGFuZ2VGaWx0ZXJgIGRyb3BzIHRoZVxuICogY2hhbmdlcyBvZiBhbnkgdHJhbnNhY3Rpb24gcHJvZHVjZWQgaW5zaWRlIHRoYXQgd2luZG93LiBQcm9ncmFtbWF0aWMgZWRpdHMgKGUuZy5cbiAqIGBzeW5jT3BlbkVkaXRvckJ1ZmZlcnNGb3JQYXRoYCByZXN0b3JpbmcgYSBidWZmZXIgb24gcm9sbGJhY2ssIG9yIE9ic2lkaWFuIHJlbG9hZGluZyB0aGUgYnVmZmVyXG4gKiBmcm9tIGRpc2spIGhhcHBlbiBvdXRzaWRlIGEga2V5ZG93biwgc28gdGhleSBzdGlsbCBnbyB0aHJvdWdoLlxuICpcbiAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gZW5mb3JjaW5nIHJlYWQtb25seSBmb3IgYSBsb2NrZWQgZWRpdG9yLlxuICovXG5mdW5jdGlvbiByZWFkT25seUV4dGVuc2lvbigpOiBFeHRlbnNpb24ge1xuICByZXR1cm4gW1xuICAgIEVkaXRvclN0YXRlLnJlYWRPbmx5Lm9mKHRydWUpLFxuICAgIFByZWMuaGlnaGVzdChFZGl0b3JWaWV3LmRvbUV2ZW50SGFuZGxlcnMoe1xuICAgICAga2V5ZG93bjogKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBtb2R1bGVTdGF0ZS5pc1Byb2Nlc3NpbmdMb2NrZWRFZGl0b3JLZXlkb3duID0gdHJ1ZTtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgIG1vZHVsZVN0YXRlLmlzUHJvY2Vzc2luZ0xvY2tlZEVkaXRvcktleWRvd24gPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIERvIG5vdCBjb25zdW1lIHRoZSBldmVudDogbGV0IENvZGVNaXJyb3IncyBrZXltYXAgcnVuIHNvIG5hdmlnYXRpb24vc2VsZWN0aW9uIGtleXMgd29yay5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pKSxcbiAgICBFZGl0b3JTdGF0ZS5jaGFuZ2VGaWx0ZXIub2YoKCkgPT4gIW1vZHVsZVN0YXRlLmlzUHJvY2Vzc2luZ0xvY2tlZEVkaXRvcktleWRvd24pXG4gIF07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMsY0FBYztBQUN2QixTQUFTLGdCQUFnQjtBQUN6QixTQUFTLG9CQUFvQjtBQUk3QixTQUFTLGVBQWU7QUFFeEIsTUFBTSwwQkFBMEIsb0JBQUksUUFBbUM7QUFRdkUsTUFBTSxjQUFjO0FBQUEsRUFDbEIsaUNBQWlDO0FBQ25DO0FBbUJPLFNBQVMsNkJBQTZCLEtBQVUsWUFBd0IsU0FBdUI7QUFDcEcsUUFBTSxPQUFPLFFBQVEsS0FBSyxVQUFVO0FBQ3BDLGFBQVcsUUFBUSxJQUFJLFVBQVUsZ0JBQWdCLFNBQVMsUUFBUSxHQUFHO0FBQ25FLFVBQU0sT0FBTyxLQUFLO0FBQ2xCLFFBQUksRUFBRSxnQkFBZ0IsaUJBQWtCLEtBQUssTUFBTSxTQUFTLE1BQU87QUFDakU7QUFBQSxJQUNGO0FBQ0EsUUFBSSxLQUFLLE9BQU8sU0FBUyxNQUFNLFNBQVM7QUFDdEMsV0FBSyxPQUFPLFNBQVMsT0FBTztBQUFBLElBQzlCO0FBQUEsRUFDRjtBQUNGO0FBbUJPLFNBQVMscUJBQXFCLFFBQWdCLFlBQTJCO0FBQzlFLFFBQU0sY0FBYyxrQkFBa0IsTUFBTTtBQUM1QyxTQUFPLEdBQUcsU0FBUztBQUFBLElBQ2pCLFNBQVMsWUFBWSxZQUFZLGFBQWEsa0JBQWtCLElBQUksQ0FBQyxDQUFDO0FBQUEsRUFDeEUsQ0FBQztBQUNIO0FBRUEsU0FBUyxrQkFBa0IsUUFBNkI7QUFHdEQsUUFBTSxhQUFhLE9BQU87QUFDMUIsUUFBTSxvQkFBb0Isd0JBQXdCLElBQUksVUFBVTtBQVNoRSxNQUFJLG1CQUFtQixJQUFJLE9BQW9CLFdBQVcsS0FBSyxDQUFDLE1BQU0sUUFBVztBQUMvRSxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sY0FBYyxJQUFJLFlBQVk7QUFDcEMsMEJBQXdCLElBQUksWUFBWSxXQUFXO0FBR25ELGFBQVcsU0FBUztBQUFBLElBQ2xCLFNBQVMsWUFBWSxhQUFhLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUEsRUFDekQsQ0FBQztBQUNELFNBQU87QUFDVDtBQWlCQSxTQUFTLG9CQUErQjtBQUN0QyxTQUFPO0FBQUEsSUFDTCxZQUFZLFNBQVMsR0FBRyxJQUFJO0FBQUEsSUFDNUIsS0FBSyxRQUFRLFdBQVcsaUJBQWlCO0FBQUEsTUFDdkMsU0FBUyxNQUFlO0FBQ3RCLG9CQUFZLGtDQUFrQztBQUM5Qyx1QkFBZSxNQUFNO0FBQ25CLHNCQUFZLGtDQUFrQztBQUFBLFFBQ2hELENBQUM7QUFFRCxlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0YsQ0FBQyxDQUFDO0FBQUEsSUFDRixZQUFZLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSwrQkFBK0I7QUFBQSxFQUNoRjtBQUNGOyIsIm5hbWVzIjpbXX0=
@@ -1,4 +1,4 @@
1
- /// <reference path="./library.d.mts" />
1
+ /// <reference path="./library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,13 +2,7 @@
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
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,10 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- (function initEsm() {
37
- ensureDisposeSymbols();
38
- ensureBrowserProcess();
39
- })();
30
+ ensureBrowserProcess();
40
31
  })();
41
32
 
42
33
  import { DisposableBase } from "@mnaoumov/typescript-lib/disposable";
@@ -70,4 +61,4 @@ export {
70
61
  subscribeDisposableEvent,
71
62
  subscribeEvent
72
63
  };
73
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V2ZW50cy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFR5cGVkIGhlbHBlcnMgZm9yIHN1YnNjcmliaW5nIHRvIGFuIE9ic2lkaWFuIHtAbGluayBFdmVudHN9IHNvdXJjZS4gQm90aCBkZXJpdmUgdGhlIHZhbGlkIGV2ZW50IG5hbWVzIGFuZCB0aGVpclxuICogY2FsbGJhY2sgYXJndW1lbnQgdHlwZXMgZnJvbSB0aGUgc291cmNlJ3Mgb3ZlcmxvYWRlZCBgb25gIG1ldGhvZCAodmlhIHtAbGluayBFeHRyYWN0RXZlbnRNYXB9KSwgc28gdGhlIGV2ZW50XG4gKiBuYW1lIGFuZCBoYW5kbGVyIGFyZSBmdWxseSBhdXRvY29tcGxldGVkLiB7QGxpbmsgc3Vic2NyaWJlRXZlbnR9IHJldHVybnMgdGhlIHJhdyB7QGxpbmsgRXZlbnRSZWZ9IChwYXJpdHkgd2l0aFxuICoge0BsaW5rIEV2ZW50cy5vbn0pOyB7QGxpbmsgc3Vic2NyaWJlRGlzcG9zYWJsZUV2ZW50fSByZXR1cm5zIGEge0BsaW5rIERpc3Bvc2FibGVFeH0gdGhhdCB1bnJlZ2lzdGVycyBpdC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERpc3Bvc2FibGVFeCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kaXNwb3NhYmxlJztcbmltcG9ydCB0eXBlIHsgR2VuZXJpY0Z1bmN0aW9uIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdEV2ZW50TWFwIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUnO1xuaW1wb3J0IHR5cGUge1xuICBFdmVudFJlZixcbiAgRXZlbnRzXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgRGlzcG9zYWJsZUJhc2UgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGlzcG9zYWJsZSc7XG5pbXBvcnQgeyBjYXN0VG8gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc3Vic2NyaWJlRGlzcG9zYWJsZUV2ZW50fS4gU2FtZSBzaGFwZSBhcyB7QGxpbmsgU3Vic2NyaWJlRXZlbnRQYXJhbXN9LlxuICpcbiAqIEB0eXBlUGFyYW0gU291cmNlIC0gVGhlIHtAbGluayBFdmVudHN9IHNvdXJjZSB0eXBlLlxuICogQHR5cGVQYXJhbSBFdmVudE5hbWUgLSBUaGUgZXZlbnQgbmFtZSwgY29uc3RyYWluZWQgdG8gdGhlIHNvdXJjZSdzIGtub3duIGV2ZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgU3Vic2NyaWJlRGlzcG9zYWJsZUV2ZW50UGFyYW1zPFNvdXJjZSBleHRlbmRzIEV2ZW50cywgRXZlbnROYW1lIGV4dGVuZHMgRXZlbnROYW1lT2Y8U291cmNlPj4gPSBTdWJzY3JpYmVFdmVudFBhcmFtczxcbiAgU291cmNlLFxuICBFdmVudE5hbWVcbj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHN1YnNjcmliZUV2ZW50fS5cbiAqXG4gKiBAdHlwZVBhcmFtIFNvdXJjZSAtIFRoZSB7QGxpbmsgRXZlbnRzfSBzb3VyY2UgdHlwZS5cbiAqIEB0eXBlUGFyYW0gRXZlbnROYW1lIC0gVGhlIGV2ZW50IG5hbWUsIGNvbnN0cmFpbmVkIHRvIHRoZSBzb3VyY2UncyBrbm93biBldmVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaWJlRXZlbnRQYXJhbXM8U291cmNlIGV4dGVuZHMgRXZlbnRzLCBFdmVudE5hbWUgZXh0ZW5kcyBFdmVudE5hbWVPZjxTb3VyY2U+PiB7XG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgY2FsbGJhY2suIEl0cyBhcmd1bWVudCB0eXBlcyBhcmUgaW5mZXJyZWQgZnJvbSB7QGxpbmsgU3Vic2NyaWJlRXZlbnRQYXJhbXMubmFtZX0uXG4gICAqL1xuICByZWFkb25seSBjYWxsYmFjazogRXZlbnRDYWxsYmFja09mPFNvdXJjZSwgRXZlbnROYW1lPjtcblxuICAvKipcbiAgICogVGhlIGV2ZW50IHNvdXJjZSB0byBzdWJzY3JpYmUgb24uXG4gICAqL1xuICByZWFkb25seSBldmVudHM6IFNvdXJjZTtcblxuICAvKipcbiAgICogVGhlIGV2ZW50IG5hbWUgdG8gc3Vic2NyaWJlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogRXZlbnROYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dCBwYXNzZWQgYXMgYHRoaXNgIHRvIHRoZSBjYWxsYmFjay5cbiAgICovXG4gIHJlYWRvbmx5IHRoaXNBcmd1bWVudD86IHVua25vd247XG59XG5cbi8qKlxuICogVGhlIGNhbGxiYWNrIHR5cGUgZm9yIGEgZ2l2ZW4gZXZlbnQgb24gYSB7QGxpbmsgRXZlbnRzfSBzb3VyY2UsIHdpdGggaXRzIGFyZ3VtZW50IHR1cGxlIGluZmVycmVkIGZyb21cbiAqIHtAbGluayBFeHRyYWN0RXZlbnRNYXB9LlxuICpcbiAqIEB0eXBlUGFyYW0gU291cmNlIC0gVGhlIHtAbGluayBFdmVudHN9IHNvdXJjZSB0eXBlLlxuICogQHR5cGVQYXJhbSBFdmVudE5hbWUgLSBUaGUgZXZlbnQgbmFtZS5cbiAqL1xudHlwZSBFdmVudENhbGxiYWNrT2Y8U291cmNlIGV4dGVuZHMgRXZlbnRzLCBFdmVudE5hbWUgZXh0ZW5kcyBFdmVudE5hbWVPZjxTb3VyY2U+PiA9IEV4dHJhY3RFdmVudE1hcDxTb3VyY2U+W0V2ZW50TmFtZV0gZXh0ZW5kcyBpbmZlciBBcmd1bWVudHMgZXh0ZW5kcyB1bmtub3duW10gPyAoLi4uJGFyZ3VtZW50czogQXJndW1lbnRzKSA9PiB1bmtub3duXG4gIDogbmV2ZXI7XG5cbi8qKlxuICogVGhlIHVuaW9uIG9mIGtub3duIGV2ZW50IG5hbWVzIGZvciBhIHtAbGluayBFdmVudHN9IHNvdXJjZSwgZGVyaXZlZCBmcm9tIGl0cyBgb25gIG92ZXJsb2Fkcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFNvdXJjZSAtIFRoZSB7QGxpbmsgRXZlbnRzfSBzb3VyY2UgdHlwZS5cbiAqL1xudHlwZSBFdmVudE5hbWVPZjxTb3VyY2UgZXh0ZW5kcyBFdmVudHM+ID0ga2V5b2YgRXh0cmFjdEV2ZW50TWFwPFNvdXJjZT4gJiBzdHJpbmc7XG5cbi8qKlxuICogQSB7QGxpbmsgRGlzcG9zYWJsZUV4fSB0aGF0IHVucmVnaXN0ZXJzIGFuIE9ic2lkaWFuIHtAbGluayBFdmVudFJlZn0gb24gZGlzcG9zZSwgdmlhIHRoZSBldmVudCBzb3VyY2UgZXhwb3NlZCBvblxuICogdGhlIHJlZiBpdHNlbGYgKGBldmVudFJlZi5lYCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudFJlZkRpc3Bvc2FibGUgZXh0ZW5kcyBEaXNwb3NhYmxlQmFzZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGlzcG9zYWJsZSB3cmFwcGluZyBhbiBleGlzdGluZyB7QGxpbmsgRXZlbnRSZWZ9LlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRSZWYgLSBUaGUgZXZlbnQgcmVmZXJlbmNlIHRvIHVucmVnaXN0ZXIgb24gZGlzcG9zZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGV2ZW50UmVmOiBFdmVudFJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgdGhlIGV2ZW50IHZpYSB0aGUgc291cmNlIHN0b3JlZCBvbiB0aGUgcmVmIChgZXZlbnRSZWYuZS5vZmZyZWZgKS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBwZXJmb3JtRGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50UmVmLmUub2ZmcmVmKHRoaXMuZXZlbnRSZWYpO1xuICB9XG59XG5cbi8qKlxuICogU3Vic2NyaWJlcyB0byBhbiBldmVudCBvbiBhbiB7QGxpbmsgRXZlbnRzfSBzb3VyY2UgYW5kIHJldHVybnMgYSB7QGxpbmsgRGlzcG9zYWJsZUV4fSB0aGF0IHVucmVnaXN0ZXJzIGl0IG9uXG4gKiBkaXNwb3NlLiBUeXBlZCB3cmFwcGVyIG92ZXIge0BsaW5rIEV2ZW50cy5vbn06IHRoZSBldmVudCBuYW1lIGFuZCBjYWxsYmFjayBhcmd1bWVudHMgYXJlIGF1dG9jb21wbGV0ZWQgZnJvbSB0aGVcbiAqIHNvdXJjZSdzIG92ZXJsb2Fkcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFNvdXJjZSAtIFRoZSB7QGxpbmsgRXZlbnRzfSBzb3VyY2UgdHlwZS5cbiAqIEB0eXBlUGFyYW0gRXZlbnROYW1lIC0gVGhlIGV2ZW50IG5hbWUuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgQSB7QGxpbmsgRGlzcG9zYWJsZUV4fSB0aGF0IHVucmVnaXN0ZXJzIHRoZSBoYW5kbGVyIHdoZW4gZGlzcG9zZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJzY3JpYmVEaXNwb3NhYmxlRXZlbnQ8U291cmNlIGV4dGVuZHMgRXZlbnRzLCBFdmVudE5hbWUgZXh0ZW5kcyBFdmVudE5hbWVPZjxTb3VyY2U+PihcbiAgcGFyYW1zOiBTdWJzY3JpYmVEaXNwb3NhYmxlRXZlbnRQYXJhbXM8U291cmNlLCBFdmVudE5hbWU+XG4pOiBEaXNwb3NhYmxlRXgge1xuICByZXR1cm4gbmV3IEV2ZW50UmVmRGlzcG9zYWJsZShzdWJzY3JpYmVFdmVudChwYXJhbXMpKTtcbn1cblxuLyoqXG4gKiBTdWJzY3JpYmVzIHRvIGFuIGV2ZW50IG9uIGFuIHtAbGluayBFdmVudHN9IHNvdXJjZSBhbmQgcmV0dXJucyB0aGUgcmF3IHtAbGluayBFdmVudFJlZn0gKHBhcml0eSB3aXRoXG4gKiB7QGxpbmsgRXZlbnRzLm9ufSkuIFR5cGVkIHdyYXBwZXI6IHRoZSBldmVudCBuYW1lIGFuZCBjYWxsYmFjayBhcmd1bWVudHMgYXJlIGF1dG9jb21wbGV0ZWQgZnJvbSB0aGUgc291cmNlJ3NcbiAqIG92ZXJsb2Fkcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFNvdXJjZSAtIFRoZSB7QGxpbmsgRXZlbnRzfSBzb3VyY2UgdHlwZS5cbiAqIEB0eXBlUGFyYW0gRXZlbnROYW1lIC0gVGhlIGV2ZW50IG5hbWUuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIHtAbGluayBFdmVudFJlZn0gZm9yIHRoZSByZWdpc3RlcmVkIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJzY3JpYmVFdmVudDxTb3VyY2UgZXh0ZW5kcyBFdmVudHMsIEV2ZW50TmFtZSBleHRlbmRzIEV2ZW50TmFtZU9mPFNvdXJjZT4+KFxuICBwYXJhbXM6IFN1YnNjcmliZUV2ZW50UGFyYW1zPFNvdXJjZSwgRXZlbnROYW1lPlxuKTogRXZlbnRSZWYge1xuICAvLyBBIGdlbmVyaWMgYG5hbWVgIGNhbm5vdCBzZWxlY3Qgb25lIG9mIGBvbmAncyBzcGVjaWZpYyBvdmVybG9hZHMsIHNvIHRoZSBjYWxsIHJlc29sdmVzIGFnYWluc3QgdGhlIGJhc2VcbiAgLy8gYG9uKG5hbWU6IHN0cmluZywgY2FsbGJhY2ssIGN0eD8pYCBzaWduYXR1cmUgXHUyMDE0IHRoZSBjYWxsYmFjayBpcyBjYXN0IHRvIHRoYXQgc2lnbmF0dXJlJ3MgcGFyYW1ldGVyIHR5cGUuXG4gIHJldHVybiBwYXJhbXMuZXZlbnRzLm9uKHBhcmFtcy5uYW1lLCBjYXN0VG88R2VuZXJpY0Z1bmN0aW9uPHVua25vd25bXT4+KHBhcmFtcy5jYWxsYmFjayksIHBhcmFtcy50aGlzQXJndW1lbnQpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxjQUFjO0FBOERoQixNQUFNLDJCQUEyQixlQUFlO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTTlDLFlBQTZCLFVBQW9CO0FBQ3RELFVBQU07QUFENEI7QUFBQSxFQUVwQztBQUFBLEVBRm9DO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPakIsaUJBQXVCO0FBQ3hDLFNBQUssU0FBUyxFQUFFLE9BQU8sS0FBSyxRQUFRO0FBQUEsRUFDdEM7QUFDRjtBQVlPLFNBQVMseUJBQ2QsUUFDYztBQUNkLFNBQU8sSUFBSSxtQkFBbUIsZUFBZSxNQUFNLENBQUM7QUFDdEQ7QUFZTyxTQUFTLGVBQ2QsUUFDVTtBQUdWLFNBQU8sT0FBTyxPQUFPLEdBQUcsT0FBTyxNQUFNLE9BQW1DLE9BQU8sUUFBUSxHQUFHLE9BQU8sWUFBWTtBQUMvRzsiLAogICJuYW1lcyI6IFtdCn0K
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ldmVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFR5cGVkIGhlbHBlcnMgZm9yIHN1YnNjcmliaW5nIHRvIGFuIE9ic2lkaWFuIHtAbGluayBFdmVudHN9IHNvdXJjZS4gQm90aCBkZXJpdmUgdGhlIHZhbGlkIGV2ZW50IG5hbWVzIGFuZCB0aGVpclxuICogY2FsbGJhY2sgYXJndW1lbnQgdHlwZXMgZnJvbSB0aGUgc291cmNlJ3Mgb3ZlcmxvYWRlZCBgb25gIG1ldGhvZCAodmlhIHtAbGluayBFeHRyYWN0RXZlbnRNYXB9KSwgc28gdGhlIGV2ZW50XG4gKiBuYW1lIGFuZCBoYW5kbGVyIGFyZSBmdWxseSBhdXRvY29tcGxldGVkLiB7QGxpbmsgc3Vic2NyaWJlRXZlbnR9IHJldHVybnMgdGhlIHJhdyB7QGxpbmsgRXZlbnRSZWZ9IChwYXJpdHkgd2l0aFxuICoge0BsaW5rIEV2ZW50cy5vbn0pOyB7QGxpbmsgc3Vic2NyaWJlRGlzcG9zYWJsZUV2ZW50fSByZXR1cm5zIGEge0BsaW5rIERpc3Bvc2FibGVFeH0gdGhhdCB1bnJlZ2lzdGVycyBpdC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERpc3Bvc2FibGVFeCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kaXNwb3NhYmxlJztcbmltcG9ydCB0eXBlIHsgR2VuZXJpY0Z1bmN0aW9uIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdEV2ZW50TWFwIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUnO1xuaW1wb3J0IHR5cGUge1xuICBFdmVudFJlZixcbiAgRXZlbnRzXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgRGlzcG9zYWJsZUJhc2UgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGlzcG9zYWJsZSc7XG5pbXBvcnQgeyBjYXN0VG8gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc3Vic2NyaWJlRGlzcG9zYWJsZUV2ZW50fS4gU2FtZSBzaGFwZSBhcyB7QGxpbmsgU3Vic2NyaWJlRXZlbnRQYXJhbXN9LlxuICpcbiAqIEB0eXBlUGFyYW0gU291cmNlIC0gVGhlIHtAbGluayBFdmVudHN9IHNvdXJjZSB0eXBlLlxuICogQHR5cGVQYXJhbSBFdmVudE5hbWUgLSBUaGUgZXZlbnQgbmFtZSwgY29uc3RyYWluZWQgdG8gdGhlIHNvdXJjZSdzIGtub3duIGV2ZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgU3Vic2NyaWJlRGlzcG9zYWJsZUV2ZW50UGFyYW1zPFNvdXJjZSBleHRlbmRzIEV2ZW50cywgRXZlbnROYW1lIGV4dGVuZHMgRXZlbnROYW1lT2Y8U291cmNlPj4gPSBTdWJzY3JpYmVFdmVudFBhcmFtczxcbiAgU291cmNlLFxuICBFdmVudE5hbWVcbj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHN1YnNjcmliZUV2ZW50fS5cbiAqXG4gKiBAdHlwZVBhcmFtIFNvdXJjZSAtIFRoZSB7QGxpbmsgRXZlbnRzfSBzb3VyY2UgdHlwZS5cbiAqIEB0eXBlUGFyYW0gRXZlbnROYW1lIC0gVGhlIGV2ZW50IG5hbWUsIGNvbnN0cmFpbmVkIHRvIHRoZSBzb3VyY2UncyBrbm93biBldmVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaWJlRXZlbnRQYXJhbXM8U291cmNlIGV4dGVuZHMgRXZlbnRzLCBFdmVudE5hbWUgZXh0ZW5kcyBFdmVudE5hbWVPZjxTb3VyY2U+PiB7XG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgY2FsbGJhY2suIEl0cyBhcmd1bWVudCB0eXBlcyBhcmUgaW5mZXJyZWQgZnJvbSB7QGxpbmsgU3Vic2NyaWJlRXZlbnRQYXJhbXMubmFtZX0uXG4gICAqL1xuICByZWFkb25seSBjYWxsYmFjazogRXZlbnRDYWxsYmFja09mPFNvdXJjZSwgRXZlbnROYW1lPjtcblxuICAvKipcbiAgICogVGhlIGV2ZW50IHNvdXJjZSB0byBzdWJzY3JpYmUgb24uXG4gICAqL1xuICByZWFkb25seSBldmVudHM6IFNvdXJjZTtcblxuICAvKipcbiAgICogVGhlIGV2ZW50IG5hbWUgdG8gc3Vic2NyaWJlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogRXZlbnROYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dCBwYXNzZWQgYXMgYHRoaXNgIHRvIHRoZSBjYWxsYmFjay5cbiAgICovXG4gIHJlYWRvbmx5IHRoaXNBcmd1bWVudD86IHVua25vd247XG59XG5cbi8qKlxuICogVGhlIGNhbGxiYWNrIHR5cGUgZm9yIGEgZ2l2ZW4gZXZlbnQgb24gYSB7QGxpbmsgRXZlbnRzfSBzb3VyY2UsIHdpdGggaXRzIGFyZ3VtZW50IHR1cGxlIGluZmVycmVkIGZyb21cbiAqIHtAbGluayBFeHRyYWN0RXZlbnRNYXB9LlxuICpcbiAqIEB0eXBlUGFyYW0gU291cmNlIC0gVGhlIHtAbGluayBFdmVudHN9IHNvdXJjZSB0eXBlLlxuICogQHR5cGVQYXJhbSBFdmVudE5hbWUgLSBUaGUgZXZlbnQgbmFtZS5cbiAqL1xudHlwZSBFdmVudENhbGxiYWNrT2Y8U291cmNlIGV4dGVuZHMgRXZlbnRzLCBFdmVudE5hbWUgZXh0ZW5kcyBFdmVudE5hbWVPZjxTb3VyY2U+PiA9IEV4dHJhY3RFdmVudE1hcDxTb3VyY2U+W0V2ZW50TmFtZV0gZXh0ZW5kcyBpbmZlciBBcmd1bWVudHMgZXh0ZW5kcyB1bmtub3duW10gPyAoLi4uJGFyZ3VtZW50czogQXJndW1lbnRzKSA9PiB1bmtub3duXG4gIDogbmV2ZXI7XG5cbi8qKlxuICogVGhlIHVuaW9uIG9mIGtub3duIGV2ZW50IG5hbWVzIGZvciBhIHtAbGluayBFdmVudHN9IHNvdXJjZSwgZGVyaXZlZCBmcm9tIGl0cyBgb25gIG92ZXJsb2Fkcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFNvdXJjZSAtIFRoZSB7QGxpbmsgRXZlbnRzfSBzb3VyY2UgdHlwZS5cbiAqL1xudHlwZSBFdmVudE5hbWVPZjxTb3VyY2UgZXh0ZW5kcyBFdmVudHM+ID0ga2V5b2YgRXh0cmFjdEV2ZW50TWFwPFNvdXJjZT4gJiBzdHJpbmc7XG5cbi8qKlxuICogQSB7QGxpbmsgRGlzcG9zYWJsZUV4fSB0aGF0IHVucmVnaXN0ZXJzIGFuIE9ic2lkaWFuIHtAbGluayBFdmVudFJlZn0gb24gZGlzcG9zZSwgdmlhIHRoZSBldmVudCBzb3VyY2UgZXhwb3NlZCBvblxuICogdGhlIHJlZiBpdHNlbGYgKGBldmVudFJlZi5lYCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudFJlZkRpc3Bvc2FibGUgZXh0ZW5kcyBEaXNwb3NhYmxlQmFzZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGlzcG9zYWJsZSB3cmFwcGluZyBhbiBleGlzdGluZyB7QGxpbmsgRXZlbnRSZWZ9LlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRSZWYgLSBUaGUgZXZlbnQgcmVmZXJlbmNlIHRvIHVucmVnaXN0ZXIgb24gZGlzcG9zZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGV2ZW50UmVmOiBFdmVudFJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgdGhlIGV2ZW50IHZpYSB0aGUgc291cmNlIHN0b3JlZCBvbiB0aGUgcmVmIChgZXZlbnRSZWYuZS5vZmZyZWZgKS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBwZXJmb3JtRGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50UmVmLmUub2ZmcmVmKHRoaXMuZXZlbnRSZWYpO1xuICB9XG59XG5cbi8qKlxuICogU3Vic2NyaWJlcyB0byBhbiBldmVudCBvbiBhbiB7QGxpbmsgRXZlbnRzfSBzb3VyY2UgYW5kIHJldHVybnMgYSB7QGxpbmsgRGlzcG9zYWJsZUV4fSB0aGF0IHVucmVnaXN0ZXJzIGl0IG9uXG4gKiBkaXNwb3NlLiBUeXBlZCB3cmFwcGVyIG92ZXIge0BsaW5rIEV2ZW50cy5vbn06IHRoZSBldmVudCBuYW1lIGFuZCBjYWxsYmFjayBhcmd1bWVudHMgYXJlIGF1dG9jb21wbGV0ZWQgZnJvbSB0aGVcbiAqIHNvdXJjZSdzIG92ZXJsb2Fkcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFNvdXJjZSAtIFRoZSB7QGxpbmsgRXZlbnRzfSBzb3VyY2UgdHlwZS5cbiAqIEB0eXBlUGFyYW0gRXZlbnROYW1lIC0gVGhlIGV2ZW50IG5hbWUuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgQSB7QGxpbmsgRGlzcG9zYWJsZUV4fSB0aGF0IHVucmVnaXN0ZXJzIHRoZSBoYW5kbGVyIHdoZW4gZGlzcG9zZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJzY3JpYmVEaXNwb3NhYmxlRXZlbnQ8U291cmNlIGV4dGVuZHMgRXZlbnRzLCBFdmVudE5hbWUgZXh0ZW5kcyBFdmVudE5hbWVPZjxTb3VyY2U+PihcbiAgcGFyYW1zOiBTdWJzY3JpYmVEaXNwb3NhYmxlRXZlbnRQYXJhbXM8U291cmNlLCBFdmVudE5hbWU+XG4pOiBEaXNwb3NhYmxlRXgge1xuICByZXR1cm4gbmV3IEV2ZW50UmVmRGlzcG9zYWJsZShzdWJzY3JpYmVFdmVudChwYXJhbXMpKTtcbn1cblxuLyoqXG4gKiBTdWJzY3JpYmVzIHRvIGFuIGV2ZW50IG9uIGFuIHtAbGluayBFdmVudHN9IHNvdXJjZSBhbmQgcmV0dXJucyB0aGUgcmF3IHtAbGluayBFdmVudFJlZn0gKHBhcml0eSB3aXRoXG4gKiB7QGxpbmsgRXZlbnRzLm9ufSkuIFR5cGVkIHdyYXBwZXI6IHRoZSBldmVudCBuYW1lIGFuZCBjYWxsYmFjayBhcmd1bWVudHMgYXJlIGF1dG9jb21wbGV0ZWQgZnJvbSB0aGUgc291cmNlJ3NcbiAqIG92ZXJsb2Fkcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFNvdXJjZSAtIFRoZSB7QGxpbmsgRXZlbnRzfSBzb3VyY2UgdHlwZS5cbiAqIEB0eXBlUGFyYW0gRXZlbnROYW1lIC0gVGhlIGV2ZW50IG5hbWUuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIHtAbGluayBFdmVudFJlZn0gZm9yIHRoZSByZWdpc3RlcmVkIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJzY3JpYmVFdmVudDxTb3VyY2UgZXh0ZW5kcyBFdmVudHMsIEV2ZW50TmFtZSBleHRlbmRzIEV2ZW50TmFtZU9mPFNvdXJjZT4+KFxuICBwYXJhbXM6IFN1YnNjcmliZUV2ZW50UGFyYW1zPFNvdXJjZSwgRXZlbnROYW1lPlxuKTogRXZlbnRSZWYge1xuICAvLyBBIGdlbmVyaWMgYG5hbWVgIGNhbm5vdCBzZWxlY3Qgb25lIG9mIGBvbmAncyBzcGVjaWZpYyBvdmVybG9hZHMsIHNvIHRoZSBjYWxsIHJlc29sdmVzIGFnYWluc3QgdGhlIGJhc2VcbiAgLy8gYG9uKG5hbWU6IHN0cmluZywgY2FsbGJhY2ssIGN0eD8pYCBzaWduYXR1cmUg4oCUIHRoZSBjYWxsYmFjayBpcyBjYXN0IHRvIHRoYXQgc2lnbmF0dXJlJ3MgcGFyYW1ldGVyIHR5cGUuXG4gIHJldHVybiBwYXJhbXMuZXZlbnRzLm9uKHBhcmFtcy5uYW1lLCBjYXN0VG88R2VuZXJpY0Z1bmN0aW9uPHVua25vd25bXT4+KHBhcmFtcy5jYWxsYmFjayksIHBhcmFtcy50aGlzQXJndW1lbnQpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLGNBQWM7QUE4RGhCLE1BQU0sMkJBQTJCLGVBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNOUMsWUFBNkIsVUFBb0I7QUFDdEQsVUFBTTtBQUQ0QjtBQUFBLEVBRXBDO0FBQUEsRUFGb0M7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9qQixpQkFBdUI7QUFDeEMsU0FBSyxTQUFTLEVBQUUsT0FBTyxLQUFLLFFBQVE7QUFBQSxFQUN0QztBQUNGO0FBWU8sU0FBUyx5QkFDZCxRQUNjO0FBQ2QsU0FBTyxJQUFJLG1CQUFtQixlQUFlLE1BQU0sQ0FBQztBQUN0RDtBQVlPLFNBQVMsZUFDZCxRQUNVO0FBR1YsU0FBTyxPQUFPLE9BQU8sR0FBRyxPQUFPLE1BQU0sT0FBbUMsT0FBTyxRQUFRLEdBQUcsT0FBTyxZQUFZO0FBQy9HOyIsIm5hbWVzIjpbXX0=
@@ -1,4 +1,4 @@
1
- /// <reference path="./library.d.mts" />
1
+ /// <reference path="./library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,13 +2,7 @@
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
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,10 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- (function initEsm() {
37
- ensureDisposeSymbols();
38
- ensureBrowserProcess();
39
- })();
30
+ ensureBrowserProcess();
40
31
  })();
41
32
 
42
33
  import { Plugin } from "obsidian";
@@ -62,4 +53,4 @@ class PluginExtensionsRegistrar {
62
53
  export {
63
54
  PluginExtensionsRegistrar
64
55
  };
65
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4dGVuc2lvbnMtcmVnaXN0cmFyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRXh0ZW5zaW9ucyByZWdpc3RyYXJzLlxuICovXG5cbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBFeHRlbnNpb25zIHJlZ2lzdHJhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25zUmVnaXN0cmFyIHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBleHRlbnNpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBleHRlbnNpb25zIHJlZ2lzdHJhdGlvbi5cbiAgICovXG4gIHJlZ2lzdGVyRXh0ZW5zaW9uczogKHBhcmFtczogRXh0ZW5zaW9uc1JlZ2lzdHJhclJlZ2lzdGVyRXh0ZW5zaW9uc1BhcmFtcykgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciByZWdpc3RlcmluZyBleHRlbnNpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnNSZWdpc3RyYXJSZWdpc3RlckV4dGVuc2lvbnNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGV4dGVuc2lvbnMgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICByZWFkb25seSBleHRlbnNpb25zOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHZpZXcgdHlwZSB0byByZWdpc3RlciB0aGUgZXh0ZW5zaW9ucyBmb3IuXG4gICAqL1xuICByZWFkb25seSB2aWV3VHlwZTogc3RyaW5nO1xufVxuXG50eXBlIFBsdWdpbkV4dGVuc2lvbnNSZWdpc3RyYXJSZWdpc3RlckV4dGVuc2lvbnNQYXJhbXMgPSBFeHRlbnNpb25zUmVnaXN0cmFyUmVnaXN0ZXJFeHRlbnNpb25zUGFyYW1zO1xuXG4vKipcbiAqIEV4dGVuc2lvbnMgcmVnaXN0cmFyIGluIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpbkV4dGVuc2lvbnNSZWdpc3RyYXIgaW1wbGVtZW50cyBFeHRlbnNpb25zUmVnaXN0cmFyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHtAbGluayBQbHVnaW5FeHRlbnNpb25zUmVnaXN0cmFyfSBjbGFzcy5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBPYnNpZGlhbiBwbHVnaW4gaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luKSB7fVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgZXh0ZW5zaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZXh0ZW5zaW9ucyByZWdpc3RyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJFeHRlbnNpb25zKHBhcmFtczogUGx1Z2luRXh0ZW5zaW9uc1JlZ2lzdHJhclJlZ2lzdGVyRXh0ZW5zaW9uc1BhcmFtcyk6IHZvaWQge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5zaW9ucywgcGFyYW1zLnZpZXdUeXBlKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQSxTQUFTLGNBQWM7QUFrQ2hCLE1BQU0sMEJBQXlEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTTdELFlBQStCLFFBQWdCO0FBQWhCO0FBQUEsRUFBaUI7QUFBQSxFQUFqQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU8vQixtQkFBbUIsUUFBaUU7QUFDekYsU0FBSyxPQUFPLG1CQUFtQixPQUFPLFlBQVksT0FBTyxRQUFRO0FBQUEsRUFDbkU7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leHRlbnNpb25zLXJlZ2lzdHJhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRXh0ZW5zaW9ucyByZWdpc3RyYXJzLlxuICovXG5cbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBFeHRlbnNpb25zIHJlZ2lzdHJhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25zUmVnaXN0cmFyIHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBleHRlbnNpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBleHRlbnNpb25zIHJlZ2lzdHJhdGlvbi5cbiAgICovXG4gIHJlZ2lzdGVyRXh0ZW5zaW9uczogKHBhcmFtczogRXh0ZW5zaW9uc1JlZ2lzdHJhclJlZ2lzdGVyRXh0ZW5zaW9uc1BhcmFtcykgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciByZWdpc3RlcmluZyBleHRlbnNpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnNSZWdpc3RyYXJSZWdpc3RlckV4dGVuc2lvbnNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGV4dGVuc2lvbnMgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICByZWFkb25seSBleHRlbnNpb25zOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHZpZXcgdHlwZSB0byByZWdpc3RlciB0aGUgZXh0ZW5zaW9ucyBmb3IuXG4gICAqL1xuICByZWFkb25seSB2aWV3VHlwZTogc3RyaW5nO1xufVxuXG50eXBlIFBsdWdpbkV4dGVuc2lvbnNSZWdpc3RyYXJSZWdpc3RlckV4dGVuc2lvbnNQYXJhbXMgPSBFeHRlbnNpb25zUmVnaXN0cmFyUmVnaXN0ZXJFeHRlbnNpb25zUGFyYW1zO1xuXG4vKipcbiAqIEV4dGVuc2lvbnMgcmVnaXN0cmFyIGluIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpbkV4dGVuc2lvbnNSZWdpc3RyYXIgaW1wbGVtZW50cyBFeHRlbnNpb25zUmVnaXN0cmFyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHtAbGluayBQbHVnaW5FeHRlbnNpb25zUmVnaXN0cmFyfSBjbGFzcy5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBPYnNpZGlhbiBwbHVnaW4gaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luKSB7fVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgZXh0ZW5zaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZXh0ZW5zaW9ucyByZWdpc3RyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJFeHRlbnNpb25zKHBhcmFtczogUGx1Z2luRXh0ZW5zaW9uc1JlZ2lzdHJhclJlZ2lzdGVyRXh0ZW5zaW9uc1BhcmFtcyk6IHZvaWQge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRXh0ZW5zaW9ucyhwYXJhbXMuZXh0ZW5zaW9ucywgcGFyYW1zLnZpZXdUeXBlKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1BLFNBQVMsY0FBYztBQWtDaEIsTUFBTSwwQkFBeUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNN0QsWUFBK0IsUUFBZ0I7QUFBaEI7QUFBQSxFQUFpQjtBQUFBLEVBQWpCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTy9CLG1CQUFtQixRQUFpRTtBQUN6RixTQUFLLE9BQU8sbUJBQW1CLE9BQU8sWUFBWSxPQUFPLFFBQVE7QUFBQSxFQUNuRTtBQUNGOyIsIm5hbWVzIjpbXX0=
@@ -1,4 +1,5 @@
1
- /// <reference path="./library.d.mts" />
1
+ /// <reference path="./library-references.d.mts" />
2
+ /// <reference lib="dom" />
2
3
  /**
3
4
  * @file
4
5
  *
@@ -2,13 +2,7 @@
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
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,10 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- (function initEsm() {
37
- ensureDisposeSymbols();
38
- ensureBrowserProcess();
39
- })();
30
+ ensureBrowserProcess();
40
31
  })();
41
32
 
42
33
  import { printError } from "@mnaoumov/typescript-lib/error";
@@ -470,4 +461,4 @@ export {
470
461
  isFrontmatterChangeWithOffsets,
471
462
  toFrontmatterChangeWithOffsets
472
463
  };
473
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ZpbGUtY2hhbmdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSB0eXBlcyBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBmaWxlIGNoYW5nZXMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDYW52YXNEYXRhIH0gZnJvbSAnb2JzaWRpYW4vY2FudmFzLmQudHMnO1xuXG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7XG4gIGdldE5lc3RlZFByb3BlcnR5VmFsdWUsXG4gIGlzRGVlcEVxdWFsLFxuICBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMsXG4gIHNldE5lc3RlZFByb3BlcnR5VmFsdWVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtcHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZVxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzIH0gZnJvbSAnLi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgQ2FudmFzRmlsZU5vZGVSZWZlcmVuY2UsXG4gIENhbnZhc1JlZmVyZW5jZSxcbiAgQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2Vcbn0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHR5cGUge1xuICBDb250ZW50QXJndW1lbnRzLFxuICBQcm9jZXNzT3B0aW9ucyxcbiAgUHJvY2Vzc1BhcmFtc1xufSBmcm9tICcuL3ZhdWx0LnRzJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuaW1wb3J0IHtcbiAgZ2V0UGF0aCxcbiAgaXNDYW52YXNGaWxlXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5pbXBvcnQge1xuICBwYXJzZUZyb250bWF0dGVyLFxuICBzZXRGcm9udG1hdHRlclxufSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB7XG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2Vcbn0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vdmF1bHQudHMnO1xuXG5jb25zdCBFU0NBUEVEX1dJS0lMSU5LX0RJVklERVIgPSBTdHJpbmcucmF3YFxcfGA7XG4vKipcbiAqIE1hdGNoZXMgYSB3aWtpbGluayBkaXZpZGVyIHRvZ2V0aGVyIHdpdGggdGhlIGJhY2tzbGFzaCBlc2NhcGluZyBpdCwgaWYgYW55LiBBIGxvb2tiZWhpbmQgd291bGQgc2F5IFwidW5lc2NhcGVkXCJcbiAqIGRpcmVjdGx5LCBidXQgaXQgaXMgYSBzeW50YXggZXJyb3Igb24gaU9TIGJlZm9yZSAxNi40LCBiZWxvdyB0aGUgaU9TIDE1IE9ic2lkaWFuIG1vYmlsZSBzdGlsbCBzdXBwb3J0cy5cbiAqIFJlcGxhY2luZyBldmVyeSBtYXRjaCB3aXRoIGFuIGVzY2FwZWQgZGl2aWRlciBsZWF2ZXMgYW4gZXNjYXBlZCBvbmUgYXMgaXQgd2FzIGFuZCBlc2NhcGVzIGEgYmFyZSBvbmUuXG4gKi9cbmNvbnN0IE9QVElPTkFMTFlfRVNDQVBFRF9XSUtJTElOS19ESVZJREVSX1JFR0VYUCA9IC9cXFxcP1xcfC9nO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBhcHBseUNvbnRlbnRDaGFuZ2VzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBseUNvbnRlbnRDaGFuZ2VzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgY29udGVudCBjaGFuZ2VzIHRvIGFwcGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXSB8IG51bGwsIENvbnRlbnRBcmd1bWVudHM+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgYXBwbHlGaWxlQ2hhbmdlc30uXG4gKi9cbmV4cG9ydCB0eXBlIEFwcGx5RmlsZUNoYW5nZXNPcHRpb25zID0gUHJvY2Vzc09wdGlvbnM7XG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBhcHBseUZpbGVDaGFuZ2VzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBseUZpbGVDaGFuZ2VzUGFyYW1zIGV4dGVuZHMgQXBwbHlGaWxlQ2hhbmdlc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlIHdoZXJlIHRoZSBmaWxlIGNoYW5nZXMgd2lsbCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGZpbGUgY2hhbmdlcyB0byBhcHBseS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBDb250ZW50QXJndW1lbnRzPjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuLyoqXG4gKiBBIGZpbGUgY2hhbmdlIGluIHRoZSB2YXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIEEgbmV3IGNvbnRlbnQgdG8gcmVwbGFjZSB0aGUgb2xkIGNvbnRlbnQuXG4gICAqL1xuICBuZXdDb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIG9sZCBjb250ZW50IHRoYXQgd2lsbCBiZSByZXBsYWNlZC5cbiAgICovXG4gIG9sZENvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdGhhdCBjYXVzZWQgdGhlIGNoYW5nZS5cbiAgICovXG4gIHJlZmVyZW5jZTogUmVmZXJlbmNlO1xufVxuaW50ZXJmYWNlIEFwcGx5Q2FudmFzQ2hhbmdlc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGZpbGUgY2hhbmdlcyB0byBhcHBseS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBDb250ZW50QXJndW1lbnRzPjtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJldHJ5IHRoZSBvcGVyYXRpb24gaWYgdGhlIGNoYW5nZXMgYXJlIGludmFsaWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBjaGFuZ2VzIHRvIGFwcGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlczogRmlsZUNoYW5nZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBwYXJzaW5nIHRoZSBmcm9udG1hdHRlciBmYWlsZWQuXG4gICAqL1xuICByZWFkb25seSBoYXNGcm9udG1hdHRlckVycm9yOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEFwcGx5Q29udGVudENoYW5nZXNUb1RleHRSZXN1bHQge1xuICByZWFkb25seSBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT47XG4gIHJlYWRvbmx5IG5ld0NvbnRlbnQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBUaGUgZnJvbnRtYXR0ZXIgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPjtcblxuICAvKipcbiAgICogQSBtYXAgb2YgZnJvbnRtYXR0ZXIga2V5cyB0byB0aGUgZnJvbnRtYXR0ZXIgY2hhbmdlcyB3aXRoIG9mZnNldHMgdG8gYXBwbHkuXG4gICAqL1xuICByZWFkb25seSBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0TWFwOiBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEJ1aWxkRmluYWxDb250ZW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmcm9udG1hdHRlciB0byB3cml0ZSBpbnRvIHRoZSBmaW5hbCBjb250ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIGZyb250bWF0dGVyIGtleXMgdG8gdGhlIGZyb250bWF0dGVyIGNoYW5nZXMgd2l0aCBvZmZzZXRzIHRoYXQgd2VyZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXJDaGFuZ2VkOiBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgZnJvbnRtYXR0ZXIgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBuZXdDb250ZW50OiBzdHJpbmc7XG59XG5cbnR5cGUgQ2FudmFzQ2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8Q2FudmFzUmVmZXJlbmNlPjtcbnR5cGUgQ2FudmFzRmlsZU5vZGVDaGFuZ2UgPSBGaWxlQ2hhbmdlICYgV2l0aFJlZmVyZW5jZTxDYW52YXNGaWxlTm9kZVJlZmVyZW5jZT47XG50eXBlIENhbnZhc1RleHROb2RlQ2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8Q2FudmFzVGV4dE5vZGVSZWZlcmVuY2U+O1xudHlwZSBDb250ZW50Q2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8UmVmZXJlbmNlQ2FjaGU+O1xudHlwZSBGcm9udG1hdHRlckNoYW5nZSA9IEZpbGVDaGFuZ2UgJiBXaXRoUmVmZXJlbmNlPEZyb250bWF0dGVyTGlua0NhY2hlPjtcblxudHlwZSBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8RnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cz47XG5cbmludGVyZmFjZSBQYXJzZUZyb250bWF0dGVyU2FmZWx5UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IHRvIHBhcnNlIHRoZSBmcm9udG1hdHRlciBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0aGUgY29udGVudCBiZWxvbmdzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUGFyc2VGcm9udG1hdHRlclNhZmVseVJlc3VsdCB7XG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+O1xuICByZWFkb25seSBoYXNGcm9udG1hdHRlckVycm9yOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVmFsaWRhdGVDaGFuZ2VzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IGNoYW5nZXMgdG8gdmFsaWRhdGUuXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzOiBGaWxlQ2hhbmdlW107XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IHRoZSBjaGFuZ2VzIHNob3VsZCBiZSB2YWxpZGF0ZWQgYWdhaW5zdC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZyb250bWF0dGVyIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSB2YWxpZGF0ZWQgYWdhaW5zdC5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgdmFsaWRhdGVkIGFnYWluc3QuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBXaXRoUmVmZXJlbmNlPFIgZXh0ZW5kcyBSZWZlcmVuY2U+IHtcbiAgcmVmZXJlbmNlOiBSO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBzZXJpZXMgb2YgY29udGVudCBjaGFuZ2VzIHRvIHRoZSBzcGVjaWZpZWQgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGFwcGx5aW5nIHRoZSBjb250ZW50IGNoYW5nZXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGNvbnRlbnQgb3IgdG8gYG51bGxgIGlmIHVwZGF0ZSBkaWRuJ3Qgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q29udGVudENoYW5nZXMocGFyYW1zOiBBcHBseUNvbnRlbnRDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhYm9ydFNpZ25hbCxcbiAgICBjaGFuZ2VzUHJvdmlkZXIsXG4gICAgY29udGVudCxcbiAgICBwYXRoLFxuICAgIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbiAgfSA9IHBhcmFtcztcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgbGV0IGNoYW5nZXMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY2hhbmdlc1Byb3ZpZGVyLCB7IGFib3J0U2lnbmFsLCBjb250ZW50IH0pO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAoY2hhbmdlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBmcm9udG1hdHRlciwgaGFzRnJvbnRtYXR0ZXJFcnJvciB9ID0gcGFyc2VGcm9udG1hdHRlclNhZmVseSh7IGNvbnRlbnQsIHBhdGggfSk7XG5cbiAgaWYgKCFhcmVDaGFuZ2VzVmFsaWQoeyBjaGFuZ2VzLCBjb250ZW50LCBmcm9udG1hdHRlciwgcGF0aCB9KSkge1xuICAgIHJldHVybiBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXMgPyBudWxsIDogY29udGVudDtcbiAgfVxuXG4gIGNoYW5nZXMgPSBzb3J0QW5kRmlsdGVyQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICBjb25zdCB7IGZyb250bWF0dGVyQ2hhbmdlZCwgbmV3Q29udGVudCB9ID0gYXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dCh7IGNoYW5nZXMsIGNvbnRlbnQsIGhhc0Zyb250bWF0dGVyRXJyb3IsIHBhdGggfSk7XG5cbiAgYXdhaXQgYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyh7XG4gICAgYWJvcnRTaWduYWwsXG4gICAgZnJvbnRtYXR0ZXIsXG4gICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcDogZnJvbnRtYXR0ZXJDaGFuZ2VkLFxuICAgIHBhdGhcbiAgfSk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgcmV0dXJuIGJ1aWxkRmluYWxDb250ZW50KHsgZnJvbnRtYXR0ZXIsIGZyb250bWF0dGVyQ2hhbmdlZCwgbmV3Q29udGVudCB9KTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgYXBwbHlpbmcgdGhlIGZpbGUgY2hhbmdlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBjaGFuZ2VzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5RmlsZUNoYW5nZXMocGFyYW1zOiBBcHBseUZpbGVDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgY2hhbmdlc1Byb3ZpZGVyLFxuICAgIHBhdGhPckZpbGUsXG4gICAgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzID0gdHJ1ZSxcbiAgICAuLi5vcHRpb25zXG4gIH0gPSBwYXJhbXM7XG4gIGF3YWl0IHByb2Nlc3Mobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFByb2Nlc3NQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgYXN5bmMgbmV3Q29udGVudFByb3ZpZGVyKHsgYWJvcnRTaWduYWwsIGNvbnRlbnQgfSkge1xuICAgICAgcmV0dXJuIGlzQ2FudmFzRmlsZShwYXRoT3JGaWxlKVxuICAgICAgICA/IChhd2FpdCBhcHBseUNhbnZhc0NoYW5nZXMoe1xuICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIGNoYW5nZXNQcm92aWRlcixcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIHBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSxcbiAgICAgICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICAgICAgfSkpXG4gICAgICAgIDogKGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoe1xuICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIGNoYW5nZXNQcm92aWRlcixcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIHBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSxcbiAgICAgICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICAgICAgfSkpO1xuICAgIH0sXG4gICAgcGF0aE9yRmlsZSxcbiAgICAuLi5vcHRpb25zXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNDaGFuZ2Uge1xuICByZXR1cm4gaXNDYW52YXNSZWZlcmVuY2UoY2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgZmlsZSBub2RlIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgZmlsZSBub2RlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UoY2hhbmdlOiBGaWxlQ2hhbmdlKTogY2hhbmdlIGlzIENhbnZhc0ZpbGVOb2RlQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkgJiYgY2hhbmdlLnJlZmVyZW5jZS50eXBlID09PSAnZmlsZSc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlOiBGaWxlQ2hhbmdlKTogY2hhbmdlIGlzIENhbnZhc1RleHROb2RlQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkgJiYgY2hhbmdlLnJlZmVyZW5jZS50eXBlID09PSAndGV4dCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjb250ZW50IGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY29udGVudCBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRlbnRDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgQ29udGVudENoYW5nZSB7XG4gIHJldHVybiBpc1JlZmVyZW5jZUNhY2hlKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckNoYW5nZShmaWxlQ2hhbmdlOiBGaWxlQ2hhbmdlKTogZmlsZUNoYW5nZSBpcyBGcm9udG1hdHRlckNoYW5nZSB7XG4gIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyB7XG4gIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoZmlsZUNoYW5nZS5yZWZlcmVuY2UpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlIHRvIGEgZnJvbnRtYXR0ZXIgY2hhbmdlIHdpdGggb2Zmc2V0cy5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCBmaWxlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhmaWxlQ2hhbmdlOiBGcm9udG1hdHRlckNoYW5nZSk6IEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UpXG4gICAgPyBmaWxlQ2hhbmdlXG4gICAgOiB7XG4gICAgICAuLi5maWxlQ2hhbmdlLFxuICAgICAgcmVmZXJlbmNlOiB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoZmlsZUNoYW5nZS5yZWZlcmVuY2UpXG4gICAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlDYW52YXNDaGFuZ2VzKHBhcmFtczogQXBwbHlDYW52YXNDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhYm9ydFNpZ25hbCxcbiAgICBjaGFuZ2VzUHJvdmlkZXIsXG4gICAgY29udGVudCxcbiAgICBwYXRoLFxuICAgIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIsIHsgYWJvcnRTaWduYWwsIGNvbnRlbnQgfSk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIGlmIChjaGFuZ2VzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjYW52YXNEYXRhID0gcGFyc2VKc29uU2FmZShjb250ZW50KSBhcyBHZW5lcmljT2JqZWN0PENhbnZhc0RhdGE+O1xuXG4gIC8vIFRoZSBjb250ZW50IGlzIG5vdCBhIHZhbGlkIGNhbnZhcyAoYSB0cmFuc2llbnQgYHt9YCBvciBwYXJ0aWFsIG9iamVjdCkuXG4gIC8vIFRoaXMgaGFwcGVucyB3aGVuIGFub3RoZXIgcGx1Z2luIGlzIHN0aWxsIGluaXRpYWxpemluZyB0aGUgZmlsZS5cbiAgLy8gU2tpcCB0aGUgcmV3cml0ZSBzbyBubyBtYWxmb3JtZWQgb2JqZWN0IGlzIHdyaXR0ZW4gYmFjayBhbmQgdGhlIHJlbmRlcmVyIG5ldmVyIGNyYXNoZXMuXG4gIC8vIE1pcnJvcnMgdGhlIGB7IGVkZ2VzOiBbXSwgbm9kZXM6IFtdIH1gIGZhbGxiYWNrIGluIGBnZXRDYW52YXNSZWZlcmVuY2VzYC5cbiAgLy8gUmV0dXJuaW5nIHRoZSBjb250ZW50IHVuY2hhbmdlZCByYXRoZXIgdGhhbiBgbnVsbGAgY29tcGxldGVzIHRoZSBvcGVyYXRpb24gd2l0aG91dCBhIHdyaXRlOiB0aGVcbiAgLy8gcmVmdXNhbCBpcyBwZXJtYW5lbnQgZm9yIHRoaXMgY29udGVudCwgYW5kIGBudWxsYCB3b3VsZCBhc2sgYHByb2Nlc3MoKWAgdG8gcmV0cnkgaXQgZm9yZXZlci5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGNhbnZhc0RhdGEubm9kZXMpIHx8ICFBcnJheS5pc0FycmF5KGNhbnZhc0RhdGEuZWRnZXMpKSB7XG4gICAgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTphcHBseUNhbnZhc0NoYW5nZXMnKSgnTm90IGEgdmFsaWQgY2FudmFzOyBza2lwcGluZyByZXdyaXRlJywgeyBwYXRoIH0pO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgY29uc3QgY2FudmFzVGV4dENoYW5nZXMgPSBuZXcgTWFwPG51bWJlciwgQ2FudmFzVGV4dE5vZGVDaGFuZ2VbXT4oKTtcblxuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgaWYgKCFpc0NhbnZhc0NoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gJ09ubHkgY2FudmFzIGNoYW5nZXMgYXJlIHN1cHBvcnRlZCBmb3IgY2FudmFzIGZpbGVzJztcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwge1xuICAgICAgICBjaGFuZ2UsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IGNhbnZhc0RhdGEubm9kZXNbY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4OiBjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICBpZiAoaXNDYW52YXNGaWxlTm9kZUNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBpZiAobm9kZS5maWxlICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICBnZXRPYnNpZGlhbkxpYkRlYnVnZ2VyKCdGaWxlQ2hhbmdlOmFwcGx5Q2FudmFzQ2hhbmdlcycpKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IG5vZGUuZmlsZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBub2RlSW5kZXg6IGNoYW5nZS5yZWZlcmVuY2Uubm9kZUluZGV4LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgdHlwZTogJ2ZpbGUnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgICAgbm9kZS5maWxlID0gY2hhbmdlLm5ld0NvbnRlbnQ7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIGZhbHNlIGJyYW5jaCBvZiB0aGUgZWxzZS1pZiBpcyB1bnJlYWNoYWJsZTsgb25seSAnZmlsZScgYW5kICd0ZXh0JyBjYW52YXMgbm9kZSB0eXBlcyBleGlzdC4gKi9cbiAgICB9IGVsc2UgaWYgKGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGxldCBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUgPSBjYW52YXNUZXh0Q2hhbmdlcy5nZXQoY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXgpO1xuICAgICAgaWYgKCFjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUpIHtcbiAgICAgICAgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlID0gW107XG4gICAgICAgIGNhbnZhc1RleHRDaGFuZ2VzLnNldChjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCwgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlKTtcbiAgICAgIH1cblxuICAgICAgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlLnB1c2goY2hhbmdlKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IFtub2RlSW5kZXgsIGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZV0gb2YgY2FudmFzVGV4dENoYW5nZXMpIHtcbiAgICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBOb2RlIGV4aXN0ZW5jZSBpcyBhbHJlYWR5IHZlcmlmaWVkIGluIHRoZSBmaXJzdCBsb29wIGFib3ZlLiAqL1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICBpZiAodHlwZW9mIG5vZGUudGV4dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnTm9kZSB0ZXh0IGlzIG5vdCBhIHN0cmluZyc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXMgPSBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUubWFwKChjaGFuZ2UpID0+IHtcbiAgICAgIC8vIEEgY2FudmFzIHRleHQgbm9kZSBjYW4gaG9sZCBhIG1hcmtkb3duIHRhYmxlLCB3aGVyZSBhIHNpemVkIGVtYmVkIGVzY2FwZXMgdGhlIHdpa2lsaW5rXG4gICAgICAvLyBkaXZpZGVyIHNvIHRoZSBwaXBlIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgdGFibGUgY2VsbCAoYCFbW2ltZy5wbmdcXHw1MDBdXWApLiBUaGUgcmVnZW5lcmF0ZWRcbiAgICAgIC8vIGxpbmsgdXNlcyBhbiB1bmVzY2FwZWQgZGl2aWRlciwgc28gcmVzdG9yZSB0aGUgZXNjYXBpbmcgd2hlbiB0aGUgb3JpZ2luYWwgcmVmZXJlbmNlIGhhZCBpdCxcbiAgICAgIC8vIGtlZXBpbmcgYm90aCB0aGUgdGFibGUgYW5kIHRoZSBlbWJlZCBzaXplIGludGFjdCBhY3Jvc3MgdGhlIHJld3JpdGUuXG4gICAgICBjb25zdCBuZXdDb250ZW50ID0gY2hhbmdlLnJlZmVyZW5jZS5vcmlnaW5hbFJlZmVyZW5jZS5vcmlnaW5hbC5pbmNsdWRlcyhFU0NBUEVEX1dJS0lMSU5LX0RJVklERVIpXG4gICAgICAgID8gY2hhbmdlLm5ld0NvbnRlbnQucmVwbGFjZUFsbChPUFRJT05BTExZX0VTQ0FQRURfV0lLSUxJTktfRElWSURFUl9SRUdFWFAsICgpID0+IEVTQ0FQRURfV0lLSUxJTktfRElWSURFUilcbiAgICAgICAgOiBjaGFuZ2UubmV3Q29udGVudDtcbiAgICAgIHJldHVybiByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UoY2hhbmdlLnJlZmVyZW5jZS5vcmlnaW5hbFJlZmVyZW5jZSwgbmV3Q29udGVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgbmV3Tm9kZVRleHQgPSBhd2FpdCBhcHBseUNvbnRlbnRDaGFuZ2VzKHtcbiAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgY2hhbmdlc1Byb3ZpZGVyOiBjb250ZW50Q2hhbmdlcyxcbiAgICAgIGNvbnRlbnQ6IG5vZGUudGV4dCxcbiAgICAgIHBhdGg6IGAke3BhdGh9Lm5vZGUke1N0cmluZyhub2RlSW5kZXgpfS5WSVJUVUFMX0ZJTEUubWRgLFxuICAgICAgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzXG4gICAgfSk7XG5cbiAgICAvLyBgbnVsbGAgaXMgYGFwcGx5Q29udGVudENoYW5nZXNgJ3MgcmV0cnkgc2VudGluZWwsIG5vdCBhIHZhbHVlLiBBc3NpZ25pbmcgaXQgd291bGQgc2VyaWFsaXplXG4gICAgLy8gYFwidGV4dFwiOiBudWxsYCBvdmVyIHRoZSBub2RlIGFuZCBkZXN0cm95IGl0cyBjb250ZW50LiBUaGUgbWlzbWF0Y2ggaXMgcGVybWFuZW50IGZvciB0aGlzIGNvbnRlbnQgXHUyMDE0XG4gICAgLy8gdGhlIHNhbWUgY2FsbCB0aGUgZmlsZS1ub2RlIG1pc21hdGNoIGFib3ZlIGFscmVhZHkgbWFrZXMgXHUyMDE0IHNvIHJldHVybiB0aGUgY29udGVudCB1bmNoYW5nZWQgdG9cbiAgICAvLyBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIHdpdGhvdXQgYSB3cml0ZSwgcmF0aGVyIHRoYW4gYG51bGxgLCB3aGljaCB3b3VsZCByZXRyeSBmb3JldmVyLlxuICAgIGlmIChuZXdOb2RlVGV4dCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgbm9kZS50ZXh0ID0gbmV3Tm9kZVRleHQ7XG4gIH1cblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY2FudmFzRGF0YSwgbnVsbCwgJ1xcdCcpO1xufVxuXG5mdW5jdGlvbiBhcHBseUNvbnRlbnRDaGFuZ2VzVG9UZXh0KHBhcmFtczogQXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dFBhcmFtcyk6IEFwcGx5Q29udGVudENoYW5nZXNUb1RleHRSZXN1bHQge1xuICBjb25zdCB7XG4gICAgY2hhbmdlcyxcbiAgICBjb250ZW50LFxuICAgIGhhc0Zyb250bWF0dGVyRXJyb3IsXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBsZXQgbmV3Q29udGVudCA9ICcnO1xuICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgbGV0IGxhc3RDb250ZW50Q2hhbmdlOiBDb250ZW50Q2hhbmdlID0ge1xuICAgIG5ld0NvbnRlbnQ6ICcnLFxuICAgIG9sZENvbnRlbnQ6ICcnLFxuICAgIHJlZmVyZW5jZToge1xuICAgICAgbGluazogJycsXG4gICAgICBvcmlnaW5hbDogJycsXG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBlbmQ6IHsgY29sOiAwLCBsaW5lOiAwLCBvZmZzZXQ6IDAgfSxcbiAgICAgICAgc3RhcnQ6IHsgY29sOiAwLCBsaW5lOiAwLCBvZmZzZXQ6IDAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+KCk7XG5cbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgY2hhbmdlIHR5cGVzIGFyZSBoYW5kbGVkOyB0aGUgZmFsc2UgYnJhbmNoIGxlYWRzIHRvIG90aGVyIGVsc2UtaWYgY2hlY2tzLiAqL1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGlmIChsYXN0SW5kZXggPD0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpIHtcbiAgICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpO1xuICAgICAgICBuZXdDb250ZW50ICs9IGNoYW5nZS5uZXdDb250ZW50O1xuICAgICAgICBsYXN0SW5kZXggPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICAgIGxhc3RDb250ZW50Q2hhbmdlID0gY2hhbmdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdTdGFydE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gbGFzdENvbnRlbnRDaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdFbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSBsYXN0Q29udGVudENoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgICAgICBjb25zdCBvdmVybGFwcGluZ0NvbnRlbnQgPSBsYXN0Q29udGVudENoYW5nZS5uZXdDb250ZW50LnNsaWNlKG92ZXJsYXBwaW5nU3RhcnRPZmZzZXQsIG92ZXJsYXBwaW5nRW5kT2Zmc2V0KTtcbiAgICAgICAgaWYgKG92ZXJsYXBwaW5nQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ092ZXJsYXBwaW5nIGNoYW5nZXMnO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgeyBjaGFuZ2UsIGxhc3RDb250ZW50Q2hhbmdlIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdDb250ZW50ID0gbmV3Q29udGVudC5zbGljZSgwLCBuZXdDb250ZW50Lmxlbmd0aCAtIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQubGVuZ3RoKVxuICAgICAgICAgICsgbGFzdENvbnRlbnRDaGFuZ2UubmV3Q29udGVudC5zbGljZSgwLCBvdmVybGFwcGluZ1N0YXJ0T2Zmc2V0KVxuICAgICAgICAgICsgY2hhbmdlLm5ld0NvbnRlbnRcbiAgICAgICAgICArIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQuc2xpY2Uob3ZlcmxhcHBpbmdFbmRPZmZzZXQpO1xuICAgICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsbCBjaGFuZ2UgdHlwZXMgYXJlIGhhbmRsZWQgYWJvdmU7IG5vIHVua25vd24gY2hhbmdlIHR5cGVzIGluIHByYWN0aWNlLiAqL1xuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFZhbGlkYXRpb24gcmVqZWN0cyBmcm9udG1hdHRlciBjaGFuZ2VzIHdoZW4gcGFyc2luZyBmYWlscywgc28gdGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUuICovXG4gICAgICBpZiAoaGFzRnJvbnRtYXR0ZXJFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgYXBwbHkgZnJvbnRtYXR0ZXIgY2hhbmdlIGluICR7cGF0aH0sIGJlY2F1c2UgZnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWRgLCB7IGNoYW5nZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIGxldCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAuZ2V0KGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgICAgaWYgKCFmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cykge1xuICAgICAgICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzID0gW107XG4gICAgICAgICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5zZXQoY2hhbmdlLnJlZmVyZW5jZS5rZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzKTtcbiAgICAgICAgfVxuICAgICAgICBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cy5wdXNoKHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhjaGFuZ2UpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcblxuICByZXR1cm4geyBmcm9udG1hdHRlckNoYW5nZWQ6IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsIG5ld0NvbnRlbnQgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyhwYXJhbXM6IEFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHNQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGFib3J0U2lnbmFsLFxuICAgIGZyb250bWF0dGVyLFxuICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBmb3IgKGNvbnN0IFtrZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzXSBvZiBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0TWFwKSB7XG4gICAgY29uc3QgcHJvcGVydHlWYWx1ZSA9IGdldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRtYXR0ZXIsIGtleSk7XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFZhbGlkYXRpb24gZW5zdXJlcyB0aGUgcHJvcGVydHkgaXMgYSBzdHJpbmcgYmVmb3JlIHJlYWNoaW5nIHRoaXMgcG9pbnQuICovXG4gICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gICAgY29uc3QgY29udGVudENoYW5nZXM6IENvbnRlbnRDaGFuZ2VbXSA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzLm1hcCgoY2hhbmdlKSA9PiAoe1xuICAgICAgbmV3Q29udGVudDogY2hhbmdlLm5ld0NvbnRlbnQsXG4gICAgICBvbGRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIGVuZDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLmVuZE9mZnNldCxcbiAgICAgICAgICAgIGxpbmU6IDAsXG4gICAgICAgICAgICBvZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICAgIG9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcblxuICAgIGNvbnN0IG5ld1Byb3BlcnR5VmFsdWUgPSBhd2FpdCBhcHBseUNvbnRlbnRDaGFuZ2VzKHtcbiAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgY2hhbmdlc1Byb3ZpZGVyOiBjb250ZW50Q2hhbmdlcyxcbiAgICAgIGNvbnRlbnQ6IHByb3BlcnR5VmFsdWUsXG4gICAgICBwYXRoOiBgJHtwYXRofS5mcm9udG1hdHRlci4ke2tleX0uVklSVFVBTF9GSUxFLm1kYFxuICAgIH0pO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbm5lciBhcHBseUNvbnRlbnRDaGFuZ2VzIHVzZXMgdmFsaWRhdGVkIG9mZnNldHMsIHNvIG51bGwgaXMgbm90IGV4cGVjdGVkLiAqL1xuICAgIGlmIChuZXdQcm9wZXJ0eVZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKHtcbiAgICAgICRvYmplY3Q6IGZyb250bWF0dGVyLFxuICAgICAgcGF0aDoga2V5LFxuICAgICAgdmFsdWU6IG5ld1Byb3BlcnR5VmFsdWVcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhcmVDaGFuZ2VzVmFsaWQocGFyYW1zOiBWYWxpZGF0ZUNoYW5nZXNQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGNoYW5nZXMsXG4gICAgY29udGVudCxcbiAgICBmcm9udG1hdHRlcixcbiAgICBwYXRoXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyID0gZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTp2YWxpZGF0ZUNoYW5nZXMnKTtcbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgY2hhbmdlIHR5cGVzIGFyZSBoYW5kbGVkOyB0aGUgZmFsc2UgYnJhbmNoIGxlYWRzIHRvIG90aGVyIGVsc2UtaWYgY2hlY2tzLiAqL1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgICBjb25zdCBlbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gY29udGVudC5zbGljZShzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTtcbiAgICAgIGlmIChhY3R1YWxDb250ZW50ICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignQ29udGVudCBtaXNtYXRjaCcsIHtcbiAgICAgICAgICBhY3R1YWxDb250ZW50LFxuICAgICAgICAgIGVuZE9mZnNldCxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgc3RhcnRPZmZzZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsbCBjaGFuZ2UgdHlwZXMgYXJlIGhhbmRsZWQ7IG5vIHVua25vd24gY2hhbmdlIHR5cGVzIGluIHByYWN0aWNlLiAqL1xuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGNoYW5nZSkpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignUHJvcGVydHkgdmFsdWUgaXMgbm90IGEgc3RyaW5nJywge1xuICAgICAgICAgIGZyb250bWF0dGVyS2V5OiBjaGFuZ2UucmVmZXJlbmNlLmtleSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHByb3BlcnR5VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IHByb3BlcnR5VmFsdWUuc2xpY2UoY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldCwgY2hhbmdlLnJlZmVyZW5jZS5lbmRPZmZzZXQpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGFydE9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGNoYW5nZSB0eXBlcyBhcmUgaGFuZGxlZCBhYm92ZTsgbm8gdW5rbm93biBjaGFuZ2UgdHlwZXMgaW4gcHJhY3RpY2UuICovXG4gICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRmluYWxDb250ZW50KHBhcmFtczogQnVpbGRGaW5hbENvbnRlbnRQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgZnJvbnRtYXR0ZXIsXG4gICAgZnJvbnRtYXR0ZXJDaGFuZ2VkLFxuICAgIG5ld0NvbnRlbnRcbiAgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGZyb250bWF0dGVyQ2hhbmdlZC5zaXplID4gMCA/IHNldEZyb250bWF0dGVyKG5ld0NvbnRlbnQsIGZyb250bWF0dGVyKSA6IG5ld0NvbnRlbnQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXJTYWZlbHkocGFyYW1zOiBQYXJzZUZyb250bWF0dGVyU2FmZWx5UGFyYW1zKTogUGFyc2VGcm9udG1hdHRlclNhZmVseVJlc3VsdCB7XG4gIGNvbnN0IHsgY29udGVudCwgcGF0aCB9ID0gcGFyYW1zO1xuICBsZXQgZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8dW5rbm93bj4gPSB7fTtcbiAgbGV0IGhhc0Zyb250bWF0dGVyRXJyb3IgPSBmYWxzZTtcblxuICB0cnkge1xuICAgIGZyb250bWF0dGVyID0gcGFyc2VGcm9udG1hdHRlcihjb250ZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKG5ldyBFcnJvcihgRnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWQgaW4gJHtwYXRofWAsIHsgY2F1c2U6IGVycm9yIH0pKTtcbiAgICBoYXNGcm9udG1hdHRlckVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7IGZyb250bWF0dGVyLCBoYXNGcm9udG1hdHRlckVycm9yIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlSnNvblNhZmUoY29udGVudDogc3RyaW5nKTogR2VuZXJpY09iamVjdCB7XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaCB7XG4gICAgcGFyc2VkID0gbnVsbDtcbiAgfVxuXG4gIGlmIChwYXJzZWQgPT09IG51bGwgfHwgdHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcpIHtcbiAgICBwYXJzZWQgPSB7fTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWQgYXMgR2VuZXJpY09iamVjdDtcbn1cblxuZnVuY3Rpb24gc29ydEFuZEZpbHRlckNoYW5nZXMoY2hhbmdlczogRmlsZUNoYW5nZVtdKTogRmlsZUNoYW5nZVtdIHtcbiAgLy8gU29ydCBjaGFuZ2VzIGJ5IHR5cGUgYW5kIHBvc2l0aW9uXG4gIGNoYW5nZXMuc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoYSkgJiYgaXNDb250ZW50Q2hhbmdlKGIpKSB7XG4gICAgICByZXR1cm4gYS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gYi5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoYSkgJiYgaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGIpKSB7XG4gICAgICByZXR1cm4gYS5yZWZlcmVuY2Uua2V5LmxvY2FsZUNvbXBhcmUoYi5yZWZlcmVuY2Uua2V5KSB8fCBhLnJlZmVyZW5jZS5zdGFydE9mZnNldCAtIGIucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGEpICYmIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5rZXkubG9jYWxlQ29tcGFyZShiLnJlZmVyZW5jZS5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBpc0NvbnRlbnRDaGFuZ2UoYSkgPyAtMSA6IDE7XG4gIH0pO1xuXG4gIC8vIEZpbHRlciBvdXQgZHVwbGljYXRlIGFuZCBuby1vcCBjaGFuZ2VzXG4gIHJldHVybiBjaGFuZ2VzLmZpbHRlcigoY2hhbmdlLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBjaGFuZ2Uub2xkQ29udGVudCAhPT0gY2hhbmdlLm5ld0NvbnRlbnQgJiYgKGluZGV4ID09PSAwIHx8ICFpc0RlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSkpO1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLFNBQVMsa0JBQWtCO0FBQzNCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG9CQUFvQjtBQUM3QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWdCUCxTQUFTLDhCQUE4QjtBQUN2QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZUFBZTtBQUV4QixNQUFNLDJCQUEyQixPQUFPO0FBTXhDLE1BQU0sNkNBQTZDO0FBd09uRCxlQUFzQixvQkFBb0IsUUFBMkQ7QUFDbkcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLDhCQUE4QjtBQUFBLEVBQ2hDLElBQUk7QUFDSixjQUFZLGVBQWU7QUFDM0IsTUFBSSxVQUFVLE1BQU0sYUFBYSxpQkFBaUIsRUFBRSxhQUFhLFFBQVEsQ0FBQztBQUMxRSxjQUFZLGVBQWU7QUFDM0IsTUFBSSxZQUFZLE1BQU07QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLEVBQUUsYUFBYSxvQkFBb0IsSUFBSSx1QkFBdUIsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUVyRixNQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxTQUFTLGFBQWEsS0FBSyxDQUFDLEdBQUc7QUFDN0QsV0FBTyw4QkFBOEIsT0FBTztBQUFBLEVBQzlD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
464
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlLWNoYW5nZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSB0eXBlcyBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBmaWxlIGNoYW5nZXMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDYW52YXNEYXRhIH0gZnJvbSAnb2JzaWRpYW4vY2FudmFzLmQudHMnO1xuXG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7XG4gIGdldE5lc3RlZFByb3BlcnR5VmFsdWUsXG4gIGlzRGVlcEVxdWFsLFxuICBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMsXG4gIHNldE5lc3RlZFByb3BlcnR5VmFsdWVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtcHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZVxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzIH0gZnJvbSAnLi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgQ2FudmFzRmlsZU5vZGVSZWZlcmVuY2UsXG4gIENhbnZhc1JlZmVyZW5jZSxcbiAgQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2Vcbn0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHR5cGUge1xuICBDb250ZW50QXJndW1lbnRzLFxuICBQcm9jZXNzT3B0aW9ucyxcbiAgUHJvY2Vzc1BhcmFtc1xufSBmcm9tICcuL3ZhdWx0LnRzJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuaW1wb3J0IHtcbiAgZ2V0UGF0aCxcbiAgaXNDYW52YXNGaWxlXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5pbXBvcnQge1xuICBwYXJzZUZyb250bWF0dGVyLFxuICBzZXRGcm9udG1hdHRlclxufSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB7XG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2Vcbn0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vdmF1bHQudHMnO1xuXG5jb25zdCBFU0NBUEVEX1dJS0lMSU5LX0RJVklERVIgPSBTdHJpbmcucmF3YFxcfGA7XG4vKipcbiAqIE1hdGNoZXMgYSB3aWtpbGluayBkaXZpZGVyIHRvZ2V0aGVyIHdpdGggdGhlIGJhY2tzbGFzaCBlc2NhcGluZyBpdCwgaWYgYW55LiBBIGxvb2tiZWhpbmQgd291bGQgc2F5IFwidW5lc2NhcGVkXCJcbiAqIGRpcmVjdGx5LCBidXQgaXQgaXMgYSBzeW50YXggZXJyb3Igb24gaU9TIGJlZm9yZSAxNi40LCBiZWxvdyB0aGUgaU9TIDE1IE9ic2lkaWFuIG1vYmlsZSBzdGlsbCBzdXBwb3J0cy5cbiAqIFJlcGxhY2luZyBldmVyeSBtYXRjaCB3aXRoIGFuIGVzY2FwZWQgZGl2aWRlciBsZWF2ZXMgYW4gZXNjYXBlZCBvbmUgYXMgaXQgd2FzIGFuZCBlc2NhcGVzIGEgYmFyZSBvbmUuXG4gKi9cbmNvbnN0IE9QVElPTkFMTFlfRVNDQVBFRF9XSUtJTElOS19ESVZJREVSX1JFR0VYUCA9IC9cXFxcP1xcfC9nO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBhcHBseUNvbnRlbnRDaGFuZ2VzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBseUNvbnRlbnRDaGFuZ2VzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgY29udGVudCBjaGFuZ2VzIHRvIGFwcGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXSB8IG51bGwsIENvbnRlbnRBcmd1bWVudHM+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgYXBwbHlGaWxlQ2hhbmdlc30uXG4gKi9cbmV4cG9ydCB0eXBlIEFwcGx5RmlsZUNoYW5nZXNPcHRpb25zID0gUHJvY2Vzc09wdGlvbnM7XG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBhcHBseUZpbGVDaGFuZ2VzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBseUZpbGVDaGFuZ2VzUGFyYW1zIGV4dGVuZHMgQXBwbHlGaWxlQ2hhbmdlc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlIHdoZXJlIHRoZSBmaWxlIGNoYW5nZXMgd2lsbCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGZpbGUgY2hhbmdlcyB0byBhcHBseS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBDb250ZW50QXJndW1lbnRzPjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuLyoqXG4gKiBBIGZpbGUgY2hhbmdlIGluIHRoZSB2YXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIEEgbmV3IGNvbnRlbnQgdG8gcmVwbGFjZSB0aGUgb2xkIGNvbnRlbnQuXG4gICAqL1xuICBuZXdDb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIG9sZCBjb250ZW50IHRoYXQgd2lsbCBiZSByZXBsYWNlZC5cbiAgICovXG4gIG9sZENvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdGhhdCBjYXVzZWQgdGhlIGNoYW5nZS5cbiAgICovXG4gIHJlZmVyZW5jZTogUmVmZXJlbmNlO1xufVxuaW50ZXJmYWNlIEFwcGx5Q2FudmFzQ2hhbmdlc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGZpbGUgY2hhbmdlcyB0byBhcHBseS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBDb250ZW50QXJndW1lbnRzPjtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJldHJ5IHRoZSBvcGVyYXRpb24gaWYgdGhlIGNoYW5nZXMgYXJlIGludmFsaWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBjaGFuZ2VzIHRvIGFwcGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlczogRmlsZUNoYW5nZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBwYXJzaW5nIHRoZSBmcm9udG1hdHRlciBmYWlsZWQuXG4gICAqL1xuICByZWFkb25seSBoYXNGcm9udG1hdHRlckVycm9yOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEFwcGx5Q29udGVudENoYW5nZXNUb1RleHRSZXN1bHQge1xuICByZWFkb25seSBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT47XG4gIHJlYWRvbmx5IG5ld0NvbnRlbnQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBUaGUgZnJvbnRtYXR0ZXIgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPjtcblxuICAvKipcbiAgICogQSBtYXAgb2YgZnJvbnRtYXR0ZXIga2V5cyB0byB0aGUgZnJvbnRtYXR0ZXIgY2hhbmdlcyB3aXRoIG9mZnNldHMgdG8gYXBwbHkuXG4gICAqL1xuICByZWFkb25seSBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0TWFwOiBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEJ1aWxkRmluYWxDb250ZW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmcm9udG1hdHRlciB0byB3cml0ZSBpbnRvIHRoZSBmaW5hbCBjb250ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIGZyb250bWF0dGVyIGtleXMgdG8gdGhlIGZyb250bWF0dGVyIGNoYW5nZXMgd2l0aCBvZmZzZXRzIHRoYXQgd2VyZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXJDaGFuZ2VkOiBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgZnJvbnRtYXR0ZXIgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBuZXdDb250ZW50OiBzdHJpbmc7XG59XG5cbnR5cGUgQ2FudmFzQ2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8Q2FudmFzUmVmZXJlbmNlPjtcbnR5cGUgQ2FudmFzRmlsZU5vZGVDaGFuZ2UgPSBGaWxlQ2hhbmdlICYgV2l0aFJlZmVyZW5jZTxDYW52YXNGaWxlTm9kZVJlZmVyZW5jZT47XG50eXBlIENhbnZhc1RleHROb2RlQ2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8Q2FudmFzVGV4dE5vZGVSZWZlcmVuY2U+O1xudHlwZSBDb250ZW50Q2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8UmVmZXJlbmNlQ2FjaGU+O1xudHlwZSBGcm9udG1hdHRlckNoYW5nZSA9IEZpbGVDaGFuZ2UgJiBXaXRoUmVmZXJlbmNlPEZyb250bWF0dGVyTGlua0NhY2hlPjtcblxudHlwZSBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8RnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cz47XG5cbmludGVyZmFjZSBQYXJzZUZyb250bWF0dGVyU2FmZWx5UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IHRvIHBhcnNlIHRoZSBmcm9udG1hdHRlciBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0aGUgY29udGVudCBiZWxvbmdzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUGFyc2VGcm9udG1hdHRlclNhZmVseVJlc3VsdCB7XG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+O1xuICByZWFkb25seSBoYXNGcm9udG1hdHRlckVycm9yOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVmFsaWRhdGVDaGFuZ2VzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IGNoYW5nZXMgdG8gdmFsaWRhdGUuXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzOiBGaWxlQ2hhbmdlW107XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IHRoZSBjaGFuZ2VzIHNob3VsZCBiZSB2YWxpZGF0ZWQgYWdhaW5zdC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZyb250bWF0dGVyIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSB2YWxpZGF0ZWQgYWdhaW5zdC5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgdmFsaWRhdGVkIGFnYWluc3QuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBXaXRoUmVmZXJlbmNlPFIgZXh0ZW5kcyBSZWZlcmVuY2U+IHtcbiAgcmVmZXJlbmNlOiBSO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBzZXJpZXMgb2YgY29udGVudCBjaGFuZ2VzIHRvIHRoZSBzcGVjaWZpZWQgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGFwcGx5aW5nIHRoZSBjb250ZW50IGNoYW5nZXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGNvbnRlbnQgb3IgdG8gYG51bGxgIGlmIHVwZGF0ZSBkaWRuJ3Qgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q29udGVudENoYW5nZXMocGFyYW1zOiBBcHBseUNvbnRlbnRDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhYm9ydFNpZ25hbCxcbiAgICBjaGFuZ2VzUHJvdmlkZXIsXG4gICAgY29udGVudCxcbiAgICBwYXRoLFxuICAgIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbiAgfSA9IHBhcmFtcztcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgbGV0IGNoYW5nZXMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY2hhbmdlc1Byb3ZpZGVyLCB7IGFib3J0U2lnbmFsLCBjb250ZW50IH0pO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAoY2hhbmdlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBmcm9udG1hdHRlciwgaGFzRnJvbnRtYXR0ZXJFcnJvciB9ID0gcGFyc2VGcm9udG1hdHRlclNhZmVseSh7IGNvbnRlbnQsIHBhdGggfSk7XG5cbiAgaWYgKCFhcmVDaGFuZ2VzVmFsaWQoeyBjaGFuZ2VzLCBjb250ZW50LCBmcm9udG1hdHRlciwgcGF0aCB9KSkge1xuICAgIHJldHVybiBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXMgPyBudWxsIDogY29udGVudDtcbiAgfVxuXG4gIGNoYW5nZXMgPSBzb3J0QW5kRmlsdGVyQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICBjb25zdCB7IGZyb250bWF0dGVyQ2hhbmdlZCwgbmV3Q29udGVudCB9ID0gYXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dCh7IGNoYW5nZXMsIGNvbnRlbnQsIGhhc0Zyb250bWF0dGVyRXJyb3IsIHBhdGggfSk7XG5cbiAgYXdhaXQgYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyh7XG4gICAgYWJvcnRTaWduYWwsXG4gICAgZnJvbnRtYXR0ZXIsXG4gICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcDogZnJvbnRtYXR0ZXJDaGFuZ2VkLFxuICAgIHBhdGhcbiAgfSk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgcmV0dXJuIGJ1aWxkRmluYWxDb250ZW50KHsgZnJvbnRtYXR0ZXIsIGZyb250bWF0dGVyQ2hhbmdlZCwgbmV3Q29udGVudCB9KTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgYXBwbHlpbmcgdGhlIGZpbGUgY2hhbmdlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBjaGFuZ2VzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5RmlsZUNoYW5nZXMocGFyYW1zOiBBcHBseUZpbGVDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgY2hhbmdlc1Byb3ZpZGVyLFxuICAgIHBhdGhPckZpbGUsXG4gICAgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzID0gdHJ1ZSxcbiAgICAuLi5vcHRpb25zXG4gIH0gPSBwYXJhbXM7XG4gIGF3YWl0IHByb2Nlc3Mobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFByb2Nlc3NQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgYXN5bmMgbmV3Q29udGVudFByb3ZpZGVyKHsgYWJvcnRTaWduYWwsIGNvbnRlbnQgfSkge1xuICAgICAgcmV0dXJuIGlzQ2FudmFzRmlsZShwYXRoT3JGaWxlKVxuICAgICAgICA/IChhd2FpdCBhcHBseUNhbnZhc0NoYW5nZXMoe1xuICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIGNoYW5nZXNQcm92aWRlcixcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIHBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSxcbiAgICAgICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICAgICAgfSkpXG4gICAgICAgIDogKGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoe1xuICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIGNoYW5nZXNQcm92aWRlcixcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIHBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSxcbiAgICAgICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICAgICAgfSkpO1xuICAgIH0sXG4gICAgcGF0aE9yRmlsZSxcbiAgICAuLi5vcHRpb25zXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNDaGFuZ2Uge1xuICByZXR1cm4gaXNDYW52YXNSZWZlcmVuY2UoY2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgZmlsZSBub2RlIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgZmlsZSBub2RlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UoY2hhbmdlOiBGaWxlQ2hhbmdlKTogY2hhbmdlIGlzIENhbnZhc0ZpbGVOb2RlQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkgJiYgY2hhbmdlLnJlZmVyZW5jZS50eXBlID09PSAnZmlsZSc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlOiBGaWxlQ2hhbmdlKTogY2hhbmdlIGlzIENhbnZhc1RleHROb2RlQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkgJiYgY2hhbmdlLnJlZmVyZW5jZS50eXBlID09PSAndGV4dCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjb250ZW50IGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY29udGVudCBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRlbnRDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgQ29udGVudENoYW5nZSB7XG4gIHJldHVybiBpc1JlZmVyZW5jZUNhY2hlKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckNoYW5nZShmaWxlQ2hhbmdlOiBGaWxlQ2hhbmdlKTogZmlsZUNoYW5nZSBpcyBGcm9udG1hdHRlckNoYW5nZSB7XG4gIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyB7XG4gIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoZmlsZUNoYW5nZS5yZWZlcmVuY2UpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlIHRvIGEgZnJvbnRtYXR0ZXIgY2hhbmdlIHdpdGggb2Zmc2V0cy5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCBmaWxlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhmaWxlQ2hhbmdlOiBGcm9udG1hdHRlckNoYW5nZSk6IEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UpXG4gICAgPyBmaWxlQ2hhbmdlXG4gICAgOiB7XG4gICAgICAuLi5maWxlQ2hhbmdlLFxuICAgICAgcmVmZXJlbmNlOiB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoZmlsZUNoYW5nZS5yZWZlcmVuY2UpXG4gICAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlDYW52YXNDaGFuZ2VzKHBhcmFtczogQXBwbHlDYW52YXNDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhYm9ydFNpZ25hbCxcbiAgICBjaGFuZ2VzUHJvdmlkZXIsXG4gICAgY29udGVudCxcbiAgICBwYXRoLFxuICAgIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIsIHsgYWJvcnRTaWduYWwsIGNvbnRlbnQgfSk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIGlmIChjaGFuZ2VzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjYW52YXNEYXRhID0gcGFyc2VKc29uU2FmZShjb250ZW50KSBhcyBHZW5lcmljT2JqZWN0PENhbnZhc0RhdGE+O1xuXG4gIC8vIFRoZSBjb250ZW50IGlzIG5vdCBhIHZhbGlkIGNhbnZhcyAoYSB0cmFuc2llbnQgYHt9YCBvciBwYXJ0aWFsIG9iamVjdCkuXG4gIC8vIFRoaXMgaGFwcGVucyB3aGVuIGFub3RoZXIgcGx1Z2luIGlzIHN0aWxsIGluaXRpYWxpemluZyB0aGUgZmlsZS5cbiAgLy8gU2tpcCB0aGUgcmV3cml0ZSBzbyBubyBtYWxmb3JtZWQgb2JqZWN0IGlzIHdyaXR0ZW4gYmFjayBhbmQgdGhlIHJlbmRlcmVyIG5ldmVyIGNyYXNoZXMuXG4gIC8vIE1pcnJvcnMgdGhlIGB7IGVkZ2VzOiBbXSwgbm9kZXM6IFtdIH1gIGZhbGxiYWNrIGluIGBnZXRDYW52YXNSZWZlcmVuY2VzYC5cbiAgLy8gUmV0dXJuaW5nIHRoZSBjb250ZW50IHVuY2hhbmdlZCByYXRoZXIgdGhhbiBgbnVsbGAgY29tcGxldGVzIHRoZSBvcGVyYXRpb24gd2l0aG91dCBhIHdyaXRlOiB0aGVcbiAgLy8gcmVmdXNhbCBpcyBwZXJtYW5lbnQgZm9yIHRoaXMgY29udGVudCwgYW5kIGBudWxsYCB3b3VsZCBhc2sgYHByb2Nlc3MoKWAgdG8gcmV0cnkgaXQgZm9yZXZlci5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGNhbnZhc0RhdGEubm9kZXMpIHx8ICFBcnJheS5pc0FycmF5KGNhbnZhc0RhdGEuZWRnZXMpKSB7XG4gICAgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTphcHBseUNhbnZhc0NoYW5nZXMnKSgnTm90IGEgdmFsaWQgY2FudmFzOyBza2lwcGluZyByZXdyaXRlJywgeyBwYXRoIH0pO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgY29uc3QgY2FudmFzVGV4dENoYW5nZXMgPSBuZXcgTWFwPG51bWJlciwgQ2FudmFzVGV4dE5vZGVDaGFuZ2VbXT4oKTtcblxuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgaWYgKCFpc0NhbnZhc0NoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gJ09ubHkgY2FudmFzIGNoYW5nZXMgYXJlIHN1cHBvcnRlZCBmb3IgY2FudmFzIGZpbGVzJztcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwge1xuICAgICAgICBjaGFuZ2UsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IGNhbnZhc0RhdGEubm9kZXNbY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4OiBjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICBpZiAoaXNDYW52YXNGaWxlTm9kZUNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBpZiAobm9kZS5maWxlICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICBnZXRPYnNpZGlhbkxpYkRlYnVnZ2VyKCdGaWxlQ2hhbmdlOmFwcGx5Q2FudmFzQ2hhbmdlcycpKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IG5vZGUuZmlsZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBub2RlSW5kZXg6IGNoYW5nZS5yZWZlcmVuY2Uubm9kZUluZGV4LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgdHlwZTogJ2ZpbGUnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgICAgbm9kZS5maWxlID0gY2hhbmdlLm5ld0NvbnRlbnQ7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIGZhbHNlIGJyYW5jaCBvZiB0aGUgZWxzZS1pZiBpcyB1bnJlYWNoYWJsZTsgb25seSAnZmlsZScgYW5kICd0ZXh0JyBjYW52YXMgbm9kZSB0eXBlcyBleGlzdC4gKi9cbiAgICB9IGVsc2UgaWYgKGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGxldCBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUgPSBjYW52YXNUZXh0Q2hhbmdlcy5nZXQoY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXgpO1xuICAgICAgaWYgKCFjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUpIHtcbiAgICAgICAgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlID0gW107XG4gICAgICAgIGNhbnZhc1RleHRDaGFuZ2VzLnNldChjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCwgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlKTtcbiAgICAgIH1cblxuICAgICAgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlLnB1c2goY2hhbmdlKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IFtub2RlSW5kZXgsIGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZV0gb2YgY2FudmFzVGV4dENoYW5nZXMpIHtcbiAgICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBOb2RlIGV4aXN0ZW5jZSBpcyBhbHJlYWR5IHZlcmlmaWVkIGluIHRoZSBmaXJzdCBsb29wIGFib3ZlLiAqL1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICBpZiAodHlwZW9mIG5vZGUudGV4dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnTm9kZSB0ZXh0IGlzIG5vdCBhIHN0cmluZyc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXMgPSBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUubWFwKChjaGFuZ2UpID0+IHtcbiAgICAgIC8vIEEgY2FudmFzIHRleHQgbm9kZSBjYW4gaG9sZCBhIG1hcmtkb3duIHRhYmxlLCB3aGVyZSBhIHNpemVkIGVtYmVkIGVzY2FwZXMgdGhlIHdpa2lsaW5rXG4gICAgICAvLyBkaXZpZGVyIHNvIHRoZSBwaXBlIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgdGFibGUgY2VsbCAoYCFbW2ltZy5wbmdcXHw1MDBdXWApLiBUaGUgcmVnZW5lcmF0ZWRcbiAgICAgIC8vIGxpbmsgdXNlcyBhbiB1bmVzY2FwZWQgZGl2aWRlciwgc28gcmVzdG9yZSB0aGUgZXNjYXBpbmcgd2hlbiB0aGUgb3JpZ2luYWwgcmVmZXJlbmNlIGhhZCBpdCxcbiAgICAgIC8vIGtlZXBpbmcgYm90aCB0aGUgdGFibGUgYW5kIHRoZSBlbWJlZCBzaXplIGludGFjdCBhY3Jvc3MgdGhlIHJld3JpdGUuXG4gICAgICBjb25zdCBuZXdDb250ZW50ID0gY2hhbmdlLnJlZmVyZW5jZS5vcmlnaW5hbFJlZmVyZW5jZS5vcmlnaW5hbC5pbmNsdWRlcyhFU0NBUEVEX1dJS0lMSU5LX0RJVklERVIpXG4gICAgICAgID8gY2hhbmdlLm5ld0NvbnRlbnQucmVwbGFjZUFsbChPUFRJT05BTExZX0VTQ0FQRURfV0lLSUxJTktfRElWSURFUl9SRUdFWFAsICgpID0+IEVTQ0FQRURfV0lLSUxJTktfRElWSURFUilcbiAgICAgICAgOiBjaGFuZ2UubmV3Q29udGVudDtcbiAgICAgIHJldHVybiByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UoY2hhbmdlLnJlZmVyZW5jZS5vcmlnaW5hbFJlZmVyZW5jZSwgbmV3Q29udGVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgbmV3Tm9kZVRleHQgPSBhd2FpdCBhcHBseUNvbnRlbnRDaGFuZ2VzKHtcbiAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgY2hhbmdlc1Byb3ZpZGVyOiBjb250ZW50Q2hhbmdlcyxcbiAgICAgIGNvbnRlbnQ6IG5vZGUudGV4dCxcbiAgICAgIHBhdGg6IGAke3BhdGh9Lm5vZGUke1N0cmluZyhub2RlSW5kZXgpfS5WSVJUVUFMX0ZJTEUubWRgLFxuICAgICAgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzXG4gICAgfSk7XG5cbiAgICAvLyBgbnVsbGAgaXMgYGFwcGx5Q29udGVudENoYW5nZXNgJ3MgcmV0cnkgc2VudGluZWwsIG5vdCBhIHZhbHVlLiBBc3NpZ25pbmcgaXQgd291bGQgc2VyaWFsaXplXG4gICAgLy8gYFwidGV4dFwiOiBudWxsYCBvdmVyIHRoZSBub2RlIGFuZCBkZXN0cm95IGl0cyBjb250ZW50LiBUaGUgbWlzbWF0Y2ggaXMgcGVybWFuZW50IGZvciB0aGlzIGNvbnRlbnQg4oCUXG4gICAgLy8gdGhlIHNhbWUgY2FsbCB0aGUgZmlsZS1ub2RlIG1pc21hdGNoIGFib3ZlIGFscmVhZHkgbWFrZXMg4oCUIHNvIHJldHVybiB0aGUgY29udGVudCB1bmNoYW5nZWQgdG9cbiAgICAvLyBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIHdpdGhvdXQgYSB3cml0ZSwgcmF0aGVyIHRoYW4gYG51bGxgLCB3aGljaCB3b3VsZCByZXRyeSBmb3JldmVyLlxuICAgIGlmIChuZXdOb2RlVGV4dCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgbm9kZS50ZXh0ID0gbmV3Tm9kZVRleHQ7XG4gIH1cblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY2FudmFzRGF0YSwgbnVsbCwgJ1xcdCcpO1xufVxuXG5mdW5jdGlvbiBhcHBseUNvbnRlbnRDaGFuZ2VzVG9UZXh0KHBhcmFtczogQXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dFBhcmFtcyk6IEFwcGx5Q29udGVudENoYW5nZXNUb1RleHRSZXN1bHQge1xuICBjb25zdCB7XG4gICAgY2hhbmdlcyxcbiAgICBjb250ZW50LFxuICAgIGhhc0Zyb250bWF0dGVyRXJyb3IsXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBsZXQgbmV3Q29udGVudCA9ICcnO1xuICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgbGV0IGxhc3RDb250ZW50Q2hhbmdlOiBDb250ZW50Q2hhbmdlID0ge1xuICAgIG5ld0NvbnRlbnQ6ICcnLFxuICAgIG9sZENvbnRlbnQ6ICcnLFxuICAgIHJlZmVyZW5jZToge1xuICAgICAgbGluazogJycsXG4gICAgICBvcmlnaW5hbDogJycsXG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBlbmQ6IHsgY29sOiAwLCBsaW5lOiAwLCBvZmZzZXQ6IDAgfSxcbiAgICAgICAgc3RhcnQ6IHsgY29sOiAwLCBsaW5lOiAwLCBvZmZzZXQ6IDAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+KCk7XG5cbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgY2hhbmdlIHR5cGVzIGFyZSBoYW5kbGVkOyB0aGUgZmFsc2UgYnJhbmNoIGxlYWRzIHRvIG90aGVyIGVsc2UtaWYgY2hlY2tzLiAqL1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGlmIChsYXN0SW5kZXggPD0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpIHtcbiAgICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpO1xuICAgICAgICBuZXdDb250ZW50ICs9IGNoYW5nZS5uZXdDb250ZW50O1xuICAgICAgICBsYXN0SW5kZXggPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICAgIGxhc3RDb250ZW50Q2hhbmdlID0gY2hhbmdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdTdGFydE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gbGFzdENvbnRlbnRDaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdFbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSBsYXN0Q29udGVudENoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgICAgICBjb25zdCBvdmVybGFwcGluZ0NvbnRlbnQgPSBsYXN0Q29udGVudENoYW5nZS5uZXdDb250ZW50LnNsaWNlKG92ZXJsYXBwaW5nU3RhcnRPZmZzZXQsIG92ZXJsYXBwaW5nRW5kT2Zmc2V0KTtcbiAgICAgICAgaWYgKG92ZXJsYXBwaW5nQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ092ZXJsYXBwaW5nIGNoYW5nZXMnO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgeyBjaGFuZ2UsIGxhc3RDb250ZW50Q2hhbmdlIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdDb250ZW50ID0gbmV3Q29udGVudC5zbGljZSgwLCBuZXdDb250ZW50Lmxlbmd0aCAtIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQubGVuZ3RoKVxuICAgICAgICAgICsgbGFzdENvbnRlbnRDaGFuZ2UubmV3Q29udGVudC5zbGljZSgwLCBvdmVybGFwcGluZ1N0YXJ0T2Zmc2V0KVxuICAgICAgICAgICsgY2hhbmdlLm5ld0NvbnRlbnRcbiAgICAgICAgICArIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQuc2xpY2Uob3ZlcmxhcHBpbmdFbmRPZmZzZXQpO1xuICAgICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsbCBjaGFuZ2UgdHlwZXMgYXJlIGhhbmRsZWQgYWJvdmU7IG5vIHVua25vd24gY2hhbmdlIHR5cGVzIGluIHByYWN0aWNlLiAqL1xuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFZhbGlkYXRpb24gcmVqZWN0cyBmcm9udG1hdHRlciBjaGFuZ2VzIHdoZW4gcGFyc2luZyBmYWlscywgc28gdGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUuICovXG4gICAgICBpZiAoaGFzRnJvbnRtYXR0ZXJFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgYXBwbHkgZnJvbnRtYXR0ZXIgY2hhbmdlIGluICR7cGF0aH0sIGJlY2F1c2UgZnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWRgLCB7IGNoYW5nZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIGxldCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAuZ2V0KGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgICAgaWYgKCFmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cykge1xuICAgICAgICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzID0gW107XG4gICAgICAgICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5zZXQoY2hhbmdlLnJlZmVyZW5jZS5rZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzKTtcbiAgICAgICAgfVxuICAgICAgICBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cy5wdXNoKHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhjaGFuZ2UpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcblxuICByZXR1cm4geyBmcm9udG1hdHRlckNoYW5nZWQ6IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsIG5ld0NvbnRlbnQgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyhwYXJhbXM6IEFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHNQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGFib3J0U2lnbmFsLFxuICAgIGZyb250bWF0dGVyLFxuICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBmb3IgKGNvbnN0IFtrZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzXSBvZiBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0TWFwKSB7XG4gICAgY29uc3QgcHJvcGVydHlWYWx1ZSA9IGdldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRtYXR0ZXIsIGtleSk7XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFZhbGlkYXRpb24gZW5zdXJlcyB0aGUgcHJvcGVydHkgaXMgYSBzdHJpbmcgYmVmb3JlIHJlYWNoaW5nIHRoaXMgcG9pbnQuICovXG4gICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gICAgY29uc3QgY29udGVudENoYW5nZXM6IENvbnRlbnRDaGFuZ2VbXSA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzLm1hcCgoY2hhbmdlKSA9PiAoe1xuICAgICAgbmV3Q29udGVudDogY2hhbmdlLm5ld0NvbnRlbnQsXG4gICAgICBvbGRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIGVuZDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLmVuZE9mZnNldCxcbiAgICAgICAgICAgIGxpbmU6IDAsXG4gICAgICAgICAgICBvZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICAgIG9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcblxuICAgIGNvbnN0IG5ld1Byb3BlcnR5VmFsdWUgPSBhd2FpdCBhcHBseUNvbnRlbnRDaGFuZ2VzKHtcbiAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgY2hhbmdlc1Byb3ZpZGVyOiBjb250ZW50Q2hhbmdlcyxcbiAgICAgIGNvbnRlbnQ6IHByb3BlcnR5VmFsdWUsXG4gICAgICBwYXRoOiBgJHtwYXRofS5mcm9udG1hdHRlci4ke2tleX0uVklSVFVBTF9GSUxFLm1kYFxuICAgIH0pO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbm5lciBhcHBseUNvbnRlbnRDaGFuZ2VzIHVzZXMgdmFsaWRhdGVkIG9mZnNldHMsIHNvIG51bGwgaXMgbm90IGV4cGVjdGVkLiAqL1xuICAgIGlmIChuZXdQcm9wZXJ0eVZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKHtcbiAgICAgICRvYmplY3Q6IGZyb250bWF0dGVyLFxuICAgICAgcGF0aDoga2V5LFxuICAgICAgdmFsdWU6IG5ld1Byb3BlcnR5VmFsdWVcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhcmVDaGFuZ2VzVmFsaWQocGFyYW1zOiBWYWxpZGF0ZUNoYW5nZXNQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGNoYW5nZXMsXG4gICAgY29udGVudCxcbiAgICBmcm9udG1hdHRlcixcbiAgICBwYXRoXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyID0gZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTp2YWxpZGF0ZUNoYW5nZXMnKTtcbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgY2hhbmdlIHR5cGVzIGFyZSBoYW5kbGVkOyB0aGUgZmFsc2UgYnJhbmNoIGxlYWRzIHRvIG90aGVyIGVsc2UtaWYgY2hlY2tzLiAqL1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgICBjb25zdCBlbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gY29udGVudC5zbGljZShzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTtcbiAgICAgIGlmIChhY3R1YWxDb250ZW50ICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignQ29udGVudCBtaXNtYXRjaCcsIHtcbiAgICAgICAgICBhY3R1YWxDb250ZW50LFxuICAgICAgICAgIGVuZE9mZnNldCxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgc3RhcnRPZmZzZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsbCBjaGFuZ2UgdHlwZXMgYXJlIGhhbmRsZWQ7IG5vIHVua25vd24gY2hhbmdlIHR5cGVzIGluIHByYWN0aWNlLiAqL1xuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGNoYW5nZSkpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignUHJvcGVydHkgdmFsdWUgaXMgbm90IGEgc3RyaW5nJywge1xuICAgICAgICAgIGZyb250bWF0dGVyS2V5OiBjaGFuZ2UucmVmZXJlbmNlLmtleSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHByb3BlcnR5VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IHByb3BlcnR5VmFsdWUuc2xpY2UoY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldCwgY2hhbmdlLnJlZmVyZW5jZS5lbmRPZmZzZXQpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGFydE9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGNoYW5nZSB0eXBlcyBhcmUgaGFuZGxlZCBhYm92ZTsgbm8gdW5rbm93biBjaGFuZ2UgdHlwZXMgaW4gcHJhY3RpY2UuICovXG4gICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRmluYWxDb250ZW50KHBhcmFtczogQnVpbGRGaW5hbENvbnRlbnRQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgZnJvbnRtYXR0ZXIsXG4gICAgZnJvbnRtYXR0ZXJDaGFuZ2VkLFxuICAgIG5ld0NvbnRlbnRcbiAgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGZyb250bWF0dGVyQ2hhbmdlZC5zaXplID4gMCA/IHNldEZyb250bWF0dGVyKG5ld0NvbnRlbnQsIGZyb250bWF0dGVyKSA6IG5ld0NvbnRlbnQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXJTYWZlbHkocGFyYW1zOiBQYXJzZUZyb250bWF0dGVyU2FmZWx5UGFyYW1zKTogUGFyc2VGcm9udG1hdHRlclNhZmVseVJlc3VsdCB7XG4gIGNvbnN0IHsgY29udGVudCwgcGF0aCB9ID0gcGFyYW1zO1xuICBsZXQgZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8dW5rbm93bj4gPSB7fTtcbiAgbGV0IGhhc0Zyb250bWF0dGVyRXJyb3IgPSBmYWxzZTtcblxuICB0cnkge1xuICAgIGZyb250bWF0dGVyID0gcGFyc2VGcm9udG1hdHRlcihjb250ZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKG5ldyBFcnJvcihgRnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWQgaW4gJHtwYXRofWAsIHsgY2F1c2U6IGVycm9yIH0pKTtcbiAgICBoYXNGcm9udG1hdHRlckVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7IGZyb250bWF0dGVyLCBoYXNGcm9udG1hdHRlckVycm9yIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlSnNvblNhZmUoY29udGVudDogc3RyaW5nKTogR2VuZXJpY09iamVjdCB7XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaCB7XG4gICAgcGFyc2VkID0gbnVsbDtcbiAgfVxuXG4gIGlmIChwYXJzZWQgPT09IG51bGwgfHwgdHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcpIHtcbiAgICBwYXJzZWQgPSB7fTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWQgYXMgR2VuZXJpY09iamVjdDtcbn1cblxuZnVuY3Rpb24gc29ydEFuZEZpbHRlckNoYW5nZXMoY2hhbmdlczogRmlsZUNoYW5nZVtdKTogRmlsZUNoYW5nZVtdIHtcbiAgLy8gU29ydCBjaGFuZ2VzIGJ5IHR5cGUgYW5kIHBvc2l0aW9uXG4gIGNoYW5nZXMuc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoYSkgJiYgaXNDb250ZW50Q2hhbmdlKGIpKSB7XG4gICAgICByZXR1cm4gYS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gYi5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoYSkgJiYgaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGIpKSB7XG4gICAgICByZXR1cm4gYS5yZWZlcmVuY2Uua2V5LmxvY2FsZUNvbXBhcmUoYi5yZWZlcmVuY2Uua2V5KSB8fCBhLnJlZmVyZW5jZS5zdGFydE9mZnNldCAtIGIucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGEpICYmIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5rZXkubG9jYWxlQ29tcGFyZShiLnJlZmVyZW5jZS5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBpc0NvbnRlbnRDaGFuZ2UoYSkgPyAtMSA6IDE7XG4gIH0pO1xuXG4gIC8vIEZpbHRlciBvdXQgZHVwbGljYXRlIGFuZCBuby1vcCBjaGFuZ2VzXG4gIHJldHVybiBjaGFuZ2VzLmZpbHRlcigoY2hhbmdlLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBjaGFuZ2Uub2xkQ29udGVudCAhPT0gY2hhbmdlLm5ld0NvbnRlbnQgJiYgKGluZGV4ID09PSAwIHx8ICFpc0RlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSkpO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsU0FBUyxrQkFBa0I7QUFDM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBZ0JQLFNBQVMsOEJBQThCO0FBQ3ZDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxlQUFlO0FBRXhCLE1BQU0sMkJBQTJCLE9BQU87QUFNeEMsTUFBTSw2Q0FBNkM7QUF3T25ELGVBQXNCLG9CQUFvQixRQUEyRDtBQUNuRyxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsOEJBQThCO0FBQUEsRUFDaEMsSUFBSTtBQUNKLGNBQVksZUFBZTtBQUMzQixNQUFJLFVBQVUsTUFBTSxhQUFhLGlCQUFpQixFQUFFLGFBQWEsUUFBUSxDQUFDO0FBQzFFLGNBQVksZUFBZTtBQUMzQixNQUFJLFlBQVksTUFBTTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sRUFBRSxhQUFhLG9CQUFvQixJQUFJLHVCQUF1QixFQUFFLFNBQVMsS0FBSyxDQUFDO0FBRXJGLE1BQUksQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLFNBQVMsYUFBYSxLQUFLLENBQUMsR0FBRztBQUM3RCxXQUFPLDhCQUE4QixPQUFPO0FBQUEsRUFDOUM7QUFFQSxZQUFVLHFCQUFxQixPQUFPO0FBRXRDLFFB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
@@ -1,4 +1,4 @@
1
- /// <reference path="./library.d.mts" />
1
+ /// <reference path="./library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,13 +2,7 @@
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
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,10 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- (function initEsm() {
37
- ensureDisposeSymbols();
38
- ensureBrowserProcess();
39
- })();
30
+ ensureBrowserProcess();
40
31
  })();
41
32
 
42
33
  import { requestAnimationFrameAsync } from "@mnaoumov/typescript-lib/async";
@@ -57,4 +48,4 @@ async function revealInFileExplorer(params) {
57
48
  export {
58
49
  revealInFileExplorer
59
50
  };
60
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ZpbGUtZXhwbG9yZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBPYnNpZGlhbidzIGNvcmUgZmlsZSBleHBsb3Jlci5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IEludGVybmFsUGx1Z2luTmFtZSB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcblxuLyoqXG4gKiBIb3cgbWFueSBhbmltYXRpb24gZnJhbWVzIHRoZSBleHBsb3JlciBrZWVwcyByZS1hY3RpdmF0aW5nIGl0c2VsZiBmb3IgYWZ0ZXIgaXRzIHJldmVhbCBzZXR0bGVzLlxuICpcbiAqIGByZXZlYWxJbkZvbGRlcmAgYXdhaXRzIGByZXZlYWxMZWFmYCwgd2hpY2ggYWN0aXZhdGVzIHRoZSBleHBsb3JlciwgYW5kIHRoZW4gYWN0aXZhdGVzIGl0IEFHQUlOIGluc2lkZVxuICogYGFwcC5uZXh0RnJhbWVgLiBXYWl0aW5nIG9uZSBmcmFtZSBpcyBub3QgZW5vdWdoIHRvIGxhbmQgYWZ0ZXIgdGhhdDogYSBjYWxsZXIgZm9jdXNpbmcgYW4gZWRpdG9yIG9uIHRoZVxuICogZmlyc3QgZnJhbWUgbG9zdCB0aGUgZm9jdXMgYmFjayB0byB0aGUgZXhwbG9yZXIgb24gZXZlcnkgcmVhbCBtb3VzZSBjbGljayAobWVhc3VyZWQgaW4gT2JzaWRpYW4gMS4xMy54KS5cbiAqL1xuY29uc3QgRlJBTUVTX1RPX09VVExBU1RfVEhFX0VYUExPUkVSX0FDVElWQVRJT04gPSAyO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXZlYWxJbkZpbGVFeHBsb3Jlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV2ZWFsSW5GaWxlRXhwbG9yZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZpbGUgb3IgZm9sZGVyIHRvIHJldmVhbC5cbiAgICovXG4gIHJlYWRvbmx5IGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xufVxuXG4vKipcbiAqIEhpZ2hsaWdodHMgYSBmaWxlIG9yIGZvbGRlciBpbiB0aGUgY29yZSBmaWxlIGV4cGxvcmVyLCBhbmQgcmVzb2x2ZXMgb25seSBvbmNlIHRoZSBleHBsb3JlciBoYXNcbiAqIGZpbmlzaGVkIHRha2luZyB0aGUgZm9jdXMgZm9yIGl0LlxuICpcbiAqIFRoZSBjb3JlIHBsdWdpbidzIGByZXZlYWxJbkZvbGRlcmAgaXMgdHlwZWQgYHZvaWRgIGJ1dCBpcyBhc3luY2hyb25vdXMgYXQgcnVudGltZSwgYW5kIHRoZSBleHBsb3JlclxuICogcmUtYWN0aXZhdGVzIGl0c2VsZiBvbiBhIGxhdGVyIGZyYW1lLiBBIGNhbGxlciB0aGF0IG1vdmVzIHRoZSBmb2N1cyBzb21ld2hlcmUgZWxzZSByaWdodCBhZnRlciB0aGVcbiAqIHJldmVhbCBcdTIwMTQgYmFjayBpbnRvIGFuIGVkaXRvciwgc2F5IFx1MjAxNCBsb3NlcyB0aGF0IHJhY2UgdW5sZXNzIGl0IGF3YWl0cyB0aGlzLlxuICpcbiAqIEEgZGlzYWJsZWQgZmlsZSBleHBsb3JlciByZXZlYWxzIG5vdGhpbmcsIGFuZCB0aGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyBhdCBvbmNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgZXhwbG9yZXIgaGFzIGZpbmlzaGVkIHJldmVhbGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldmVhbEluRmlsZUV4cGxvcmVyKHBhcmFtczogUmV2ZWFsSW5GaWxlRXhwbG9yZXJQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhYnN0cmFjdEZpbGUsIGFwcCB9ID0gcGFyYW1zO1xuICBjb25zdCBmaWxlRXhwbG9yZXIgPSBhcHAuaW50ZXJuYWxQbHVnaW5zLmdldEVuYWJsZWRQbHVnaW5CeUlkKEludGVybmFsUGx1Z2luTmFtZS5GaWxlRXhwbG9yZXIpO1xuICBpZiAoIWZpbGVFeHBsb3Jlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFR5cGVkIGB2b2lkYCwgcmV0dXJucyBhIHByb21pc2UgYXQgcnVudGltZS5cbiAgY29uc3QgcmV2ZWFsSW5Gb2xkZXI6IChmaWxlOiBUQWJzdHJhY3RGaWxlKSA9PiB1bmtub3duID0gZmlsZUV4cGxvcmVyLnJldmVhbEluRm9sZGVyLmJpbmQoZmlsZUV4cGxvcmVyKTtcbiAgYXdhaXQgcmV2ZWFsSW5Gb2xkZXIoYWJzdHJhY3RGaWxlKTtcblxuICBmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgRlJBTUVTX1RPX09VVExBU1RfVEhFX0VYUExPUkVSX0FDVElWQVRJT047IGZyYW1lKyspIHtcbiAgICBhd2FpdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luYygpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsMEJBQTBCO0FBU25DLE1BQU0sNENBQTRDO0FBOEJsRCxlQUFzQixxQkFBcUIsUUFBbUQ7QUFDNUYsUUFBTSxFQUFFLGNBQWMsSUFBSSxJQUFJO0FBQzlCLFFBQU0sZUFBZSxJQUFJLGdCQUFnQixxQkFBcUIsbUJBQW1CLFlBQVk7QUFDN0YsTUFBSSxDQUFDLGNBQWM7QUFDakI7QUFBQSxFQUNGO0FBR0EsUUFBTSxpQkFBbUQsYUFBYSxlQUFlLEtBQUssWUFBWTtBQUN0RyxRQUFNLGVBQWUsWUFBWTtBQUVqQyxXQUFTLFFBQVEsR0FBRyxRQUFRLDJDQUEyQyxTQUFTO0FBQzlFLFVBQU0sMkJBQTJCO0FBQUEsRUFDbkM7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlLWV4cGxvcmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBPYnNpZGlhbidzIGNvcmUgZmlsZSBleHBsb3Jlci5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IEludGVybmFsUGx1Z2luTmFtZSB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcblxuLyoqXG4gKiBIb3cgbWFueSBhbmltYXRpb24gZnJhbWVzIHRoZSBleHBsb3JlciBrZWVwcyByZS1hY3RpdmF0aW5nIGl0c2VsZiBmb3IgYWZ0ZXIgaXRzIHJldmVhbCBzZXR0bGVzLlxuICpcbiAqIGByZXZlYWxJbkZvbGRlcmAgYXdhaXRzIGByZXZlYWxMZWFmYCwgd2hpY2ggYWN0aXZhdGVzIHRoZSBleHBsb3JlciwgYW5kIHRoZW4gYWN0aXZhdGVzIGl0IEFHQUlOIGluc2lkZVxuICogYGFwcC5uZXh0RnJhbWVgLiBXYWl0aW5nIG9uZSBmcmFtZSBpcyBub3QgZW5vdWdoIHRvIGxhbmQgYWZ0ZXIgdGhhdDogYSBjYWxsZXIgZm9jdXNpbmcgYW4gZWRpdG9yIG9uIHRoZVxuICogZmlyc3QgZnJhbWUgbG9zdCB0aGUgZm9jdXMgYmFjayB0byB0aGUgZXhwbG9yZXIgb24gZXZlcnkgcmVhbCBtb3VzZSBjbGljayAobWVhc3VyZWQgaW4gT2JzaWRpYW4gMS4xMy54KS5cbiAqL1xuY29uc3QgRlJBTUVTX1RPX09VVExBU1RfVEhFX0VYUExPUkVSX0FDVElWQVRJT04gPSAyO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXZlYWxJbkZpbGVFeHBsb3Jlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV2ZWFsSW5GaWxlRXhwbG9yZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZpbGUgb3IgZm9sZGVyIHRvIHJldmVhbC5cbiAgICovXG4gIHJlYWRvbmx5IGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xufVxuXG4vKipcbiAqIEhpZ2hsaWdodHMgYSBmaWxlIG9yIGZvbGRlciBpbiB0aGUgY29yZSBmaWxlIGV4cGxvcmVyLCBhbmQgcmVzb2x2ZXMgb25seSBvbmNlIHRoZSBleHBsb3JlciBoYXNcbiAqIGZpbmlzaGVkIHRha2luZyB0aGUgZm9jdXMgZm9yIGl0LlxuICpcbiAqIFRoZSBjb3JlIHBsdWdpbidzIGByZXZlYWxJbkZvbGRlcmAgaXMgdHlwZWQgYHZvaWRgIGJ1dCBpcyBhc3luY2hyb25vdXMgYXQgcnVudGltZSwgYW5kIHRoZSBleHBsb3JlclxuICogcmUtYWN0aXZhdGVzIGl0c2VsZiBvbiBhIGxhdGVyIGZyYW1lLiBBIGNhbGxlciB0aGF0IG1vdmVzIHRoZSBmb2N1cyBzb21ld2hlcmUgZWxzZSByaWdodCBhZnRlciB0aGVcbiAqIHJldmVhbCDigJQgYmFjayBpbnRvIGFuIGVkaXRvciwgc2F5IOKAlCBsb3NlcyB0aGF0IHJhY2UgdW5sZXNzIGl0IGF3YWl0cyB0aGlzLlxuICpcbiAqIEEgZGlzYWJsZWQgZmlsZSBleHBsb3JlciByZXZlYWxzIG5vdGhpbmcsIGFuZCB0aGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyBhdCBvbmNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgZXhwbG9yZXIgaGFzIGZpbmlzaGVkIHJldmVhbGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldmVhbEluRmlsZUV4cGxvcmVyKHBhcmFtczogUmV2ZWFsSW5GaWxlRXhwbG9yZXJQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhYnN0cmFjdEZpbGUsIGFwcCB9ID0gcGFyYW1zO1xuICBjb25zdCBmaWxlRXhwbG9yZXIgPSBhcHAuaW50ZXJuYWxQbHVnaW5zLmdldEVuYWJsZWRQbHVnaW5CeUlkKEludGVybmFsUGx1Z2luTmFtZS5GaWxlRXhwbG9yZXIpO1xuICBpZiAoIWZpbGVFeHBsb3Jlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFR5cGVkIGB2b2lkYCwgcmV0dXJucyBhIHByb21pc2UgYXQgcnVudGltZS5cbiAgY29uc3QgcmV2ZWFsSW5Gb2xkZXI6IChmaWxlOiBUQWJzdHJhY3RGaWxlKSA9PiB1bmtub3duID0gZmlsZUV4cGxvcmVyLnJldmVhbEluRm9sZGVyLmJpbmQoZmlsZUV4cGxvcmVyKTtcbiAgYXdhaXQgcmV2ZWFsSW5Gb2xkZXIoYWJzdHJhY3RGaWxlKTtcblxuICBmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgRlJBTUVTX1RPX09VVExBU1RfVEhFX0VYUExPUkVSX0FDVElWQVRJT047IGZyYW1lKyspIHtcbiAgICBhd2FpdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luYygpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsU0FBUyxrQ0FBa0M7QUFDM0MsU0FBUywwQkFBMEI7QUFTbkMsTUFBTSw0Q0FBNEM7QUE4QmxELGVBQXNCLHFCQUFxQixRQUFtRDtBQUM1RixRQUFNLEVBQUUsY0FBYyxJQUFJLElBQUk7QUFDOUIsUUFBTSxlQUFlLElBQUksZ0JBQWdCLHFCQUFxQixtQkFBbUIsWUFBWTtBQUM3RixNQUFJLENBQUMsY0FBYztBQUNqQjtBQUFBLEVBQ0Y7QUFHQSxRQUFNLGlCQUFtRCxhQUFhLGVBQWUsS0FBSyxZQUFZO0FBQ3RHLFFBQU0sZUFBZSxZQUFZO0FBRWpDLFdBQVMsUUFBUSxHQUFHLFFBQVEsMkNBQTJDLFNBQVM7QUFDOUUsVUFBTSwyQkFBMkI7QUFBQSxFQUNuQztBQUNGOyIsIm5hbWVzIjpbXX0=
@@ -1,4 +1,5 @@
1
- /// <reference path="./library.d.mts" />
1
+ /// <reference path="./library-references.d.mts" />
2
+ /// <reference lib="dom" />
2
3
  /**
3
4
  * @file
4
5
  *