obsidian-dev-utils 4.10.0 → 4.11.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 (84) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/lib/Async.cjs +50 -35
  3. package/dist/lib/Async.d.ts +66 -66
  4. package/dist/lib/Blob.cjs +11 -11
  5. package/dist/lib/Blob.d.ts +7 -7
  6. package/dist/lib/Error.cjs +17 -17
  7. package/dist/lib/Error.d.ts +14 -14
  8. package/dist/lib/Function.cjs +8 -8
  9. package/dist/lib/Function.d.ts +12 -12
  10. package/dist/lib/Object.cjs +36 -36
  11. package/dist/lib/Object.d.ts +55 -55
  12. package/dist/lib/Path.cjs +16 -16
  13. package/dist/lib/Path.d.ts +28 -28
  14. package/dist/lib/String.cjs +35 -35
  15. package/dist/lib/String.d.ts +55 -55
  16. package/dist/lib/ValueProvider.cjs +4 -4
  17. package/dist/lib/obsidian/App.cjs +6 -6
  18. package/dist/lib/obsidian/App.d.ts +7 -7
  19. package/dist/lib/obsidian/AttachmentPath.cjs +9 -9
  20. package/dist/lib/obsidian/AttachmentPath.d.ts +8 -8
  21. package/dist/lib/obsidian/Backlink.cjs +28 -28
  22. package/dist/lib/obsidian/Backlink.d.ts +22 -22
  23. package/dist/lib/obsidian/Callout.cjs +13 -13
  24. package/dist/lib/obsidian/Dataview.cjs +40 -40
  25. package/dist/lib/obsidian/Dataview.d.ts +69 -69
  26. package/dist/lib/obsidian/FileChange.cjs +7 -7
  27. package/dist/lib/obsidian/FileChange.d.ts +22 -22
  28. package/dist/lib/obsidian/FileManager.cjs +18 -18
  29. package/dist/lib/obsidian/FileManager.d.ts +11 -11
  30. package/dist/lib/obsidian/FileSystem.cjs +31 -31
  31. package/dist/lib/obsidian/FileSystem.d.ts +41 -41
  32. package/dist/lib/obsidian/FrontMatter.cjs +1 -1
  33. package/dist/lib/obsidian/FrontMatter.d.ts +6 -6
  34. package/dist/lib/obsidian/Link.cjs +154 -154
  35. package/dist/lib/obsidian/Link.d.ts +163 -163
  36. package/dist/lib/obsidian/MetadataCache.cjs +61 -61
  37. package/dist/lib/obsidian/MetadataCache.d.ts +28 -28
  38. package/dist/lib/obsidian/Modal/Alert.cjs +7 -7
  39. package/dist/lib/obsidian/Modal/Confirm.cjs +7 -7
  40. package/dist/lib/obsidian/Modal/Prompt.cjs +15 -15
  41. package/dist/lib/obsidian/Modal/SelectItem.cjs +7 -7
  42. package/dist/lib/obsidian/ObsidianSettings.cjs +4 -4
  43. package/dist/lib/obsidian/ObsidianSettings.d.ts +6 -6
  44. package/dist/lib/obsidian/Plugin/Plugin.cjs +6 -6
  45. package/dist/lib/obsidian/Plugin/Plugin.d.ts +7 -7
  46. package/dist/lib/obsidian/Plugin/PluginBase.cjs +52 -52
  47. package/dist/lib/obsidian/Plugin/PluginBase.d.ts +29 -29
  48. package/dist/lib/obsidian/Plugin/PluginSettings.cjs +4 -4
  49. package/dist/lib/obsidian/Plugin/PluginSettings.d.ts +8 -8
  50. package/dist/lib/obsidian/Plugin/ValueComponent.cjs +1 -1
  51. package/dist/lib/obsidian/Plugin/ValueComponent.d.ts +51 -51
  52. package/dist/lib/obsidian/Queue.cjs +76 -0
  53. package/dist/lib/obsidian/Queue.d.ts +28 -0
  54. package/dist/lib/obsidian/Reference.cjs +12 -12
  55. package/dist/lib/obsidian/Reference.d.ts +7 -7
  56. package/dist/lib/obsidian/RenameDeleteHandler.cjs +130 -130
  57. package/dist/lib/obsidian/Vault.cjs +116 -116
  58. package/dist/lib/obsidian/Vault.d.ts +70 -70
  59. package/dist/lib/obsidian/index.cjs +4 -4
  60. package/dist/lib/obsidian/index.d.ts +1 -1
  61. package/dist/lib/scripts/CliUtils.cjs +30 -30
  62. package/dist/lib/scripts/CliUtils.d.ts +11 -11
  63. package/dist/lib/scripts/ESLint/eslint.config.cjs +1 -1
  64. package/dist/lib/scripts/Exec.cjs +1 -1
  65. package/dist/lib/scripts/Exec.d.ts +21 -21
  66. package/dist/lib/scripts/Fs.cjs +11 -11
  67. package/dist/lib/scripts/Fs.d.ts +13 -13
  68. package/dist/lib/scripts/JSON.cjs +7 -7
  69. package/dist/lib/scripts/JSON.d.ts +16 -16
  70. package/dist/lib/scripts/Npm.cjs +13 -13
  71. package/dist/lib/scripts/Npm.d.ts +43 -43
  72. package/dist/lib/scripts/Root.cjs +4 -4
  73. package/dist/lib/scripts/Root.d.ts +8 -8
  74. package/dist/lib/scripts/build.cjs +4 -4
  75. package/dist/lib/scripts/build.d.ts +8 -8
  76. package/dist/lib/scripts/cli.cjs +1 -1
  77. package/dist/lib/scripts/esbuild/Dependency.cjs +21 -21
  78. package/dist/lib/scripts/esbuild/Dependency.d.ts +6 -6
  79. package/dist/lib/scripts/esbuild/fixSourceMapsPlugin.cjs +5 -5
  80. package/dist/lib/scripts/version.cjs +134 -134
  81. package/dist/lib/scripts/version.d.ts +70 -70
  82. package/package.json +11 -11
  83. package/dist/lib/obsidian/ChainedPromise.cjs +0 -59
  84. package/dist/lib/obsidian/ChainedPromise.d.ts +0 -26
@@ -5,51 +5,39 @@
5
5
  import type { DataviewInlineApi } from './Dataview.ts';
6
6
  import type { PathOrAbstractFile, PathOrFile } from './FileSystem.ts';
7
7
  /**
8
- * Options for rendering delayed backlinks.
8
+ * Options for rendering delayed backlinks for a folder.
9
9
  */
