obsidian-dev-utils 80.0.2 → 81.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/dev/main.js +30208 -0
  3. package/dist/dev/manifest.json +9 -0
  4. package/dist/lib/cjs/async-events.cjs +9 -1
  5. package/dist/lib/cjs/async-events.d.cts +8 -0
  6. package/dist/lib/cjs/async.cjs +89 -34
  7. package/dist/lib/cjs/async.d.cts +67 -15
  8. package/dist/lib/cjs/debug.cjs +26 -9
  9. package/dist/lib/cjs/debug.d.cts +23 -5
  10. package/dist/lib/cjs/error.cjs +4 -5
  11. package/dist/lib/cjs/error.d.cts +19 -4
  12. package/dist/lib/cjs/html-element.cjs +1 -1
  13. package/dist/lib/cjs/html-element.d.cts +2 -0
  14. package/dist/lib/cjs/library.cjs +2 -2
  15. package/dist/lib/cjs/object-utils.cjs +233 -128
  16. package/dist/lib/cjs/object-utils.d.cts +19 -4
  17. package/dist/lib/cjs/obsidian/async-with-notice.cjs +9 -6
  18. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +9 -0
  19. package/dist/lib/cjs/obsidian/attachment-path.cjs +45 -13
  20. package/dist/lib/cjs/obsidian/attachment-path.d.cts +38 -8
  21. package/dist/lib/cjs/obsidian/backlink.cjs +6 -6
  22. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +53 -16
  23. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +81 -9
  24. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +25 -5
  25. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +35 -1
  26. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +33 -19
  27. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +43 -17
  28. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +33 -19
  29. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +43 -17
  30. package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +17 -9
  31. package/dist/lib/cjs/obsidian/components/all-windows-event-component.d.cts +48 -8
  32. package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +3 -1
  33. package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +3 -1
  34. package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +24 -8
  35. package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +25 -4
  36. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +144 -65
  37. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.d.cts +3 -0
  38. package/dist/lib/cjs/obsidian/dataview-link.cjs +7 -2
  39. package/dist/lib/cjs/obsidian/dataview-link.d.cts +20 -5
  40. package/dist/lib/cjs/obsidian/dataview.cjs +27 -10
  41. package/dist/lib/cjs/obsidian/dataview.d.cts +19 -4
  42. package/dist/lib/cjs/obsidian/file-change.cjs +103 -27
  43. package/dist/lib/cjs/obsidian/file-change.d.cts +50 -13
  44. package/dist/lib/cjs/obsidian/file-manager.cjs +61 -32
  45. package/dist/lib/cjs/obsidian/file-manager.d.cts +63 -13
  46. package/dist/lib/cjs/obsidian/file-system.cjs +122 -23
  47. package/dist/lib/cjs/obsidian/file-system.d.cts +168 -39
  48. package/dist/lib/cjs/obsidian/frontmatter.cjs +7 -2
  49. package/dist/lib/cjs/obsidian/link.cjs +266 -122
  50. package/dist/lib/cjs/obsidian/link.d.cts +84 -20
  51. package/dist/lib/cjs/obsidian/logger.cjs +48 -22
  52. package/dist/lib/cjs/obsidian/logger.d.cts +26 -5
  53. package/dist/lib/cjs/obsidian/loop.cjs +14 -4
  54. package/dist/lib/cjs/obsidian/loop.d.cts +5 -0
  55. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +155 -107
  56. package/dist/lib/cjs/obsidian/markdown.cjs +40 -11
  57. package/dist/lib/cjs/obsidian/markdown.d.cts +76 -16
  58. package/dist/lib/cjs/obsidian/metadata-cache.cjs +28 -14
  59. package/dist/lib/cjs/obsidian/metadata-cache.d.cts +76 -16
  60. package/dist/lib/cjs/obsidian/path-settings.cjs +5 -2
  61. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.cjs +5 -1
  62. package/dist/lib/cjs/obsidian/plugin/plugin-event-source.d.cts +4 -0
  63. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +15 -7
  64. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.d.cts +39 -8
  65. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +3 -2
  66. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +4 -4
  67. package/dist/lib/cjs/obsidian/queue.cjs +9 -7
  68. package/dist/lib/cjs/obsidian/resource-url.cjs +7 -2
  69. package/dist/lib/cjs/obsidian/resource-url.d.cts +19 -4
  70. package/dist/lib/cjs/obsidian/status-bar-item-registrar.cjs +4 -2
  71. package/dist/lib/cjs/obsidian/status-bar-item-registrar.d.cts +6 -2
  72. package/dist/lib/cjs/obsidian/vault-delete.cjs +19 -15
  73. package/dist/lib/cjs/obsidian/vault-delete.d.cts +11 -6
  74. package/dist/lib/cjs/obsidian/vault.cjs +116 -59
  75. package/dist/lib/cjs/obsidian/vault.d.cts +178 -41
  76. package/dist/lib/cjs/path.cjs +12 -5
  77. package/dist/lib/cjs/path.d.cts +15 -3
  78. package/dist/lib/cjs/reg-exp.cjs +101 -78
  79. package/dist/lib/cjs/script-utils/build.cjs +9 -5
  80. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +34 -14
  81. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +20 -5
  82. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +23 -5
  83. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +11 -4
  84. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +6 -2
  85. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +31 -12
  86. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +19 -4
  87. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -7
  88. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +12 -3
  89. package/dist/lib/cjs/script-utils/cli-utils.cjs +6 -2
  90. package/dist/lib/cjs/script-utils/exec.cjs +47 -12
  91. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +3 -3
  92. package/dist/lib/cjs/script-utils/json.cjs +9 -5
  93. package/dist/lib/cjs/script-utils/json.d.cts +38 -8
  94. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.cjs +8 -3
  95. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +27 -7
  96. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.cjs +7 -3
  97. package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +8 -3
  98. package/dist/lib/cjs/script-utils/linters/eslint.cjs +3 -3
  99. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +3 -3
  100. package/dist/lib/cjs/script-utils/linters/over-exposure.cjs +72 -30
  101. package/dist/lib/cjs/script-utils/npm-publish.cjs +2 -2
  102. package/dist/lib/cjs/script-utils/npm.cjs +18 -9
  103. package/dist/lib/cjs/script-utils/root.cjs +20 -5
  104. package/dist/lib/cjs/script-utils/root.d.cts +45 -9
  105. package/dist/lib/cjs/script-utils/validate-declarations.cjs +4 -3
  106. package/dist/lib/cjs/script-utils/version.cjs +36 -19
  107. package/dist/lib/cjs/strict-proxy.cjs +10 -1
  108. package/dist/lib/cjs/string.cjs +63 -22
  109. package/dist/lib/cjs/string.d.cts +188 -40
  110. package/dist/lib/esm/async-events.d.mts +8 -0
  111. package/dist/lib/esm/async-events.mjs +9 -1
  112. package/dist/lib/esm/async.d.mts +67 -15
  113. package/dist/lib/esm/async.mjs +89 -34
  114. package/dist/lib/esm/debug.d.mts +23 -5
  115. package/dist/lib/esm/debug.mjs +26 -9
  116. package/dist/lib/esm/error.d.mts +19 -4
  117. package/dist/lib/esm/error.mjs +4 -5
  118. package/dist/lib/esm/html-element.d.mts +2 -0
  119. package/dist/lib/esm/html-element.mjs +1 -1
  120. package/dist/lib/esm/library.mjs +2 -2
  121. package/dist/lib/esm/object-utils.d.mts +19 -4
  122. package/dist/lib/esm/object-utils.mjs +233 -128
  123. package/dist/lib/esm/obsidian/async-with-notice.d.mts +9 -0
  124. package/dist/lib/esm/obsidian/async-with-notice.mjs +9 -6
  125. package/dist/lib/esm/obsidian/attachment-path.d.mts +38 -8
  126. package/dist/lib/esm/obsidian/attachment-path.mjs +45 -13
  127. package/dist/lib/esm/obsidian/backlink.mjs +6 -6
  128. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +81 -9
  129. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +53 -16
  130. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +35 -1
  131. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +25 -5
  132. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +43 -17
  133. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +33 -19
  134. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +43 -17
  135. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +33 -19
  136. package/dist/lib/esm/obsidian/components/all-windows-event-component.d.mts +48 -8
  137. package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +17 -9
  138. package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +3 -1
  139. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +3 -1
  140. package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +25 -4
  141. package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +24 -8
  142. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.d.mts +3 -0
  143. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +145 -69
  144. package/dist/lib/esm/obsidian/dataview-link.d.mts +20 -5
  145. package/dist/lib/esm/obsidian/dataview-link.mjs +7 -2
  146. package/dist/lib/esm/obsidian/dataview.d.mts +19 -4
  147. package/dist/lib/esm/obsidian/dataview.mjs +27 -10
  148. package/dist/lib/esm/obsidian/file-change.d.mts +50 -13
  149. package/dist/lib/esm/obsidian/file-change.mjs +104 -27
  150. package/dist/lib/esm/obsidian/file-manager.d.mts +63 -13
  151. package/dist/lib/esm/obsidian/file-manager.mjs +65 -33
  152. package/dist/lib/esm/obsidian/file-system.d.mts +168 -39
  153. package/dist/lib/esm/obsidian/file-system.mjs +122 -23
  154. package/dist/lib/esm/obsidian/frontmatter.mjs +7 -2
  155. package/dist/lib/esm/obsidian/link.d.mts +84 -20
  156. package/dist/lib/esm/obsidian/link.mjs +266 -122
  157. package/dist/lib/esm/obsidian/logger.d.mts +26 -5
  158. package/dist/lib/esm/obsidian/logger.mjs +48 -22
  159. package/dist/lib/esm/obsidian/loop.d.mts +5 -0
  160. package/dist/lib/esm/obsidian/loop.mjs +14 -4
  161. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +155 -107
  162. package/dist/lib/esm/obsidian/markdown.d.mts +76 -16
  163. package/dist/lib/esm/obsidian/markdown.mjs +40 -11
  164. package/dist/lib/esm/obsidian/metadata-cache.d.mts +76 -16
  165. package/dist/lib/esm/obsidian/metadata-cache.mjs +28 -14
  166. package/dist/lib/esm/obsidian/path-settings.mjs +5 -2
  167. package/dist/lib/esm/obsidian/plugin/plugin-event-source.d.mts +4 -0
  168. package/dist/lib/esm/obsidian/plugin/plugin-event-source.mjs +5 -1
  169. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.d.mts +39 -8
  170. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +15 -7
  171. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +4 -4
  172. package/dist/lib/esm/obsidian/plugin/plugin.mjs +5 -7
  173. package/dist/lib/esm/obsidian/queue.mjs +9 -7
  174. package/dist/lib/esm/obsidian/resource-url.d.mts +19 -4
  175. package/dist/lib/esm/obsidian/resource-url.mjs +7 -2
  176. package/dist/lib/esm/obsidian/status-bar-item-registrar.d.mts +6 -2
  177. package/dist/lib/esm/obsidian/status-bar-item-registrar.mjs +4 -2
  178. package/dist/lib/esm/obsidian/vault-delete.d.mts +11 -6
  179. package/dist/lib/esm/obsidian/vault-delete.mjs +19 -15
  180. package/dist/lib/esm/obsidian/vault.d.mts +178 -41
  181. package/dist/lib/esm/obsidian/vault.mjs +116 -59
  182. package/dist/lib/esm/path.d.mts +15 -3
  183. package/dist/lib/esm/path.mjs +12 -5
  184. package/dist/lib/esm/reg-exp.mjs +101 -78
  185. package/dist/lib/esm/script-utils/build.mjs +9 -5
  186. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +34 -14
  187. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +23 -5
  188. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +20 -5
  189. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +11 -4
  190. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +6 -2
  191. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +19 -4
  192. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +31 -12
  193. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +7 -7
  194. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +12 -3
  195. package/dist/lib/esm/script-utils/cli-utils.mjs +6 -2
  196. package/dist/lib/esm/script-utils/exec.mjs +47 -12
  197. package/dist/lib/esm/script-utils/formatters/dprint.mjs +3 -3
  198. package/dist/lib/esm/script-utils/json.d.mts +38 -8
  199. package/dist/lib/esm/script-utils/json.mjs +9 -5
  200. package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.mjs +8 -3
  201. package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +27 -7
  202. package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.mjs +7 -3
  203. package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +8 -3
  204. package/dist/lib/esm/script-utils/linters/eslint.mjs +3 -3
  205. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +3 -3
  206. package/dist/lib/esm/script-utils/linters/over-exposure.mjs +72 -30
  207. package/dist/lib/esm/script-utils/npm-publish.mjs +2 -2
  208. package/dist/lib/esm/script-utils/npm.mjs +18 -9
  209. package/dist/lib/esm/script-utils/root.d.mts +45 -9
  210. package/dist/lib/esm/script-utils/root.mjs +20 -5
  211. package/dist/lib/esm/script-utils/validate-declarations.mjs +4 -3
  212. package/dist/lib/esm/script-utils/version.mjs +36 -19
  213. package/dist/lib/esm/strict-proxy.mjs +10 -1
  214. package/dist/lib/esm/string.d.mts +188 -40
  215. package/dist/lib/esm/string.mjs +63 -22
  216. package/dist/styles.css +5 -1
  217. package/package.json +9 -9