10
- export interface RenderDelayedBacklinksOptions {
10
+ export interface RenderDelayedBacklinksForFolderOptions {
11
11
  /**
12
12
  * The DataviewInlineApi instance.
13
13
  */
14
14
  dv: DataviewInlineApi;
15
15
  /**
16
- * An array of PathOrFile.
16
+ * The folder path. If not provided, the current file's folder will be used.
17
17
  */
18
- files: PathOrFile[];
18
+ folder?: string;
19
19
  /**
20
- * The title for the rendered backlinks. Defaults to "Backlinks".
20
+ * The title for the rendered backlinks. Defaults to "Folder Backlinks".
21
21
  */
22
22
  title?: string;
23
23
  }
24
24
  /**
25
- * Renders delayed backlinks.
26
- *
27
- * @param options - The options for rendering delayed backlinks.
28
- */
29
- export declare function renderDelayedBacklinks(options: RenderDelayedBacklinksOptions): void;
30
- /**
31
- * Options for rendering delayed backlinks for a folder.
25
+ * Options for rendering delayed backlinks.
32
26
  */
33
- export interface RenderDelayedBacklinksForFolderOptions {
27
+ export interface RenderDelayedBacklinksOptions {
34
28
  /**
35
29
  * The DataviewInlineApi instance.
36
30
  */
37
31
  dv: DataviewInlineApi;
38
32
  /**
39
- * The folder path. If not provided, the current file's folder will be used.
33
+ * An array of PathOrFile.
40
34
  */
41
- folder?: string;
35
+ files: PathOrFile[];
42
36
  /**
43
- * The title for the rendered backlinks. Defaults to "Folder Backlinks".
37
+ * The title for the rendered backlinks. Defaults to "Backlinks".
44
38
  */
45
39
  title?: string;
46
40
  }
47
- /**
48
- * Renders delayed backlinks for a specific folder.
49
- *
50
- * @param options - The options for rendering delayed backlinks.
51
- */
52
- export declare function renderDelayedBacklinksForFolder(options: RenderDelayedBacklinksForFolderOptions): void;
53
41
  /**
54
42
  * Renders a backlinks table using the provided DataviewInlineApi and optional array of PathOrAbstractFile.
55
43
  *
@@ -58,3 +46,15 @@ export declare function renderDelayedBacklinksForFolder(options: RenderDelayedBa
58
46
  * @returns A Promise that resolves when the backlinks table has been rendered.
59
47
  */
60
48
  export declare function renderBacklinksTable(dv: DataviewInlineApi, pathOrFiles?: PathOrAbstractFile[]): Promise<void>;
49
+ /**
50
+ * Renders delayed backlinks.
51
+ *
52
+ * @param options - The options for rendering delayed backlinks.
53
+ */
54
+ export declare function renderDelayedBacklinks(options: RenderDelayedBacklinksOptions): void;
55
+ /**
56
+ * Renders delayed backlinks for a specific folder.
57
+ *
58
+ * @param options - The options for rendering delayed backlinks.
59
+ */
60
+ export declare function renderDelayedBacklinksForFolder(options: RenderDelayedBacklinksForFolderOptions): void;
@@ -32,24 +32,14 @@ __export(Callout_exports, {
32
32
  module.exports = __toCommonJS(Callout_exports);
33
33
  var import_Error = require('../Error.cjs');
34
34
  var import_ValueProvider = require('../ValueProvider.cjs');
35
- var import_ChainedPromise = require('./ChainedPromise.cjs');
36
35
  var import_Dataview = require('./Dataview.cjs');
36
+ var import_Queue = require('./Queue.cjs');
37
37
  var CalloutMode = /* @__PURE__ */ ((CalloutMode2) => {
38
38
  CalloutMode2[CalloutMode2["Default"] = 0] = "Default";
39
39
  CalloutMode2[CalloutMode2["FoldableCollapsed"] = 1] = "FoldableCollapsed";
40
40
  CalloutMode2[CalloutMode2["FoldableExpanded"] = 2] = "FoldableExpanded";
41
41
  return CalloutMode2;
42
42
  })(CalloutMode || {});
43
- function getModifier(mode) {
44
- switch (mode) {
45
- case 1 /* FoldableCollapsed */:
46
- return "-";
47
- case 2 /* FoldableExpanded */:
48
- return "+";
49
- default:
50
- return "";
51
- }
52
- }
53
43
  function renderCallout(options) {
54
44
  const {
55
45
  contentProvider = "",
@@ -68,7 +58,7 @@ function renderCallout(options) {
68
58
  for (const entry of entries) {
69
59
  if (entry.isIntersecting) {
70
60
  observer.unobserve(entry.target);
71
- (0, import_ChainedPromise.chain)(dv.app, loadContent);
61
+ (0, import_Queue.addToQueue)(dv.app, loadContent);
72
62
  }
73
63
  }
74
64
  });
@@ -89,10 +79,20 @@ function wrapForCallout(content) {
89
79
  const prefixedLines = lines.map((line) => `> ${line}`);
90
80
  return prefixedLines.join("\n");
91
81
  }
82
+ function getModifier(mode) {
83
+ switch (mode) {
84
+ case 1 /* FoldableCollapsed */:
85
+ return "-";
86
+ case 2 /* FoldableExpanded */:
87
+ return "+";
88
+ default:
89
+ return "";
90
+ }
91
+ }
92
92
  // Annotate the CommonJS export names for ESM import in node:
93
93
  0 && (module.exports = {
94
94
  CalloutMode,
95
95
  renderCallout,
96
96
  wrapForCallout
97
97
  });
98
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NhbGxvdXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIENhbGxvdXRcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciByZW5kZXJpbmcgY2FsbG91dHMgaW4gRGF0YXZpZXcuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGF2aWV3SW5saW5lQXBpIH0gZnJvbSAnLi9EYXRhdmlldy50cyc7XG5cbmltcG9ydCB7IHRocm93RXhwcmVzc2lvbiB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHsgY2hhaW4gfSBmcm9tICcuL0NoYWluZWRQcm9taXNlLnRzJztcbmltcG9ydCB7IGdldFJlbmRlcmVkQ29udGFpbmVyIH0gZnJvbSAnLi9EYXRhdmlldy50cyc7XG5cbi8qKlxuICogRW51bSByZXByZXNlbnRpbmcgdGhlIG1vZGUgb2YgYSBjYWxsb3V0LlxuICovXG5leHBvcnQgZW51bSBDYWxsb3V0TW9kZSB7XG4gIC8qKiBEZWZhdWx0IG1vZGUsIHdpdGggbm8gc3BlY2lhbCBiZWhhdmlvci4gKi9cbiAgRGVmYXVsdCxcblxuICAvKiogRm9sZGFibGUgbW9kZSB3aXRoIHRoZSBjYWxsb3V0IGNvbGxhcHNlZC4gKi9cbiAgRm9sZGFibGVDb2xsYXBzZWQsXG5cbiAgLyoqIEZvbGRhYmxlIG1vZGUgd2l0aCB0aGUgY2FsbG91dCBleHBhbmRlZC4gKi9cbiAgRm9sZGFibGVFeHBhbmRlZFxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG1vZGlmaWVyIHN0cmluZyBiYXNlZCBvbiB0aGUgY2FsbG91dCBtb2RlLlxuICpcbiAqIEBwYXJhbSBtb2RlIC0gVGhlIG1vZGUgb2YgdGhlIGNhbGxvdXQuXG4gKiBAcmV0dXJucyBUaGUgY29ycmVzcG9uZGluZyBtb2RpZmllciBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGdldE1vZGlmaWVyKG1vZGU6IENhbGxvdXRNb2RlKTogc3RyaW5nIHtcbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSBDYWxsb3V0TW9kZS5Gb2xkYWJsZUNvbGxhcHNlZDpcbiAgICAgIHJldHVybiAnLSc7XG4gICAgY2FzZSBDYWxsb3V0TW9kZS5Gb2xkYWJsZUV4cGFuZGVkOlxuICAgICAgcmV0dXJuICcrJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICcnO1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcmVuZGVyaW5nIGEgY2FsbG91dCBibG9jayBpbiBEYXRhdmlldy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJDYWxsb3V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwcm92aWRlciBmb3IgdGhlIGNvbnRlbnQsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBOb2RlLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXZvaWQtdHlwZVxuICBjb250ZW50UHJvdmlkZXI/OiBWYWx1ZVByb3ZpZGVyPE5vZGUgfCBzdHJpbmcgfCB2b2lkPjtcblxuICAvKipcbiAgICogVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICAgKi9cbiAgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGVyIHRleHQgb2YgdGhlIGNhbGxvdXQsIGRlZmF1bHQgaXMgYW4gZW1wdHkgc3RyaW5nLlxuICAgKi9cbiAgaGVhZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FsbG91dCBtb2RlLCBkZWZhdWx0IGlzIGBDYWxsb3V0TW9kZS5Gb2xkYWJsZUNvbGxhcHNlZGAuXG4gICAqL1xuICBtb2RlPzogQ2FsbG91dE1vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBjYWxsb3V0LCBkZWZhdWx0IGlzIGBcIk5PVEVcImAuXG4gICAqL1xuICB0eXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBjYWxsb3V0IGJsb2NrIGluIERhdGF2aWV3LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgY2FsbG91dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckNhbGxvdXQob3B0aW9uczogUmVuZGVyQ2FsbG91dE9wdGlvbnMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGNvbnRlbnRQcm92aWRlciA9ICcnLFxuICAgIGR2LFxuICAgIGhlYWRlciA9ICcnLFxuICAgIG1vZGUgPSBDYWxsb3V0TW9kZS5Gb2xkYWJsZUNvbGxhcHNlZCxcbiAgICB0eXBlID0gJ05PVEUnXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBtb2RpZmllciA9IGdldE1vZGlmaWVyKG1vZGUpO1xuICBjb25zdCBjYWxsb3V0ID0gZHYucGFyYWdyYXBoKGA+IFshJHt0eXBlfV0ke21vZGlmaWVyfSAke2hlYWRlcn1cXG4+XFxuPiA8ZGl2IGNsYXNzPVwiY29udGVudFwiPjwvZGl2PmApO1xuICBjb25zdCBjb250ZW50RGl2ID0gY2FsbG91dC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PignLmNvbnRlbnQnKSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdDb250ZW50IGRpdiBub3QgZm91bmQnKSk7XG4gIGR2LnBhcmFncmFwaCgnTG9hZGluZy4uLiBcdTIzRjMnLCB7IGNvbnRhaW5lcjogY29udGVudERpdiB9KTtcblxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGVudHJ5LnRhcmdldCk7XG4gICAgICAgIGNoYWluKGR2LmFwcCwgbG9hZENvbnRlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIG9ic2VydmVyLm9ic2VydmUoY29udGVudERpdik7XG5cbiAgYXN5bmMgZnVuY3Rpb24gbG9hZENvbnRlbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc2xlZXAoNTApO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcbiAgICBsZXQgY29udGVudDogTm9kZSB8IHN0cmluZyB8IHVuZGVmaW5lZCB8IHZvaWQ7XG5cbiAgICBjb25zdCBwYXJhZ3JhcGggPSBhd2FpdCBnZXRSZW5kZXJlZENvbnRhaW5lcihkdiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29udGVudCA9IGF3YWl0IHJlc29sdmVWYWx1ZShjb250ZW50UHJvdmlkZXIpO1xuICAgIH0pO1xuXG4gICAgY29udGVudCA/Pz0gcGFyYWdyYXBoO1xuXG4gICAgY29udGVudERpdi5lbXB0eSgpO1xuICAgIGR2LnBhcmFncmFwaChjb250ZW50LCB7IGNvbnRhaW5lcjogY29udGVudERpdiB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBzIHRoZSBwcm92aWRlZCBjb250ZW50IGluIGJsb2NrcXVvdGUgc3ludGF4IGZvciBhIGNhbGxvdXQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCB0byB3cmFwLlxuICogQHJldHVybnMgVGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBibG9ja3F1b3RlIHN5bnRheC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXBGb3JDYWxsb3V0KGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IHByZWZpeGVkTGluZXMgPSBsaW5lcy5tYXAoKGxpbmUpID0+IGA+ICR7bGluZX1gKTtcbiAgcmV0dXJuIHByZWZpeGVkTGluZXMuam9pbignXFxuJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxtQkFBZ0M7QUFDaEMsMkJBQTZCO0FBQzdCLDRCQUFzQjtBQUN0QixzQkFBcUM7QUFLOUIsSUFBSyxjQUFMLGtCQUFLQSxpQkFBTDtBQUVMLEVBQUFBLDBCQUFBO0FBR0EsRUFBQUEsMEJBQUE7QUFHQSxFQUFBQSwwQkFBQTtBQVJVLFNBQUFBO0FBQUEsR0FBQTtBQWlCWixTQUFTLFlBQVksTUFBMkI7QUFDOUMsVUFBUSxNQUFNO0FBQUEsSUFDWixLQUFLO0FBQ0gsYUFBTztBQUFBLElBQ1QsS0FBSztBQUNILGFBQU87QUFBQSxJQUNUO0FBQ0UsYUFBTztBQUFBLEVBQ1g7QUFDRjtBQXNDTyxTQUFTLGNBQWMsU0FBcUM7QUFDakUsUUFBTTtBQUFBLElBQ0osa0JBQWtCO0FBQUEsSUFDbEI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxFQUNULElBQUk7QUFDSixRQUFNLFdBQVcsWUFBWSxJQUFJO0FBQ2pDLFFBQU0sVUFBVSxHQUFHLFVBQVUsT0FBTyxJQUFJLElBQUksUUFBUSxJQUFJLE1BQU07QUFBQTtBQUFBLDhCQUFvQztBQUNsRyxRQUFNLGFBQWEsUUFBUSxjQUE4QixVQUFVLFNBQUssOEJBQWdCLElBQUksTUFBTSx1QkFBdUIsQ0FBQztBQUMxSCxLQUFHLFVBQVUscUJBQWdCLEVBQUUsV0FBVyxXQUFXLENBQUM7QUFFdEQsUUFBTSxXQUFXLElBQUkscUJBQXFCLENBQUMsWUFBeUM7QUFDbEYsZUFBVyxTQUFTLFNBQVM7QUFDM0IsVUFBSSxNQUFNLGdCQUFnQjtBQUN4QixpQkFBUyxVQUFVLE1BQU0sTUFBTTtBQUMvQix5Q0FBTSxHQUFHLEtBQUssV0FBVztBQUFBLE1BQzNCO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNELFdBQVMsUUFBUSxVQUFVO0FBRTNCLGlCQUFlLGNBQTZCO0FBQzFDLFVBQU0sTUFBTSxFQUFFO0FBRWQsUUFBSTtBQUVKLFVBQU0sWUFBWSxVQUFNLHNDQUFxQixJQUFJLFlBQVk7QUFDM0QsZ0JBQVUsVUFBTSxtQ0FBYSxlQUFlO0FBQUEsSUFDOUMsQ0FBQztBQUVELGdCQUFZO0FBRVosZUFBVyxNQUFNO0FBQ2pCLE9BQUcsVUFBVSxTQUFTLEVBQUUsV0FBVyxXQUFXLENBQUM7QUFBQSxFQUNqRDtBQUNGO0FBUU8sU0FBUyxlQUFlLFNBQXlCO0FBQ3RELFFBQU0sUUFBUSxRQUFRLE1BQU0sSUFBSTtBQUNoQyxRQUFNLGdCQUFnQixNQUFNLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO0FBQ3JELFNBQU8sY0FBYyxLQUFLLElBQUk7QUFDaEM7IiwKICAibmFtZXMiOiBbIkNhbGxvdXRNb2RlIl0KfQo=
98
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NhbGxvdXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIENhbGxvdXRcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciByZW5kZXJpbmcgY2FsbG91dHMgaW4gRGF0YXZpZXcuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGF2aWV3SW5saW5lQXBpIH0gZnJvbSAnLi9EYXRhdmlldy50cyc7XG5cbmltcG9ydCB7IHRocm93RXhwcmVzc2lvbiB9IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHsgZ2V0UmVuZGVyZWRDb250YWluZXIgfSBmcm9tICcuL0RhdGF2aWV3LnRzJztcbmltcG9ydCB7IGFkZFRvUXVldWUgfSBmcm9tICcuL1F1ZXVlLnRzJztcblxuLyoqXG4gKiBFbnVtIHJlcHJlc2VudGluZyB0aGUgbW9kZSBvZiBhIGNhbGxvdXQuXG4gKi9cbmV4cG9ydCBlbnVtIENhbGxvdXRNb2RlIHtcbiAgLyoqIERlZmF1bHQgbW9kZSwgd2l0aCBubyBzcGVjaWFsIGJlaGF2aW9yLiAqL1xuICBEZWZhdWx0LFxuXG4gIC8qKiBGb2xkYWJsZSBtb2RlIHdpdGggdGhlIGNhbGxvdXQgY29sbGFwc2VkLiAqL1xuICBGb2xkYWJsZUNvbGxhcHNlZCxcblxuICAvKiogRm9sZGFibGUgbW9kZSB3aXRoIHRoZSBjYWxsb3V0IGV4cGFuZGVkLiAqL1xuICBGb2xkYWJsZUV4cGFuZGVkXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcmVuZGVyaW5nIGEgY2FsbG91dCBibG9jayBpbiBEYXRhdmlldy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJDYWxsb3V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwcm92aWRlciBmb3IgdGhlIGNvbnRlbnQsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBOb2RlLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXZvaWQtdHlwZVxuICBjb250ZW50UHJvdmlkZXI/OiBWYWx1ZVByb3ZpZGVyPE5vZGUgfCBzdHJpbmcgfCB2b2lkPjtcblxuICAvKipcbiAgICogVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICAgKi9cbiAgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGVyIHRleHQgb2YgdGhlIGNhbGxvdXQsIGRlZmF1bHQgaXMgYW4gZW1wdHkgc3RyaW5nLlxuICAgKi9cbiAgaGVhZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FsbG91dCBtb2RlLCBkZWZhdWx0IGlzIGBDYWxsb3V0TW9kZS5Gb2xkYWJsZUNvbGxhcHNlZGAuXG4gICAqL1xuICBtb2RlPzogQ2FsbG91dE1vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBjYWxsb3V0LCBkZWZhdWx0IGlzIGBcIk5PVEVcImAuXG4gICAqL1xuICB0eXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBjYWxsb3V0IGJsb2NrIGluIERhdGF2aWV3LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgY2FsbG91dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckNhbGxvdXQob3B0aW9uczogUmVuZGVyQ2FsbG91dE9wdGlvbnMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGNvbnRlbnRQcm92aWRlciA9ICcnLFxuICAgIGR2LFxuICAgIGhlYWRlciA9ICcnLFxuICAgIG1vZGUgPSBDYWxsb3V0TW9kZS5Gb2xkYWJsZUNvbGxhcHNlZCxcbiAgICB0eXBlID0gJ05PVEUnXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBtb2RpZmllciA9IGdldE1vZGlmaWVyKG1vZGUpO1xuICBjb25zdCBjYWxsb3V0ID0gZHYucGFyYWdyYXBoKGA+IFshJHt0eXBlfV0ke21vZGlmaWVyfSAke2hlYWRlcn1cXG4+XFxuPiA8ZGl2IGNsYXNzPVwiY29udGVudFwiPjwvZGl2PmApO1xuICBjb25zdCBjb250ZW50RGl2ID0gY2FsbG91dC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PignLmNvbnRlbnQnKSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdDb250ZW50IGRpdiBub3QgZm91bmQnKSk7XG4gIGR2LnBhcmFncmFwaCgnTG9hZGluZy4uLiBcdTIzRjMnLCB7IGNvbnRhaW5lcjogY29udGVudERpdiB9KTtcblxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGVudHJ5LnRhcmdldCk7XG4gICAgICAgIGFkZFRvUXVldWUoZHYuYXBwLCBsb2FkQ29udGVudCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShjb250ZW50RGl2KTtcblxuICBhc3luYyBmdW5jdGlvbiBsb2FkQ29udGVudCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzbGVlcCg1MCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXZvaWQtdHlwZVxuICAgIGxldCBjb250ZW50OiBOb2RlIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHwgdm9pZDtcblxuICAgIGNvbnN0IHBhcmFncmFwaCA9IGF3YWl0IGdldFJlbmRlcmVkQ29udGFpbmVyKGR2LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvbnRlbnRQcm92aWRlcik7XG4gICAgfSk7XG5cbiAgICBjb250ZW50ID8/PSBwYXJhZ3JhcGg7XG5cbiAgICBjb250ZW50RGl2LmVtcHR5KCk7XG4gICAgZHYucGFyYWdyYXBoKGNvbnRlbnQsIHsgY29udGFpbmVyOiBjb250ZW50RGl2IH0pO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgdGhlIHByb3ZpZGVkIGNvbnRlbnQgaW4gYmxvY2txdW90ZSBzeW50YXggZm9yIGEgY2FsbG91dC5cbiAqXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHRvIHdyYXAuXG4gKiBAcmV0dXJucyBUaGUgY29udGVudCB3cmFwcGVkIGluIGJsb2NrcXVvdGUgc3ludGF4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcEZvckNhbGxvdXQoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgY29uc3QgcHJlZml4ZWRMaW5lcyA9IGxpbmVzLm1hcCgobGluZSkgPT4gYD4gJHtsaW5lfWApO1xuICByZXR1cm4gcHJlZml4ZWRMaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtb2RpZmllciBzdHJpbmcgYmFzZWQgb24gdGhlIGNhbGxvdXQgbW9kZS5cbiAqXG4gKiBAcGFyYW0gbW9kZSAtIFRoZSBtb2RlIG9mIHRoZSBjYWxsb3V0LlxuICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgbW9kaWZpZXIgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBnZXRNb2RpZmllcihtb2RlOiBDYWxsb3V0TW9kZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgQ2FsbG91dE1vZGUuRm9sZGFibGVDb2xsYXBzZWQ6XG4gICAgICByZXR1cm4gJy0nO1xuICAgIGNhc2UgQ2FsbG91dE1vZGUuRm9sZGFibGVFeHBhbmRlZDpcbiAgICAgIHJldHVybiAnKyc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnJztcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsbUJBQWdDO0FBQ2hDLDJCQUE2QjtBQUM3QixzQkFBcUM7QUFDckMsbUJBQTJCO0FBS3BCLElBQUssY0FBTCxrQkFBS0EsaUJBQUw7QUFFTCxFQUFBQSwwQkFBQTtBQUdBLEVBQUFBLDBCQUFBO0FBR0EsRUFBQUEsMEJBQUE7QUFSVSxTQUFBQTtBQUFBLEdBQUE7QUErQ0wsU0FBUyxjQUFjLFNBQXFDO0FBQ2pFLFFBQU07QUFBQSxJQUNKLGtCQUFrQjtBQUFBLElBQ2xCO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsSUFDUCxPQUFPO0FBQUEsRUFDVCxJQUFJO0FBQ0osUUFBTSxXQUFXLFlBQVksSUFBSTtBQUNqQyxRQUFNLFVBQVUsR0FBRyxVQUFVLE9BQU8sSUFBSSxJQUFJLFFBQVEsSUFBSSxNQUFNO0FBQUE7QUFBQSw4QkFBb0M7QUFDbEcsUUFBTSxhQUFhLFFBQVEsY0FBOEIsVUFBVSxTQUFLLDhCQUFnQixJQUFJLE1BQU0sdUJBQXVCLENBQUM7QUFDMUgsS0FBRyxVQUFVLHFCQUFnQixFQUFFLFdBQVcsV0FBVyxDQUFDO0FBRXRELFFBQU0sV0FBVyxJQUFJLHFCQUFxQixDQUFDLFlBQXlDO0FBQ2xGLGVBQVcsU0FBUyxTQUFTO0FBQzNCLFVBQUksTUFBTSxnQkFBZ0I7QUFDeEIsaUJBQVMsVUFBVSxNQUFNLE1BQU07QUFDL0IscUNBQVcsR0FBRyxLQUFLLFdBQVc7QUFBQSxNQUNoQztBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDRCxXQUFTLFFBQVEsVUFBVTtBQUUzQixpQkFBZSxjQUE2QjtBQUMxQyxVQUFNLE1BQU0sRUFBRTtBQUVkLFFBQUk7QUFFSixVQUFNLFlBQVksVUFBTSxzQ0FBcUIsSUFBSSxZQUFZO0FBQzNELGdCQUFVLFVBQU0sbUNBQWEsZUFBZTtBQUFBLElBQzlDLENBQUM7QUFFRCxnQkFBWTtBQUVaLGVBQVcsTUFBTTtBQUNqQixPQUFHLFVBQVUsU0FBUyxFQUFFLFdBQVcsV0FBVyxDQUFDO0FBQUEsRUFDakQ7QUFDRjtBQVFPLFNBQVMsZUFBZSxTQUF5QjtBQUN0RCxRQUFNLFFBQVEsUUFBUSxNQUFNLElBQUk7QUFDaEMsUUFBTSxnQkFBZ0IsTUFBTSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtBQUNyRCxTQUFPLGNBQWMsS0FBSyxJQUFJO0FBQ2hDO0FBUUEsU0FBUyxZQUFZLE1BQTJCO0FBQzlDLFVBQVEsTUFBTTtBQUFBLElBQ1osS0FBSztBQUNILGFBQU87QUFBQSxJQUNULEtBQUs7QUFDSCxhQUFPO0FBQUEsSUFDVDtBQUNFLGFBQU87QUFBQSxFQUNYO0FBQ0Y7IiwKICAibmFtZXMiOiBbIkNhbGxvdXRNb2RlIl0KfQo=
@@ -67,6 +67,45 @@ const paginationCss = `
67
67
  margin: 0 5px;
68
68
  }
69
69
  `;
70
+ async function getRenderedContainer(dv, renderer) {
71
+ const tempContainer = dv.paragraph("");
72
+ dv.container = tempContainer;
73
+ dv.container.empty();
74
+ try {
75
+ await renderer();
76
+ } catch (e) {
77
+ dv.paragraph("\u274C" + (0, import_Error.errorToString)(e));
78
+ } finally {
79
+ dv.container = tempContainer.parentElement ?? (0, import_Error.throwExpression)(new Error("Container parent not found"));
80
+ tempContainer.remove();
81
+ }
82
+ return tempContainer;
83
+ }
84
+ function insertCodeBlock(dv, language, code) {
85
+ const fenceMatches = code.matchAll(/^`{3,}/gm);
86
+ const fenceLengths = Array.from(fenceMatches).map((fenceMatch) => fenceMatch[0].length);
87
+ const maxFenceLength = Math.max(0, ...fenceLengths);
88
+ const resultFenceLength = Math.max(3, maxFenceLength + 1);
89
+ const resultFence = "`".repeat(resultFenceLength);
90
+ dv.paragraph(`${resultFence}${language}
91
+ ${code}
92
+ ${resultFence}`);
93
+ }
94
+ function renderIframe(options) {
95
+ const {
96
+ dv,
97
+ height = "600px",
98
+ relativePathOrFile,
99
+ width = "100%"
100
+ } = options;
101
+ dv.el("iframe", "", {
102
+ attr: {
103
+ height,
104
+ src: (0, import_ResourceUrl.relativePathToResourceUrl)(dv.app, (0, import_FileSystem.getPath)(relativePathOrFile), dv.current().file.path),
105
+ width
106
+ }
107
+ });
108
+ }
70
109
  async function renderPaginatedList(options) {
71
110
  const {
72
111
  dv,
@@ -189,45 +228,6 @@ async function renderPaginated(options) {
189
228
  createPaginationControls(pageNumber);
190
229
  }
191
230
  }
192
- async function getRenderedContainer(dv, renderer) {
193
- const tempContainer = dv.paragraph("");
194
- dv.container = tempContainer;
195
- dv.container.empty();
196
- try {
197
- await renderer();
198
- } catch (e) {
199
- dv.paragraph("\u274C" + (0, import_Error.errorToString)(e));
200
- } finally {
201
- dv.container = tempContainer.parentElement ?? (0, import_Error.throwExpression)(new Error("Container parent not found"));
202
- tempContainer.remove();
203
- }
204
- return tempContainer;
205
- }
206
- function renderIframe(options) {
207
- const {
208
- dv,
209
- height = "600px",
210
- relativePathOrFile,
211
- width = "100%"
212
- } = options;
213
- dv.el("iframe", "", {
214
- attr: {
215
- height,
216
- src: (0, import_ResourceUrl.relativePathToResourceUrl)(dv.app, (0, import_FileSystem.getPath)(relativePathOrFile), dv.current().file.path),
217
- width
218
- }
219
- });
220
- }
221
- function insertCodeBlock(dv, language, code) {
222
- const fenceMatches = code.matchAll(/^`{3,}/gm);
223
- const fenceLengths = Array.from(fenceMatches).map((fenceMatch) => fenceMatch[0].length);
224
- const maxFenceLength = Math.max(0, ...fenceLengths);
225
- const resultFenceLength = Math.max(3, maxFenceLength + 1);
226
- const resultFence = "`".repeat(resultFenceLength);
227
- dv.paragraph(`${resultFence}${language}
228
- ${code}
229
- ${resultFence}`);
230
- }
231
231
  // Annotate the CommonJS export names for ESM import in node:
232
232
  0 && (module.exports = {
233
233
  getRenderedContainer,
@@ -237,4 +237,4 @@ ${resultFence}`);
237
237
  renderPaginatedList,
238
238
  renderPaginatedTable
239
239
  });
240
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBEYXRhdmlld1xuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBEYXRhdmlldyBpbiBPYnNpZGlhbi5cbiAqL1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tdW5hc3NpZ25lZC1pbXBvcnRcbmltcG9ydCAnLi4vQHR5cGVzL2NvbXBhcmUtdmVyc2lvbnMuZC50cyc7XG5cbmltcG9ydCB0eXBlIHsgTWF5YmVQcm9taXNlIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0lubGluZUFwaSBhcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIH0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvYXBpL2lubGluZS1hcGkuZC50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIERhdGFBcnJheSxcbiAgRGF0YXZpZXdBcGksXG4gIFNNYXJrZG93blBhZ2Vcbn0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvaW5kZXguZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250TWF0dGVyIH0gZnJvbSAnLi9Gcm9udE1hdHRlci50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRBc3luY1RvU3luYyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7XG4gIGVycm9yVG9TdHJpbmcsXG4gIHRocm93RXhwcmVzc2lvblxufSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRQYXRoXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9SZXNvdXJjZVVybC50cyc7XG5cbi8qKlxuICogRXhwb3J0IERhdGVUaW1lIGFuZCBMaW5rIHR5cGVzIGZyb20gdGhlIERhdGF2aWV3IEFQSS5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBEYXRlVGltZSxcbiAgTGlua1xufSBmcm9tICcuL0B0eXBlcy9EYXRhdmlldy9pbmRleC5kLnRzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICAvKipcbiAgICogVGhlIERhdGF2aWV3QVBJIG9iamVjdCByZXByZXNlbnRzIHRoZSBBUEkgZm9yIGludGVyYWN0aW5nIHdpdGggRGF0YXZpZXcgaW4gT2JzaWRpYW4uXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdmFyXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRG9tRWxlbWVudEluZm8gd2l0aCBhbiBvcHRpb25hbCBjb250YWluZXIuXG4gKi9cbmV4cG9ydCB0eXBlIERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lciA9IHsgY29udGFpbmVyPzogSFRNTEVsZW1lbnQgfSAmIERvbUVsZW1lbnRJbmZvO1xuXG4vKipcbiAqIEV4dGVuZGVkIGludGVyZmFjZSBmb3IgdGhlIERhdGF2aWV3IElubGluZSBBUEksIHByb3ZpZGluZyBhZGRpdGlvbmFsIG1ldGhvZHMgZm9yIGN1c3RvbSBwYWdlIHR5cGVzIGFuZCBhcnJheSBoYW5kbGluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhdmlld0lubGluZUFwaSBleHRlbmRzIERhdGF2aWV3SW5saW5lQXBpT3JpZ2luYWwge1xuICAvKipcbiAgICogV3JhcHMgYW4gYXJyYXkgb2YgaXRlbXMgaW50byBhIGBEYXRhQXJyYXlgIG9iamVjdC5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIGluIHRoZSBhcnJheS5cbiAgICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSBvZiBpdGVtcyB0byB3cmFwLlxuICAgKiBAcmV0dXJucyBBIGBEYXRhQXJyYXlgIGNvbnRhaW5pbmcgdGhlIGl0ZW1zLlxuICAgKi9cbiAgYXJyYXk8VD4oYXJyOiBUW10pOiBEYXRhQXJyYXk8VD47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBwYWdlLCB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSBwYWdlIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBwYWdlLlxuICAgKi9cbiAgY3VycmVudDxDdXN0b21Gcm9udE1hdHRlciA9IHVua25vd24+KCk6IENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udE1hdHRlcj47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBwYWdlcyBiYXNlZCBvbiBhbiBvcHRpb25hbCBxdWVyeSwgd2l0aCBhbiBvcHRpb25hbCBjdXN0b20gcGFnZSB0eXBlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAgICogQHBhcmFtIHF1ZXJ5IC0gQW4gb3B0aW9uYWwgc3RyaW5nIHF1ZXJ5IHRvIGZpbHRlciB0aGUgcGFnZXMuXG4gICAqIEByZXR1cm5zIEEgYERhdGFBcnJheWAgb2YgcGFnZXMgbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcGFnZXM8Q3VzdG9tRnJvbnRNYXR0ZXIgPSB1bmtub3duPihxdWVyeT86IHN0cmluZyk6IERhdGFBcnJheTxDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRNYXR0ZXI+PjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBhcmFncmFwaCBIVE1MIGVsZW1lbnQgd2l0aCB0aGUgcHJvdmlkZWQgdGV4dCBhbmQgb3B0aW9uYWwgRE9NIGVsZW1lbnQgb3B0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHRleHQgLSBUaGUgY29udGVudCBvZiB0aGUgcGFyYWdyYXBoLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIERPTSBlbGVtZW50IG9wdGlvbnMsIGluY2x1ZGluZyBhbiBvcHRpb25hbCBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnQuXG4gICAqL1xuICBwYXJhZ3JhcGgoXG4gICAgdGV4dDogdW5rbm93bixcbiAgICBvcHRpb25zPzogRG9tRWxlbWVudEluZm9XaXRoQ29udGFpbmVyXG4gICk6IEhUTUxQYXJhZ3JhcGhFbGVtZW50O1xufVxuXG4vKipcbiAqIFJlbG9hZHMgdGhlIGN1cnJlbnQgZmlsZSBjYWNoZSB1c2luZyB0aGUgRGF0YXZpZXcgQVBJLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNhY2hlIGlzIHJlbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVsb2FkQ3VycmVudEZpbGVDYWNoZShkdjogRGF0YXZpZXdJbmxpbmVBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgRGF0YXZpZXdBUEk/LmluZGV4LnJlbG9hZChnZXRGaWxlKGR2LmFwcCwgZHYuY3VycmVudCgpLmZpbGUucGF0aCkpO1xufVxuXG4vKipcbiAqIFRoZSBjb21iaW5lZCBwYWdlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25QYWdlLlxuICovXG5leHBvcnQgdHlwZSBDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRNYXR0ZXIgPSB1bmtub3duPiA9IENvbWJpbmVkRnJvbnRNYXR0ZXI8Q3VzdG9tRnJvbnRNYXR0ZXI+ICYgU01hcmtkb3duUGFnZTtcblxuLyoqXG4gKiBUaGUgY29tYmluZWQgZmlsZSB0eXBlLCB3aGljaCBpbmNsdWRlcyB0aGUgZnJvbnQgbWF0dGVyIGFuZCB0aGUgU01hcmtkb3duRmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUZpbGUgPSBTTWFya2Rvd25QYWdlWydmaWxlJ107XG5cbi8qKlxuICogTGlzdCBvZiBwYWdlIGZpbGVzLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZXMgPSBBcnJheU9yRGF0YUFycmF5PFBhZ2VGaWxlPjtcblxuY29uc3QgcGFnaW5hdGlvbkNzcyA9IGBcbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsuZGlzYWJsZWQge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IGdyYXk7XG59XG5cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsge1xuICBtYXJnaW46IDAgNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGJsdWU7XG59XG5cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbms6aG92ZXI6bm90KC5kaXNhYmxlZCkge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsuY3VycmVudCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLnBhZ2luYXRpb24gc2VsZWN0LFxuLnBhZ2luYXRpb24gaW5wdXQge1xuICBtYXJnaW46IDAgNXB4O1xufVxuYDtcblxuLyoqXG4gKiBBcnJheSBvciBEYXRhQXJyYXkgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlPckRhdGFBcnJheTxUPiA9IERhdGFBcnJheTxUPiB8IFRbXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYSBwYWdpbmF0ZWQgbGlzdCB1c2luZyB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZExpc3RPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAgICovXG4gIGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuIERlZmF1bHRzIHRvIGBbMTAsIDIwLCA1MCwgMTAwXWAuXG4gICAqL1xuICBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgcGFnaW5hdGVkIGxpc3QgdXNpbmcgdGhlIHByb3ZpZGVkIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIGluIHRoZSBsaXN0LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIGxpc3QuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbGlzdCBpcyByZW5kZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZExpc3Q8VD4ob3B0aW9uczogUmVuZGVyUGFnaW5hdGVkTGlzdE9wdGlvbnM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBvcHRpb25zO1xuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWQoe1xuICAgIGR2LFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMsXG4gICAgcmVuZGVyZXI6IGFzeW5jIChyb3dzOiBBcnJheU9yRGF0YUFycmF5PFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBkdi5saXN0KHJvd3MpO1xuICAgIH0sXG4gICAgcm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYSBwYWdpbmF0ZWQgdGFibGUgdXNpbmcgdGhlIERhdGF2aWV3IEFQSS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRUYWJsZU9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICAgKi9cbiAgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGVycyBvZiB0aGUgdGFibGUuXG4gICAqL1xuICBoZWFkZXJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuIERlZmF1bHRzIHRvIGBbMTAsIDIwLCA1MCwgMTAwXWAuXG4gICAqL1xuICBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFRoZSByb3dzIG9mIHRoZSB0YWJsZSB0byBwYWdpbmF0ZS5cbiAgICovXG4gIHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD47XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBhZ2luYXRlZCB0YWJsZSB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIHRhYmxlIHJvd3MuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgdGFibGUuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFibGUgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRUYWJsZTxUIGV4dGVuZHMgdW5rbm93bltdPihvcHRpb25zOiBSZW5kZXJQYWdpbmF0ZWRUYWJsZU9wdGlvbnM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlYWRlcnMsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IG9wdGlvbnM7XG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZCh7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICByZW5kZXJlcjogYXN5bmMgKHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGR2LnRhYmxlKGhlYWRlcnMsIHJvd3MpO1xuICAgIH0sXG4gICAgcm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYSBwYWdpbmF0ZWQgZWxlbWVudCB1c2luZyB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICAgKi9cbiAgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS5cbiAgICovXG4gIGl0ZW1zUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZXIgZnVuY3Rpb24gdG8gZGlzcGxheSB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gICAqIEBwYXJhbSByb3dzIC0gVGhlIHJvd3MgdG8gcmVuZGVyLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVuZGVyZXI6IChyb3dzOiBBcnJheU9yRGF0YUFycmF5PFQ+KSA9PiBNYXliZVByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSByb3dzIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVuZGVyIHBhZ2luYXRlZCBjb250ZW50IHVzaW5nIHRoZSBzcGVjaWZpZWQgcmVuZGVyZXIuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgdG8gcGFnaW5hdGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgY29udGVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWQ8VD4ob3B0aW9uczogUmVuZGVyUGFnaW5hdGVkT3B0aW9uczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJlbmRlcmVyLFxuICAgIHJvd3NcbiAgfSA9IG9wdGlvbnM7XG4gIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgIGR2LnBhcmFncmFwaCgnTm8gaXRlbXMgZm91bmQnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBsZXQgaXRlbXNQZXJQYWdlID0gaXRlbXNQZXJQYWdlT3B0aW9uc1swXSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdJdGVtcyBwZXIgcGFnZSBvcHRpb25zIGFyZSBlbXB0eScpKTtcbiAgbGV0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICBhd2FpdCByZW5kZXJQYWdlKDEpO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdpbmF0aW9uRGl2ID0gY29udGFpbmVyLmNyZWF0ZUVsKCdkaXYnLCB7IGNsczogJ3BhZ2luYXRpb24nIH0pO1xuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cxRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIGNyZWF0ZVBhZ2VMaW5rKCdGaXJzdCcsIDEsIHBhZ2VOdW1iZXIgPT09IDEpO1xuICAgIGNyZWF0ZVBhZ2VMaW5rKCdQcmV2JywgcGFnZU51bWJlciAtIDEsIHBhZ2VOdW1iZXIgPT09IDEpO1xuXG4gICAgaWYgKHBhZ2VOdW1iZXIgPiAzKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVFbCgnc3BhbicsIHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IE1hdGgubWF4KDEsIHBhZ2VOdW1iZXIgLSAyKTsgaSA8PSBNYXRoLm1pbih0b3RhbFBhZ2VzLCBwYWdlTnVtYmVyICsgMik7IGkrKykge1xuICAgICAgY29uc3QgcGFnZUxpbmsgPSBjcmVhdGVQYWdlTGluayhpLnRvU3RyaW5nKCksIGksIGkgPT09IHBhZ2VOdW1iZXIpO1xuICAgICAgaWYgKGkgPT09IHBhZ2VOdW1iZXIpIHtcbiAgICAgICAgcGFnZUxpbmsuYWRkQ2xhc3MoJ2N1cnJlbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFnZU51bWJlciA8IHRvdGFsUGFnZXMgLSAyKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVFbCgnc3BhbicsIHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUGFnZUxpbmsoJ05leHQnLCBwYWdlTnVtYmVyICsgMSwgcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcyk7XG4gICAgY3JlYXRlUGFnZUxpbmsoJ0xhc3QnLCB0b3RhbFBhZ2VzLCBwYWdlTnVtYmVyID09PSB0b3RhbFBhZ2VzKTtcblxuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cyRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdzcGFuJywgeyB0ZXh0OiAnIEl0ZW1zIHBlciBwYWdlOiAnIH0pO1xuXG4gICAgY29uc3QgaXRlbXNQZXJQYWdlU2VsZWN0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ3NlbGVjdCcpO1xuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC5jcmVhdGVFbCgnb3B0aW9uJywgeyB0ZXh0OiBvcHRpb24udG9TdHJpbmcoKSwgdmFsdWU6IG9wdGlvbi50b1N0cmluZygpIH0pO1xuICAgIH0pO1xuICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC52YWx1ZSA9IGl0ZW1zUGVyUGFnZS50b1N0cmluZygpO1xuICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgaXRlbXNQZXJQYWdlID0gcGFyc2VJbnQoaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlKTtcbiAgICAgIHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICAgICAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcbiAgICB9KSk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnc3BhbicsIHsgdGV4dDogJyAgSnVtcCB0byBwYWdlOiAnIH0pO1xuXG4gICAgY29uc3QganVtcFRvUGFnZUlucHV0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ2lucHV0JywgeyBhdHRyOiB7IG1heDogdG90YWxQYWdlcywgbWluOiAxIH0sIHR5cGU6ICdudW1iZXInIH0pO1xuICAgIGp1bXBUb1BhZ2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jIChldmVudDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICBjb25zdCBwYWdlID0gcGFyc2VJbnQoanVtcFRvUGFnZUlucHV0LnZhbHVlKTtcbiAgICAgICAgaWYgKHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRvdGFsUGFnZXMpIHtcbiAgICAgICAgICBhd2FpdCByZW5kZXJQYWdlKHBhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ3NwYW4nLCB7IHRleHQ6IGAgIFBhZ2UgJHtwYWdlTnVtYmVyLnRvU3RyaW5nKCl9IG9mICR7dG90YWxQYWdlcy50b1N0cmluZygpfSwgVG90YWwgaXRlbXM6ICR7cm93cy5sZW5ndGgudG9TdHJpbmcoKX1gIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFnZUxpbmsodGV4dDogc3RyaW5nLCBwYWdlTnVtYmVyOiBudW1iZXIsIGRpc2FibGVkID0gZmFsc2UpOiBIVE1MQW5jaG9yRWxlbWVudCB7XG4gICAgICBjb25zdCBsaW5rID0gcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlRWwoJ2EnLCB7IGNsczogJ3BhZ2UtbGluaycsIGhyZWY6IGAjJHtwYWdlTnVtYmVyLnRvU3RyaW5nKCl9YCwgdGV4dDogdGV4dCB9KTtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICBsaW5rLmFkZENsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICBsaW5rLm9uY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UocGFnZU51bWJlcik7XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5rO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2UocGFnZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29udGFpbmVyLmVtcHR5KCk7XG4gICAgY29udGFpbmVyLmNyZWF0ZUVsKCdzdHlsZScsIHsgdGV4dDogcGFnaW5hdGlvbkNzcyB9KTtcblxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAocGFnZU51bWJlciAtIDEpICogaXRlbXNQZXJQYWdlO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCByb3dzRm9yQ3VycmVudFBhZ2UgPSByb3dzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcblxuICAgIGNvbnN0IG9sZENvbnRhaW5lciA9IGR2LmNvbnRhaW5lcjtcblxuICAgIGR2LmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcmVuZGVyZXIocm93c0ZvckN1cnJlbnRQYWdlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkdi5wYXJhZ3JhcGgoJ1x1Mjc0QycgKyBlcnJvclRvU3RyaW5nKGUpKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGNvbnRlbnQgdXNpbmcgdGhlIHByb3ZpZGVkIHJlbmRlcmVyIGZ1bmN0aW9uIGluIGEgdGVtcG9yYXJ5IGNvbnRhaW5lcixcbiAqIGFuZCB0aGVuIHJldHVybnMgdGhlIGNvbnRhaW5lci5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcmVuZGVyZXIgLSBUaGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBIVE1MIHBhcmFncmFwaCBlbGVtZW50XG4gKiB0aGF0IHdhcyB1c2VkIGFzIHRoZSB0ZW1wb3JhcnkgY29udGFpbmVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmVuZGVyZWRDb250YWluZXIoZHY6IERhdGF2aWV3SW5saW5lQXBpLCByZW5kZXJlcjogKCkgPT4gTWF5YmVQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxIVE1MUGFyYWdyYXBoRWxlbWVudD4ge1xuICBjb25zdCB0ZW1wQ29udGFpbmVyID0gZHYucGFyYWdyYXBoKCcnKTtcbiAgZHYuY29udGFpbmVyID0gdGVtcENvbnRhaW5lcjtcbiAgZHYuY29udGFpbmVyLmVtcHR5KCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZW5kZXJlcigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZHYucGFyYWdyYXBoKCdcdTI3NEMnICsgZXJyb3JUb1N0cmluZyhlKSk7XG4gIH0gZmluYWxseSB7XG4gICAgZHYuY29udGFpbmVyID0gdGVtcENvbnRhaW5lci5wYXJlbnRFbGVtZW50ID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ0NvbnRhaW5lciBwYXJlbnQgbm90IGZvdW5kJykpO1xuICAgIHRlbXBDb250YWluZXIucmVtb3ZlKCk7XG4gIH1cblxuICByZXR1cm4gdGVtcENvbnRhaW5lcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYW4gaWZyYW1lIGluIHRoZSBEYXRhdmlldyBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySWZyYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gICAqL1xuICBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhlIGlmcmFtZS5cbiAgICovXG4gIGhlaWdodDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgcmVzb3VyY2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBpZnJhbWUuXG4gICAqL1xuICByZWxhdGl2ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSB3aWR0aCBvZiB0aGUgaWZyYW1lLlxuICAgKi9cbiAgd2lkdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFuIGlmcmFtZSBpbiB0aGUgRGF0YXZpZXcgY29udGFpbmVyIHdpdGggdGhlIHNwZWNpZmllZCByZWxhdGl2ZSBwYXRoLCB3aWR0aCwgYW5kIGhlaWdodC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZW5kZXJpbmcgdGhlIGlmcmFtZS5cbiAqXG4gKiBAcmV0dXJucyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVySWZyYW1lKG9wdGlvbnM6IFJlbmRlcklmcmFtZU9wdGlvbnMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlaWdodCA9ICc2MDBweCcsXG4gICAgcmVsYXRpdmVQYXRoT3JGaWxlLFxuICAgIHdpZHRoID0gJzEwMCUnXG4gIH0gPSBvcHRpb25zO1xuICBkdi5lbCgnaWZyYW1lJywgJycsIHtcbiAgICBhdHRyOiB7XG4gICAgICBoZWlnaHQsXG4gICAgICBzcmM6IHJlbGF0aXZlUGF0aFRvUmVzb3VyY2VVcmwoZHYuYXBwLCBnZXRQYXRoKHJlbGF0aXZlUGF0aE9yRmlsZSksIGR2LmN1cnJlbnQoKS5maWxlLnBhdGgpLFxuICAgICAgd2lkdGhcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEluc2VydHMgYSBjb2RlIGJsb2NrIGludG8gdGhlIHNwZWNpZmllZCBEYXRhdmlldyBpbnN0YW5jZSB1c2luZyB0aGUgcHJvdmlkZWQgbGFuZ3VhZ2UgYW5kIGNvZGUuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlIHRvIGluc2VydCB0aGUgY29kZSBibG9jayBpbnRvLlxuICogQHBhcmFtIGxhbmd1YWdlIC0gVGhlIGxhbmd1YWdlIGlkZW50aWZpZXIgZm9yIHRoZSBjb2RlIGJsb2NrLlxuICogQHBhcmFtIGNvZGUgLSBUaGUgY29kZSBjb250ZW50IHRvIGJlIGluc2VydGVkIGludG8gdGhlIGNvZGUgYmxvY2suXG4gKiBAcmV0dXJucyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Q29kZUJsb2NrKGR2OiBEYXRhdmlld0lubGluZUFwaSwgbGFuZ3VhZ2U6IHN0cmluZywgY29kZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGZlbmNlTWF0Y2hlcyA9IGNvZGUubWF0Y2hBbGwoL15gezMsfS9nbSk7XG4gIGNvbnN0IGZlbmNlTGVuZ3RocyA9IEFycmF5LmZyb20oZmVuY2VNYXRjaGVzKS5tYXAoKGZlbmNlTWF0Y2gpID0+IGZlbmNlTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgY29uc3QgbWF4RmVuY2VMZW5ndGggPSBNYXRoLm1heCgwLCAuLi5mZW5jZUxlbmd0aHMpO1xuICBjb25zdCByZXN1bHRGZW5jZUxlbmd0aCA9IE1hdGgubWF4KDMsIG1heEZlbmNlTGVuZ3RoICsgMSk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlID0gJ2AnLnJlcGVhdChyZXN1bHRGZW5jZUxlbmd0aCk7XG5cbiAgZHYucGFyYWdyYXBoKGAke3Jlc3VsdEZlbmNlfSR7bGFuZ3VhZ2V9XG4ke2NvZGV9XG4ke3Jlc3VsdEZlbmNlfWApO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsZ0NBQU87QUFZUCxtQkFBbUM7QUFDbkMsbUJBR087QUFDUCx3QkFHTztBQUNQLHlCQUEwQztBQTBFMUMsZUFBc0IsdUJBQXVCLElBQXNDO0FBQ2pGLFFBQU0sYUFBYSxNQUFNLFdBQU8sMkJBQVEsR0FBRyxLQUFLLEdBQUcsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQ3pFO0FBaUJBLE1BQU0sZ0JBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2RHRCLGVBQXNCLG9CQUF1QixTQUF1RDtBQUNsRyxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0Esc0JBQXNCLENBQUMsSUFBSSxJQUFJLElBQUksR0FBRztBQUFBLElBQ3RDO0FBQUEsRUFDRixJQUFJO0FBQ0osUUFBTSxnQkFBZ0I7QUFBQSxJQUNwQjtBQUFBLElBQ0E7QUFBQSxJQUNBLFVBQVUsT0FBT0EsVUFBNkM7QUFDNUQsWUFBTSxHQUFHLEtBQUtBLEtBQUk7QUFBQSxJQUNwQjtBQUFBLElBQ0E7QUFBQSxFQUNGLENBQUM7QUFDSDtBQW9DQSxlQUFzQixxQkFBMEMsU0FBd0Q7QUFDdEgsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQSxzQkFBc0IsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHO0FBQUEsSUFDdEM7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
240
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL0RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBEYXRhdmlld1xuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBEYXRhdmlldyBpbiBPYnNpZGlhbi5cbiAqL1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tdW5hc3NpZ25lZC1pbXBvcnRcbmltcG9ydCAnLi4vQHR5cGVzL2NvbXBhcmUtdmVyc2lvbnMuZC50cyc7XG5cbmltcG9ydCB0eXBlIHsgTWF5YmVQcm9taXNlIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0lubGluZUFwaSBhcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIH0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvYXBpL2lubGluZS1hcGkuZC50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIERhdGFBcnJheSxcbiAgRGF0YXZpZXdBcGksXG4gIFNNYXJrZG93blBhZ2Vcbn0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvaW5kZXguZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250TWF0dGVyIH0gZnJvbSAnLi9Gcm9udE1hdHRlci50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRBc3luY1RvU3luYyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7XG4gIGVycm9yVG9TdHJpbmcsXG4gIHRocm93RXhwcmVzc2lvblxufSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRQYXRoXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9SZXNvdXJjZVVybC50cyc7XG5cbi8qKlxuICogRXhwb3J0IERhdGVUaW1lIGFuZCBMaW5rIHR5cGVzIGZyb20gdGhlIERhdGF2aWV3IEFQSS5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBEYXRlVGltZSxcbiAgTGlua1xufSBmcm9tICcuL0B0eXBlcy9EYXRhdmlldy9pbmRleC5kLnRzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICAvKipcbiAgICogVGhlIERhdGF2aWV3QVBJIG9iamVjdCByZXByZXNlbnRzIHRoZSBBUEkgZm9yIGludGVyYWN0aW5nIHdpdGggRGF0YXZpZXcgaW4gT2JzaWRpYW4uXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdmFyXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGNvbWJpbmVkIHBhZ2UgdHlwZSwgd2hpY2ggaW5jbHVkZXMgdGhlIGZyb250IG1hdHRlciBhbmQgdGhlIFNNYXJrZG93blBhZ2UuXG4gKi9cbmV4cG9ydCB0eXBlIENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udE1hdHRlciA9IHVua25vd24+ID0gQ29tYmluZWRGcm9udE1hdHRlcjxDdXN0b21Gcm9udE1hdHRlcj4gJiBTTWFya2Rvd25QYWdlO1xuXG4vKipcbiAqIEV4dGVuZGVkIGludGVyZmFjZSBmb3IgdGhlIERhdGF2aWV3IElubGluZSBBUEksIHByb3ZpZGluZyBhZGRpdGlvbmFsIG1ldGhvZHMgZm9yIGN1c3RvbSBwYWdlIHR5cGVzIGFuZCBhcnJheSBoYW5kbGluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhdmlld0lubGluZUFwaSBleHRlbmRzIERhdGF2aWV3SW5saW5lQXBpT3JpZ2luYWwge1xuICAvKipcbiAgICogV3JhcHMgYW4gYXJyYXkgb2YgaXRlbXMgaW50byBhIGBEYXRhQXJyYXlgIG9iamVjdC5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIGluIHRoZSBhcnJheS5cbiAgICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSBvZiBpdGVtcyB0byB3cmFwLlxuICAgKiBAcmV0dXJucyBBIGBEYXRhQXJyYXlgIGNvbnRhaW5pbmcgdGhlIGl0ZW1zLlxuICAgKi9cbiAgYXJyYXk8VD4oYXJyOiBUW10pOiBEYXRhQXJyYXk8VD47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBwYWdlLCB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSBwYWdlIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBwYWdlLlxuICAgKi9cbiAgY3VycmVudDxDdXN0b21Gcm9udE1hdHRlciA9IHVua25vd24+KCk6IENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udE1hdHRlcj47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBwYWdlcyBiYXNlZCBvbiBhbiBvcHRpb25hbCBxdWVyeSwgd2l0aCBhbiBvcHRpb25hbCBjdXN0b20gcGFnZSB0eXBlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAgICogQHBhcmFtIHF1ZXJ5IC0gQW4gb3B0aW9uYWwgc3RyaW5nIHF1ZXJ5IHRvIGZpbHRlciB0aGUgcGFnZXMuXG4gICAqIEByZXR1cm5zIEEgYERhdGFBcnJheWAgb2YgcGFnZXMgbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcGFnZXM8Q3VzdG9tRnJvbnRNYXR0ZXIgPSB1bmtub3duPihxdWVyeT86IHN0cmluZyk6IERhdGFBcnJheTxDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRNYXR0ZXI+PjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBhcmFncmFwaCBIVE1MIGVsZW1lbnQgd2l0aCB0aGUgcHJvdmlkZWQgdGV4dCBhbmQgb3B0aW9uYWwgRE9NIGVsZW1lbnQgb3B0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHRleHQgLSBUaGUgY29udGVudCBvZiB0aGUgcGFyYWdyYXBoLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIERPTSBlbGVtZW50IG9wdGlvbnMsIGluY2x1ZGluZyBhbiBvcHRpb25hbCBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnQuXG4gICAqL1xuICBwYXJhZ3JhcGgoXG4gICAgdGV4dDogdW5rbm93bixcbiAgICBvcHRpb25zPzogRG9tRWxlbWVudEluZm9XaXRoQ29udGFpbmVyXG4gICk6IEhUTUxQYXJhZ3JhcGhFbGVtZW50O1xufVxuXG4vKipcbiAqIERvbUVsZW1lbnRJbmZvIHdpdGggYW4gb3B0aW9uYWwgY29udGFpbmVyLlxuICovXG5leHBvcnQgdHlwZSBEb21FbGVtZW50SW5mb1dpdGhDb250YWluZXIgPSB7IGNvbnRhaW5lcj86IEhUTUxFbGVtZW50IH0gJiBEb21FbGVtZW50SW5mbztcblxuLyoqXG4gKiBUaGUgY29tYmluZWQgZmlsZSB0eXBlLCB3aGljaCBpbmNsdWRlcyB0aGUgZnJvbnQgbWF0dGVyIGFuZCB0aGUgU01hcmtkb3duRmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUZpbGUgPSBTTWFya2Rvd25QYWdlWydmaWxlJ107XG5cbi8qKlxuICogTGlzdCBvZiBwYWdlIGZpbGVzLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZXMgPSBBcnJheU9yRGF0YUFycmF5PFBhZ2VGaWxlPjtcblxuLyoqXG4gKiBSZWxvYWRzIHRoZSBjdXJyZW50IGZpbGUgY2FjaGUgdXNpbmcgdGhlIERhdGF2aWV3IEFQSS5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjYWNoZSBpcyByZWxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbG9hZEN1cnJlbnRGaWxlQ2FjaGUoZHY6IERhdGF2aWV3SW5saW5lQXBpKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IERhdGF2aWV3QVBJPy5pbmRleC5yZWxvYWQoZ2V0RmlsZShkdi5hcHAsIGR2LmN1cnJlbnQoKS5maWxlLnBhdGgpKTtcbn1cblxuY29uc3QgcGFnaW5hdGlvbkNzcyA9IGBcbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsuZGlzYWJsZWQge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IGdyYXk7XG59XG5cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsge1xuICBtYXJnaW46IDAgNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGJsdWU7XG59XG5cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbms6aG92ZXI6bm90KC5kaXNhYmxlZCkge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsuY3VycmVudCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLnBhZ2luYXRpb24gc2VsZWN0LFxuLnBhZ2luYXRpb24gaW5wdXQge1xuICBtYXJnaW46IDAgNXB4O1xufVxuYDtcblxuLyoqXG4gKiBBcnJheSBvciBEYXRhQXJyYXkgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlPckRhdGFBcnJheTxUPiA9IERhdGFBcnJheTxUPiB8IFRbXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYW4gaWZyYW1lIGluIHRoZSBEYXRhdmlldyBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySWZyYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gICAqL1xuICBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhlIGlmcmFtZS5cbiAgICovXG4gIGhlaWdodDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgcmVzb3VyY2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBpZnJhbWUuXG4gICAqL1xuICByZWxhdGl2ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSB3aWR0aCBvZiB0aGUgaWZyYW1lLlxuICAgKi9cbiAgd2lkdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYSBwYWdpbmF0ZWQgbGlzdCB1c2luZyB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZExpc3RPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAgICovXG4gIGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuIERlZmF1bHRzIHRvIGBbMTAsIDIwLCA1MCwgMTAwXWAuXG4gICAqL1xuICBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYSBwYWdpbmF0ZWQgZWxlbWVudCB1c2luZyB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICAgKi9cbiAgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS5cbiAgICovXG4gIGl0ZW1zUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZXIgZnVuY3Rpb24gdG8gZGlzcGxheSB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gICAqIEBwYXJhbSByb3dzIC0gVGhlIHJvd3MgdG8gcmVuZGVyLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVuZGVyZXI6IChyb3dzOiBBcnJheU9yRGF0YUFycmF5PFQ+KSA9PiBNYXliZVByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSByb3dzIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYSBwYWdpbmF0ZWQgdGFibGUgdXNpbmcgdGhlIERhdGF2aWV3IEFQSS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRUYWJsZU9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICAgKi9cbiAgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGVycyBvZiB0aGUgdGFibGUuXG4gICAqL1xuICBoZWFkZXJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuIERlZmF1bHRzIHRvIGBbMTAsIDIwLCA1MCwgMTAwXWAuXG4gICAqL1xuICBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFRoZSByb3dzIG9mIHRoZSB0YWJsZSB0byBwYWdpbmF0ZS5cbiAgICovXG4gIHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD47XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgY29udGVudCB1c2luZyB0aGUgcHJvdmlkZWQgcmVuZGVyZXIgZnVuY3Rpb24gaW4gYSB0ZW1wb3JhcnkgY29udGFpbmVyLFxuICogYW5kIHRoZW4gcmV0dXJucyB0aGUgY29udGFpbmVyLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqIEBwYXJhbSByZW5kZXJlciAtIFRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgcmVuZGVyaW5nIHRoZSBjb250ZW50LlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnRcbiAqIHRoYXQgd2FzIHVzZWQgYXMgdGhlIHRlbXBvcmFyeSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZW5kZXJlZENvbnRhaW5lcihkdjogRGF0YXZpZXdJbmxpbmVBcGksIHJlbmRlcmVyOiAoKSA9PiBNYXliZVByb21pc2U8dm9pZD4pOiBQcm9taXNlPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiB7XG4gIGNvbnN0IHRlbXBDb250YWluZXIgPSBkdi5wYXJhZ3JhcGgoJycpO1xuICBkdi5jb250YWluZXIgPSB0ZW1wQ29udGFpbmVyO1xuICBkdi5jb250YWluZXIuZW1wdHkoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IHJlbmRlcmVyKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBkdi5wYXJhZ3JhcGgoJ1x1Mjc0QycgKyBlcnJvclRvU3RyaW5nKGUpKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBkdi5jb250YWluZXIgPSB0ZW1wQ29udGFpbmVyLnBhcmVudEVsZW1lbnQgPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQ29udGFpbmVyIHBhcmVudCBub3QgZm91bmQnKSk7XG4gICAgdGVtcENvbnRhaW5lci5yZW1vdmUoKTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wQ29udGFpbmVyO1xufVxuXG4vKipcbiAqIEluc2VydHMgYSBjb2RlIGJsb2NrIGludG8gdGhlIHNwZWNpZmllZCBEYXRhdmlldyBpbnN0YW5jZSB1c2luZyB0aGUgcHJvdmlkZWQgbGFuZ3VhZ2UgYW5kIGNvZGUuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlIHRvIGluc2VydCB0aGUgY29kZSBibG9jayBpbnRvLlxuICogQHBhcmFtIGxhbmd1YWdlIC0gVGhlIGxhbmd1YWdlIGlkZW50aWZpZXIgZm9yIHRoZSBjb2RlIGJsb2NrLlxuICogQHBhcmFtIGNvZGUgLSBUaGUgY29kZSBjb250ZW50IHRvIGJlIGluc2VydGVkIGludG8gdGhlIGNvZGUgYmxvY2suXG4gKiBAcmV0dXJucyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Q29kZUJsb2NrKGR2OiBEYXRhdmlld0lubGluZUFwaSwgbGFuZ3VhZ2U6IHN0cmluZywgY29kZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGZlbmNlTWF0Y2hlcyA9IGNvZGUubWF0Y2hBbGwoL15gezMsfS9nbSk7XG4gIGNvbnN0IGZlbmNlTGVuZ3RocyA9IEFycmF5LmZyb20oZmVuY2VNYXRjaGVzKS5tYXAoKGZlbmNlTWF0Y2gpID0+IGZlbmNlTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgY29uc3QgbWF4RmVuY2VMZW5ndGggPSBNYXRoLm1heCgwLCAuLi5mZW5jZUxlbmd0aHMpO1xuICBjb25zdCByZXN1bHRGZW5jZUxlbmd0aCA9IE1hdGgubWF4KDMsIG1heEZlbmNlTGVuZ3RoICsgMSk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlID0gJ2AnLnJlcGVhdChyZXN1bHRGZW5jZUxlbmd0aCk7XG5cbiAgZHYucGFyYWdyYXBoKGAke3Jlc3VsdEZlbmNlfSR7bGFuZ3VhZ2V9XG4ke2NvZGV9XG4ke3Jlc3VsdEZlbmNlfWApO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW4gaWZyYW1lIGluIHRoZSBEYXRhdmlldyBjb250YWluZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHJlbGF0aXZlIHBhdGgsIHdpZHRoLCBhbmQgaGVpZ2h0LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgaWZyYW1lLlxuICpcbiAqIEByZXR1cm5zIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJZnJhbWUob3B0aW9uczogUmVuZGVySWZyYW1lT3B0aW9ucyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgaGVpZ2h0ID0gJzYwMHB4JyxcbiAgICByZWxhdGl2ZVBhdGhPckZpbGUsXG4gICAgd2lkdGggPSAnMTAwJSdcbiAgfSA9IG9wdGlvbnM7XG4gIGR2LmVsKCdpZnJhbWUnLCAnJywge1xuICAgIGF0dHI6IHtcbiAgICAgIGhlaWdodCxcbiAgICAgIHNyYzogcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybChkdi5hcHAsIGdldFBhdGgocmVsYXRpdmVQYXRoT3JGaWxlKSwgZHYuY3VycmVudCgpLmZpbGUucGF0aCksXG4gICAgICB3aWR0aFxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBhZ2luYXRlZCBsaXN0IHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyBpbiB0aGUgbGlzdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCBsaXN0LlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxpc3QgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRMaXN0PFQ+KG9wdGlvbnM6IFJlbmRlclBhZ2luYXRlZExpc3RPcHRpb25zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gb3B0aW9ucztcbiAgYXdhaXQgcmVuZGVyUGFnaW5hdGVkKHtcbiAgICBkdixcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLFxuICAgIHJlbmRlcmVyOiBhc3luYyAocm93czogQXJyYXlPckRhdGFBcnJheTxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgYXdhaXQgZHYubGlzdChyb3dzKTtcbiAgICB9LFxuICAgIHJvd3NcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBhZ2luYXRlZCB0YWJsZSB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIHRhYmxlIHJvd3MuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgdGFibGUuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFibGUgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRUYWJsZTxUIGV4dGVuZHMgdW5rbm93bltdPihvcHRpb25zOiBSZW5kZXJQYWdpbmF0ZWRUYWJsZU9wdGlvbnM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlYWRlcnMsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IG9wdGlvbnM7XG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZCh7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICByZW5kZXJlcjogYXN5bmMgKHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGR2LnRhYmxlKGhlYWRlcnMsIHJvd3MpO1xuICAgIH0sXG4gICAgcm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVuZGVyIHBhZ2luYXRlZCBjb250ZW50IHVzaW5nIHRoZSBzcGVjaWZpZWQgcmVuZGVyZXIuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgdG8gcGFnaW5hdGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgY29udGVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWQ8VD4ob3B0aW9uczogUmVuZGVyUGFnaW5hdGVkT3B0aW9uczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJlbmRlcmVyLFxuICAgIHJvd3NcbiAgfSA9IG9wdGlvbnM7XG4gIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgIGR2LnBhcmFncmFwaCgnTm8gaXRlbXMgZm91bmQnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBsZXQgaXRlbXNQZXJQYWdlID0gaXRlbXNQZXJQYWdlT3B0aW9uc1swXSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdJdGVtcyBwZXIgcGFnZSBvcHRpb25zIGFyZSBlbXB0eScpKTtcbiAgbGV0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICBhd2FpdCByZW5kZXJQYWdlKDEpO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdpbmF0aW9uRGl2ID0gY29udGFpbmVyLmNyZWF0ZUVsKCdkaXYnLCB7IGNsczogJ3BhZ2luYXRpb24nIH0pO1xuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cxRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIGNyZWF0ZVBhZ2VMaW5rKCdGaXJzdCcsIDEsIHBhZ2VOdW1iZXIgPT09IDEpO1xuICAgIGNyZWF0ZVBhZ2VMaW5rKCdQcmV2JywgcGFnZU51bWJlciAtIDEsIHBhZ2VOdW1iZXIgPT09IDEpO1xuXG4gICAgaWYgKHBhZ2VOdW1iZXIgPiAzKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVFbCgnc3BhbicsIHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IE1hdGgubWF4KDEsIHBhZ2VOdW1iZXIgLSAyKTsgaSA8PSBNYXRoLm1pbih0b3RhbFBhZ2VzLCBwYWdlTnVtYmVyICsgMik7IGkrKykge1xuICAgICAgY29uc3QgcGFnZUxpbmsgPSBjcmVhdGVQYWdlTGluayhpLnRvU3RyaW5nKCksIGksIGkgPT09IHBhZ2VOdW1iZXIpO1xuICAgICAgaWYgKGkgPT09IHBhZ2VOdW1iZXIpIHtcbiAgICAgICAgcGFnZUxpbmsuYWRkQ2xhc3MoJ2N1cnJlbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFnZU51bWJlciA8IHRvdGFsUGFnZXMgLSAyKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVFbCgnc3BhbicsIHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUGFnZUxpbmsoJ05leHQnLCBwYWdlTnVtYmVyICsgMSwgcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcyk7XG4gICAgY3JlYXRlUGFnZUxpbmsoJ0xhc3QnLCB0b3RhbFBhZ2VzLCBwYWdlTnVtYmVyID09PSB0b3RhbFBhZ2VzKTtcblxuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cyRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdzcGFuJywgeyB0ZXh0OiAnIEl0ZW1zIHBlciBwYWdlOiAnIH0pO1xuXG4gICAgY29uc3QgaXRlbXNQZXJQYWdlU2VsZWN0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ3NlbGVjdCcpO1xuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC5jcmVhdGVFbCgnb3B0aW9uJywgeyB0ZXh0OiBvcHRpb24udG9TdHJpbmcoKSwgdmFsdWU6IG9wdGlvbi50b1N0cmluZygpIH0pO1xuICAgIH0pO1xuICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC52YWx1ZSA9IGl0ZW1zUGVyUGFnZS50b1N0cmluZygpO1xuICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgaXRlbXNQZXJQYWdlID0gcGFyc2VJbnQoaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlKTtcbiAgICAgIHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICAgICAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcbiAgICB9KSk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnc3BhbicsIHsgdGV4dDogJyAgSnVtcCB0byBwYWdlOiAnIH0pO1xuXG4gICAgY29uc3QganVtcFRvUGFnZUlucHV0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ2lucHV0JywgeyBhdHRyOiB7IG1heDogdG90YWxQYWdlcywgbWluOiAxIH0sIHR5cGU6ICdudW1iZXInIH0pO1xuICAgIGp1bXBUb1BhZ2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jIChldmVudDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICBjb25zdCBwYWdlID0gcGFyc2VJbnQoanVtcFRvUGFnZUlucHV0LnZhbHVlKTtcbiAgICAgICAgaWYgKHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRvdGFsUGFnZXMpIHtcbiAgICAgICAgICBhd2FpdCByZW5kZXJQYWdlKHBhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ3NwYW4nLCB7IHRleHQ6IGAgIFBhZ2UgJHtwYWdlTnVtYmVyLnRvU3RyaW5nKCl9IG9mICR7dG90YWxQYWdlcy50b1N0cmluZygpfSwgVG90YWwgaXRlbXM6ICR7cm93cy5sZW5ndGgudG9TdHJpbmcoKX1gIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFnZUxpbmsodGV4dDogc3RyaW5nLCBwYWdlTnVtYmVyOiBudW1iZXIsIGRpc2FibGVkID0gZmFsc2UpOiBIVE1MQW5jaG9yRWxlbWVudCB7XG4gICAgICBjb25zdCBsaW5rID0gcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlRWwoJ2EnLCB7IGNsczogJ3BhZ2UtbGluaycsIGhyZWY6IGAjJHtwYWdlTnVtYmVyLnRvU3RyaW5nKCl9YCwgdGV4dDogdGV4dCB9KTtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICBsaW5rLmFkZENsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICBsaW5rLm9uY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UocGFnZU51bWJlcik7XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5rO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2UocGFnZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29udGFpbmVyLmVtcHR5KCk7XG4gICAgY29udGFpbmVyLmNyZWF0ZUVsKCdzdHlsZScsIHsgdGV4dDogcGFnaW5hdGlvbkNzcyB9KTtcblxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAocGFnZU51bWJlciAtIDEpICogaXRlbXNQZXJQYWdlO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCByb3dzRm9yQ3VycmVudFBhZ2UgPSByb3dzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcblxuICAgIGNvbnN0IG9sZENvbnRhaW5lciA9IGR2LmNvbnRhaW5lcjtcblxuICAgIGR2LmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcmVuZGVyZXIocm93c0ZvckN1cnJlbnRQYWdlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkdi5wYXJhZ3JhcGgoJ1x1Mjc0QycgKyBlcnJvclRvU3RyaW5nKGUpKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsZ0NBQU87QUFZUCxtQkFBbUM7QUFDbkMsbUJBR087QUFDUCx3QkFHTztBQUNQLHlCQUEwQztBQXlGMUMsZUFBc0IsdUJBQXVCLElBQXNDO0FBQ2pGLFFBQU0sYUFBYSxNQUFNLFdBQU8sMkJBQVEsR0FBRyxLQUFLLEdBQUcsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQ3pFO0FBRUEsTUFBTSxnQkFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBJdEIsZUFBc0IscUJBQXFCLElBQXVCLFVBQW1FO0FBQ25JLFFBQU0sZ0JBQWdCLEdBQUcsVUFBVSxFQUFFO0FBQ3JDLEtBQUcsWUFBWTtBQUNmLEtBQUcsVUFBVSxNQUFNO0FBRW5CLE1BQUk7QUFDRixVQUFNLFNBQVM7QUFBQSxFQUNqQixTQUFTLEdBQUc7QUFDVixPQUFHLFVBQVUsZUFBTSw0QkFBYyxDQUFDLENBQUM7QUFBQSxFQUNyQyxVQUFFO0FBQ0EsT0FBRyxZQUFZLGNBQWMscUJBQWlCLDhCQUFnQixJQUFJLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsa0JBQWMsT0FBTztBQUFBLEVBQ3ZCO0FBRUEsU0FBTztBQUNUO0FBVU8sU0FBUyxnQkFBZ0IsSUFBdUIsVUFBa0IsTUFBb0I7QUFDM0YsUUFBTSxlQUFlLEtBQUssU0FB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
@@ -19,11 +19,9 @@ declare global {
19
19
  var DataviewAPI: DataviewApi | undefined;
20
20
  }
21
21
  /**
22
- * DomElementInfo with an optional container.
22
+ * The combined page type, which includes the front matter and the SMarkdownPage.
23
23
  */
24
- export type DomElementInfoWithContainer = {
25
- container?: HTMLElement;
26
- } & DomElementInfo;
24
+ export type CombinedPage<CustomFrontMatter = unknown> = CombinedFrontMatter<CustomFrontMatter> & SMarkdownPage;
27
25
  /**
28
26
  * Extended interface for the Dataview Inline API, providing additional methods for custom page types and array handling.
29
27
  *
@@ -63,16 +61,11 @@ export interface DataviewInlineApi extends DataviewInlineApiOriginal {
63
61
  paragraph(text: unknown, options?: DomElementInfoWithContainer): HTMLParagraphElement;
64
62
  }
65
63
  /**
66
- * Reloads the current file cache using the Dataview API.
67
- *
68
- * @param dv - The DataviewInlineApi instance.
69
- * @returns A promise that resolves when the cache is reloaded.
70
- */
71
- export declare function reloadCurrentFileCache(dv: DataviewInlineApi): Promise<void>;
72
- /**
73
- * The combined page type, which includes the front matter and the SMarkdownPage.
64
+ * DomElementInfo with an optional container.
74
65
  */
75
- export type CombinedPage<CustomFrontMatter = unknown> = CombinedFrontMatter<CustomFrontMatter> & SMarkdownPage;
66
+ export type DomElementInfoWithContainer = {
67
+ container?: HTMLElement;
68
+ } & DomElementInfo;
76
69
  /**
77
70
  * The combined file type, which includes the front matter and the SMarkdownFile.
78
71
  */
@@ -81,68 +74,55 @@ export type PageFile = SMarkdownPage['file'];
81
74
  * List of page files.
82
75
  */
83
76
  export type PageFiles = ArrayOrDataArray<PageFile>;
77
+ /**
78
+ * Reloads the current file cache using the Dataview API.
79
+ *
80
+ * @param dv - The DataviewInlineApi instance.
81
+ * @returns A promise that resolves when the cache is reloaded.
82
+ */
83
+ export declare function reloadCurrentFileCache(dv: DataviewInlineApi): Promise<void>;
84
84
  /**
85
85
  * Array or DataArray type.
86
86
  */
87
87
  export type ArrayOrDataArray<T> = DataArray<T> | T[];
88
88
  /**
89
- * Options for rendering a paginated list using the Dataview API.
89
+ * Options for rendering an iframe in the Dataview container.
90
90
  */
91
- export interface RenderPaginatedListOptions<T> {
91
+ export interface RenderIframeOptions {
92
92
  /**
93
93
  * The DataviewInlineApi instance.
94
94
  */
95
95
  dv: DataviewInlineApi;
96
96
  /**
97
- * Options for items per page. Defaults to `[10, 20, 50, 100]`.
97
+ * The height of the iframe.
98
98
  */
99
- itemsPerPageOptions?: number[];
99
+ height: string;
100
100
  /**
101
- * The list of items to paginate.
101
+ * The relative path to the resource to be displayed in the iframe.
102
102
  */
103
- rows: ArrayOrDataArray<T>;
103
+ relativePathOrFile: PathOrFile;
104
+ /**
105
+ * The width of the iframe.
106
+ */
107
+ width: string;
104
108
  }
105
109
  /**
106
- * Renders a paginated list using the provided DataviewInlineApi instance.
107
- *
108
- * @typeParam T - The type of items in the list.
109
- *
110
- * @param options - The options for rendering the paginated list.
111
- *
112
- * @returns A promise that resolves when the list is rendered.
113
- */
114
- export declare function renderPaginatedList<T>(options: RenderPaginatedListOptions<T>): Promise<void>;
115
- /**
116
- * Options for rendering a paginated table using the Dataview API.
110
+ * Options for rendering a paginated list using the Dataview API.
117
111
  */
118
- export interface RenderPaginatedTableOptions<T> {
112
+ export interface RenderPaginatedListOptions<T> {
119
113
  /**
120
114
  * The DataviewInlineApi instance.
121
115
  */
122
116
  dv: DataviewInlineApi;
123
- /**
124
- * The headers of the table.
125
- */
126
- headers: string[];
127
117
  /**
128
118
  * Options for items per page. Defaults to `[10, 20, 50, 100]`.
129
119
  */
130
120
  itemsPerPageOptions?: number[];
131
121
  /**
132
- * The rows of the table to paginate.
122
+ * The list of items to paginate.
133
123
  */
134
124
  rows: ArrayOrDataArray<T>;
135
125
  }
136
- /**
137
- * Renders a paginated table using the provided DataviewInlineApi instance.
138
- *
139
- * @typeParam T - The type of items in the table rows.
140
- *
141
- * @param options - The options for rendering the paginated table.
142
- *
143
- * @returns A promise that resolves when the table is rendered.
144
- */
145
- export declare function renderPaginatedTable<T extends unknown[]>(options: RenderPaginatedTableOptions<T>): Promise<void>;
146
126
  /**
147
127
  * Options for rendering a paginated element using the Dataview API.
148
128
  */
@@ -167,44 +147,36 @@ export interface RenderPaginatedOptions<T> {
167
147
  rows: ArrayOrDataArray<T>;
168
148
  }
169
149
  /**
170
- * Renders the content using the provided renderer function in a temporary container,
171
- * and then returns the container.
172
- *
173
- * @param dv - The DataviewInlineApi instance.
174
- * @param renderer - The function responsible for rendering the content.
175
- * @returns A promise that resolves to the HTML paragraph element
176
- * that was used as the temporary container.
177
- */
178
- export declare function getRenderedContainer(dv: DataviewInlineApi, renderer: () => MaybePromise<void>): Promise<HTMLParagraphElement>;
179
- /**
180
- * Options for rendering an iframe in the Dataview container.
150
+ * Options for rendering a paginated table using the Dataview API.
181
151
  */
182
- export interface RenderIframeOptions {
152
+ export interface RenderPaginatedTableOptions<T> {
183
153
  /**
184
154
  * The DataviewInlineApi instance.
185
155
  */
186
156
  dv: DataviewInlineApi;
187
157
  /**
188
- * The height of the iframe.
158
+ * The headers of the table.
189
159
  */
190
- height: string;
160
+ headers: string[];
191
161
  /**
192
- * The relative path to the resource to be displayed in the iframe.
162
+ * Options for items per page. Defaults to `[10, 20, 50, 100]`.
193
163
  */
194
- relativePathOrFile: PathOrFile;
164
+ itemsPerPageOptions?: number[];
195
165
  /**
196
- * The width of the iframe.
166
+ * The rows of the table to paginate.
197
167
  */
198
- width: string;
168
+ rows: ArrayOrDataArray<T>;
199
169
  }
200
170
  /**
201
- * Renders an iframe in the Dataview container with the specified relative path, width, and height.
202
- *
203
- * @param options - The options for rendering the iframe.
171
+ * Renders the content using the provided renderer function in a temporary container,
172
+ * and then returns the container.
204
173
  *
205
- * @returns This function does not return a value.
174
+ * @param dv - The DataviewInlineApi instance.
175
+ * @param renderer - The function responsible for rendering the content.
176
+ * @returns A promise that resolves to the HTML paragraph element
177
+ * that was used as the temporary container.
206
178
  */
207
- export declare function renderIframe(options: RenderIframeOptions): void;
179
+ export declare function getRenderedContainer(dv: DataviewInlineApi, renderer: () => MaybePromise<void>): Promise<HTMLParagraphElement>;
208
180
  /**
209
181
  * Inserts a code block into the specified Dataview instance using the provided language and code.
210
182
  *
@@ -214,3 +186,31 @@ export declare function renderIframe(options: RenderIframeOptions): void;
214
186
  * @returns This function does not return a value.
215
187
  */
216
188
  export declare function insertCodeBlock(dv: DataviewInlineApi, language: string, code: string): void;
189
+ /**
190
+ * Renders an iframe in the Dataview container with the specified relative path, width, and height.
191
+ *
192
+ * @param options - The options for rendering the iframe.
193
+ *
194
+ * @returns This function does not return a value.
195
+ */
196
+ export declare function renderIframe(options: RenderIframeOptions): void;
197
+ /**
198
+ * Renders a paginated list using the provided DataviewInlineApi instance.
199
+ *
200
+ * @typeParam T - The type of items in the list.
201
+ *
202
+ * @param options - The options for rendering the paginated list.
203
+ *
204
+ * @returns A promise that resolves when the list is rendered.
205
+ */
206
+ export declare function renderPaginatedList<T>(options: RenderPaginatedListOptions<T>): Promise<void>;
207
+ /**
208
+ * Renders a paginated table using the provided DataviewInlineApi instance.
209
+ *
210
+ * @typeParam T - The type of items in the table rows.
211
+ *
212
+ * @param options - The options for rendering the paginated table.
213
+ *
214
+ * @returns A promise that resolves when the table is rendered.
215
+ */
216
+ export declare function renderPaginatedTable<T extends unknown[]>(options: RenderPaginatedTableOptions<T>): Promise<void>;