@@ -5,12 +5,33 @@
5
5
  * Contains utility functions for logging in Obsidian.
6
6
  */
7
7
  import type { Promisable } from 'type-fest';
8
+ /**
9
+ * Parameters for {@link invokeAsyncAndLog}.
10
+ */
11
+ export interface InvokeAsyncAndLogParams {
12
+ /**
13
+ * The abort signal to control the execution of the function.
14
+ */
15
+ readonly abortSignal?: AbortSignal;
16
+ /**
17
+ * The function to invoke.
18
+ *
19
+ * @param abortSignal - The abort signal to control the execution of the function.
20
+ * @returns A {@link Promisable} that resolves when the function is complete.
21
+ */
22
+ fn(this: void, abortSignal: AbortSignal): Promisable<void>;
23
+ /**
24
+ * Optional stack trace.
25
+ */
26
+ readonly stackTrace?: string;
27
+ /**
28
+ * The title of the log.
29
+ */
30
+ readonly title: string;
31
+ }
8
32
  /**
9
33
  * Invokes a function and logs the start, end, and duration of the invocation.
10
34
  *
11
- * @param title - The title of the log.
12
- * @param fn - The function to invoke.
13
- * @param abortSignal - The abort signal to control the execution of the function.
14
- * @param stackTrace - Optional stack trace.
35
+ * @param params - The parameters for the invocation.
15
36
  */
16
- export declare function invokeAsyncAndLog(title: string, fn: (abortSignal: AbortSignal) => Promisable<void>, abortSignal: AbortSignal, stackTrace?: string): Promise<void>;
37
+ export declare function invokeAsyncAndLog(params: InvokeAsyncAndLogParams): Promise<void>;
@@ -21,48 +21,74 @@ if you want to view the source, please visit the github repository of this plugi
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
24
+ import { abortSignalNever } from "../abort-controller.mjs";
24
25
  import {
25
26
  getLibDebugger,
26
27
  printWithStackTrace
27
28
  } from "../debug.mjs";
28
29
  import { getStackTrace } from "../error.mjs";
29
- async function invokeAsyncAndLog(title, fn, abortSignal, stackTrace) {
30
+ async function invokeAsyncAndLog(params) {
31
+ const {
32
+ abortSignal = abortSignalNever(),
33
+ fn,
34
+ title
35
+ } = params;
30
36
  abortSignal.throwIfAborted();
31
37
  const invokeAsyncAndLogDebugger = getLibDebugger("Logger:invokeAsyncAndLog");
32
38
  const timestampStart = performance.now();
33
- stackTrace ??= getStackTrace(1);
34
- printWithStackTrace(invokeAsyncAndLogDebugger, stackTrace, `${title}:start`, {
35
- fn,
36
- timestampStart
39
+ const stackTrace = params.stackTrace ?? getStackTrace(1);
40
+ printWithStackTrace({
41
+ args: [{
42
+ fn,
43
+ timestampStart
44
+ }],
45
+ debuggerInstance: invokeAsyncAndLogDebugger,
46
+ message: `${title}:start`,
47
+ stackTrace
37
48
  });
38
49
  try {
39
50
  await fn(abortSignal);
40
51
  const timestampEnd = performance.now();
41
52
  const duration = Math.trunc(timestampEnd - timestampStart);
42
53
  if (abortSignal.aborted) {
43
- printWithStackTrace(invokeAsyncAndLogDebugger, stackTrace, `${title}:aborted`, {
44
- abortReason: abortSignal.reason,
54
+ printWithStackTrace({
55
+ args: [{
56
+ abortReason: abortSignal.reason,
57
+ duration,
58
+ fn,
59
+ timestampEnd,
60
+ timestampStart
61
+ }],
62
+ debuggerInstance: invokeAsyncAndLogDebugger,
63
+ message: `${title}:aborted`,
64
+ stackTrace
65
+ });
66
+ abortSignal.throwIfAborted();
67
+ }
68
+ printWithStackTrace({
69
+ args: [{
45
70
  duration,
46
71
  fn,
47
72
  timestampEnd,
48
73
  timestampStart
49
- });
50
- abortSignal.throwIfAborted();
51
- }
52
- printWithStackTrace(invokeAsyncAndLogDebugger, stackTrace, `${title}:end`, {
53
- duration,
54
- fn,
55
- timestampEnd,
56
- timestampStart
74
+ }],
75
+ debuggerInstance: invokeAsyncAndLogDebugger,
76
+ message: `${title}:end`,
77
+ stackTrace
57
78
  });
58
79
  } catch (error) {
59
80
  const timestampEnd = performance.now();
60
- printWithStackTrace(invokeAsyncAndLogDebugger, stackTrace, `${title}:error`, {
61
- duration: Math.trunc(timestampEnd - timestampStart),
62
- error,
63
- fn,
64
- timestampEnd,
65
- timestampStart
81
+ printWithStackTrace({
82
+ args: [{
83
+ duration: Math.trunc(timestampEnd - timestampStart),
84
+ error,
85
+ fn,
86
+ timestampEnd,
87
+ timestampStart
88
+ }],
89
+ debuggerInstance: invokeAsyncAndLogDebugger,
90
+ message: `${title}:error`,
91
+ stackTrace
66
92
  });
67
93
  throw error;
68
94
  }
@@ -70,4 +96,4 @@ async function invokeAsyncAndLog(title, fn, abortSignal, stackTrace) {
70
96
  export {
71
97
  invokeAsyncAndLog
72
98
  };
73
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2xvZ2dlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBsb2dnaW5nIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7XG4gIGdldExpYkRlYnVnZ2VyLFxuICBwcmludFdpdGhTdGFja1RyYWNlXG59IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IGdldFN0YWNrVHJhY2UgfSBmcm9tICcuLi9lcnJvci50cyc7XG5cbi8qKlxuICogSW52b2tlcyBhIGZ1bmN0aW9uIGFuZCBsb2dzIHRoZSBzdGFydCwgZW5kLCBhbmQgZHVyYXRpb24gb2YgdGhlIGludm9jYXRpb24uXG4gKlxuICogQHBhcmFtIHRpdGxlIC0gVGhlIHRpdGxlIG9mIHRoZSBsb2cuXG4gKiBAcGFyYW0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIHN0YWNrVHJhY2UgLSBPcHRpb25hbCBzdGFjayB0cmFjZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGludm9rZUFzeW5jQW5kTG9nKFxuICB0aXRsZTogc3RyaW5nLFxuICBmbjogKGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCkgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLFxuICBzdGFja1RyYWNlPzogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgY29uc3QgaW52b2tlQXN5bmNBbmRMb2dEZWJ1Z2dlciA9IGdldExpYkRlYnVnZ2VyKCdMb2dnZXI6aW52b2tlQXN5bmNBbmRMb2cnKTtcbiAgY29uc3QgdGltZXN0YW1wU3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgc3RhY2tUcmFjZSA/Pz0gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgcHJpbnRXaXRoU3RhY2tUcmFjZShpbnZva2VBc3luY0FuZExvZ0RlYnVnZ2VyLCBzdGFja1RyYWNlLCBgJHt0aXRsZX06c3RhcnRgLCB7XG4gICAgZm4sXG4gICAgdGltZXN0YW1wU3RhcnRcbiAgfSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZm4oYWJvcnRTaWduYWwpO1xuICAgIGNvbnN0IHRpbWVzdGFtcEVuZCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gTWF0aC50cnVuYyh0aW1lc3RhbXBFbmQgLSB0aW1lc3RhbXBTdGFydCk7XG4gICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHByaW50V2l0aFN0YWNrVHJhY2UoaW52b2tlQXN5bmNBbmRMb2dEZWJ1Z2dlciwgc3RhY2tUcmFjZSwgYCR7dGl0bGV9OmFib3J0ZWRgLCB7XG4gICAgICAgIGFib3J0UmVhc29uOiBhYm9ydFNpZ25hbC5yZWFzb24gYXMgdW5rbm93bixcbiAgICAgICAgZHVyYXRpb24sXG4gICAgICAgIGZuLFxuICAgICAgICB0aW1lc3RhbXBFbmQsXG4gICAgICAgIHRpbWVzdGFtcFN0YXJ0XG4gICAgICB9KTtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgfVxuICAgIHByaW50V2l0aFN0YWNrVHJhY2UoaW52b2tlQXN5bmNBbmRMb2dEZWJ1Z2dlciwgc3RhY2tUcmFjZSwgYCR7dGl0bGV9OmVuZGAsIHtcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgZm4sXG4gICAgICB0aW1lc3RhbXBFbmQsXG4gICAgICB0aW1lc3RhbXBTdGFydFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IHRpbWVzdGFtcEVuZCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHByaW50V2l0aFN0YWNrVHJhY2UoaW52b2tlQXN5bmNBbmRMb2dEZWJ1Z2dlciwgc3RhY2tUcmFjZSwgYCR7dGl0bGV9OmVycm9yYCwge1xuICAgICAgZHVyYXRpb246IE1hdGgudHJ1bmModGltZXN0YW1wRW5kIC0gdGltZXN0YW1wU3RhcnQpLFxuICAgICAgZXJyb3IsXG4gICAgICBmbixcbiAgICAgIHRpbWVzdGFtcEVuZCxcbiAgICAgIHRpbWVzdGFtcFN0YXJ0XG4gICAgfSk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHFCQUFxQjtBQVU5QixlQUFzQixrQkFDcEIsT0FDQSxJQUNBLGFBQ0EsWUFDZTtBQUNmLGNBQVksZUFBZTtBQUMzQixRQUFNLDRCQUE0QixlQUFlLDBCQUEwQjtBQUMzRSxRQUFNLGlCQUFpQixZQUFZLElBQUk7QUFDdkMsaUJBQWUsY0FBYyxDQUFDO0FBQzlCLHNCQUFvQiwyQkFBMkIsWUFBWSxHQUFHLEtBQUssVUFBVTtBQUFBLElBQzNFO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQztBQUNELE1BQUk7QUFDRixVQUFNLEdBQUcsV0FBVztBQUNwQixVQUFNLGVBQWUsWUFBWSxJQUFJO0FBQ3JDLFVBQU0sV0FBVyxLQUFLLE1BQU0sZUFBZSxjQUFjO0FBQ3pELFFBQUksWUFBWSxTQUFTO0FBQ3ZCLDBCQUFvQiwyQkFBMkIsWUFBWSxHQUFHLEtBQUssWUFBWTtBQUFBLFFBQzdFLGFBQWEsWUFBWTtBQUFBLFFBQ3pCO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQ0Qsa0JBQVksZUFBZTtBQUFBLElBQzdCO0FBQ0Esd0JBQW9CLDJCQUEyQixZQUFZLEdBQUcsS0FBSyxRQUFRO0FBQUEsTUFDekU7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNILFNBQVMsT0FBTztBQUNkLFVBQU0sZUFBZSxZQUFZLElBQUk7QUFDckMsd0JBQW9CLDJCQUEyQixZQUFZLEdBQUcsS0FBSyxVQUFVO0FBQUEsTUFDM0UsVUFBVSxLQUFLLE1BQU0sZUFBZSxjQUFjO0FBQUEsTUFDbEQ7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLENBQUM7QUFDRCxVQUFNO0FBQUEsRUFDUjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
99
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2xvZ2dlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBsb2dnaW5nIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGFib3J0U2lnbmFsTmV2ZXIgfSBmcm9tICcuLi9hYm9ydC1jb250cm9sbGVyLnRzJztcbmltcG9ydCB7XG4gIGdldExpYkRlYnVnZ2VyLFxuICBwcmludFdpdGhTdGFja1RyYWNlXG59IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IGdldFN0YWNrVHJhY2UgfSBmcm9tICcuLi9lcnJvci50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGludm9rZUFzeW5jQW5kTG9nfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZva2VBc3luY0FuZExvZ1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgKlxuICAgKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2FibGV9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY29tcGxldGUuXG4gICAqL1xuICBmbih0aGlzOiB2b2lkLCBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrVHJhY2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnZva2VzIGEgZnVuY3Rpb24gYW5kIGxvZ3MgdGhlIHN0YXJ0LCBlbmQsIGFuZCBkdXJhdGlvbiBvZiB0aGUgaW52b2NhdGlvbi5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBpbnZvY2F0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlQXN5bmNBbmRMb2cocGFyYW1zOiBJbnZva2VBc3luY0FuZExvZ1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbE5ldmVyKCksXG4gICAgZm4sXG4gICAgdGl0bGVcbiAgfSA9IHBhcmFtcztcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgY29uc3QgaW52b2tlQXN5bmNBbmRMb2dEZWJ1Z2dlciA9IGdldExpYkRlYnVnZ2VyKCdMb2dnZXI6aW52b2tlQXN5bmNBbmRMb2cnKTtcbiAgY29uc3QgdGltZXN0YW1wU3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgY29uc3Qgc3RhY2tUcmFjZSA9IHBhcmFtcy5zdGFja1RyYWNlID8/IGdldFN0YWNrVHJhY2UoMSk7XG4gIHByaW50V2l0aFN0YWNrVHJhY2Uoe1xuICAgIGFyZ3M6IFt7XG4gICAgICBmbixcbiAgICAgIHRpbWVzdGFtcFN0YXJ0XG4gICAgfV0sXG4gICAgZGVidWdnZXJJbnN0YW5jZTogaW52b2tlQXN5bmNBbmRMb2dEZWJ1Z2dlcixcbiAgICBtZXNzYWdlOiBgJHt0aXRsZX06c3RhcnRgLFxuICAgIHN0YWNrVHJhY2VcbiAgfSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZm4oYWJvcnRTaWduYWwpO1xuICAgIGNvbnN0IHRpbWVzdGFtcEVuZCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gTWF0aC50cnVuYyh0aW1lc3RhbXBFbmQgLSB0aW1lc3RhbXBTdGFydCk7XG4gICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHByaW50V2l0aFN0YWNrVHJhY2Uoe1xuICAgICAgICBhcmdzOiBbe1xuICAgICAgICAgIGFib3J0UmVhc29uOiBhYm9ydFNpZ25hbC5yZWFzb24gYXMgdW5rbm93bixcbiAgICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgICBmbixcbiAgICAgICAgICB0aW1lc3RhbXBFbmQsXG4gICAgICAgICAgdGltZXN0YW1wU3RhcnRcbiAgICAgICAgfV0sXG4gICAgICAgIGRlYnVnZ2VySW5zdGFuY2U6IGludm9rZUFzeW5jQW5kTG9nRGVidWdnZXIsXG4gICAgICAgIG1lc3NhZ2U6IGAke3RpdGxlfTphYm9ydGVkYCxcbiAgICAgICAgc3RhY2tUcmFjZVxuICAgICAgfSk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIH1cbiAgICBwcmludFdpdGhTdGFja1RyYWNlKHtcbiAgICAgIGFyZ3M6IFt7XG4gICAgICAgIGR1cmF0aW9uLFxuICAgICAgICBmbixcbiAgICAgICAgdGltZXN0YW1wRW5kLFxuICAgICAgICB0aW1lc3RhbXBTdGFydFxuICAgICAgfV0sXG4gICAgICBkZWJ1Z2dlckluc3RhbmNlOiBpbnZva2VBc3luY0FuZExvZ0RlYnVnZ2VyLFxuICAgICAgbWVzc2FnZTogYCR7dGl0bGV9OmVuZGAsXG4gICAgICBzdGFja1RyYWNlXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgdGltZXN0YW1wRW5kID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgcHJpbnRXaXRoU3RhY2tUcmFjZSh7XG4gICAgICBhcmdzOiBbe1xuICAgICAgICBkdXJhdGlvbjogTWF0aC50cnVuYyh0aW1lc3RhbXBFbmQgLSB0aW1lc3RhbXBTdGFydCksXG4gICAgICAgIGVycm9yLFxuICAgICAgICBmbixcbiAgICAgICAgdGltZXN0YW1wRW5kLFxuICAgICAgICB0aW1lc3RhbXBTdGFydFxuICAgICAgfV0sXG4gICAgICBkZWJ1Z2dlckluc3RhbmNlOiBpbnZva2VBc3luY0FuZExvZ0RlYnVnZ2VyLFxuICAgICAgbWVzc2FnZTogYCR7dGl0bGV9OmVycm9yYCxcbiAgICAgIHN0YWNrVHJhY2VcbiAgICB9KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQSxTQUFTLHdCQUF3QjtBQUNqQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMscUJBQXFCO0FBbUM5QixlQUFzQixrQkFBa0IsUUFBZ0Q7QUFDdEYsUUFBTTtBQUFBLElBQ0osY0FBYyxpQkFBaUI7QUFBQSxJQUMvQjtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixjQUFZLGVBQWU7QUFDM0IsUUFBTSw0QkFBNEIsZUFBZSwwQkFBMEI7QUFDM0UsUUFBTSxpQkFBaUIsWUFBWSxJQUFJO0FBQ3ZDLFFBQU0sYUFBYSxPQUFPLGNBQWMsY0FBYyxDQUFDO0FBQ3ZELHNCQUFvQjtBQUFBLElBQ2xCLE1BQU0sQ0FBQztBQUFBLE1BQ0w7QUFBQSxNQUNBO0FBQUEsSUFDRixDQUFDO0FBQUEsSUFDRCxrQkFBa0I7QUFBQSxJQUNsQixTQUFTLEdBQUcsS0FBSztBQUFBLElBQ2pCO0FBQUEsRUFDRixDQUFDO0FBQ0QsTUFBSTtBQUNGLFVBQU0sR0FBRyxXQUFXO0FBQ3BCLFVBQU0sZUFBZSxZQUFZLElBQUk7QUFDckMsVUFBTSxXQUFXLEtBQUssTUFBTSxlQUFlLGNBQWM7QUFDekQsUUFBSSxZQUFZLFNBQVM7QUFDdkIsMEJBQW9CO0FBQUEsUUFDbEIsTUFBTSxDQUFDO0FBQUEsVUFDTCxhQUFhLFlBQVk7QUFBQSxVQUN6QjtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFBQ0YsQ0FBQztBQUFBLFFBQ0Qsa0JBQWtCO0FBQUEsUUFDbEIsU0FBUyxHQUFHLEtBQUs7QUFBQSxRQUNqQjtBQUFBLE1BQ0YsQ0FBQztBQUNELGtCQUFZLGVBQWU7QUFBQSxJQUM3QjtBQUNBLHdCQUFvQjtBQUFBLE1BQ2xCLE1BQU0sQ0FBQztBQUFBLFFBQ0w7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGLENBQUM7QUFBQSxNQUNELGtCQUFrQjtBQUFBLE1BQ2xCLFNBQVMsR0FBRyxLQUFLO0FBQUEsTUFDakI7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNILFNBQVMsT0FBTztBQUNkLFVBQU0sZUFBZSxZQUFZLElBQUk7QUFDckMsd0JBQW9CO0FBQUEsTUFDbEIsTUFBTSxDQUFDO0FBQUEsUUFDTCxVQUFVLEtBQUssTUFBTSxlQUFlLGNBQWM7QUFBQSxRQUNsRDtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLE1BQ0Qsa0JBQWtCO0FBQUEsTUFDbEIsU0FBUyxHQUFHLEtBQUs7QUFBQSxNQUNqQjtBQUFBLElBQ0YsQ0FBQztBQUNELFVBQU07QUFBQSxFQUNSO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -5,6 +5,7 @@
5
5
  * Contains utility functions for looping in Obsidian.
6
6
  */
7
7
  import type { Promisable } from 'type-fest';
8
+ import type { PluginNoticeComponent } from './components/plugin-notice-component.mjs';
8
9
  /**
9
10
  * Options for {@link loop}.
10
11
  *
@@ -35,6 +36,10 @@ export interface LoopParams<T> {
35
36
  * A minimum timeout for the notice. Default is `2000`.
36
37
  */
37
38
  readonly noticeMinTimeoutInMilliseconds?: number;
39
+ /**
40
+ * A component to show notices.
41
+ */
42
+ readonly pluginNoticeComponent: PluginNoticeComponent;
38
43
  /**
39
44
  * Process each item.
40
45
  *
@@ -94,9 +94,19 @@ async function loop(params) {
94
94
  console.error("Error processing item", item);
95
95
  if (!fullOptions.shouldContinueOnError) {
96
96
  notice?.hide();
97
- throw new CustomStackTraceError("loop failed", stackTrace, error);
97
+ throw new CustomStackTraceError({
98
+ cause: error,
99
+ message: "loop failed",
100
+ stackTrace
101
+ });
98
102
  }
99
- emitAsyncErrorEvent(new CustomStackTraceError(ASYNC_WRAPPER_ERROR_MESSAGE, stackTrace, error));
103
+ emitAsyncErrorEvent(
104
+ new CustomStackTraceError({
105
+ cause: error,
106
+ message: ASYNC_WRAPPER_ERROR_MESSAGE,
107
+ stackTrace
108
+ })
109
+ );
100
110
  }
101
111
  progressBarEl.value++;
102
112
  }
@@ -113,7 +123,7 @@ async function loop(params) {
113
123
  if (isDone) {
114
124
  return;
115
125
  }
116
- notice = new Notice("", 0);
126
+ notice = params.pluginNoticeComponent.showNotice("", {});
117
127
  if (!fullOptions.shouldShowProgressBar) {
118
128
  return;
119
129
  }
@@ -126,4 +136,4 @@ async function loop(params) {
126
136
  export {
127
137
  loop
128
138
  };
129
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2xvb3AudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgbG9vcGluZyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGFib3J0U2lnbmFsTmV2ZXIgfSBmcm9tICcuLi9hYm9ydC1jb250cm9sbGVyLnRzJztcbmltcG9ydCB7XG4gIGludm9rZUFzeW5jU2FmZWx5LFxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luY1xufSBmcm9tICcuLi9hc3luYy50cyc7XG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7XG4gIEFTWU5DX1dSQVBQRVJfRVJST1JfTUVTU0FHRSxcbiAgQ3VzdG9tU3RhY2tUcmFjZUVycm9yLFxuICBlbWl0QXN5bmNFcnJvckV2ZW50LFxuICBnZXRTdGFja1RyYWNlXG59IGZyb20gJy4uL2Vycm9yLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi9mdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBsb29wfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgaXRlbXMgdG8gbG9vcCBvdmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvb3BQYXJhbXM8VD4ge1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgYWJvcnQgc2lnbmFsIHRvIGNhbmNlbCB0aGUgbG9vcC5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgbm90aWNlIG1lc3NhZ2UgZm9yIGVhY2ggaXRlbS5cbiAgICpcbiAgICogQHBhcmFtIGl0ZW0gLSBUaGUgY3VycmVudCBpdGVtLlxuICAgKiBAcGFyYW0gaXRlcmF0aW9uU3RyIC0gQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMgQSBzdHJpbmcgdG8gZGlzcGxheSBpbiB0aGUgbm90aWNlLlxuICAgKi9cbiAgYnVpbGROb3RpY2VNZXNzYWdlKGl0ZW06IFQsIGl0ZXJhdGlvblN0cjogc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJdGVtcyB0byBsb29wIG92ZXIuXG4gICAqL1xuICByZWFkb25seSBpdGVtczogVFtdO1xuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgZm9yIHRoZSBub3RpY2UgYmVmb3JlIGl0IGlzIHNob3duLiBEZWZhdWx0IGlzIGA1MDBgLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlQmVmb3JlU2hvd25UaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgbWluaW11bSB0aW1lb3V0IGZvciB0aGUgbm90aWNlLiBEZWZhdWx0IGlzIGAyMDAwYC5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGljZU1pblRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogUHJvY2VzcyBlYWNoIGl0ZW0uXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIC0gVGhlIGN1cnJlbnQgaXRlbS5cbiAgICovXG4gIHByb2Nlc3NJdGVtKGl0ZW06IFQpOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBBIHRpdGxlIG9mIHRoZSBwcm9ncmVzcyBiYXIuIERlZmF1bHQgaXMgYCcnYC5cbiAgICovXG4gIHJlYWRvbmx5IHByb2dyZXNzQmFyVGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY29udGludWUgdGhlIGxvb3Agb24gZXJyb3IuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQ29udGludWVPbkVycm9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IGEgbm90aWNlLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dOb3RpY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSBwcm9ncmVzcyBiYXIuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd1Byb2dyZXNzQmFyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSB0aHJlc2hvbGQgZm9yIHRoZSBVSSB1cGRhdGUuIERlZmF1bHQgaXMgYDEwMGAuXG4gICAqL1xuICByZWFkb25seSB1aVVwZGF0ZVRocmVzaG9sZEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIExvb3BzIG92ZXIgYSBsaXN0IG9mIGl0ZW1zIGFuZCBwcm9jZXNzZXMgZWFjaCBpdGVtLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyB0byBsb29wIG92ZXIuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBsb29wLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9vcDxUPihwYXJhbXM6IExvb3BQYXJhbXM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBSZXF1aXJlZDxMb29wUGFyYW1zPFQ+PiA9IHtcbiAgICBhYm9ydFNpZ25hbDogYWJvcnRTaWduYWxOZXZlcigpLFxuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBidWlsZE5vdGljZU1lc3NhZ2UgaXMgcmVxdWlyZWQgaW4gTG9vcFBhcmFtcyBhbmQgYWx3YXlzIG92ZXJyaWRkZW4gYnkgdGhlIHNwcmVhZC4gKi9cbiAgICBidWlsZE5vdGljZU1lc3NhZ2UoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2J1aWxkTm90aWNlTWVzc2FnZSBpcyByZXF1aXJlZCcpO1xuICAgIH0sXG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBpdGVtczogW10sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kczogNTAwLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzOiAyMDAwLFxuICAgIHByb2Nlc3NJdGVtOiBub29wLFxuICAgIHByb2dyZXNzQmFyVGl0bGU6ICcnLFxuICAgIHNob3VsZENvbnRpbnVlT25FcnJvcjogdHJ1ZSxcbiAgICBzaG91bGRTaG93Tm90aWNlOiB0cnVlLFxuICAgIHNob3VsZFNob3dQcm9ncmVzc0JhcjogdHJ1ZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIHVpVXBkYXRlVGhyZXNob2xkSW5NaWxsaXNlY29uZHM6IDEwMFxuICB9O1xuXG4gIGNvbnN0IGZ1bGxPcHRpb25zOiBSZXF1aXJlZDxMb29wUGFyYW1zPFQ+PiA9IHtcbiAgICAuLi5ERUZBVUxUX09QVElPTlMsXG4gICAgLi4ucGFyYW1zXG4gIH07XG5cbiAgY29uc3Qgc3RhY2tUcmFjZSA9IGdldFN0YWNrVHJhY2UoMSk7XG5cbiAgY29uc3QgaXRlbXMgPSBmdWxsT3B0aW9ucy5pdGVtcztcbiAgbGV0IGl0ZXJhdGlvbkNvdW50ID0gMDtcbiAgbGV0IG5vdGljZSA9IG51bGwgYXMgTm90aWNlIHwgbnVsbDtcbiAgbGV0IGlzRG9uZSA9IGZhbHNlO1xuICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiBzaG93Tm90aWNlKCkpO1xuXG4gIGNvbnN0IG5vdGljZU1pblRpbWVvdXRQcm9taXNlID0gc2xlZXAoZnVsbE9wdGlvbnMubm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzKTtcbiAgY29uc3QgcHJvZ3Jlc3NCYXJFbCA9IGNyZWF0ZUVsKCdwcm9ncmVzcycpO1xuICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHByb2dyZXNzQmFyRWwsICdsb29wJyk7XG4gIHByb2dyZXNzQmFyRWwubWF4ID0gaXRlbXMubGVuZ3RoO1xuXG4gIGxldCBsYXN0VUlVcGRhdGVUaW1lc3RhbXAgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICBpZiAoZnVsbE9wdGlvbnMuYWJvcnRTaWduYWwuYWJvcnRlZCkge1xuICAgICAgbm90aWNlPy5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGl0ZXJhdGlvbkNvdW50Kys7XG4gICAgY29uc3QgaXRlcmF0aW9uU3RyID0gYCMgJHtTdHJpbmcoaXRlcmF0aW9uQ291bnQpfSAvICR7U3RyaW5nKGl0ZW1zLmxlbmd0aCl9YDtcbiAgICBjb25zdCBtZXNzYWdlID0gZnVsbE9wdGlvbnMuYnVpbGROb3RpY2VNZXNzYWdlKGl0ZW0sIGl0ZXJhdGlvblN0cik7XG4gICAgaWYgKCFmdWxsT3B0aW9ucy5zaG91bGRTaG93UHJvZ3Jlc3NCYXIpIHtcbiAgICAgIG5vdGljZT8uc2V0TWVzc2FnZShtZXNzYWdlKTtcbiAgICB9XG4gICAgZ2V0TGliRGVidWdnZXIoJ0xvb3AnKShtZXNzYWdlKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAocGVyZm9ybWFuY2Uubm93KCkgLSBsYXN0VUlVcGRhdGVUaW1lc3RhbXAgPiBmdWxsT3B0aW9ucy51aVVwZGF0ZVRocmVzaG9sZEluTWlsbGlzZWNvbmRzKSB7XG4gICAgICAgIGF3YWl0IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk7XG4gICAgICAgIGxhc3RVSVVwZGF0ZVRpbWVzdGFtcCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgfVxuICAgICAgYXdhaXQgZnVsbE9wdGlvbnMucHJvY2Vzc0l0ZW0oaXRlbSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3NpbmcgaXRlbScsIGl0ZW0pO1xuICAgICAgaWYgKCFmdWxsT3B0aW9ucy5zaG91bGRDb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgbm90aWNlPy5oaWRlKCk7XG4gICAgICAgIHRocm93IG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3IoJ2xvb3AgZmFpbGVkJywgc3RhY2tUcmFjZSwgZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICBlbWl0QXN5bmNFcnJvckV2ZW50KG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3IoQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLCBzdGFja1RyYWNlLCBlcnJvcikpO1xuICAgIH1cbiAgICBwcm9ncmVzc0JhckVsLnZhbHVlKys7XG4gIH1cbiAgaWYgKG5vdGljZSkge1xuICAgIGF3YWl0IG5vdGljZU1pblRpbWVvdXRQcm9taXNlO1xuICB9XG4gIG5vdGljZT8uaGlkZSgpO1xuICBpc0RvbmUgPSB0cnVlO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNob3dOb3RpY2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFmdWxsT3B0aW9ucy5zaG91bGRTaG93Tm90aWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHNsZWVwKGZ1bGxPcHRpb25zLm5vdGljZUJlZm9yZVNob3duVGltZW91dEluTWlsbGlzZWNvbmRzKTtcbiAgICBpZiAoaXNEb25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG5vdGljZSA9IG5ldyBOb3RpY2UoJycsIDApO1xuICAgIGlmICghZnVsbE9wdGlvbnMuc2hvdWxkU2hvd1Byb2dyZXNzQmFyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnQoKTtcbiAgICBmcmFnbWVudC5jcmVhdGVEaXYoeyB0ZXh0OiBmdWxsT3B0aW9ucy5wcm9ncmVzc0JhclRpdGxlIH0pO1xuICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHByb2dyZXNzQmFyRWwpO1xuICAgIG5vdGljZS5zZXRNZXNzYWdlKGZyYWdtZW50KTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQSxTQUFTLGNBQWM7QUFFdkIsU0FBUyx3QkFBd0I7QUFDakM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHNCQUFzQjtBQUMvQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsMkJBQTJCO0FBNEVwQyxlQUFzQixLQUFRLFFBQXNDO0FBQ2xFLFFBQU0sa0JBQTJDO0FBQUEsSUFDL0MsYUFBYSxpQkFBaUI7QUFBQTtBQUFBLElBRTlCLHFCQUFxQjtBQUNuQixZQUFNLElBQUksTUFBTSxnQ0FBZ0M7QUFBQSxJQUNsRDtBQUFBO0FBQUEsSUFFQSxPQUFPLENBQUM7QUFBQTtBQUFBLElBRVIsd0NBQXdDO0FBQUE7QUFBQSxJQUV4QyxnQ0FBZ0M7QUFBQSxJQUNoQyxhQUFhO0FBQUEsSUFDYixrQkFBa0I7QUFBQSxJQUNsQix1QkFBdUI7QUFBQSxJQUN2QixrQkFBa0I7QUFBQSxJQUNsQix1QkFBdUI7QUFBQTtBQUFBLElBRXZCLGlDQUFpQztBQUFBLEVBQ25DO0FBRUEsUUFBTSxjQUF1QztBQUFBLElBQzNDLEdBQUc7QUFBQSxJQUNILEdBQUc7QUFBQSxFQUNMO0FBRUEsUUFBTSxhQUFhLGNBQWMsQ0FBQztBQUVsQyxRQUFNLFFBQVEsWUFBWTtBQUMxQixNQUFJLGlCQUFpQjtBQUNyQixNQUFJLFNBQVM7QUFDYixNQUFJLFNBQVM7QUFDYixvQkFBa0IsTUFBTSxXQUFXLENBQUM7QUFFcEMsUUFBTSwwQkFBMEIsTUFBTSxZQUFZLDhCQUE4QjtBQUNoRixRQUFNLGdCQUFnQixTQUFTLFVBQVU7QUFDekMsc0JBQW9CLGVBQWUsTUFBTTtBQUN6QyxnQkFBYyxNQUFNLE1BQU07QUFFMUIsTUFBSSx3QkFBd0IsWUFBWSxJQUFJO0FBRTVDLGFBQVcsUUFBUSxPQUFPO0FBQ3hCLFFBQUksWUFBWSxZQUFZLFNBQVM7QUFDbkMsY0FBUSxLQUFLO0FBQ2I7QUFBQSxJQUNGO0FBQ0E7QUFDQSxVQUFNLGVBQWUsS0FBSyxPQUFPLGNBQWMsQ0FBQyxNQUFNLE9BQU8sTUFBTSxNQUFNLENBQUM7QUFDMUUsVUFBTSxVQUFVLFlBQVksbUJBQW1CLE1BQU0sWUFBWTtBQUNqRSxRQUFJLENBQUMsWUFBWSx1QkFBdUI7QUFDdEMsY0FBUSxXQUFXLE9BQU87QUFBQSxJQUM1QjtBQUNBLG1CQUFlLE1BQU0sRUFBRSxPQUFPO0FBRTlCLFFBQUk7QUFDRixVQUFJLFlBQVksSUFBSSxJQUFJLHdCQUF3QixZQUFZLGlDQUFpQztBQUMzRixjQUFNLDJCQUEyQjtBQUNqQyxnQ0FBd0IsWUFBWSxJQUFJO0FBQUEsTUFDMUM7QUFDQSxZQUFNLFlBQVksWUFBWSxJQUFJO0FBQUEsSUFDcEMsU0FBUyxPQUFPO0FBQ2QsY0FBUSxNQUFNLHlCQUF5QixJQUFJO0FBQzNDLFVBQUksQ0FBQyxZQUFZLHVCQUF1QjtBQUN0QyxnQkFBUSxLQUFLO0FBQ2IsY0FBTSxJQUFJLHNCQUFzQixlQUFlLFlBQVksS0FBSztBQUFBLE1BQ2xFO0FBRUEsMEJBQW9CLElBQUksc0JBQXNCLDZCQUE2QixZQUFZLEtBQUssQ0FBQztBQUFBLElBQy9GO0FBQ0Esa0JBQWM7QUFBQSxFQUNoQjtBQUNBLE1BQUksUUFBUTtBQUNWLFVBQU07QUFBQSxFQUNSO0FBQ0EsVUFBUSxLQUFLO0FBQ2IsV0FBUztBQUVULGlCQUFlLGFBQTRCO0FBQ3pDLFFBQUksQ0FBQyxZQUFZLGtCQUFrQjtBQUNqQztBQUFBLElBQ0Y7QUFDQSxVQUFNLE1BQU0sWUFBWSxzQ0FBc0M7QUFDOUQsUUFBSSxRQUFRO0FBQ1Y7QUFBQSxJQUNGO0FBQ0EsYUFBUyxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ3pCLFFBQUksQ0FBQyxZQUFZLHVCQUF1QjtBQUN0QztBQUFBLElBQ0Y7QUFDQSxVQUFNLFdBQVcsZUFBZTtBQUNoQyxhQUFTLFVBQVUsRUFBRSxNQUFNLFlBQVksaUJBQWlCLENBQUM7QUFDekQsYUFBUyxZQUFZLGFBQWE7QUFDbEMsV0FBTyxXQUFXLFFBQVE7QUFBQSxFQUM1QjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
139
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2xvb3AudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgbG9vcGluZyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1ub3RpY2UtY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxOZXZlciB9IGZyb20gJy4uL2Fib3J0LWNvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHtcbiAgaW52b2tlQXN5bmNTYWZlbHksXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jXG59IGZyb20gJy4uL2FzeW5jLnRzJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHtcbiAgQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLFxuICBDdXN0b21TdGFja1RyYWNlRXJyb3IsXG4gIGVtaXRBc3luY0Vycm9yRXZlbnQsXG4gIGdldFN0YWNrVHJhY2Vcbn0gZnJvbSAnLi4vZXJyb3IudHMnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGFkZFBsdWdpbkNzc0NsYXNzZXMgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGxvb3B9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyB0byBsb29wIG92ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9vcFBhcmFtczxUPiB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBhYm9ydCBzaWduYWwgdG8gY2FuY2VsIHRoZSBsb29wLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQnVpbGQgYSBub3RpY2UgbWVzc2FnZSBmb3IgZWFjaCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIFRoZSBjdXJyZW50IGl0ZW0uXG4gICAqIEBwYXJhbSBpdGVyYXRpb25TdHIgLSBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyBBIHN0cmluZyB0byBkaXNwbGF5IGluIHRoZSBub3RpY2UuXG4gICAqL1xuICBidWlsZE5vdGljZU1lc3NhZ2UoaXRlbTogVCwgaXRlcmF0aW9uU3RyOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zOiBUW107XG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBmb3IgdGhlIG5vdGljZSBiZWZvcmUgaXQgaXMgc2hvd24uIERlZmF1bHQgaXMgYDUwMGAuXG4gICAqL1xuICByZWFkb25seSBub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQSBtaW5pbXVtIHRpbWVvdXQgZm9yIHRoZSBub3RpY2UuIERlZmF1bHQgaXMgYDIwMDBgLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNvbXBvbmVudCB0byBzaG93IG5vdGljZXMuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcblxuICAvKipcbiAgICogUHJvY2VzcyBlYWNoIGl0ZW0uXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIC0gVGhlIGN1cnJlbnQgaXRlbS5cbiAgICovXG4gIHByb2Nlc3NJdGVtKGl0ZW06IFQpOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBBIHRpdGxlIG9mIHRoZSBwcm9ncmVzcyBiYXIuIERlZmF1bHQgaXMgYCcnYC5cbiAgICovXG4gIHJlYWRvbmx5IHByb2dyZXNzQmFyVGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY29udGludWUgdGhlIGxvb3Agb24gZXJyb3IuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQ29udGludWVPbkVycm9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IGEgbm90aWNlLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dOb3RpY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSBwcm9ncmVzcyBiYXIuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd1Byb2dyZXNzQmFyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSB0aHJlc2hvbGQgZm9yIHRoZSBVSSB1cGRhdGUuIERlZmF1bHQgaXMgYDEwMGAuXG4gICAqL1xuICByZWFkb25seSB1aVVwZGF0ZVRocmVzaG9sZEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIExvb3BzIG92ZXIgYSBsaXN0IG9mIGl0ZW1zIGFuZCBwcm9jZXNzZXMgZWFjaCBpdGVtLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyB0byBsb29wIG92ZXIuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBsb29wLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9vcDxUPihwYXJhbXM6IExvb3BQYXJhbXM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICAgIGFib3J0U2lnbmFsOiBhYm9ydFNpZ25hbE5ldmVyKCksXG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIGJ1aWxkTm90aWNlTWVzc2FnZSBpcyByZXF1aXJlZCBpbiBMb29wUGFyYW1zIGFuZCBhbHdheXMgb3ZlcnJpZGRlbiBieSB0aGUgc3ByZWFkLiAqL1xuICAgIGJ1aWxkTm90aWNlTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdidWlsZE5vdGljZU1lc3NhZ2UgaXMgcmVxdWlyZWQnKTtcbiAgICB9LFxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgaXRlbXM6IFtdLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgbm90aWNlQmVmb3JlU2hvd25UaW1lb3V0SW5NaWxsaXNlY29uZHM6IDUwMCxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIG5vdGljZU1pblRpbWVvdXRJbk1pbGxpc2Vjb25kczogMjAwMCxcbiAgICBwcm9jZXNzSXRlbTogbm9vcCxcbiAgICBwcm9ncmVzc0JhclRpdGxlOiAnJyxcbiAgICBzaG91bGRDb250aW51ZU9uRXJyb3I6IHRydWUsXG4gICAgc2hvdWxkU2hvd05vdGljZTogdHJ1ZSxcbiAgICBzaG91bGRTaG93UHJvZ3Jlc3NCYXI6IHRydWUsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICB1aVVwZGF0ZVRocmVzaG9sZEluTWlsbGlzZWNvbmRzOiAxMDBcbiAgfTtcblxuICBjb25zdCBmdWxsT3B0aW9uczogUmVxdWlyZWQ8TG9vcFBhcmFtczxUPj4gPSB7XG4gICAgLi4uREVGQVVMVF9PUFRJT05TLFxuICAgIC4uLnBhcmFtc1xuICB9O1xuXG4gIGNvbnN0IHN0YWNrVHJhY2UgPSBnZXRTdGFja1RyYWNlKDEpO1xuXG4gIGNvbnN0IGl0ZW1zID0gZnVsbE9wdGlvbnMuaXRlbXM7XG4gIGxldCBpdGVyYXRpb25Db3VudCA9IDA7XG4gIGxldCBub3RpY2UgPSBudWxsIGFzIE5vdGljZSB8IG51bGw7XG4gIGxldCBpc0RvbmUgPSBmYWxzZTtcbiAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gc2hvd05vdGljZSgpKTtcblxuICBjb25zdCBub3RpY2VNaW5UaW1lb3V0UHJvbWlzZSA9IHNsZWVwKGZ1bGxPcHRpb25zLm5vdGljZU1pblRpbWVvdXRJbk1pbGxpc2Vjb25kcyk7XG4gIGNvbnN0IHByb2dyZXNzQmFyRWwgPSBjcmVhdGVFbCgncHJvZ3Jlc3MnKTtcbiAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyhwcm9ncmVzc0JhckVsLCAnbG9vcCcpO1xuICBwcm9ncmVzc0JhckVsLm1heCA9IGl0ZW1zLmxlbmd0aDtcblxuICBsZXQgbGFzdFVJVXBkYXRlVGltZXN0YW1wID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgaWYgKGZ1bGxPcHRpb25zLmFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIG5vdGljZT8uaGlkZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpdGVyYXRpb25Db3VudCsrO1xuICAgIGNvbnN0IGl0ZXJhdGlvblN0ciA9IGAjICR7U3RyaW5nKGl0ZXJhdGlvbkNvdW50KX0gLyAke1N0cmluZyhpdGVtcy5sZW5ndGgpfWA7XG4gICAgY29uc3QgbWVzc2FnZSA9IGZ1bGxPcHRpb25zLmJ1aWxkTm90aWNlTWVzc2FnZShpdGVtLCBpdGVyYXRpb25TdHIpO1xuICAgIGlmICghZnVsbE9wdGlvbnMuc2hvdWxkU2hvd1Byb2dyZXNzQmFyKSB7XG4gICAgICBub3RpY2U/LnNldE1lc3NhZ2UobWVzc2FnZSk7XG4gICAgfVxuICAgIGdldExpYkRlYnVnZ2VyKCdMb29wJykobWVzc2FnZSk7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHBlcmZvcm1hbmNlLm5vdygpIC0gbGFzdFVJVXBkYXRlVGltZXN0YW1wID4gZnVsbE9wdGlvbnMudWlVcGRhdGVUaHJlc2hvbGRJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICBhd2FpdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luYygpO1xuICAgICAgICBsYXN0VUlVcGRhdGVUaW1lc3RhbXAgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGZ1bGxPcHRpb25zLnByb2Nlc3NJdGVtKGl0ZW0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwcm9jZXNzaW5nIGl0ZW0nLCBpdGVtKTtcbiAgICAgIGlmICghZnVsbE9wdGlvbnMuc2hvdWxkQ29udGludWVPbkVycm9yKSB7XG4gICAgICAgIG5vdGljZT8uaGlkZSgpO1xuICAgICAgICB0aHJvdyBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKHtcbiAgICAgICAgICBjYXVzZTogZXJyb3IsXG4gICAgICAgICAgbWVzc2FnZTogJ2xvb3AgZmFpbGVkJyxcbiAgICAgICAgICBzdGFja1RyYWNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBlbWl0QXN5bmNFcnJvckV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKHtcbiAgICAgICAgICBjYXVzZTogZXJyb3IsXG4gICAgICAgICAgbWVzc2FnZTogQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLFxuICAgICAgICAgIHN0YWNrVHJhY2VcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHByb2dyZXNzQmFyRWwudmFsdWUrKztcbiAgfVxuICBpZiAobm90aWNlKSB7XG4gICAgYXdhaXQgbm90aWNlTWluVGltZW91dFByb21pc2U7XG4gIH1cbiAgbm90aWNlPy5oaWRlKCk7XG4gIGlzRG9uZSA9IHRydWU7XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2hvd05vdGljZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWZ1bGxPcHRpb25zLnNob3VsZFNob3dOb3RpY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgc2xlZXAoZnVsbE9wdGlvbnMubm90aWNlQmVmb3JlU2hvd25UaW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICAgIGlmIChpc0RvbmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbm90aWNlID0gcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKCcnLCB7fSk7XG4gICAgaWYgKCFmdWxsT3B0aW9ucy5zaG91bGRTaG93UHJvZ3Jlc3NCYXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudCgpO1xuICAgIGZyYWdtZW50LmNyZWF0ZURpdih7IHRleHQ6IGZ1bGxPcHRpb25zLnByb2dyZXNzQmFyVGl0bGUgfSk7XG4gICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQocHJvZ3Jlc3NCYXJFbCk7XG4gICAgbm90aWNlLnNldE1lc3NhZ2UoZnJhZ21lbnQpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsY0FBYztBQUl2QixTQUFTLHdCQUF3QjtBQUNqQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsc0JBQXNCO0FBQy9CO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLFlBQVk7QUFDckIsU0FBUywyQkFBMkI7QUFpRnBDLGVBQXNCLEtBQVEsUUFBc0M7QUFDbEUsUUFBTSxrQkFBa0I7QUFBQSxJQUN0QixhQUFhLGlCQUFpQjtBQUFBO0FBQUEsSUFFOUIscUJBQTZCO0FBQzNCLFlBQU0sSUFBSSxNQUFNLGdDQUFnQztBQUFBLElBQ2xEO0FBQUE7QUFBQSxJQUVBLE9BQU8sQ0FBQztBQUFBO0FBQUEsSUFFUix3Q0FBd0M7QUFBQTtBQUFBLElBRXhDLGdDQUFnQztBQUFBLElBQ2hDLGFBQWE7QUFBQSxJQUNiLGtCQUFrQjtBQUFBLElBQ2xCLHVCQUF1QjtBQUFBLElBQ3ZCLGtCQUFrQjtBQUFBLElBQ2xCLHVCQUF1QjtBQUFBO0FBQUEsSUFFdkIsaUNBQWlDO0FBQUEsRUFDbkM7QUFFQSxRQUFNLGNBQXVDO0FBQUEsSUFDM0MsR0FBRztBQUFBLElBQ0gsR0FBRztBQUFBLEVBQ0w7QUFFQSxRQUFNLGFBQWEsY0FBYyxDQUFDO0FBRWxDLFFBQU0sUUFBUSxZQUFZO0FBQzFCLE1BQUksaUJBQWlCO0FBQ3JCLE1BQUksU0FBUztBQUNiLE1BQUksU0FBUztBQUNiLG9CQUFrQixNQUFNLFdBQVcsQ0FBQztBQUVwQyxRQUFNLDBCQUEwQixNQUFNLFlBQVksOEJBQThCO0FBQ2hGLFFBQU0sZ0JBQWdCLFNBQVMsVUFBVTtBQUN6QyxzQkFBb0IsZUFBZSxNQUFNO0FBQ3pDLGdCQUFjLE1BQU0sTUFBTTtBQUUxQixNQUFJLHdCQUF3QixZQUFZLElBQUk7QUFFNUMsYUFBVyxRQUFRLE9BQU87QUFDeEIsUUFBSSxZQUFZLFlBQVksU0FBUztBQUNuQyxjQUFRLEtBQUs7QUFDYjtBQUFBLElBQ0Y7QUFDQTtBQUNBLFVBQU0sZUFBZSxLQUFLLE9BQU8sY0FBYyxDQUFDLE1BQU0sT0FBTyxNQUFNLE1BQU0sQ0FBQztBQUMxRSxVQUFNLFVBQVUsWUFBWSxtQkFBbUIsTUFBTSxZQUFZO0FBQ2pFLFFBQUksQ0FBQyxZQUFZLHVCQUF1QjtBQUN0QyxjQUFRLFdBQVcsT0FBTztBQUFBLElBQzVCO0FBQ0EsbUJBQWUsTUFBTSxFQUFFLE9BQU87QUFFOUIsUUFBSTtBQUNGLFVBQUksWUFBWSxJQUFJLElBQUksd0JBQXdCLFlBQVksaUNBQWlDO0FBQzNGLGNBQU0sMkJBQTJCO0FBQ2pDLGdDQUF3QixZQUFZLElBQUk7QUFBQSxNQUMxQztBQUNBLFlBQU0sWUFBWSxZQUFZLElBQUk7QUFBQSxJQUNwQyxTQUFTLE9BQU87QUFDZCxjQUFRLE1BQU0seUJBQXlCLElBQUk7QUFDM0MsVUFBSSxDQUFDLFlBQVksdUJBQXVCO0FBQ3RDLGdCQUFRLEtBQUs7QUFDYixjQUFNLElBQUksc0JBQXNCO0FBQUEsVUFDOUIsT0FBTztBQUFBLFVBQ1AsU0FBUztBQUFBLFVBQ1Q7QUFBQSxRQUNGLENBQUM7QUFBQSxNQUNIO0FBRUE7QUFBQSxRQUNFLElBQUksc0JBQXNCO0FBQUEsVUFDeEIsT0FBTztBQUFBLFVBQ1AsU0FBUztBQUFBLFVBQ1Q7QUFBQSxRQUNGLENBQUM7QUFBQSxNQUNIO0FBQUEsSUFDRjtBQUNBLGtCQUFjO0FBQUEsRUFDaEI7QUFDQSxNQUFJLFFBQVE7QUFDVixVQUFNO0FBQUEsRUFDUjtBQUNBLFVBQVEsS0FBSztBQUNiLFdBQVM7QUFFVCxpQkFBZSxhQUE0QjtBQUN6QyxRQUFJLENBQUMsWUFBWSxrQkFBa0I7QUFDakM7QUFBQSxJQUNGO0FBQ0EsVUFBTSxNQUFNLFlBQVksc0NBQXNDO0FBQzlELFFBQUksUUFBUTtBQUNWO0FBQUEsSUFDRjtBQUNBLGFBQVMsT0FBTyxzQkFBc0IsV0FBVyxJQUFJLENBQUMsQ0FBQztBQUN2RCxRQUFJLENBQUMsWUFBWSx1QkFBdUI7QUFDdEM7QUFBQSxJQUNGO0FBQ0EsVUFBTSxXQUFXLGVBQWU7QUFDaEMsYUFBUyxVQUFVLEVBQUUsTUFBTSxZQUFZLGlCQUFpQixDQUFDO0FBQ3pELGFBQVMsWUFBWSxhQUFhO0FBQ2xDLFdBQU8sV0FBVyxRQUFRO0FBQUEsRUFDNUI7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K