@mnaoumov/obsidian-lib 3.0.0 → 3.2.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/dist/lib/cjs/__merged.cjs +3 -1
  2. package/dist/lib/cjs/__merged.d.cts +1 -1
  3. package/dist/lib/cjs/attachment-path.cjs +8 -5
  4. package/dist/lib/cjs/attachment-path.d.cts +4 -4
  5. package/dist/lib/cjs/attachment-unit-folder.cjs +1 -1
  6. package/dist/lib/cjs/attachment-unit-folder.d.cts +3 -3
  7. package/dist/lib/cjs/callout.cjs +1 -1
  8. package/dist/lib/cjs/callout.d.cts +2 -2
  9. package/dist/lib/cjs/canvas.cjs +1 -1
  10. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +9 -9
  11. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.d.cts +14 -14
  12. package/dist/lib/cjs/components/plugin-gate-component.cjs +3 -3
  13. package/dist/lib/cjs/components/plugin-gate-component.d.cts +8 -2
  14. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +4 -3
  15. package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +5 -1
  16. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +1 -1
  17. package/dist/lib/cjs/dataview-link.cjs +1 -1
  18. package/dist/lib/cjs/dataview-link.d.cts +1 -1
  19. package/dist/lib/cjs/dataview.cjs +1 -1
  20. package/dist/lib/cjs/dataview.d.cts +8 -8
  21. package/dist/lib/cjs/demo-vault-helper-settings.cjs +1 -1
  22. package/dist/lib/cjs/demo-vault-helper-settings.d.cts +1 -1
  23. package/dist/lib/cjs/demo-vault-helper.cjs +1 -1
  24. package/dist/lib/cjs/demo-vault-helper.d.cts +11 -11
  25. package/dist/lib/cjs/file-system.cjs +1 -1
  26. package/dist/lib/cjs/file-system.d.cts +2 -2
  27. package/dist/lib/cjs/folder-note.cjs +1 -1
  28. package/dist/lib/cjs/generated-during-build.cjs +1 -1
  29. package/dist/lib/cjs/html-element.cjs +6 -1
  30. package/dist/lib/cjs/html-element.d.cts +11 -0
  31. package/dist/lib/cjs/loop.cjs +3 -2
  32. package/dist/lib/cjs/loop.d.cts +4 -1
  33. package/dist/lib/cjs/metadata-cache.cjs +2 -2
  34. package/dist/lib/cjs/metadata-cache.d.cts +6 -6
  35. package/dist/lib/cjs/note-priority.cjs +1 -1
  36. package/dist/lib/cjs/note-priority.d.cts +1 -1
  37. package/dist/lib/cjs/notebook-navigator.cjs +1 -1
  38. package/dist/lib/cjs/notebook-navigator.d.cts +12 -12
  39. package/dist/lib/cjs/plugin/plugin.cjs +2 -2
  40. package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
  41. package/dist/lib/cjs/templater.cjs +4 -4
  42. package/dist/lib/cjs/templater.d.cts +35 -35
  43. package/dist/lib/esm/__merged.d.mts +1 -1
  44. package/dist/lib/esm/__merged.mjs +3 -1
  45. package/dist/lib/esm/attachment-path.d.mts +4 -4
  46. package/dist/lib/esm/attachment-path.mjs +8 -5
  47. package/dist/lib/esm/attachment-unit-folder.d.mts +3 -3
  48. package/dist/lib/esm/attachment-unit-folder.mjs +1 -1
  49. package/dist/lib/esm/callout.d.mts +2 -2
  50. package/dist/lib/esm/callout.mjs +1 -1
  51. package/dist/lib/esm/canvas.mjs +1 -1
  52. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.d.mts +14 -14
  53. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +9 -9
  54. package/dist/lib/esm/components/plugin-gate-component.d.mts +8 -2
  55. package/dist/lib/esm/components/plugin-gate-component.mjs +4 -3
  56. package/dist/lib/esm/components/plugin-suggestion-component.d.mts +5 -1
  57. package/dist/lib/esm/components/plugin-suggestion-component.mjs +4 -3
  58. package/dist/lib/esm/components/rename-delete-handler-component.mjs +1 -1
  59. package/dist/lib/esm/dataview-link.d.mts +1 -1
  60. package/dist/lib/esm/dataview-link.mjs +1 -1
  61. package/dist/lib/esm/dataview.d.mts +8 -8
  62. package/dist/lib/esm/dataview.mjs +1 -1
  63. package/dist/lib/esm/demo-vault-helper-settings.d.mts +1 -1
  64. package/dist/lib/esm/demo-vault-helper.d.mts +11 -11
  65. package/dist/lib/esm/demo-vault-helper.mjs +1 -1
  66. package/dist/lib/esm/file-system.d.mts +2 -2
  67. package/dist/lib/esm/file-system.mjs +1 -1
  68. package/dist/lib/esm/folder-note.mjs +1 -1
  69. package/dist/lib/esm/generated-during-build.mjs +1 -1
  70. package/dist/lib/esm/html-element.d.mts +11 -0
  71. package/dist/lib/esm/html-element.mjs +5 -1
  72. package/dist/lib/esm/loop.d.mts +4 -1
  73. package/dist/lib/esm/loop.mjs +3 -2
  74. package/dist/lib/esm/metadata-cache.d.mts +6 -6
  75. package/dist/lib/esm/metadata-cache.mjs +2 -2
  76. package/dist/lib/esm/note-priority.d.mts +1 -1
  77. package/dist/lib/esm/note-priority.mjs +1 -1
  78. package/dist/lib/esm/notebook-navigator.d.mts +12 -12
  79. package/dist/lib/esm/notebook-navigator.mjs +1 -1
  80. package/dist/lib/esm/plugin/plugin.d.mts +1 -1
  81. package/dist/lib/esm/plugin/plugin.mjs +2 -2
  82. package/dist/lib/esm/templater.d.mts +35 -35
  83. package/dist/lib/esm/templater.mjs +4 -4
  84. package/package.json +1 -1
@@ -376,4 +376,4 @@ async function renderPaginated(params) {
376
376
  renderPaginatedList,
377
377
  renderPaginatedTable
378
378
  });
379
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBEYXRhdmlldyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIERhdGFBcnJheSxcbiAgRGF0YXZpZXdBcGksXG4gIFNNYXJrZG93blBhZ2Vcbn0gZnJvbSAnQG1uYW91bW92L29ic2lkaWFuLWRhdGF2aWV3JztcbmltcG9ydCB0eXBlIHsgRGF0YXZpZXdJbmxpbmVBcGkgYXMgRGF0YXZpZXdJbmxpbmVBcGlPcmlnaW5hbCB9IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1kYXRhdmlldy9hcGkvaW5saW5lLWFwaSc7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb252ZXJ0QXN5bmNUb1N5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHsgZXJyb3JUb1N0cmluZyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9lcnJvcic7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9mcm9udG1hdHRlci50cyc7XG5cbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldFBhdGhcbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgeyB0IH0gZnJvbSAnLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHsgcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybCB9IGZyb20gJy4vcmVzb3VyY2UtdXJsLnRzJztcblxuLyoqXG4gKiBFeHBvcnQgRGF0ZVRpbWUgYW5kIExpbmsgdHlwZXMgZnJvbSB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIERhdGVUaW1lLFxuICBMaW5rXG59IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1kYXRhdmlldyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3QXBpfSBvYmplY3QgcmVwcmVzZW50cyB0aGUgQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIERhdGF2aWV3IGluIE9ic2lkaWFuLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhcnMtb24tdG9wIC0tIEl0IGlzIGEgYHZhcmAgaW4gbW9kdWxlIGRlY2xhcmF0aW9uLiBFU0xpbnQgbWlzdGFrZW5seSBjb25mdXNlcyBpdCB3aXRoIGB2YXJgIGFzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG5cbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgLyoqXG4gICAgICogVGhlIGdsb2JhbCB7QGxpbmsgRGF0YXZpZXdBcGl9IG9iamVjdCBEYXRhdmlldyBpbnN0YWxscyBvbiBldmVyeSB3aW5kb3cuXG4gICAgICovXG4gICAgRGF0YXZpZXdBUEk/OiBEYXRhdmlld0FwaTtcbiAgfVxufVxuXG4vKipcbiAqIEEgY29tYmluZWQgcGFnZSB0eXBlLCB3aGljaCBpbmNsdWRlcyB0aGUgZnJvbnQgbWF0dGVyIGFuZCB0aGUgU01hcmtkb3duUGFnZS5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250bWF0dGVyIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+ID0gQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj4gJiBTTWFya2Rvd25QYWdlO1xuXG4vKipcbiAqIEV4dGVuZGVkIGludGVyZmFjZSBmb3IgdGhlIERhdGF2aWV3IElubGluZSBBUEksIHByb3ZpZGluZyBhZGRpdGlvbmFsIG1ldGhvZHMgZm9yIGN1c3RvbSBwYWdlIHR5cGVzIGFuZCBhcnJheSBoYW5kbGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhdmlld0lubGluZUFwaSBleHRlbmRzIERhdGF2aWV3SW5saW5lQXBpT3JpZ2luYWwge1xuICAvKipcbiAgICogV3JhcHMgYW4gYXJyYXkgb2YgaXRlbXMgaW50byBhIHtAbGluayBEYXRhQXJyYXl9IG9iamVjdC5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIGluIHRoZSBhcnJheS5cbiAgICogQHBhcmFtIGFycmF5IC0gVGhlIGFycmF5IG9mIGl0ZW1zIHRvIHdyYXAuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERhdGFBcnJheX0gY29udGFpbmluZyB0aGUgaXRlbXMuXG4gICAqL1xuICBhcnJheTogPFQ+KGFycmF5OiBUW10pID0+IERhdGFBcnJheTxUPjtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHBhZ2UsIHdpdGggYW4gb3B0aW9uYWwgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHBhZ2UuXG4gICAqL1xuICBjdXJyZW50OiA8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPigpID0+IENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlcj47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBwYWdlcyBiYXNlZCBvbiBhbiBvcHRpb25hbCBxdWVyeSwgd2l0aCBhbiBvcHRpb25hbCBjdXN0b20gcGFnZSB0eXBlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAgICogQHBhcmFtIHF1ZXJ5IC0gQW4gb3B0aW9uYWwgc3RyaW5nIHF1ZXJ5IHRvIGZpbHRlciB0aGUgcGFnZXMuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERhdGFBcnJheX0gb2YgcGFnZXMgbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcGFnZXM6IDxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KHF1ZXJ5Pzogc3RyaW5nKSA9PiBEYXRhQXJyYXk8Q29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyPj47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwYXJhZ3JhcGggSFRNTCBlbGVtZW50IHdpdGggdGhlIHByb3ZpZGVkIHRleHQgYW5kIG9wdGlvbmFsIERPTSBlbGVtZW50IG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGhlIGNvbnRlbnQgb2YgdGhlIHBhcmFncmFwaC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBET00gZWxlbWVudCBvcHRpb25zLCBpbmNsdWRpbmcgYW4gb3B0aW9uYWwgY29udGFpbmVyLlxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBIVE1MIHBhcmFncmFwaCBlbGVtZW50LlxuICAgKi9cbiAgcGFyYWdyYXBoOiAoXG4gICAgdGV4dDogdW5rbm93bixcbiAgICBvcHRpb25zPzogRG9tRWxlbWVudEluZm9XaXRoQ29udGFpbmVyXG4gICkgPT4gSFRNTFBhcmFncmFwaEVsZW1lbnQ7XG59XG5cbi8qKlxuICogRG9tRWxlbWVudEluZm8gd2l0aCBhbiBvcHRpb25hbCBjb250YWluZXIuXG4gKi9cbmV4cG9ydCB0eXBlIERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lciA9IENvbnRhaW5lckluZm8gJiBEb21FbGVtZW50SW5mbztcblxuLyoqXG4gKiBBIGNvbWJpbmVkIGZpbGUgdHlwZSwgd2hpY2ggaW5jbHVkZXMgdGhlIGZyb250IG1hdHRlciBhbmQgdGhlIFNNYXJrZG93bkZpbGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VGaWxlID0gU01hcmtkb3duUGFnZVsnZmlsZSddO1xuXG4vKipcbiAqIExpc3Qgb2YgcGFnZSBmaWxlcy5cbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUZpbGVzID0gQXJyYXlPckRhdGFBcnJheTxQYWdlRmlsZT47XG5cbmludGVyZmFjZSBDb250YWluZXJJbmZvIHtcbiAgY29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG59XG5cbi8qKlxuICogUmVsb2FkcyB0aGUgY3VycmVudCBmaWxlIGNhY2hlIHVzaW5nIHRoZSBEYXRhdmlldyBBUEkuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjYWNoZSBpcyByZWxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbG9hZEN1cnJlbnRGaWxlQ2FjaGUoZHY6IERhdGF2aWV3SW5saW5lQXBpKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGFjdGl2ZVdpbmRvdy5EYXRhdmlld0FQST8uaW5kZXgucmVsb2FkKGdldEZpbGUoe1xuICAgIGFwcDogZHYuYXBwLFxuICAgIHBhdGhPckZpbGU6IGR2LmN1cnJlbnQoKS5maWxlLnBhdGhcbiAgfSkpO1xufVxuXG5jb25zdCBwYWdpbmF0aW9uQ3NzID0gYFxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjb2xvcjogZ3JheTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluayB7XG4gIG1hcmdpbjogMCA1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogYmx1ZTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluazpob3Zlcjpub3QoLmRpc2FibGVkKSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5jdXJyZW50IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4ucGFnaW5hdGlvbiBzZWxlY3QsXG4ucGFnaW5hdGlvbiBpbnB1dCB7XG4gIG1hcmdpbjogMCA1cHg7XG59XG5gO1xuXG4vKipcbiAqIEFycmF5IG9yIERhdGFBcnJheSB0eXBlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlPckRhdGFBcnJheTxUPiA9IERhdGFBcnJheTxUPiB8IFRbXTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5zZXJ0Q29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRDb2RlQmxvY2tQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvZGUgY29udGVudCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgcmVhZG9ubHkgY29kZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UgdG8gaW5zZXJ0IHRoZSBjb2RlIGJsb2NrIGludG8uXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSBpZGVudGlmaWVyIGZvciB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlcklmcmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySWZyYW1lUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQSBoZWlnaHQgb2YgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCc2MDBweCdgXG4gICAqL1xuICByZWFkb25seSBoZWlnaHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgcmVzb3VyY2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBpZnJhbWUuXG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgd2lkdGggb2YgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCcxMDAlJ2BcbiAgICovXG4gIHJlYWRvbmx5IHdpZHRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJQYWdpbmF0ZWRMaXN0fS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgbGlzdCBpdGVtcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRMaXN0UGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgaXRlbXMgdG8gcGFnaW5hdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzRm9yT25lUGFnZSAtIFRoZSByb3dzIHRvIHJlbmRlci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVuZGVyZXI6IChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPikgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogUm93cyB0byBwYWdpbmF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlclBhZ2luYXRlZFRhYmxlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdGFibGUgcm93IGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkVGFibGVQYXJhbXM8VD4ge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGhlYWRlcnMgb2YgdGhlIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgWzEwLCAyMCwgNTAsIDEwMF1gXG4gICAqL1xuICByZWFkb25seSBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFJvd3Mgb2YgdGhlIHRhYmxlIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY3JlYXRlUGFnZUxpbmt9LlxuICovXG5pbnRlcmZhY2UgQ3JlYXRlUGFnZUxpbmtQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHBhZ2UgbnVtYmVyIHRoZSBsaW5rIHBvaW50cyB0by5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRQYWdlTnVtYmVyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxpbmsgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGNvbnRlbnQgdXNpbmcgdGhlIHByb3ZpZGVkIHJlbmRlcmVyIGZ1bmN0aW9uIGluIGEgdGVtcG9yYXJ5IGNvbnRhaW5lcixcbiAqIGFuZCB0aGVuIHJldHVybnMgdGhlIGNvbnRhaW5lci5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcmVuZGVyZXIgLSBUaGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnRcbiAqIHRoYXQgd2FzIHVzZWQgYXMgdGhlIHRlbXBvcmFyeSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZW5kZXJlZENvbnRhaW5lcihkdjogRGF0YXZpZXdJbmxpbmVBcGksIHJlbmRlcmVyOiAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+KTogUHJvbWlzZTxIVE1MUGFyYWdyYXBoRWxlbWVudD4ge1xuICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG4gIGNvbnN0IHRlbXBvcmFyeUNvbnRhaW5lciA9IGR2LnBhcmFncmFwaCgnJyk7XG4gIGR2LmNvbnRhaW5lciA9IHRlbXBvcmFyeUNvbnRhaW5lcjtcbiAgZHYuY29udGFpbmVyLmVtcHR5KCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZW5kZXJlcigpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGR2LnBhcmFncmFwaChgXHUyNzRDJHtlcnJvclRvU3RyaW5nKGVycm9yKX1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hdG9taWMtdXBkYXRlcyAtLSBZZXMsIGl0IGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLCBidXQgSSBkb24ndCBhbiBlbGVnYW50IHdheSB0byBmaXggaXQuXG4gICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIHRlbXBvcmFyeUNvbnRhaW5lci5yZW1vdmUoKTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wb3JhcnlDb250YWluZXI7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIGNvZGUgYmxvY2sgaW50byB0aGUgc3BlY2lmaWVkIERhdGF2aWV3IGluc3RhbmNlIHVzaW5nIHRoZSBwcm92aWRlZCBsYW5ndWFnZSBhbmQgY29kZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGluc2VydGluZyB0aGUgY29kZSBibG9jay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydENvZGVCbG9jayhwYXJhbXM6IEluc2VydENvZGVCbG9ja1BhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgY29kZSxcbiAgICBkdixcbiAgICBsYW5ndWFnZVxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBNSU5fRkVOQ0VfTEVOR1RIID0gMztcbiAgY29uc3QgZmVuY2VSZWdFeHAgPSBuZXcgUmVnRXhwKGBeXFxgeyR7U3RyaW5nKE1JTl9GRU5DRV9MRU5HVEgpfSx9YCwgJ2dtJyk7XG4gIGNvbnN0IGZlbmNlTWF0Y2hlcyA9IGNvZGUubWF0Y2hBbGwoZmVuY2VSZWdFeHApO1xuICBjb25zdCBmZW5jZUxlbmd0aHMgPSBbLi4uZmVuY2VNYXRjaGVzXS5tYXAoKGZlbmNlTWF0Y2gpID0+IGZlbmNlTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgY29uc3QgbWF4RmVuY2VMZW5ndGggPSBNYXRoLm1heCgwLCAuLi5mZW5jZUxlbmd0aHMpO1xuICBjb25zdCByZXN1bHRGZW5jZUxlbmd0aCA9IE1hdGgubWF4KE1JTl9GRU5DRV9MRU5HVEgsIG1heEZlbmNlTGVuZ3RoICsgMSk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlID0gJ2AnLnJlcGVhdChyZXN1bHRGZW5jZUxlbmd0aCk7XG5cbiAgZHYucGFyYWdyYXBoKGAke3Jlc3VsdEZlbmNlfSR7bGFuZ3VhZ2V9XG4ke2NvZGV9XG4ke3Jlc3VsdEZlbmNlfWApO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW4gaWZyYW1lIGluIHRoZSBEYXRhdmlldyBjb250YWluZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHJlbGF0aXZlIHBhdGgsIHdpZHRoLCBhbmQgaGVpZ2h0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBpZnJhbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJZnJhbWUocGFyYW1zOiBSZW5kZXJJZnJhbWVQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlaWdodCA9ICc2MDBweCcsXG4gICAgcmVsYXRpdmVQYXRoT3JGaWxlLFxuICAgIHdpZHRoID0gJzEwMCUnXG4gIH0gPSBwYXJhbXM7XG4gIGR2LmVsKCdpZnJhbWUnLCAnJywge1xuICAgIGF0dHI6IHtcbiAgICAgIGhlaWdodCxcbiAgICAgIHNyYzogcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybCh7XG4gICAgICAgIGFwcDogZHYuYXBwLFxuICAgICAgICBub3RlUGF0aDogZHYuY3VycmVudCgpLmZpbGUucGF0aCxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBnZXRQYXRoKGR2LmFwcCwgcmVsYXRpdmVQYXRoT3JGaWxlKVxuICAgICAgfSksXG4gICAgICB3aWR0aFxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBhZ2luYXRlZCBsaXN0IHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyBpbiB0aGUgbGlzdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIGxpc3QuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBsaXN0IGlzIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGVkTGlzdDxUPihwYXJhbXM6IFJlbmRlclBhZ2luYXRlZExpc3RQYXJhbXM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IHBhcmFtcztcbiAgYXdhaXQgcmVuZGVyUGFnaW5hdGVkKHtcbiAgICBkdixcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLFxuICAgIHJlbmRlcmVyOiBhc3luYyAocm93c0Zvck9uZVBhZ2U6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGR2Lmxpc3Qocm93c0Zvck9uZVBhZ2UpO1xuICAgIH0sXG4gICAgcm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgcGFnaW5hdGVkIHRhYmxlIHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyBpbiB0aGUgdGFibGUgcm93cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIHRhYmxlLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFibGUgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRUYWJsZTxUIGV4dGVuZHMgdW5rbm93bltdPihwYXJhbXM6IFJlbmRlclBhZ2luYXRlZFRhYmxlUGFyYW1zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBoZWFkZXJzLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IHBhcmFtcztcbiAgYXdhaXQgcmVuZGVyUGFnaW5hdGVkKHtcbiAgICBkdixcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLFxuICAgIHJlbmRlcmVyOiBhc3luYyAocm93c0Zvck9uZVBhZ2U6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGR2LnRhYmxlKGhlYWRlcnMsIHJvd3NGb3JPbmVQYWdlKTtcbiAgICB9LFxuICAgIHJvd3NcbiAgfSk7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHJlbmRlciBwYWdpbmF0ZWQgY29udGVudCB1c2luZyB0aGUgc3BlY2lmaWVkIHJlbmRlcmVyLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgY29udGVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbnRlbnQgaXMgcmVuZGVyZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZDxUPihwYXJhbXM6IFJlbmRlclBhZ2luYXRlZFBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBTRUNPTkRfUEFHRV9OVU1CRVIgPSAyO1xuICBjb25zdCBNT1JFX1BBR0VfTlVNQkVSID0gMztcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IHBhcmFtcztcbiAgaWYgKHJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgZHYucGFyYWdyYXBoKCdObyBpdGVtcyBmb3VuZCcpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBjb250YWluZXIgPSBkdi5jb250YWluZXI7XG4gIGxldCBpdGVtc1BlclBhZ2UgPSBlbnN1cmVOb25OdWxsYWJsZShpdGVtc1BlclBhZ2VPcHRpb25zWzBdLCAnSXRlbXMgcGVyIHBhZ2Ugb3B0aW9ucyBhcmUgZW1wdHknKTtcbiAgbGV0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICBhd2FpdCByZW5kZXJQYWdlKDEpO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdpbmF0aW9uRGl2ID0gY29udGFpbmVyLmNyZWF0ZURpdih7IGNsczogJ3BhZ2luYXRpb24nIH0pO1xuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cxRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IDEsIGRpc2FibGVkOiBwYWdlTnVtYmVyID09PSAxLCB0ZXh0OiAnRmlyc3QnIH0pO1xuICAgIGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IHBhZ2VOdW1iZXIgLSAxLCBkaXNhYmxlZDogcGFnZU51bWJlciA9PT0gMSwgdGV4dDogJ1ByZXYnIH0pO1xuXG4gICAgaWYgKHBhZ2VOdW1iZXIgPiBNT1JFX1BBR0VfTlVNQkVSKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVTcGFuKHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaW5kZXggPSBNYXRoLm1heCgxLCBwYWdlTnVtYmVyIC0gU0VDT05EX1BBR0VfTlVNQkVSKTsgaW5kZXggPD0gTWF0aC5taW4odG90YWxQYWdlcywgcGFnZU51bWJlciArIFNFQ09ORF9QQUdFX05VTUJFUik7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IHBhZ2VMaW5rID0gY3JlYXRlUGFnZUxpbmsoeyBjdXJyZW50UGFnZU51bWJlcjogaW5kZXgsIGRpc2FibGVkOiBpbmRleCA9PT0gcGFnZU51bWJlciwgdGV4dDogU3RyaW5nKGluZGV4KSB9KTtcbiAgICAgIGlmIChpbmRleCA9PT0gcGFnZU51bWJlcikge1xuICAgICAgICBwYWdlTGluay5hZGRDbGFzcygnY3VycmVudCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYWdlTnVtYmVyIDwgdG90YWxQYWdlcyAtIFNFQ09ORF9QQUdFX05VTUJFUikge1xuICAgICAgcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlU3Bhbih7IHRleHQ6ICcuLi4nIH0pO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IHBhZ2VOdW1iZXIgKyAxLCBkaXNhYmxlZDogcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcywgdGV4dDogJ05leHQnIH0pO1xuICAgIGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IHRvdGFsUGFnZXMsIGRpc2FibGVkOiBwYWdlTnVtYmVyID09PSB0b3RhbFBhZ2VzLCB0ZXh0OiAnTGFzdCcgfSk7XG5cbiAgICBjb25zdCBwYWdpbmF0aW9uUm93MkRpdiA9IHBhZ2luYXRpb25EaXYuY3JlYXRlRGl2KCk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVTcGFuKHsgdGV4dDogYCAke3QoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5kYXRhdmlldy5pdGVtc1BlclBhZ2UpfSBgIH0pO1xuXG4gICAgY29uc3QgaXRlbXNQZXJQYWdlU2VsZWN0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ3NlbGVjdCcpO1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIGl0ZW1zUGVyUGFnZU9wdGlvbnMpIHtcbiAgICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC5jcmVhdGVFbCgnb3B0aW9uJywgeyB0ZXh0OiBTdHJpbmcob3B0aW9uKSwgdmFsdWU6IFN0cmluZyhvcHRpb24pIH0pO1xuICAgIH1cbiAgICBpdGVtc1BlclBhZ2VTZWxlY3QudmFsdWUgPSBTdHJpbmcoaXRlbXNQZXJQYWdlKTtcbiAgICBpdGVtc1BlclBhZ2VTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgaXRlbXNQZXJQYWdlID0gcGFyc2VJbnQoaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlLCAxMCk7XG4gICAgICAgIHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICAgICAgICBhd2FpdCByZW5kZXJQYWdlKDEpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IGAgJHt0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcuanVtcFRvUGFnZSl9IGAgfSk7XG5cbiAgICBjb25zdCBqdW1wVG9QYWdlSW5wdXQgPSBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnaW5wdXQnLCB7IGF0dHI6IHsgbWF4OiB0b3RhbFBhZ2VzLCBtaW46IDEgfSwgdHlwZTogJ251bWJlcicgfSk7XG4gICAganVtcFRvUGFnZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgIT09ICdFbnRlcicpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYWdlID0gcGFyc2VJbnQoanVtcFRvUGFnZUlucHV0LnZhbHVlLCAxMCk7XG4gICAgICAgIGlmIChwYWdlID49IDEgJiYgcGFnZSA8PSB0b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgYXdhaXQgcmVuZGVyUGFnZShwYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5kYXRhdmlldy5wYWdlSGVhZGVyLCB7IHBhZ2VOdW1iZXIsIHRvdGFsSXRlbXM6IHJvd3MubGVuZ3RoLCB0b3RhbFBhZ2VzIH0pIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFnZUxpbmsocGFyYW1zMjogQ3JlYXRlUGFnZUxpbmtQYXJhbXMpOiBIVE1MQW5jaG9yRWxlbWVudCB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGN1cnJlbnRQYWdlTnVtYmVyLFxuICAgICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgICB0ZXh0XG4gICAgICB9ID0gcGFyYW1zMjtcbiAgICAgIGNvbnN0IGxpbmsgPSBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVFbCgnYScsIHsgY2xzOiAncGFnZS1saW5rJywgaHJlZjogYCMke1N0cmluZyhjdXJyZW50UGFnZU51bWJlcil9YCwgdGV4dCB9KTtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICBsaW5rLmFkZENsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItYWRkLWV2ZW50LWxpc3RlbmVyIC0tIFRoZSBoYW5kbGVyIGlzIGFzc2lnbmVkIHRvIGBvbmNsaWNrYCBzbyBpdCBzdGF5cyByZWFkYWJsZSBiYWNrIG9mZiB0aGUgZWxlbWVudCwgd2hpY2ggaXMgaG93IGl0IGlzIGludm9rZWQgaW4gdGVzdHMgYW5kIGhvdyBhIGxhdGVyIGFzc2lnbm1lbnQgY2FuIHJlcGxhY2UgaXQuXG4gICAgICAgIGxpbmsub25jbGljayA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItYWRkLWV2ZW50LWxpc3RlbmVyIC0tIFRoZSBoYW5kbGVyIGlzIGFzc2lnbmVkIHRvIGBvbmNsaWNrYCBzbyBpdCBzdGF5cyByZWFkYWJsZSBiYWNrIG9mZiB0aGUgZWxlbWVudCwgd2hpY2ggaXMgaG93IGl0IGlzIGludm9rZWQgaW4gdGVzdHMgYW5kIGhvdyBhIGxhdGVyIGFzc2lnbm1lbnQgY2FuIHJlcGxhY2UgaXQuXG4gICAgICAgIGxpbmsub25jbGljayA9IGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UoY3VycmVudFBhZ2VOdW1iZXIpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5rO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2UocGFnZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29udGFpbmVyLmVtcHR5KCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvbm8tZm9yYmlkZGVuLWVsZW1lbnRzIC0tIFdlIG5lZWQgdG8gY3JlYXRlIGEgc3R5bGUgZWxlbWVudCB0byBhcHBseSB0aGUgcGFnaW5hdGlvbiBDU1MuXG4gICAgY29udGFpbmVyLmNyZWF0ZUVsKCdzdHlsZScsIHsgdGV4dDogcGFnaW5hdGlvbkNzcyB9KTtcblxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAocGFnZU51bWJlciAtIDEpICogaXRlbXNQZXJQYWdlO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCByb3dzRm9yQ3VycmVudFBhZ2UgPSByb3dzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcblxuICAgIGNvbnN0IG9sZENvbnRhaW5lciA9IGR2LmNvbnRhaW5lcjtcblxuICAgIGR2LmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcGFyYW1zLnJlbmRlcmVyKHJvd3NGb3JDdXJyZW50UGFnZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGR2LnBhcmFncmFwaChgXHUyNzRDJHtlcnJvclRvU3RyaW5nKGVycm9yKX1gKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gWWVzLCBpdCBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgYnV0IEkgZG9uJ3QgYW4gZWxlZ2FudCB3YXkgdG8gZml4IGl0LlxuICAgICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQSxtQkFBbUM7QUFDbkMsbUJBQThCO0FBQzlCLHlCQUFrQztBQUtsQyx5QkFHTztBQUNQLGtCQUFrQjtBQUNsQiwwQkFBMEM7QUFvRzFDLGVBQXNCLHVCQUF1QixJQUFzQztBQUNqRixRQUFNLGFBQWEsYUFBYSxNQUFNLFdBQU8sNEJBQVE7QUFBQSxJQUNuRCxLQUFLLEdBQUc7QUFBQSxJQUNSLFlBQVksR0FBRyxRQUFRLEVBQUUsS0FBSztBQUFBLEVBQ2hDLENBQUMsQ0FBQztBQUNKO0FBRUEsTUFBTSxnQkFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFNdEIsZUFBc0IscUJBQXFCLElBQXVCLFVBQWlFO0FBQ2pJLFFBQU0sZUFBZSxHQUFHO0FBQ3hCLFFBQU0scUJBQXFCLEdBQUcsVUFBVSxFQUFFO0FBQzFDLEtBQUcsWUFBWTtBQUNmLEtBQUcsVUFBVSxNQUFNO0FBRW5CLE1BQUk7QUFDRixVQUFNLFNBQVM7QUFBQSxFQUNqQixTQUFTLE9BQU87QUFDZCxPQUFHLFVBQVUsYUFBSSw0QkFBYyxLQUFLLENBQUMsRUFBRTtBQUFBLEVBQ3pDLFVBQUU7QUFFQSxPQUFHLFlBQVk7QUFDZix1QkFBbUIsT0FBTztBQUFB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
379
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBgRGF0YXZpZXdgIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRGF0YUFycmF5LFxuICBEYXRhdmlld0FwaSxcbiAgU01hcmtkb3duUGFnZVxufSBmcm9tICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGF0YXZpZXcnO1xuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0lubGluZUFwaSBhcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIH0gZnJvbSAnQG1uYW91bW92L29ic2lkaWFuLWRhdGF2aWV3L2FwaS9pbmxpbmUtYXBpJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGNvbnZlcnRBc3luY1RvU3luYyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgeyBlcnJvclRvU3RyaW5nIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcblxuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcblxuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0UGF0aFxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9yZXNvdXJjZS11cmwudHMnO1xuXG4vKipcbiAqIEV4cG9ydCBEYXRlVGltZSBhbmQgTGluayB0eXBlcyBmcm9tIHRoZSBgRGF0YXZpZXdgIEFQSS5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBEYXRlVGltZSxcbiAgTGlua1xufSBmcm9tICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGF0YXZpZXcnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0FwaX0gb2JqZWN0IHJlcHJlc2VudHMgdGhlIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBgRGF0YXZpZXdgIGluIE9ic2lkaWFuLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhcnMtb24tdG9wIC0tIEl0IGlzIGEgYHZhcmAgaW4gbW9kdWxlIGRlY2xhcmF0aW9uLiBFU0xpbnQgbWlzdGFrZW5seSBjb25mdXNlcyBpdCB3aXRoIGB2YXJgIGFzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG5cbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgLyoqXG4gICAgICogVGhlIGdsb2JhbCB7QGxpbmsgRGF0YXZpZXdBcGl9IG9iamVjdCBgRGF0YXZpZXdgIGluc3RhbGxzIG9uIGV2ZXJ5IHdpbmRvdy5cbiAgICAgKi9cbiAgICBEYXRhdmlld0FQST86IERhdGF2aWV3QXBpO1xuICB9XG59XG5cbi8qKlxuICogQSBjb21iaW5lZCBwYWdlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25QYWdlLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4gPSBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiAmIFNNYXJrZG93blBhZ2U7XG5cbi8qKlxuICogRXh0ZW5kZWQgaW50ZXJmYWNlIGZvciB0aGUgYERhdGF2aWV3YCBJbmxpbmUgQVBJLCBwcm92aWRpbmcgYWRkaXRpb25hbCBtZXRob2RzIGZvciBjdXN0b20gcGFnZSB0eXBlcyBhbmQgYXJyYXkgaGFuZGxpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXZpZXdJbmxpbmVBcGkgZXh0ZW5kcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIHtcbiAgLyoqXG4gICAqIFdyYXBzIGFuIGFycmF5IG9mIGl0ZW1zIGludG8gYSB7QGxpbmsgRGF0YUFycmF5fSBvYmplY3QuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuXG4gICAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSBvZiBpdGVtcyB0byB3cmFwLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEYXRhQXJyYXl9IGNvbnRhaW5pbmcgdGhlIGl0ZW1zLlxuICAgKi9cbiAgYXJyYXk6IDxUPihhcnJheTogVFtdKSA9PiBEYXRhQXJyYXk8VD47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBwYWdlLCB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSBwYWdlIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBwYWdlLlxuICAgKi9cbiAgY3VycmVudDogPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4oKSA9PiBDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXI+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgcGFnZXMgYmFzZWQgb24gYW4gb3B0aW9uYWwgcXVlcnksIHdpdGggYW4gb3B0aW9uYWwgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gICAqIEBwYXJhbSBxdWVyeSAtIEFuIG9wdGlvbmFsIHN0cmluZyBxdWVyeSB0byBmaWx0ZXIgdGhlIHBhZ2VzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEYXRhQXJyYXl9IG9mIHBhZ2VzIG1hdGNoaW5nIHRoZSBxdWVyeS5cbiAgICovXG4gIHBhZ2VzOiA8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihxdWVyeT86IHN0cmluZykgPT4gRGF0YUFycmF5PENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlcj4+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGFyYWdyYXBoIEhUTUwgZWxlbWVudCB3aXRoIHRoZSBwcm92aWRlZCB0ZXh0IGFuZCBvcHRpb25hbCBET00gZWxlbWVudCBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRoZSBjb250ZW50IG9mIHRoZSBwYXJhZ3JhcGguXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgRE9NIGVsZW1lbnQgb3B0aW9ucywgaW5jbHVkaW5nIGFuIG9wdGlvbmFsIGNvbnRhaW5lci5cbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgSFRNTCBwYXJhZ3JhcGggZWxlbWVudC5cbiAgICovXG4gIHBhcmFncmFwaDogKFxuICAgIHRleHQ6IHVua25vd24sXG4gICAgb3B0aW9ucz86IERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lclxuICApID0+IEhUTUxQYXJhZ3JhcGhFbGVtZW50O1xufVxuXG4vKipcbiAqIERvbUVsZW1lbnRJbmZvIHdpdGggYW4gb3B0aW9uYWwgY29udGFpbmVyLlxuICovXG5leHBvcnQgdHlwZSBEb21FbGVtZW50SW5mb1dpdGhDb250YWluZXIgPSBDb250YWluZXJJbmZvICYgRG9tRWxlbWVudEluZm87XG5cbi8qKlxuICogQSBjb21iaW5lZCBmaWxlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25GaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZSA9IFNNYXJrZG93blBhZ2VbJ2ZpbGUnXTtcblxuLyoqXG4gKiBMaXN0IG9mIHBhZ2UgZmlsZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VGaWxlcyA9IEFycmF5T3JEYXRhQXJyYXk8UGFnZUZpbGU+O1xuXG5pbnRlcmZhY2UgQ29udGFpbmVySW5mbyB7XG4gIGNvbnRhaW5lcj86IEhUTUxFbGVtZW50O1xufVxuXG4vKipcbiAqIFJlbG9hZHMgdGhlIGN1cnJlbnQgZmlsZSBjYWNoZSB1c2luZyB0aGUgYERhdGF2aWV3YCBBUEkuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjYWNoZSBpcyByZWxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbG9hZEN1cnJlbnRGaWxlQ2FjaGUoZHY6IERhdGF2aWV3SW5saW5lQXBpKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGFjdGl2ZVdpbmRvdy5EYXRhdmlld0FQST8uaW5kZXgucmVsb2FkKGdldEZpbGUoe1xuICAgIGFwcDogZHYuYXBwLFxuICAgIHBhdGhPckZpbGU6IGR2LmN1cnJlbnQoKS5maWxlLnBhdGhcbiAgfSkpO1xufVxuXG5jb25zdCBwYWdpbmF0aW9uQ3NzID0gYFxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjb2xvcjogZ3JheTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluayB7XG4gIG1hcmdpbjogMCA1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogYmx1ZTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluazpob3Zlcjpub3QoLmRpc2FibGVkKSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5jdXJyZW50IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4ucGFnaW5hdGlvbiBzZWxlY3QsXG4ucGFnaW5hdGlvbiBpbnB1dCB7XG4gIG1hcmdpbjogMCA1cHg7XG59XG5gO1xuXG4vKipcbiAqIEFycmF5IG9yIERhdGFBcnJheSB0eXBlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlPckRhdGFBcnJheTxUPiA9IERhdGFBcnJheTxUPiB8IFRbXTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5zZXJ0Q29kZUJsb2NrfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRDb2RlQmxvY2tQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvZGUgY29udGVudCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgcmVhZG9ubHkgY29kZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UgdG8gaW5zZXJ0IHRoZSBjb2RlIGJsb2NrIGludG8uXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSBpZGVudGlmaWVyIGZvciB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlcklmcmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySWZyYW1lUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQSBoZWlnaHQgb2YgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCc2MDBweCdgXG4gICAqL1xuICByZWFkb25seSBoZWlnaHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgcmVzb3VyY2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBpZnJhbWUuXG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgd2lkdGggb2YgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYCcxMDAlJ2BcbiAgICovXG4gIHJlYWRvbmx5IHdpZHRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJQYWdpbmF0ZWRMaXN0fS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgbGlzdCBpdGVtcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRMaXN0UGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgaXRlbXMgdG8gcGFnaW5hdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbMTAsIDIwLCA1MCwgMTAwXWBcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzRm9yT25lUGFnZSAtIFRoZSByb3dzIHRvIHJlbmRlci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVuZGVyZXI6IChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPikgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogUm93cyB0byBwYWdpbmF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlclBhZ2luYXRlZFRhYmxlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdGFibGUgcm93IGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkVGFibGVQYXJhbXM8VD4ge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGhlYWRlcnMgb2YgdGhlIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgWzEwLCAyMCwgNTAsIDEwMF1gXG4gICAqL1xuICByZWFkb25seSBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFJvd3Mgb2YgdGhlIHRhYmxlIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY3JlYXRlUGFnZUxpbmt9LlxuICovXG5pbnRlcmZhY2UgQ3JlYXRlUGFnZUxpbmtQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHBhZ2UgbnVtYmVyIHRoZSBsaW5rIHBvaW50cyB0by5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRQYWdlTnVtYmVyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxpbmsgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGNvbnRlbnQgdXNpbmcgdGhlIHByb3ZpZGVkIHJlbmRlcmVyIGZ1bmN0aW9uIGluIGEgdGVtcG9yYXJ5IGNvbnRhaW5lcixcbiAqIGFuZCB0aGVuIHJldHVybnMgdGhlIGNvbnRhaW5lci5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcmVuZGVyZXIgLSBUaGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnRcbiAqIHRoYXQgd2FzIHVzZWQgYXMgdGhlIHRlbXBvcmFyeSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZW5kZXJlZENvbnRhaW5lcihkdjogRGF0YXZpZXdJbmxpbmVBcGksIHJlbmRlcmVyOiAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+KTogUHJvbWlzZTxIVE1MUGFyYWdyYXBoRWxlbWVudD4ge1xuICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG4gIGNvbnN0IHRlbXBvcmFyeUNvbnRhaW5lciA9IGR2LnBhcmFncmFwaCgnJyk7XG4gIGR2LmNvbnRhaW5lciA9IHRlbXBvcmFyeUNvbnRhaW5lcjtcbiAgZHYuY29udGFpbmVyLmVtcHR5KCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZW5kZXJlcigpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGR2LnBhcmFncmFwaChgXHUyNzRDJHtlcnJvclRvU3RyaW5nKGVycm9yKX1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hdG9taWMtdXBkYXRlcyAtLSBZZXMsIGl0IGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLCBidXQgSSBkb24ndCBhbiBlbGVnYW50IHdheSB0byBmaXggaXQuXG4gICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIHRlbXBvcmFyeUNvbnRhaW5lci5yZW1vdmUoKTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wb3JhcnlDb250YWluZXI7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIGNvZGUgYmxvY2sgaW50byB0aGUgc3BlY2lmaWVkIGBEYXRhdmlld2AgaW5zdGFuY2UgdXNpbmcgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIGFuZCBjb2RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgaW5zZXJ0aW5nIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Q29kZUJsb2NrKHBhcmFtczogSW5zZXJ0Q29kZUJsb2NrUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBjb2RlLFxuICAgIGR2LFxuICAgIGxhbmd1YWdlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IE1JTl9GRU5DRV9MRU5HVEggPSAzO1xuICBjb25zdCBmZW5jZVJlZ0V4cCA9IG5ldyBSZWdFeHAoYF5cXGB7JHtTdHJpbmcoTUlOX0ZFTkNFX0xFTkdUSCl9LH1gLCAnZ20nKTtcbiAgY29uc3QgZmVuY2VNYXRjaGVzID0gY29kZS5tYXRjaEFsbChmZW5jZVJlZ0V4cCk7XG4gIGNvbnN0IGZlbmNlTGVuZ3RocyA9IFsuLi5mZW5jZU1hdGNoZXNdLm1hcCgoZmVuY2VNYXRjaCkgPT4gZmVuY2VNYXRjaFswXS5sZW5ndGgpO1xuICBjb25zdCBtYXhGZW5jZUxlbmd0aCA9IE1hdGgubWF4KDAsIC4uLmZlbmNlTGVuZ3Rocyk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlTGVuZ3RoID0gTWF0aC5tYXgoTUlOX0ZFTkNFX0xFTkdUSCwgbWF4RmVuY2VMZW5ndGggKyAxKTtcbiAgY29uc3QgcmVzdWx0RmVuY2UgPSAnYCcucmVwZWF0KHJlc3VsdEZlbmNlTGVuZ3RoKTtcblxuICBkdi5wYXJhZ3JhcGgoYCR7cmVzdWx0RmVuY2V9JHtsYW5ndWFnZX1cbiR7Y29kZX1cbiR7cmVzdWx0RmVuY2V9YCk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhbiBpZnJhbWUgaW4gdGhlIGBEYXRhdmlld2AgY29udGFpbmVyIHdpdGggdGhlIHNwZWNpZmllZCByZWxhdGl2ZSBwYXRoLCB3aWR0aCwgYW5kIGhlaWdodC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgaWZyYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVySWZyYW1lKHBhcmFtczogUmVuZGVySWZyYW1lUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBoZWlnaHQgPSAnNjAwcHgnLFxuICAgIHJlbGF0aXZlUGF0aE9yRmlsZSxcbiAgICB3aWR0aCA9ICcxMDAlJ1xuICB9ID0gcGFyYW1zO1xuICBkdi5lbCgnaWZyYW1lJywgJycsIHtcbiAgICBhdHRyOiB7XG4gICAgICBoZWlnaHQsXG4gICAgICBzcmM6IHJlbGF0aXZlUGF0aFRvUmVzb3VyY2VVcmwoe1xuICAgICAgICBhcHA6IGR2LmFwcCxcbiAgICAgICAgbm90ZVBhdGg6IGR2LmN1cnJlbnQoKS5maWxlLnBhdGgsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogZ2V0UGF0aChkdi5hcHAsIHJlbGF0aXZlUGF0aE9yRmlsZSlcbiAgICAgIH0pLFxuICAgICAgd2lkdGhcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgbGlzdCB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIGxpc3QuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCBsaXN0LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbGlzdCBpcyByZW5kZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZExpc3Q8VD4ocGFyYW1zOiBSZW5kZXJQYWdpbmF0ZWRMaXN0UGFyYW1zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBwYXJhbXM7XG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZCh7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICByZW5kZXJlcjogYXN5bmMgKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBkdi5saXN0KHJvd3NGb3JPbmVQYWdlKTtcbiAgICB9LFxuICAgIHJvd3NcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBhZ2luYXRlZCB0YWJsZSB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIHRhYmxlIHJvd3MuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCB0YWJsZS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhYmxlIGlzIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGVkVGFibGU8VCBleHRlbmRzIHVua25vd25bXT4ocGFyYW1zOiBSZW5kZXJQYWdpbmF0ZWRUYWJsZVBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgaGVhZGVycyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBwYXJhbXM7XG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZCh7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICByZW5kZXJlcjogYXN5bmMgKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBkdi50YWJsZShoZWFkZXJzLCByb3dzRm9yT25lUGFnZSk7XG4gICAgfSxcbiAgICByb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byByZW5kZXIgcGFnaW5hdGVkIGNvbnRlbnQgdXNpbmcgdGhlIHNwZWNpZmllZCByZW5kZXJlci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyB0byBwYWdpbmF0ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWQ8VD4ocGFyYW1zOiBSZW5kZXJQYWdpbmF0ZWRQYXJhbXM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgU0VDT05EX1BBR0VfTlVNQkVSID0gMjtcbiAgY29uc3QgTU9SRV9QQUdFX05VTUJFUiA9IDM7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBwYXJhbXM7XG4gIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgIGR2LnBhcmFncmFwaCgnTm8gaXRlbXMgZm91bmQnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBsZXQgaXRlbXNQZXJQYWdlID0gZW5zdXJlTm9uTnVsbGFibGUoaXRlbXNQZXJQYWdlT3B0aW9uc1swXSwgJ0l0ZW1zIHBlciBwYWdlIG9wdGlvbnMgYXJlIGVtcHR5Jyk7XG4gIGxldCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcblxuICBmdW5jdGlvbiBjcmVhdGVQYWdpbmF0aW9uQ29udHJvbHMocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkRpdiA9IGNvbnRhaW5lci5jcmVhdGVEaXYoeyBjbHM6ICdwYWdpbmF0aW9uJyB9KTtcbiAgICBjb25zdCBwYWdpbmF0aW9uUm93MURpdiA9IHBhZ2luYXRpb25EaXYuY3JlYXRlRGl2KCk7XG5cbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiAxLCBkaXNhYmxlZDogcGFnZU51bWJlciA9PT0gMSwgdGV4dDogJ0ZpcnN0JyB9KTtcbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiBwYWdlTnVtYmVyIC0gMSwgZGlzYWJsZWQ6IHBhZ2VOdW1iZXIgPT09IDEsIHRleHQ6ICdQcmV2JyB9KTtcblxuICAgIGlmIChwYWdlTnVtYmVyID4gTU9SRV9QQUdFX05VTUJFUikge1xuICAgICAgcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlU3Bhbih7IHRleHQ6ICcuLi4nIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGluZGV4ID0gTWF0aC5tYXgoMSwgcGFnZU51bWJlciAtIFNFQ09ORF9QQUdFX05VTUJFUik7IGluZGV4IDw9IE1hdGgubWluKHRvdGFsUGFnZXMsIHBhZ2VOdW1iZXIgKyBTRUNPTkRfUEFHRV9OVU1CRVIpOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBwYWdlTGluayA9IGNyZWF0ZVBhZ2VMaW5rKHsgY3VycmVudFBhZ2VOdW1iZXI6IGluZGV4LCBkaXNhYmxlZDogaW5kZXggPT09IHBhZ2VOdW1iZXIsIHRleHQ6IFN0cmluZyhpbmRleCkgfSk7XG4gICAgICBpZiAoaW5kZXggPT09IHBhZ2VOdW1iZXIpIHtcbiAgICAgICAgcGFnZUxpbmsuYWRkQ2xhc3MoJ2N1cnJlbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFnZU51bWJlciA8IHRvdGFsUGFnZXMgLSBTRUNPTkRfUEFHRV9OVU1CRVIpIHtcbiAgICAgIHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiAnLi4uJyB9KTtcbiAgICB9XG5cbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiBwYWdlTnVtYmVyICsgMSwgZGlzYWJsZWQ6IHBhZ2VOdW1iZXIgPT09IHRvdGFsUGFnZXMsIHRleHQ6ICdOZXh0JyB9KTtcbiAgICBjcmVhdGVQYWdlTGluayh7IGN1cnJlbnRQYWdlTnVtYmVyOiB0b3RhbFBhZ2VzLCBkaXNhYmxlZDogcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcywgdGV4dDogJ0xhc3QnIH0pO1xuXG4gICAgY29uc3QgcGFnaW5hdGlvblJvdzJEaXYgPSBwYWdpbmF0aW9uRGl2LmNyZWF0ZURpdigpO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IGAgJHt0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcuaXRlbXNQZXJQYWdlKX0gYCB9KTtcblxuICAgIGNvbnN0IGl0ZW1zUGVyUGFnZVNlbGVjdCA9IHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdzZWxlY3QnKTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBpdGVtc1BlclBhZ2VPcHRpb25zKSB7XG4gICAgICBpdGVtc1BlclBhZ2VTZWxlY3QuY3JlYXRlRWwoJ29wdGlvbicsIHsgdGV4dDogU3RyaW5nKG9wdGlvbiksIHZhbHVlOiBTdHJpbmcob3B0aW9uKSB9KTtcbiAgICB9XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlID0gU3RyaW5nKGl0ZW1zUGVyUGFnZSk7XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGl0ZW1zUGVyUGFnZSA9IHBhcnNlSW50KGl0ZW1zUGVyUGFnZVNlbGVjdC52YWx1ZSwgMTApO1xuICAgICAgICB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgICAgICAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiBgICR7dCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmRhdGF2aWV3Lmp1bXBUb1BhZ2UpfSBgIH0pO1xuXG4gICAgY29uc3QganVtcFRvUGFnZUlucHV0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ2lucHV0JywgeyBhdHRyOiB7IG1heDogdG90YWxQYWdlcywgbWluOiAxIH0sIHR5cGU6ICdudW1iZXInIH0pO1xuICAgIGp1bXBUb1BhZ2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jIChldmVudDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFnZSA9IHBhcnNlSW50KGp1bXBUb1BhZ2VJbnB1dC52YWx1ZSwgMTApO1xuICAgICAgICBpZiAocGFnZSA+PSAxICYmIHBhZ2UgPD0gdG90YWxQYWdlcykge1xuICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UocGFnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcucGFnZUhlYWRlciwgeyBwYWdlTnVtYmVyLCB0b3RhbEl0ZW1zOiByb3dzLmxlbmd0aCwgdG90YWxQYWdlcyB9KSB9KTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhZ2VMaW5rKHBhcmFtczI6IENyZWF0ZVBhZ2VMaW5rUGFyYW1zKTogSFRNTEFuY2hvckVsZW1lbnQge1xuICAgICAgY29uc3Qge1xuICAgICAgICBjdXJyZW50UGFnZU51bWJlcixcbiAgICAgICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICAgICAgdGV4dFxuICAgICAgfSA9IHBhcmFtczI7XG4gICAgICBjb25zdCBsaW5rID0gcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlRWwoJ2EnLCB7IGNsczogJ3BhZ2UtbGluaycsIGhyZWY6IGAjJHtTdHJpbmcoY3VycmVudFBhZ2VOdW1iZXIpfWAsIHRleHQgfSk7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgbGluay5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLWFkZC1ldmVudC1saXN0ZW5lciAtLSBUaGUgaGFuZGxlciBpcyBhc3NpZ25lZCB0byBgb25jbGlja2Agc28gaXQgc3RheXMgcmVhZGFibGUgYmFjayBvZmYgdGhlIGVsZW1lbnQsIHdoaWNoIGlzIGhvdyBpdCBpcyBpbnZva2VkIGluIHRlc3RzIGFuZCBob3cgYSBsYXRlciBhc3NpZ25tZW50IGNhbiByZXBsYWNlIGl0LlxuICAgICAgICBsaW5rLm9uY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLWFkZC1ldmVudC1saXN0ZW5lciAtLSBUaGUgaGFuZGxlciBpcyBhc3NpZ25lZCB0byBgb25jbGlja2Agc28gaXQgc3RheXMgcmVhZGFibGUgYmFjayBvZmYgdGhlIGVsZW1lbnQsIHdoaWNoIGlzIGhvdyBpdCBpcyBpbnZva2VkIGluIHRlc3RzIGFuZCBob3cgYSBsYXRlciBhc3NpZ25tZW50IGNhbiByZXBsYWNlIGl0LlxuICAgICAgICBsaW5rLm9uY2xpY2sgPSBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKGV2ZW50OiBNb3VzZUV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBhd2FpdCByZW5kZXJQYWdlKGN1cnJlbnRQYWdlTnVtYmVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluaztcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnRhaW5lci5lbXB0eSgpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL25vLWZvcmJpZGRlbi1lbGVtZW50cyAtLSBXZSBuZWVkIHRvIGNyZWF0ZSBhIHN0eWxlIGVsZW1lbnQgdG8gYXBwbHkgdGhlIHBhZ2luYXRpb24gQ1NTLlxuICAgIGNvbnRhaW5lci5jcmVhdGVFbCgnc3R5bGUnLCB7IHRleHQ6IHBhZ2luYXRpb25Dc3MgfSk7XG5cbiAgICBjb25zdCBzdGFydEluZGV4ID0gKHBhZ2VOdW1iZXIgLSAxKSAqIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBpdGVtc1BlclBhZ2U7XG4gICAgY29uc3Qgcm93c0ZvckN1cnJlbnRQYWdlID0gcm93cy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCk7XG5cbiAgICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG5cbiAgICBkdi5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHBhcmFtcy5yZW5kZXJlcihyb3dzRm9yQ3VycmVudFBhZ2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkdi5wYXJhZ3JhcGgoYFx1Mjc0QyR7ZXJyb3JUb1N0cmluZyhlcnJvcil9YCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF0b21pYy11cGRhdGVzIC0tIFllcywgaXQgaXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24sIGJ1dCBJIGRvbid0IGFuIGVsZWdhbnQgd2F5IHRvIGZpeCBpdC5cbiAgICAgIGR2LmNvbnRhaW5lciA9IG9sZENvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBjcmVhdGVQYWdpbmF0aW9uQ29udHJvbHMocGFnZU51bWJlcik7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBY0EsbUJBQW1DO0FBQ25DLG1CQUE4QjtBQUM5Qix5QkFBa0M7QUFLbEMseUJBR087QUFDUCxrQkFBa0I7QUFDbEIsMEJBQTBDO0FBb0cxQyxlQUFzQix1QkFBdUIsSUFBc0M7QUFDakYsUUFBTSxhQUFhLGFBQWEsTUFBTSxXQUFPLDRCQUFRO0FBQUEsSUFDbkQsS0FBSyxHQUFHO0FBQUEsSUFDUixZQUFZLEdBQUcsUUFBUSxFQUFFLEtBQUs7QUFBQSxFQUNoQyxDQUFDLENBQUM7QUFDSjtBQUVBLE1BQU0sZ0JBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxTXRCLGVBQXNCLHFCQUFxQixJQUF1QixVQUFpRTtBQUNqSSxRQUFNLGVBQWUsR0FBRztBQUN4QixRQUFNLHFCQUFxQixHQUFHLFVBQVUsRUFBRTtBQUMxQyxLQUFHLFlBQVk7QUFDZixLQUFHLFVBQVUsTUFBTTtBQUVuQixNQUFJO0FBQ0YsVUFBTSxTQUFTO0FBQUEsRUFDakIsU0FBUyxPQUFPO0FBQ2QsT0FBRyxVQUFVLGFBQUksNEJBQWMsS0FBSyxDQUFDLEVBQUU7QUFBQSxFQUN6QyxVQUFFO0FBRUEsT0FBRyxZQUFZO0FBQ2Ys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
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @file
4
4
  *
5
- * This module provides utility functions for working with Dataview in Obsidian.
5
+ * This module provides utility functions for working with `Dataview` in Obsidian.
6
6
  */
7
7
  import type { DataArray, DataviewApi, SMarkdownPage } from '@mnaoumov/obsidian-dataview' with { 'resolution-mode': 'import' };
8
8
  import type { DataviewInlineApi as DataviewInlineApiOriginal } from '@mnaoumov/obsidian-dataview/api/inline-api' with { 'resolution-mode': 'import' };
@@ -10,17 +10,17 @@ import type { Promisable } from 'type-fest' with { 'resolution-mode': 'import' }
10
10
  import type { PathOrFile } from './file-system.cjs';
11
11
  import type { CombinedFrontmatter } from './frontmatter.cjs';
12
12
  /**
13
- * Export DateTime and Link types from the Dataview API.
13
+ * Export DateTime and Link types from the `Dataview` API.
14
14
  */
15
15
  export type { DateTime, Link } from '@mnaoumov/obsidian-dataview';
16
16
  declare global {
17
17
  /**
18
- * A {@link DataviewApi} object represents the API for interacting with Dataview in Obsidian.
18
+ * A {@link DataviewApi} object represents the API for interacting with `Dataview` in Obsidian.
19
19
  */
20
20
  var DataviewAPI: DataviewApi | undefined;
21
21
  interface Window {
22
22
  /**
23
- * The global {@link DataviewApi} object Dataview installs on every window.
23
+ * The global {@link DataviewApi} object `Dataview` installs on every window.
24
24
  */
25
25
  DataviewAPI?: DataviewApi;
26
26
  }
@@ -32,7 +32,7 @@ declare global {
32
32
  */
33
33
  export type CombinedPage<CustomFrontmatter = unknown> = CombinedFrontmatter<CustomFrontmatter> & SMarkdownPage;
34
34
  /**
35
- * Extended interface for the Dataview Inline API, providing additional methods for custom page types and array handling.
35
+ * Extended interface for the `Dataview` Inline API, providing additional methods for custom page types and array handling.
36
36
  */
37
37
  export interface DataviewInlineApi extends DataviewInlineApiOriginal {
38
38
  /**
@@ -83,7 +83,7 @@ interface ContainerInfo {
83
83
  container?: HTMLElement;
84
84
  }
85
85
  /**
86
- * Reloads the current file cache using the Dataview API.
86
+ * Reloads the current file cache using the `Dataview` API.
87
87
  *
88
88
  * @param dv - The DataviewInlineApi instance.
89
89
  * @returns A {@link Promise} that resolves when the cache is reloaded.
@@ -222,13 +222,13 @@ export interface RenderPaginatedTableParams<T> {
222
222
  */
223
223
  export declare function getRenderedContainer(dv: DataviewInlineApi, renderer: () => Promisable<void>): Promise<HTMLParagraphElement>;
224
224
  /**
225
- * Inserts a code block into the specified Dataview instance using the provided language and code.
225
+ * Inserts a code block into the specified `Dataview` instance using the provided language and code.
226
226
  *
227
227
  * @param params - The parameters for inserting the code block.
228
228
  */
229
229
  export declare function insertCodeBlock(params: InsertCodeBlockParams): void;
230
230
  /**
231
- * Renders an iframe in the Dataview container with the specified relative path, width, and height.
231
+ * Renders an iframe in the `Dataview` container with the specified relative path, width, and height.
232
232
  *
233
233
  * @param params - The parameters for rendering the iframe.
234
234
  */
@@ -128,4 +128,4 @@ var __copyProps = (to, from, except, desc) => {
128
128
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
129
129
  var demo_vault_helper_settings_exports = {};
130
130
  module.exports = __toCommonJS(demo_vault_helper_settings_exports);
131
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlbW8tdmF1bHQtaGVscGVyLXNldHRpbmdzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGBkZW1vLXZhdWx0LWhlbHBlcmAgcGx1Z2luJ3Mgb3duIHNldHRpbmdzIFx1MjAxNCB0aGUgY29udHJhY3QgYmV0d2VlbiB0aGUgZGVtby12YXVsdCBwYWNrYWdpbmcgc3RlcFxuICogYW5kIHRoZSBib290c3RyYXAgdGhhdCBydW5zIGluc2lkZSB0aGUgb3BlbmVkIHZhdWx0LlxuICpcbiAqIFRoZSBoZWxwZXIgaGFzIHRvIG5hbWUgdGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzLCBhbmQgbm90aGluZyBpbnNpZGUgdGhlIHZhdWx0IHJlbGlhYmx5IHNheXNcbiAqIHdoaWNoIG9uZSB0aGF0IGlzOiB0aGUgcGx1Z2luIGZvbGRlcnMgYWxzbyBob2xkIHRoZSBoZWxwZXIgaXRzZWxmLCBDb2RlU2NyaXB0IFRvb2xraXQgb25jZSB0aGVcbiAqIGJvb3RzdHJhcCBoYXMgaW5zdGFsbGVkIGl0LCBhbmQgYW55dGhpbmcgYSBkZW1vIG5vdGUncyBwcmVyZXF1aXNpdGVzIGluc3RhbGxlZCwgc28gY291bnRpbmcgdGhlbVxuICogZ3Vlc3NlcyAoYW5kIGd1ZXNzZXMgZGlmZmVyZW50bHkgb24gYSByZS1vcGVuKS4gVGhlIHBhY2thZ2luZyBzdGVwLCBvbiB0aGUgb3RoZXIgaGFuZCwgS05PV1MgXHUyMDE0IGl0XG4gKiByZWFkcyB0aGUgcGx1Z2luJ3MgYG1hbmlmZXN0Lmpzb25gIHRvIG5hbWUgdGhlIGFyY2hpdmUgXHUyMDE0IHNvIGl0IHdyaXRlcyB0aGUgaWQgZG93biBoZXJlIGFuZCB0aGVcbiAqIGJvb3RzdHJhcCBzaW1wbHkgcmVhZHMgaXQuXG4gKlxuICogVGhlIG1hcmtlciBhbmQgdGhlIGhlbHBlciBiaW5hcnkgYXJlIHdyaXR0ZW4gdG9nZXRoZXIsIGJ5IHRoZSBzYW1lIGBvYnNpZGlhbi1kZXYtdXRpbHNgIHZlcnNpb24sIGludG9cbiAqIHRoZSBzYW1lIGFyY2hpdmUsIHNvIHRoZSB0d28gY2FuIG5ldmVyIGRpc2FncmVlLlxuICpcbiAqIEtlcHQgZnJlZSBvZiBgb2JzaWRpYW5gIGltcG9ydHMgb24gcHVycG9zZTogdGhlIHBhY2thZ2luZyBzdGVwICh7QGxpbmsgYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdH0pIHJ1bnNcbiAqIHVuZGVyIE5vZGUsIHdoZXJlIHRoZSBgb2JzaWRpYW5gIG1vZHVsZSBkb2VzIG5vdCBleGlzdC5cbiAqL1xuXG4vKipcbiAqIFRoZSBgZGVtby12YXVsdC1oZWxwZXJgIHBsdWdpbidzIGBkYXRhLmpzb25gLCB3cml0dGVuIGludG8gdGhlIGRlbW8gdmF1bHQgYXQgcGFja2FnaW5nIHRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3Mge1xuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBwbHVnaW4gdGhlIHZhdWx0IGRlbW9uc3RyYXRlcywgdGFrZW4gZnJvbSB0aGF0IHBsdWdpbidzIGBtYW5pZmVzdC5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbW9lZFBsdWdpbklkOiBzdHJpbmc7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
131
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlbW8tdmF1bHQtaGVscGVyLXNldHRpbmdzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGBkZW1vLXZhdWx0LWhlbHBlcmAgcGx1Z2luJ3Mgb3duIHNldHRpbmdzIFx1MjAxNCB0aGUgY29udHJhY3QgYmV0d2VlbiB0aGUgZGVtby12YXVsdCBwYWNrYWdpbmcgc3RlcFxuICogYW5kIHRoZSBib290c3RyYXAgdGhhdCBydW5zIGluc2lkZSB0aGUgb3BlbmVkIHZhdWx0LlxuICpcbiAqIFRoZSBoZWxwZXIgaGFzIHRvIG5hbWUgdGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzLCBhbmQgbm90aGluZyBpbnNpZGUgdGhlIHZhdWx0IHJlbGlhYmx5IHNheXNcbiAqIHdoaWNoIG9uZSB0aGF0IGlzOiB0aGUgcGx1Z2luIGZvbGRlcnMgYWxzbyBob2xkIHRoZSBoZWxwZXIgaXRzZWxmLCBgQ29kZVNjcmlwdCBUb29sa2l0YCBvbmNlIHRoZVxuICogYm9vdHN0cmFwIGhhcyBpbnN0YWxsZWQgaXQsIGFuZCBhbnl0aGluZyBhIGRlbW8gbm90ZSdzIHByZXJlcXVpc2l0ZXMgaW5zdGFsbGVkLCBzbyBjb3VudGluZyB0aGVtXG4gKiBndWVzc2VzIChhbmQgZ3Vlc3NlcyBkaWZmZXJlbnRseSBvbiBhIHJlLW9wZW4pLiBUaGUgcGFja2FnaW5nIHN0ZXAsIG9uIHRoZSBvdGhlciBoYW5kLCBLTk9XUyBcdTIwMTQgaXRcbiAqIHJlYWRzIHRoZSBwbHVnaW4ncyBgbWFuaWZlc3QuanNvbmAgdG8gbmFtZSB0aGUgYXJjaGl2ZSBcdTIwMTQgc28gaXQgd3JpdGVzIHRoZSBpZCBkb3duIGhlcmUgYW5kIHRoZVxuICogYm9vdHN0cmFwIHNpbXBseSByZWFkcyBpdC5cbiAqXG4gKiBUaGUgbWFya2VyIGFuZCB0aGUgaGVscGVyIGJpbmFyeSBhcmUgd3JpdHRlbiB0b2dldGhlciwgYnkgdGhlIHNhbWUgYG9ic2lkaWFuLWRldi11dGlsc2AgdmVyc2lvbiwgaW50b1xuICogdGhlIHNhbWUgYXJjaGl2ZSwgc28gdGhlIHR3byBjYW4gbmV2ZXIgZGlzYWdyZWUuXG4gKlxuICogS2VwdCBmcmVlIG9mIGBvYnNpZGlhbmAgaW1wb3J0cyBvbiBwdXJwb3NlOiB0aGUgcGFja2FnaW5nIHN0ZXAgKHtAbGluayBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0fSkgcnVuc1xuICogdW5kZXIgTm9kZSwgd2hlcmUgdGhlIGBvYnNpZGlhbmAgbW9kdWxlIGRvZXMgbm90IGV4aXN0LlxuICovXG5cbi8qKlxuICogVGhlIGBkZW1vLXZhdWx0LWhlbHBlcmAgcGx1Z2luJ3MgYGRhdGEuanNvbmAsIHdyaXR0ZW4gaW50byB0aGUgZGVtbyB2YXVsdCBhdCBwYWNrYWdpbmcgdGltZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzLCB0YWtlbiBmcm9tIHRoYXQgcGx1Z2luJ3MgYG1hbmlmZXN0Lmpzb25gLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVtb2VkUGx1Z2luSWQ6IHN0cmluZztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -6,7 +6,7 @@
6
6
  * and the bootstrap that runs inside the opened vault.
7
7
  *
8
8
  * The helper has to name the plugin the vault demonstrates, and nothing inside the vault reliably says
9
- * which one that is: the plugin folders also hold the helper itself, CodeScript Toolkit once the
9
+ * which one that is: the plugin folders also hold the helper itself, `CodeScript Toolkit` once the
10
10
  * bootstrap has installed it, and anything a demo note's prerequisites installed, so counting them
11
11
  * guesses (and guesses differently on a re-open). The packaging step, on the other hand, KNOWS — it
12
12
  * reads the plugin's `manifest.json` to name the archive — so it writes the id down here and the
@@ -230,4 +230,4 @@ function showSandboxNotice(app, demoedPluginId) {
230
230
  0 && (module.exports = {
231
231
  bootstrapDemoVault
232
232
  });
233
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlbW8tdmF1bHQtaGVscGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgYnkgaW5zdGFsbGluZywgY29uZmlndXJpbmcsIGFuZCBlbmFibGluZyBDb2RlU2NyaXB0IFRvb2xraXQuXG4gKlxuICogQSBwbHVnaW4ncyBkZW1vIHZhdWx0IHNob3djYXNlcyB0aGUgcGx1Z2luIHRocm91Z2ggbm90ZXMgd2hvc2UgYGNvZGUtYnV0dG9uYHMgcnVuIFR5cGVTY3JpcHQgdmlhXG4gKiBDb2RlU2NyaXB0IFRvb2xraXQuIEEgZGVtbyB2YXVsdCB0aGF0IGRvZXMgbm90IGl0c2VsZiBzaGlwIENvZGVTY3JpcHQgVG9vbGtpdCB0aGVyZWZvcmUgbmVlZHMgaXRcbiAqIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWQgYmVmb3JlIHRob3NlIGJ1dHRvbnMgd29yay4ge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0gZG9lcyBleGFjdGx5XG4gKiB0aGF0IHdpdGggbm8gY29tbWl0dGVkIENvZGVTY3JpcHQgVG9vbGtpdCBjb25maWcgYW5kIG5vIG1hbnVhbCBzZXR1cCwgc28gaXQgY2FuIGJlIGRyaXZlbiBmcm9tIGEgdGlueVxuICogY29tbWl0dGVkIGJvb3RzdHJhcCBwbHVnaW4gKGBkZW1vLXZhdWx0LWhlbHBlcmApIHRoYXQgaXMgaW5qZWN0ZWQgaW50byBldmVyeSBkZW1vIHZhdWx0IGF0IHJlbGVhc2VcbiAqIHRpbWUuXG4gKlxuICogVGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzIGlzIHJlYWQgZnJvbSB0aGUgaGVscGVyJ3Mgb3duIGBkYXRhLmpzb25gLCB3cml0dGVuIGJ5IHRoZSBwYWNrYWdpbmdcbiAqIHN0ZXAgKHtAbGluayBEZW1vVmF1bHRIZWxwZXJTZXR0aW5nc30pOyBhIHZhdWx0IHdpdGhvdXQgdGhhdCBtYXJrZXIgaXMgcmVmdXNlZCBhcyBub3QgYSBkZW1vIHZhdWx0LlxuICpcbiAqIEl0IHdyaXRlcyBDb2RlU2NyaXB0IFRvb2xraXQncyBzZXR0aW5ncyBCRUZPUkUgZW5hYmxpbmcgaXQsIHNvIHRoZSBwbHVnaW4gbG9hZHMgYWxyZWFkeSBjb25maWd1cmVkIFx1MjAxNFxuICogbm8gcmVsb2FkLiBDb2RlU2NyaXB0IFRvb2xraXQgdGhlbiBydW5zIHRoZSB2YXVsdCdzIGBzdGFydHVwLnRzYCAodmlhIGl0cyBgc3RhcnR1cFNjcmlwdFBhdGhgXG4gKiBzZXR0aW5nKSwgd2hpY2ggaXMgd2hlcmUgZWFjaCB2YXVsdCBvcGVucyBpdHMgc3RhcnQgbm90ZSBhbmQgZG9lcyBhbnkgcGx1Z2luLXNwZWNpZmljIHNldHVwLlxuICpcbiAqIEl0IGFsc28gY3JlYXRlcyBDb2RlU2NyaXB0IFRvb2xraXQncyBpbnZvY2FibGUtc2NyaXB0cyBmb2xkZXIgaWYgaXQgaXMgbWlzc2luZywgc28gZXZlcnkgZGVtbyB2YXVsdFxuICogaGFzIHRoZSBzYW1lIGxheW91dCBldmVuIHdoZW4gdGhlIHZhdWx0IHNoaXBzIG5vIGludm9jYWJsZSBzY3JpcHRzIFx1MjAxNCB0aGUgdmF1bHRzIHRoZW1zZWx2ZXMgY29tbWl0IG5vXG4gKiBlbXB0eSBmb2xkZXIgZm9yIGl0LlxuICpcbiAqIEl0IHRoZW4gaW5zdGFsbHMgdGhlIEZvbGRlciBOb3RlcyBwbHVnaW4sIGNvbmZpZ3VyZWQgdG8gdHJlYXQgYFJFQURNRS5tZGAgYXMgYSBmb2xkZXIncyBvd24gbm90ZS4gQVxuICogZGVtbyB2YXVsdCB0aGF0IGhhcyBvdXRncm93biBhIGZsYXQgbm90ZSBsaXN0IGdyb3VwcyBpdHMgbm90ZXMgaW50byBmb2xkZXJzLCBhbmQgYSBncm91cCBmb2xkZXIgb25seVxuICogc2F5cyB3aGF0IGl0IGlzIGZvciBpZiBpdCBoYXMgYSBub3RlIG9mIGl0cyBvd24gXHUyMDE0IGBSRUFETUUubWRgLCBiZWNhdXNlIHRoYXQgaXMgYWxzbyB0aGUgZmlsZSBHaXRIdWJcbiAqIHJlbmRlcnMgdW5kZXIgdGhlIGZpbGUgbGlzdCB3aGVuIHRoZSBzYW1lIHZhdWx0IGlzIGJyb3dzZWQgYXMgYSByZXBvc2l0b3J5LCBzbyBvbmUgZmlsZSBzZXJ2ZXMgYm90aFxuICogcmVhZGVycy5cbiAqXG4gKiBGaW5hbGx5IGl0IHJhaXNlcyB0aGUgc2FuZGJveCBub3RpY2UgZXhwbGFpbmluZyB0aGF0IHRoZSBvcGVuZWQgdmF1bHQgaXMgYSB0aHJvd2F3YXkgY29weSwgc28gYSB1c2VyXG4gKiB3aG8gd3JpdGVzIHRoZWlyIG93biBub3RlcyBpbiBpdCBpcyBuZXZlciBzdXJwcmlzZWQgYnkgdGhlbSBiZWluZyBhYnNlbnQgZnJvbSB0aGUgbmV4dCBjb3B5LiBTZXR0aW5nc1xuICogaXMgY2xvc2VkIGZpcnN0LCBzbyB0aGUgbm90aWNlIGxhbmRzIGluIHRoZSB2YXVsdCdzIG1haW4gd2luZG93IHJhdGhlciB0aGFuIGluIHRoZSBzZXR0aW5ncyBwb3BvdXQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IERlbW9WYXVsdEhlbHBlclNldHRpbmdzIH0gZnJvbSAnLi9kZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncy50cyc7XG5cbmltcG9ydCB7XG4gIGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbixcbiAgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LFxuICBkaXNhYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBlbmFibGVDb21tdW5pdHlQbHVnaW4sXG4gIGluc3RhbGxDb21tdW5pdHlQbHVnaW4sXG4gIGluc3RhbGxDb25maWd1cmVFbmFibGVDb21tdW5pdHlQbHVnaW5cbn0gZnJvbSAnLi9jb21tdW5pdHktcGx1Z2lucy50cyc7XG5pbXBvcnQgeyBhcHBlbmRDb2RlQmxvY2sgfSBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwRGVtb1ZhdWx0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbn1cblxuLyoqXG4gKiBDb2RlU2NyaXB0IFRvb2xraXQncyBzZXR0aW5ncywgd3JpdHRlbiBpbnRvIGl0cyBgZGF0YS5qc29uYCBiZWZvcmUgaXQgaXMgZW5hYmxlZC5cbiAqL1xuaW50ZXJmYWNlIENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3Mge1xuICAvKipcbiAgICogVGhlIFlBTUwgZnJvbnRtYXR0ZXIgbWVyZ2VkIGludG8gZXZlcnkgYGNvZGUtYnV0dG9uYCBibG9jaydzIG93biBjb25maWcsIHVzZWQgaGVyZSB0byB0dXJuIHRoZVxuICAgKiBzb3VyY2Ugdmlld2VyIG9uIGZvciBldmVyeSBidXR0b24gaW4gZXZlcnkgZGVtbyB2YXVsdCB3aXRob3V0IGVkaXRpbmcgYSBzaW5nbGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb2RlQnV0dG9uQ29uZmlnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgKHVuZGVyIHtAbGluayBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzLm1vZHVsZXNSb290fSkgaG9sZGluZyBpbnZvY2FibGUgc2NyaXB0cy5cbiAgICovXG4gIHJlYWRvbmx5IGludm9jYWJsZVNjcmlwdHNGb2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIGZvbGRlciB0aGF0IGByZXF1aXJlKCcvXHUyMDI2JylgIHJlc29sdmVzIG1vZHVsZSBwYXRocyBhZ2FpbnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc1Jvb3Q6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBDb2RlU2NyaXB0IFRvb2xraXQgaGFuZGxlcyBgb2JzaWRpYW46Ly9gIHByb3RvY29sIFVSTHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRIYW5kbGVQcm90b2NvbFVybHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoICh1bmRlciB7QGxpbmsgQ29kZVNjcmlwdFRvb2xraXRTZXR0aW5ncy5tb2R1bGVzUm9vdH0pIG9mIHRoZSBzY3JpcHQgcnVuIG9uIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzdGFydHVwU2NyaXB0UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZvbGRlciBOb3Rlcycgc2V0dGluZ3MsIHdyaXR0ZW4gaW50byBpdHMgYGRhdGEuanNvbmAgYmVmb3JlIGl0IGlzIGVuYWJsZWQuXG4gKi9cbmludGVyZmFjZSBGb2xkZXJOb3Rlc1NldHRpbmdzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIGEgZm9sZGVyJ3Mgb3duIG5vdGUgaXMgbG9va2VkIGZvciB1bmRlciwgd2l0aG91dCB0aGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyTm90ZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBhIGZvbGRlcidzIG93biBub3RlIGlzIGhpZGRlbiBmcm9tIHRoZSBmaWxlIGV4cGxvcmVyLCBzbyB0aGUgZm9sZGVyIGl0c2VsZiBzdGFuZHMgZm9yIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgaGlkZUZvbGRlck5vdGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXJlIGEgZm9sZGVyJ3Mgb3duIG5vdGUgaXMga2VwdCwgcmVsYXRpdmUgdG8gdGhlIGZvbGRlciBpdCBkZXNjcmliZXMuXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlTG9jYXRpb246IHN0cmluZztcbn1cblxuY29uc3QgQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgPSAnZml4LXJlcXVpcmUtbW9kdWxlcyc7XG5jb25zdCBDT0RFX1NDUklQVF9UT09MS0lUX01PRFVMRVNfUk9PVCA9ICdfYXNzZXRzL0NvZGVTY3JpcHRUb29sa2l0JztcbmNvbnN0IENPREVfU0NSSVBUX1RPT0xLSVRfU0VUVElOR1M6IENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3MgPSB7XG4gIGRlZmF1bHRDb2RlQnV0dG9uQ29uZmlnOiAnLS0tXFxuc291cmNlVmlzaWJpbGl0eTogY29sbGFwc2VkXFxuLS0tJyxcbiAgaW52b2NhYmxlU2NyaXB0c0ZvbGRlcjogJ0ludm9jYWJsZXMnLFxuICBtb2R1bGVzUm9vdDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9NT0RVTEVTX1JPT1QsXG4gIHNob3VsZEhhbmRsZVByb3RvY29sVXJsczogdHJ1ZSxcbiAgc3RhcnR1cFNjcmlwdFBhdGg6ICdzdGFydHVwLnRzJ1xufTtcblxuY29uc3QgRk9MREVSX05PVEVTX1BMVUdJTl9JRCA9ICdmb2xkZXItbm90ZXMnO1xuLy8gYFJFQURNRWAgcmF0aGVyIHRoYW4gRm9sZGVyIE5vdGVzJyBvd24gYHt7Zm9sZGVyX25hbWV9fWAgZGVmYXVsdDogdGhlIHNhbWUgZmlsZSBoYXMgdG8gYmUgdGhlIGZvbGRlcidzXG4vLyBub3RlIGluIE9ic2lkaWFuIEFORCB0aGUgcGFnZSBHaXRIdWIgcmVuZGVycyB3aGVuIHRoZSB2YXVsdCBpcyBicm93c2VkIGFzIGEgcmVwb3NpdG9yeSwgYW5kIEdpdEh1YlxuLy8gb25seSBkb2VzIHRoYXQgZm9yIGBSRUFETUUubWRgLiBgaW5zaWRlRm9sZGVyYCBrZWVwcyBpdCB3aXRoIHRoZSBub3RlcyBpdCBkZXNjcmliZXMgcmF0aGVyIHRoYW4gYmVzaWRlXG4vLyB0aGUgZm9sZGVyLCBhbmQgaGlkaW5nIGl0IGxldHMgdGhlIGZvbGRlciBpdHNlbGYgc3RhbmQgZm9yIHRoZSBub3RlIGluc3RlYWQgb2YgbGlzdGluZyBib3RoLlxuY29uc3QgRk9MREVSX05PVEVTX1NFVFRJTkdTOiBGb2xkZXJOb3Rlc1NldHRpbmdzID0ge1xuICBmb2xkZXJOb3RlTmFtZTogJ1JFQURNRScsXG4gIGhpZGVGb2xkZXJOb3RlOiB0cnVlLFxuICBzdG9yYWdlTG9jYXRpb246ICdpbnNpZGVGb2xkZXInXG59O1xuXG5jb25zdCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQgPSAnZGVtby12YXVsdC1oZWxwZXInO1xuY29uc3QgUExVR0lOU19GT0xERVJfTkFNRSA9ICdwbHVnaW5zJztcbmNvbnN0IERBVEFfSlNPTl9GSUxFX05BTUUgPSAnZGF0YS5qc29uJztcbmNvbnN0IElOVkFMSURfREVNT19WQVVMVF9FUlJPUl9NRVNTQUdFID0gJ0ludmFsaWQgZGVtbyB2YXVsdCc7XG5jb25zdCBPUEVOX0RFTU9fVkFVTFRfQ09NTUFORF9OQU1FID0gJ09wZW4gZGVtbyB2YXVsdCc7XG4vLyBgMGAgYXNrcyBPYnNpZGlhbiB0byBrZWVwIHRoZSBub3RpY2UgdXAgdW50aWwgdGhlIHVzZXIgY2xpY2tzIGl0IFx1MjAxNCB0aGUgc2FtZSB0cmVhdG1lbnQgT2JzaWRpYW4gZ2l2ZXNcbi8vIGl0cyBvd24gc2FuZGJveC12YXVsdCBub3RpY2UsIGFuZCB3aGF0IHRoZSBkZW1vLXZhdWx0IG5vdGljZSBpcyBtb2RlbGxlZCBvbi5cbmNvbnN0IFNBTkRCT1hfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyA9IDA7XG5cbi8qKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgc28gaXRzIG5vdGVzJyBgY29kZS1idXR0b25gcyB3b3JrIHdpdGggbm8gbWFudWFsIHNldHVwOiBpbnN0YWxscyBDb2RlU2NyaXB0XG4gKiBUb29sa2l0IGZyb20gdGhlIGNvbW11bml0eSBzdG9yZSAoaWYgaXQgaXMgbm90IGFscmVhZHkgaW5zdGFsbGVkKSwgd3JpdGVzIGl0cyBzZXR0aW5ncywgdGhlbiBlbmFibGVzXG4gKiBpdCBcdTIwMTQgd3JpdGluZyB0aGUgc2V0dGluZ3MgQkVGT1JFIGVuYWJsaW5nIHNvIGEgZnJlc2ggZW5hYmxlIGxvYWRzIGl0IGFscmVhZHkgY29uZmlndXJlZCwgd2l0aCBub1xuICogcmVsb2FkLiBJZiBDb2RlU2NyaXB0IFRvb2xraXQgaXMgYWxyZWFkeSBlbmFibGVkIGJ1dCB0aGUgc2V0dGluZ3MganVzdCBjaGFuZ2VkLCBpdCBpcyByZWxvYWRlZFxuICogKGRpc2FibGVkIHRoZW4gZW5hYmxlZCkgc28gaXQgcmUtcmVhZHMgYGRhdGEuanNvbmA7IHdoZW4gdGhlIHNldHRpbmdzIHdlcmUgYWxyZWFkeSBpbiBwbGFjZSwgbm90aGluZyBpc1xuICogcmVsb2FkZWQgKHNvIGEgcm91dGluZSB2YXVsdCByZS1vcGVuIGRvZXMgbm90IHJlLXJ1biBDb2RlU2NyaXB0IFRvb2xraXQncyBzdGFydHVwKS4gQ29kZVNjcmlwdCBUb29sa2l0XG4gKiB0aGVuIHJ1bnMgdGhlIHZhdWx0J3MgYHN0YXJ0dXAudHNgLiBGb2xkZXIgTm90ZXMgaXMgaW5zdGFsbGVkIG5leHQsIGNvbmZpZ3VyZWQgdG8gdHJlYXQgYFJFQURNRS5tZGAgYXNcbiAqIGEgZm9sZGVyJ3Mgb3duIG5vdGUsIHNvIGEgdmF1bHQgd2hvc2Ugbm90ZXMgYXJlIGdyb3VwZWQgaW50byBmb2xkZXJzIGRlc2NyaWJlcyBlYWNoIGdyb3VwIGluIHRoZSBmaWxlXG4gKiBleHBsb3Jlci4gRmluYWxseSBpdCBjbG9zZXMgU2V0dGluZ3MgKHNvIHRoZSBub3RpY2UgY2Fubm90IGJlIHJhaXNlZCBpbnNpZGUgdGhlIHNldHRpbmdzIHBvcG91dCkgYW5kXG4gKiByYWlzZXMgdGhlIHNhbmRib3ggbm90aWNlIGRlc2NyaWJpbmcgdGhlIG9wZW5lZCB2YXVsdCBhcyBhIHRocm93YXdheSBjb3B5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEJvb3RzdHJhcERlbW9WYXVsdFBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgQ29kZVNjcmlwdCBUb29sa2l0IGlzIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWRcbiAqIGFuZCB0aGUgc2FuZGJveCBub3RpY2UgaGFzIGJlZW4gc2hvd24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBib290c3RyYXBEZW1vVmF1bHQocGFyYW1zOiBCb290c3RyYXBEZW1vVmF1bHRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAgfSA9IHBhcmFtcztcbiAgLy8gUmVzb2x2ZWQgZmlyc3QsIHNvIGEgdmF1bHQgdGhhdCBpcyBub3QgYSBkZW1vIHZhdWx0IGlzIHJlZnVzZWQgYmVmb3JlIGFueXRoaW5nIGlzIGluc3RhbGxlZCBpbnRvIGl0LlxuICBjb25zdCBkZW1vZWRQbHVnaW5JZCA9IGF3YWl0IGdldERlbW9lZFBsdWdpbklkKGFwcCk7XG4gIGF3YWl0IGluc3RhbGxDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uZmlndXJlQ29tbXVuaXR5UGx1Z2luKHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQ6IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lELFxuICAgIHNldHRpbmdzOiBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTXG4gIH0pO1xuICBhd2FpdCBlbnN1cmVJbnZvY2FibGVTY3JpcHRzRm9sZGVyKGFwcCk7XG5cbiAgaWYgKCFhcHAucGx1Z2lucy5lbmFibGVkUGx1Z2lucy5oYXMoQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQpKSB7XG4gICAgYXdhaXQgZW5hYmxlQ29tbXVuaXR5UGx1Z2luKHsgYXBwLCBwbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgfSk7XG4gIH0gZWxzZSBpZiAocmVzdWx0ID09PSBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQuU3VjY2Vzcykge1xuICAgIC8vIEFscmVhZHkgZW5hYmxlZCB3aXRoIHN0YWxlIHNldHRpbmdzIFx1MjAxNCByZWxvYWQgc28gQ29kZVNjcmlwdCBUb29sa2l0IHJlLXJlYWRzIHRoZSBmcmVzaGx5IHdyaXR0ZW4gZGF0YS5qc29uLlxuICAgIGF3YWl0IGRpc2FibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgfVxuXG4gIC8vIEFmdGVyIENvZGVTY3JpcHQgVG9vbGtpdCwgc28gdGhlIHZhdWx0J3Mgc3RhcnR1cCBzY3JpcHQgaGFzIGFscmVhZHkgb3BlbmVkIHRoZSBzdGFydCBub3RlIGJ5IHRoZSB0aW1lXG4gIC8vIHRoZSBmaWxlIGV4cGxvcmVyIGdhaW5zIGl0cyBmb2xkZXItbm90ZSBiZWhhdmlvci5cbiAgYXdhaXQgaW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpbih7XG4gICAgYXBwLFxuICAgIHBsdWdpbklkOiBGT0xERVJfTk9URVNfUExVR0lOX0lELFxuICAgIHNldHRpbmdzOiBGT0xERVJfTk9URVNfU0VUVElOR1NcbiAgfSk7XG5cbiAgc2hvd1NhbmRib3hOb3RpY2UoYXBwLCBkZW1vZWRQbHVnaW5JZCk7XG59XG5cbi8vIEJ1aWxkcyB0aGUgc2FuZGJveCBub3RpY2UgY29udGVudDogd2hhdCB0aGlzIHZhdWx0IGlzLCB3aGVyZSBpdCBsaXZlcywgaG93IGxvbmcgaXQgbGl2ZXMsIGFuZCB3aHlcbi8vIHJlLXJ1bm5pbmcgdGhlIGNvbW1hbmQgcHJvZHVjZXMgYSB2YXVsdCB3aXRob3V0IHRoZSBub3RlcyBqdXN0IHdyaXR0ZW4gaGVyZS5cbi8vXG4vLyBFdmVyeSBjbGFpbSBoYXMgdG8gc3RheSB0cnVlIG9mIHRoZSBvcGVuZXIgKGBkZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyLnRzYCk6IGl0IGV4dHJhY3RzIGEgRlJFU0ggY29weVxuLy8gaW50byBpdHMgb3duIGZvbGRlciBvbiBldmVyeSBvcGVuLCBhbmQgZGVsZXRlcyBleHRyYWN0ZWQgZm9sZGVycyBvbGRlciB0aGFuIGEgZGF5IG9uIGVhY2ggbGF0ZXIgb3Blbi5cbi8vIFNvIHRoZSB2YXVsdCBpcyBhIHRlbXBvcmFyeSBzYW5kYm94IFx1MjAxNCBpdCBtdXN0IG5ldmVyIGJlIGRlc2NyaWJlZCBhcyBhIHBsYWNlIHdvcmsgY2FuIGJlIGxlZnQuXG5mdW5jdGlvbiBidWlsZFNhbmRib3hOb3RpY2VGcmFnbWVudChwbHVnaW5OYW1lOiBzdHJpbmcpOiBEb2N1bWVudEZyYWdtZW50IHtcbiAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50KChmcmFnbWVudCkgPT4ge1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ1RoaXMgaXMgYSBkZW1vIHZhdWx0IGZvciAnKTtcbiAgICBhcHBlbmRDb2RlQmxvY2soZnJhZ21lbnQsIHBsdWdpbk5hbWUpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJy4nKTtcblxuICAgIGZyYWdtZW50LmNyZWF0ZUVsKCdicicpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ0l0IGlzIGEgdGVtcG9yYXJ5IHNhbmRib3gsIGNsZWFuZWQgdXAgYXV0b21hdGljYWxseSBhYm91dCBhIGRheSBhZnRlciB5b3UgbGFzdCB1c2UgaXQuJyk7XG5cbiAgICBmcmFnbWVudC5jcmVhdGVFbCgnYnInKTtcbiAgICBmcmFnbWVudC5hcHBlbmRUZXh0KCdFeGVjdXRpbmcgJyk7XG4gICAgZnJhZ21lbnQuY3JlYXRlRWwoJ2InLCB7IHRleHQ6IGAke3BsdWdpbk5hbWV9OiAke09QRU5fREVNT19WQVVMVF9DT01NQU5EX05BTUV9YCB9KTtcbiAgICBmcmFnbWVudC5hcHBlbmRUZXh0KCcgY29tbWFuZCBhZ2FpbiBjcmVhdGVzIGEgbmV3IGNvcHkgd2l0aCB0aGUgbGF0ZXN0IHBsdWdpbiB2ZXJzaW9uLCBzbyB5b3VyIG5vdGVzIHdpbGwgbm90IGFwcGVhciBpbiBpdC4nKTtcbiAgfSk7XG59XG5cbi8vIENyZWF0ZXMgQ29kZVNjcmlwdCBUb29sa2l0J3MgaW52b2NhYmxlLXNjcmlwdHMgZm9sZGVyICh1bmRlciBgbW9kdWxlc1Jvb3RgKSBpZiBpdCBpcyBtaXNzaW5nLlxuLy8gRXZlcnkgZGVtbyB2YXVsdCB0aGVuIGhhcyB0aGUgc2FtZSBDb2RlU2NyaXB0IFRvb2xraXQgbGF5b3V0IGV2ZW4gd2hlbiBpdCBzaGlwcyBubyBpbnZvY2FibGUgc2NyaXB0cy5cbi8vIFRoZSBjb21taXR0ZWQgdmF1bHQgdGhlcmVmb3JlIGNhcnJpZXMgbm8gb3RoZXJ3aXNlLWVtcHR5IHBsYWNlaG9sZGVyIGZvbGRlci5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZUludm9jYWJsZVNjcmlwdHNGb2xkZXIoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaW52b2NhYmxlU2NyaXB0c0ZvbGRlclBhdGggPSBqb2luKENPREVfU0NSSVBUX1RPT0xLSVRfTU9EVUxFU19ST09ULCBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTLmludm9jYWJsZVNjcmlwdHNGb2xkZXIpO1xuICBpZiAoIWF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCkpIHtcbiAgICBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5ta2RpcihpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCk7XG4gIH1cbn1cblxuLy8gUmVhZHMgdGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzIG91dCBvZiB0aGlzIGhlbHBlcidzIG93biBgZGF0YS5qc29uYCwgd3JpdHRlbiBieSB0aGVcbi8vIHBhY2thZ2luZyBzdGVwIChzZWUgYERlbW9WYXVsdEhlbHBlclNldHRpbmdzYCkuIEEgdmF1bHQgd2l0aG91dCBhIHJlYWRhYmxlIG1hcmtlciB3YXMgbm90IHByb2R1Y2VkIGJ5XG4vLyB0aGF0IHN0ZXAgXHUyMDE0IGhhbmQtYXNzZW1ibGVkLCBvciB1bnBhY2tlZCBmcm9tIHNvbWV0aGluZyB0aGF0IGlzIG5vdCBhIGRlbW8gdmF1bHQgXHUyMDE0IHNvIGl0IGlzIHJlZnVzZWRcbi8vIHJhdGhlciB0aGFuIGJvb3RzdHJhcHBlZCBhZ2FpbnN0IGEgZ3Vlc3MuXG5hc3luYyBmdW5jdGlvbiBnZXREZW1vZWRQbHVnaW5JZChhcHA6IEFwcCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNldHRpbmdzUGF0aCA9IGpvaW4oYXBwLnZhdWx0LmNvbmZpZ0RpciwgUExVR0lOU19GT0xERVJfTkFNRSwgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lELCBEQVRBX0pTT05fRklMRV9OQU1FKTtcbiAgaWYgKCFhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMoc2V0dGluZ3NQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RFTU9fVkFVTFRfRVJST1JfTUVTU0FHRSk7XG4gIH1cblxuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChzZXR0aW5nc1BhdGgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UsIHsgY2F1c2U6IGVycm9yIH0pO1xuICB9XG5cbiAgY29uc3QgZGVtb2VkUGx1Z2luSWQgPSAocGFyc2VkIGFzIG51bGwgfCBQYXJ0aWFsPERlbW9WYXVsdEhlbHBlclNldHRpbmdzPik/LmRlbW9lZFBsdWdpbklkO1xuICBpZiAodHlwZW9mIGRlbW9lZFBsdWdpbklkICE9PSAnc3RyaW5nJyB8fCBkZW1vZWRQbHVnaW5JZCA9PT0gRU1QVFkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UpO1xuICB9XG4gIHJldHVybiBkZW1vZWRQbHVnaW5JZDtcbn1cblxuLy8gVGVsbHMgdGhlIHVzZXIgdGhpcyB2YXVsdCBpcyBhIHNhbmRib3gsIHVzaW5nIE9ic2lkaWFuJ3Mgb3duIHNhbmRib3gtdmF1bHQgdHJlYXRtZW50OiBhbiBpbmZpbml0ZVxuLy8gZHVyYXRpb24sIGRpc21pc3NlZCBieSBjbGlja2luZyBpdC4gUmFpc2VkIGxhc3QsIHNvIGl0IGlzIHRoZSBuZXdlc3Qgbm90aWNlIG9uIHNjcmVlbiBvbmNlXG4vLyBDb2RlU2NyaXB0IFRvb2xraXQncyBzdGFydHVwIHNjcmlwdCBoYXMgZG9uZSBpdHMgb3duIHdvcmsuXG4vL1xuLy8gQSBgTm90aWNlYCBpcyBidWlsdCBpbnNpZGUgd2hhdGV2ZXIgd2luZG93IGlzIGFjdGl2ZSBhdCB0aGF0IG1vbWVudCwgYW5kIFNldHRpbmdzIGlzIGEgUE9QT1VUIFdJTkRPV1xuLy8gKHZlcmlmaWVkIG9uIDEuMTMuNikgdGhhdCBiZWNvbWVzIHRoZSBhY3RpdmUgb25lIHdoaWxlIGl0IGlzIG9wZW4gXHUyMDE0IHNvIGEgbm90aWNlIHJhaXNlZCB0aGVuIHdvdWxkIGJlXG4vLyBjcmVhdGVkIGluIHRoZSBzZXR0aW5ncyB3aW5kb3cgYW5kIHZhbmlzaCB3aXRoIGl0LiBTZXR0aW5ncyBpcyB0aGVyZWZvcmUgY2xvc2VkIGZpcnN0OiBPYnNpZGlhbiBoYW5kc1xuLy8gdGhlIG1haW4gd2luZG93IGJhY2sgYXMgdGhlIHBvcG91dCBnb2VzIGF3YXkgKHN5bmNocm9ub3VzbHksIGJlZm9yZSB0aGUgbm90aWNlIGlzIGJ1aWx0KSwgYW5kIGEgdXNlclxuLy8gd2hvIGhhcyBqdXN0IG9wZW5lZCBhIGRlbW8gdmF1bHQgd2FudHMgdG8gc2VlIHRoZSB2YXVsdCByYXRoZXIgdGhhbiBhIHNldHRpbmdzIHdpbmRvdyBhbnl3YXkuIENsb3Npbmdcbi8vIGFuIGFscmVhZHktY2xvc2VkIFNldHRpbmdzIGlzIGEgbm8tb3AsIHNvIG5vIG9wZW4tc3RhdGUgcHJvYmUgaXMgbmVlZGVkLlxuZnVuY3Rpb24gc2hvd1NhbmRib3hOb3RpY2UoYXBwOiBBcHAsIGRlbW9lZFBsdWdpbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcGx1Z2luTmFtZSA9IGFwcC5wbHVnaW5zLm1hbmlmZXN0c1tkZW1vZWRQbHVnaW5JZF0/Lm5hbWUgPz8gZGVtb2VkUGx1Z2luSWQ7XG4gIGNvbnN0IGZyYWdtZW50ID0gYnVpbGRTYW5kYm94Tm90aWNlRnJhZ21lbnQocGx1Z2luTmFtZSk7XG4gIGFwcC5zZXR0aW5nLmNsb3NlKCk7XG4gIG5ldyBOb3RpY2UoZnJhZ21lbnQsIFNBTkRCT1hfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0NBLGtCQUFxQjtBQUNyQixvQkFBc0I7QUFDdEIsc0JBQXVCO0FBSXZCLCtCQU9PO0FBQ1AsMEJBQWdDO0FBK0RoQyxNQUFNLGdDQUFnQztBQUN0QyxNQUFNLG1DQUFtQztBQUN6QyxNQUFNLCtCQUEwRDtBQUFBLEVBQzlELHlCQUF5QjtBQUFBLEVBQ3pCLHdCQUF3QjtBQUFBLEVBQ3hCLGFBQWE7QUFBQSxFQUNiLDBCQUEwQjtBQUFBLEVBQzFCLG1CQUFtQjtBQUNyQjtBQUVBLE1BQU0seUJBQXlCO0FBSy9CLE1BQU0sd0JBQTZDO0FBQUEsRUFDakQsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsaUJBQWlCO0FBQ25CO0FBRUEsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSxtQ0FBbUM7QUFDekMsTUFBTSwrQkFBK0I7QUFHckMsTUFBTSwwQ0FBMEM7QUFr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
233
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlbW8tdmF1bHQtaGVscGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgYnkgaW5zdGFsbGluZywgY29uZmlndXJpbmcsIGFuZCBlbmFibGluZyBgQ29kZVNjcmlwdCBUb29sa2l0YC5cbiAqXG4gKiBBIHBsdWdpbidzIGRlbW8gdmF1bHQgc2hvd2Nhc2VzIHRoZSBwbHVnaW4gdGhyb3VnaCBub3RlcyB3aG9zZSBgY29kZS1idXR0b25gcyBydW4gVHlwZVNjcmlwdCB2aWFcbiAqIGBDb2RlU2NyaXB0IFRvb2xraXRgLiBBIGRlbW8gdmF1bHQgdGhhdCBkb2VzIG5vdCBpdHNlbGYgc2hpcCBgQ29kZVNjcmlwdCBUb29sa2l0YCB0aGVyZWZvcmUgbmVlZHMgaXRcbiAqIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWQgYmVmb3JlIHRob3NlIGJ1dHRvbnMgd29yay4ge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0gZG9lcyBleGFjdGx5XG4gKiB0aGF0IHdpdGggbm8gY29tbWl0dGVkIGBDb2RlU2NyaXB0IFRvb2xraXRgIGNvbmZpZyBhbmQgbm8gbWFudWFsIHNldHVwLCBzbyBpdCBjYW4gYmUgZHJpdmVuIGZyb20gYSB0aW55XG4gKiBjb21taXR0ZWQgYm9vdHN0cmFwIHBsdWdpbiAoYGRlbW8tdmF1bHQtaGVscGVyYCkgdGhhdCBpcyBpbmplY3RlZCBpbnRvIGV2ZXJ5IGRlbW8gdmF1bHQgYXQgcmVsZWFzZVxuICogdGltZS5cbiAqXG4gKiBUaGUgcGx1Z2luIHRoZSB2YXVsdCBkZW1vbnN0cmF0ZXMgaXMgcmVhZCBmcm9tIHRoZSBoZWxwZXIncyBvd24gYGRhdGEuanNvbmAsIHdyaXR0ZW4gYnkgdGhlIHBhY2thZ2luZ1xuICogc3RlcCAoe0BsaW5rIERlbW9WYXVsdEhlbHBlclNldHRpbmdzfSk7IGEgdmF1bHQgd2l0aG91dCB0aGF0IG1hcmtlciBpcyByZWZ1c2VkIGFzIG5vdCBhIGRlbW8gdmF1bHQuXG4gKlxuICogSXQgd3JpdGVzIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3Mgc2V0dGluZ3MgQkVGT1JFIGVuYWJsaW5nIGl0LCBzbyB0aGUgcGx1Z2luIGxvYWRzIGFscmVhZHkgY29uZmlndXJlZCBcdTIwMTRcbiAqIG5vIHJlbG9hZC4gYENvZGVTY3JpcHQgVG9vbGtpdGAgdGhlbiBydW5zIHRoZSB2YXVsdCdzIGBzdGFydHVwLnRzYCAodmlhIGl0cyBgc3RhcnR1cFNjcmlwdFBhdGhgXG4gKiBzZXR0aW5nKSwgd2hpY2ggaXMgd2hlcmUgZWFjaCB2YXVsdCBvcGVucyBpdHMgc3RhcnQgbm90ZSBhbmQgZG9lcyBhbnkgcGx1Z2luLXNwZWNpZmljIHNldHVwLlxuICpcbiAqIEl0IGFsc28gY3JlYXRlcyBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIGludm9jYWJsZS1zY3JpcHRzIGZvbGRlciBpZiBpdCBpcyBtaXNzaW5nLCBzbyBldmVyeSBkZW1vIHZhdWx0XG4gKiBoYXMgdGhlIHNhbWUgbGF5b3V0IGV2ZW4gd2hlbiB0aGUgdmF1bHQgc2hpcHMgbm8gaW52b2NhYmxlIHNjcmlwdHMgXHUyMDE0IHRoZSB2YXVsdHMgdGhlbXNlbHZlcyBjb21taXQgbm9cbiAqIGVtcHR5IGZvbGRlciBmb3IgaXQuXG4gKlxuICogSXQgdGhlbiBpbnN0YWxscyB0aGUgYEZvbGRlciBOb3Rlc2AgcGx1Z2luLCBjb25maWd1cmVkIHRvIHRyZWF0IGBSRUFETUUubWRgIGFzIGEgZm9sZGVyJ3Mgb3duIG5vdGUuIEFcbiAqIGRlbW8gdmF1bHQgdGhhdCBoYXMgb3V0Z3Jvd24gYSBmbGF0IG5vdGUgbGlzdCBncm91cHMgaXRzIG5vdGVzIGludG8gZm9sZGVycywgYW5kIGEgZ3JvdXAgZm9sZGVyIG9ubHlcbiAqIHNheXMgd2hhdCBpdCBpcyBmb3IgaWYgaXQgaGFzIGEgbm90ZSBvZiBpdHMgb3duIFx1MjAxNCBgUkVBRE1FLm1kYCwgYmVjYXVzZSB0aGF0IGlzIGFsc28gdGhlIGZpbGUgR2l0SHViXG4gKiByZW5kZXJzIHVuZGVyIHRoZSBmaWxlIGxpc3Qgd2hlbiB0aGUgc2FtZSB2YXVsdCBpcyBicm93c2VkIGFzIGEgcmVwb3NpdG9yeSwgc28gb25lIGZpbGUgc2VydmVzIGJvdGhcbiAqIHJlYWRlcnMuXG4gKlxuICogRmluYWxseSBpdCByYWlzZXMgdGhlIHNhbmRib3ggbm90aWNlIGV4cGxhaW5pbmcgdGhhdCB0aGUgb3BlbmVkIHZhdWx0IGlzIGEgdGhyb3dhd2F5IGNvcHksIHNvIGEgdXNlclxuICogd2hvIHdyaXRlcyB0aGVpciBvd24gbm90ZXMgaW4gaXQgaXMgbmV2ZXIgc3VycHJpc2VkIGJ5IHRoZW0gYmVpbmcgYWJzZW50IGZyb20gdGhlIG5leHQgY29weS4gU2V0dGluZ3NcbiAqIGlzIGNsb3NlZCBmaXJzdCwgc28gdGhlIG5vdGljZSBsYW5kcyBpbiB0aGUgdmF1bHQncyBtYWluIHdpbmRvdyByYXRoZXIgdGhhbiBpbiB0aGUgc2V0dGluZ3MgcG9wb3V0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgRU1QVFkgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RyaW5nJztcbmltcG9ydCB7IE5vdGljZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyB9IGZyb20gJy4vZGVtby12YXVsdC1oZWxwZXItc2V0dGluZ3MudHMnO1xuXG5pbXBvcnQge1xuICBjb25maWd1cmVDb21tdW5pdHlQbHVnaW4sXG4gIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdCxcbiAgZGlzYWJsZUNvbW11bml0eVBsdWdpbixcbiAgZW5hYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luLFxuICBpbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luXG59IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbnMudHMnO1xuaW1wb3J0IHsgYXBwZW5kQ29kZUJsb2NrIH0gZnJvbSAnLi9odG1sLWVsZW1lbnQudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBib290c3RyYXBEZW1vVmF1bHR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcERlbW9WYXVsdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG59XG5cbi8qKlxuICogYENvZGVTY3JpcHQgVG9vbGtpdGAncyBzZXR0aW5ncywgd3JpdHRlbiBpbnRvIGl0cyBgZGF0YS5qc29uYCBiZWZvcmUgaXQgaXMgZW5hYmxlZC5cbiAqL1xuaW50ZXJmYWNlIENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3Mge1xuICAvKipcbiAgICogVGhlIFlBTUwgZnJvbnRtYXR0ZXIgbWVyZ2VkIGludG8gZXZlcnkgYGNvZGUtYnV0dG9uYCBibG9jaydzIG93biBjb25maWcsIHVzZWQgaGVyZSB0byB0dXJuIHRoZVxuICAgKiBzb3VyY2Ugdmlld2VyIG9uIGZvciBldmVyeSBidXR0b24gaW4gZXZlcnkgZGVtbyB2YXVsdCB3aXRob3V0IGVkaXRpbmcgYSBzaW5nbGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb2RlQnV0dG9uQ29uZmlnOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgKHVuZGVyIHtAbGluayBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzLm1vZHVsZXNSb290fSkgaG9sZGluZyBpbnZvY2FibGUgc2NyaXB0cy5cbiAgICovXG4gIHJlYWRvbmx5IGludm9jYWJsZVNjcmlwdHNGb2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIGZvbGRlciB0aGF0IGByZXF1aXJlKCcvXHUyMDI2JylgIHJlc29sdmVzIG1vZHVsZSBwYXRocyBhZ2FpbnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc1Jvb3Q6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBgQ29kZVNjcmlwdCBUb29sa2l0YCBoYW5kbGVzIGBvYnNpZGlhbjovL2AgcHJvdG9jb2wgVVJMcy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEhhbmRsZVByb3RvY29sVXJsczogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggKHVuZGVyIHtAbGluayBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzLm1vZHVsZXNSb290fSkgb2YgdGhlIHNjcmlwdCBydW4gb24gbG9hZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0dXBTY3JpcHRQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogYEZvbGRlciBOb3Rlc2AnIHNldHRpbmdzLCB3cml0dGVuIGludG8gaXRzIGBkYXRhLmpzb25gIGJlZm9yZSBpdCBpcyBlbmFibGVkLlxuICovXG5pbnRlcmZhY2UgRm9sZGVyTm90ZXNTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBhIGZvbGRlcidzIG93biBub3RlIGlzIGxvb2tlZCBmb3IgdW5kZXIsIHdpdGhvdXQgdGhlIGV4dGVuc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlck5vdGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBmb2xkZXIncyBvd24gbm90ZSBpcyBoaWRkZW4gZnJvbSB0aGUgZmlsZSBleHBsb3Jlciwgc28gdGhlIGZvbGRlciBpdHNlbGYgc3RhbmRzIGZvciBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGhpZGVGb2xkZXJOb3RlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVyZSBhIGZvbGRlcidzIG93biBub3RlIGlzIGtlcHQsIHJlbGF0aXZlIHRvIHRoZSBmb2xkZXIgaXQgZGVzY3JpYmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUxvY2F0aW9uOiBzdHJpbmc7XG59XG5cbmNvbnN0IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEID0gJ2ZpeC1yZXF1aXJlLW1vZHVsZXMnO1xuY29uc3QgQ09ERV9TQ1JJUFRfVE9PTEtJVF9NT0RVTEVTX1JPT1QgPSAnX2Fzc2V0cy9Db2RlU2NyaXB0VG9vbGtpdCc7XG5jb25zdCBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTOiBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzID0ge1xuICBkZWZhdWx0Q29kZUJ1dHRvbkNvbmZpZzogJy0tLVxcbnNvdXJjZVZpc2liaWxpdHk6IGNvbGxhcHNlZFxcbi0tLScsXG4gIGludm9jYWJsZVNjcmlwdHNGb2xkZXI6ICdJbnZvY2FibGVzJyxcbiAgbW9kdWxlc1Jvb3Q6IENPREVfU0NSSVBUX1RPT0xLSVRfTU9EVUxFU19ST09ULFxuICBzaG91bGRIYW5kbGVQcm90b2NvbFVybHM6IHRydWUsXG4gIHN0YXJ0dXBTY3JpcHRQYXRoOiAnc3RhcnR1cC50cydcbn07XG5cbmNvbnN0IEZPTERFUl9OT1RFU19QTFVHSU5fSUQgPSAnZm9sZGVyLW5vdGVzJztcbi8vIGBSRUFETUVgIHJhdGhlciB0aGFuIGBGb2xkZXIgTm90ZXNgJyBvd24gYHt7Zm9sZGVyX25hbWV9fWAgZGVmYXVsdDogdGhlIHNhbWUgZmlsZSBoYXMgdG8gYmUgdGhlIGZvbGRlcidzXG4vLyBub3RlIGluIE9ic2lkaWFuIEFORCB0aGUgcGFnZSBHaXRIdWIgcmVuZGVycyB3aGVuIHRoZSB2YXVsdCBpcyBicm93c2VkIGFzIGEgcmVwb3NpdG9yeSwgYW5kIEdpdEh1YlxuLy8gb25seSBkb2VzIHRoYXQgZm9yIGBSRUFETUUubWRgLiBgaW5zaWRlRm9sZGVyYCBrZWVwcyBpdCB3aXRoIHRoZSBub3RlcyBpdCBkZXNjcmliZXMgcmF0aGVyIHRoYW4gYmVzaWRlXG4vLyB0aGUgZm9sZGVyLCBhbmQgaGlkaW5nIGl0IGxldHMgdGhlIGZvbGRlciBpdHNlbGYgc3RhbmQgZm9yIHRoZSBub3RlIGluc3RlYWQgb2YgbGlzdGluZyBib3RoLlxuY29uc3QgRk9MREVSX05PVEVTX1NFVFRJTkdTOiBGb2xkZXJOb3Rlc1NldHRpbmdzID0ge1xuICBmb2xkZXJOb3RlTmFtZTogJ1JFQURNRScsXG4gIGhpZGVGb2xkZXJOb3RlOiB0cnVlLFxuICBzdG9yYWdlTG9jYXRpb246ICdpbnNpZGVGb2xkZXInXG59O1xuXG5jb25zdCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQgPSAnZGVtby12YXVsdC1oZWxwZXInO1xuY29uc3QgUExVR0lOU19GT0xERVJfTkFNRSA9ICdwbHVnaW5zJztcbmNvbnN0IERBVEFfSlNPTl9GSUxFX05BTUUgPSAnZGF0YS5qc29uJztcbmNvbnN0IElOVkFMSURfREVNT19WQVVMVF9FUlJPUl9NRVNTQUdFID0gJ0ludmFsaWQgZGVtbyB2YXVsdCc7XG5jb25zdCBPUEVOX0RFTU9fVkFVTFRfQ09NTUFORF9OQU1FID0gJ09wZW4gZGVtbyB2YXVsdCc7XG4vLyBgMGAgYXNrcyBPYnNpZGlhbiB0byBrZWVwIHRoZSBub3RpY2UgdXAgdW50aWwgdGhlIHVzZXIgY2xpY2tzIGl0IFx1MjAxNCB0aGUgc2FtZSB0cmVhdG1lbnQgT2JzaWRpYW4gZ2l2ZXNcbi8vIGl0cyBvd24gc2FuZGJveC12YXVsdCBub3RpY2UsIGFuZCB3aGF0IHRoZSBkZW1vLXZhdWx0IG5vdGljZSBpcyBtb2RlbGxlZCBvbi5cbmNvbnN0IFNBTkRCT1hfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyA9IDA7XG5cbi8qKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgc28gaXRzIG5vdGVzJyBgY29kZS1idXR0b25gcyB3b3JrIHdpdGggbm8gbWFudWFsIHNldHVwOiBpbnN0YWxscyBDb2RlU2NyaXB0XG4gKiBUb29sa2l0IGZyb20gdGhlIGNvbW11bml0eSBzdG9yZSAoaWYgaXQgaXMgbm90IGFscmVhZHkgaW5zdGFsbGVkKSwgd3JpdGVzIGl0cyBzZXR0aW5ncywgdGhlbiBlbmFibGVzXG4gKiBpdCBcdTIwMTQgd3JpdGluZyB0aGUgc2V0dGluZ3MgQkVGT1JFIGVuYWJsaW5nIHNvIGEgZnJlc2ggZW5hYmxlIGxvYWRzIGl0IGFscmVhZHkgY29uZmlndXJlZCwgd2l0aCBub1xuICogcmVsb2FkLiBJZiBgQ29kZVNjcmlwdCBUb29sa2l0YCBpcyBhbHJlYWR5IGVuYWJsZWQgYnV0IHRoZSBzZXR0aW5ncyBqdXN0IGNoYW5nZWQsIGl0IGlzIHJlbG9hZGVkXG4gKiAoZGlzYWJsZWQgdGhlbiBlbmFibGVkKSBzbyBpdCByZS1yZWFkcyBgZGF0YS5qc29uYDsgd2hlbiB0aGUgc2V0dGluZ3Mgd2VyZSBhbHJlYWR5IGluIHBsYWNlLCBub3RoaW5nIGlzXG4gKiByZWxvYWRlZCAoc28gYSByb3V0aW5lIHZhdWx0IHJlLW9wZW4gZG9lcyBub3QgcmUtcnVuIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3Mgc3RhcnR1cCkuIGBDb2RlU2NyaXB0IFRvb2xraXRgXG4gKiB0aGVuIHJ1bnMgdGhlIHZhdWx0J3MgYHN0YXJ0dXAudHNgLiBgRm9sZGVyIE5vdGVzYCBpcyBpbnN0YWxsZWQgbmV4dCwgY29uZmlndXJlZCB0byB0cmVhdCBgUkVBRE1FLm1kYCBhc1xuICogYSBmb2xkZXIncyBvd24gbm90ZSwgc28gYSB2YXVsdCB3aG9zZSBub3RlcyBhcmUgZ3JvdXBlZCBpbnRvIGZvbGRlcnMgZGVzY3JpYmVzIGVhY2ggZ3JvdXAgaW4gdGhlIGZpbGVcbiAqIGV4cGxvcmVyLiBGaW5hbGx5IGl0IGNsb3NlcyBTZXR0aW5ncyAoc28gdGhlIG5vdGljZSBjYW5ub3QgYmUgcmFpc2VkIGluc2lkZSB0aGUgc2V0dGluZ3MgcG9wb3V0KSBhbmRcbiAqIHJhaXNlcyB0aGUgc2FuZGJveCBub3RpY2UgZGVzY3JpYmluZyB0aGUgb3BlbmVkIHZhdWx0IGFzIGEgdGhyb3dhd2F5IGNvcHkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgQm9vdHN0cmFwRGVtb1ZhdWx0UGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSBgQ29kZVNjcmlwdCBUb29sa2l0YCBpcyBpbnN0YWxsZWQsIGNvbmZpZ3VyZWQsIGFuZCBlbmFibGVkXG4gKiBhbmQgdGhlIHNhbmRib3ggbm90aWNlIGhhcyBiZWVuIHNob3duLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYm9vdHN0cmFwRGVtb1ZhdWx0KHBhcmFtczogQm9vdHN0cmFwRGVtb1ZhdWx0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwIH0gPSBwYXJhbXM7XG4gIC8vIFJlc29sdmVkIGZpcnN0LCBzbyBhIHZhdWx0IHRoYXQgaXMgbm90IGEgZGVtbyB2YXVsdCBpcyByZWZ1c2VkIGJlZm9yZSBhbnl0aGluZyBpcyBpbnN0YWxsZWQgaW50byBpdC5cbiAgY29uc3QgZGVtb2VkUGx1Z2luSWQgPSBhd2FpdCBnZXREZW1vZWRQbHVnaW5JZChhcHApO1xuICBhd2FpdCBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luKHsgYXBwLCBwbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgfSk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbih7XG4gICAgYXBwLFxuICAgIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCxcbiAgICBzZXR0aW5nczogQ09ERV9TQ1JJUFRfVE9PTEtJVF9TRVRUSU5HU1xuICB9KTtcbiAgYXdhaXQgZW5zdXJlSW52b2NhYmxlU2NyaXB0c0ZvbGRlcihhcHApO1xuXG4gIGlmICghYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEKSkge1xuICAgIGF3YWl0IGVuYWJsZUNvbW11bml0eVBsdWdpbih7IGFwcCwgcGx1Z2luSWQ6IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEIH0pO1xuICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlN1Y2Nlc3MpIHtcbiAgICAvLyBBbHJlYWR5IGVuYWJsZWQgd2l0aCBzdGFsZSBzZXR0aW5ncyBcdTIwMTQgcmVsb2FkIHNvIGBDb2RlU2NyaXB0IFRvb2xraXRgIHJlLXJlYWRzIHRoZSBmcmVzaGx5IHdyaXR0ZW4gZGF0YS5qc29uLlxuICAgIGF3YWl0IGRpc2FibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgfVxuXG4gIC8vIEFmdGVyIGBDb2RlU2NyaXB0IFRvb2xraXRgLCBzbyB0aGUgdmF1bHQncyBzdGFydHVwIHNjcmlwdCBoYXMgYWxyZWFkeSBvcGVuZWQgdGhlIHN0YXJ0IG5vdGUgYnkgdGhlIHRpbWVcbiAgLy8gdGhlIGZpbGUgZXhwbG9yZXIgZ2FpbnMgaXRzIGZvbGRlci1ub3RlIGJlaGF2aW9yLlxuICBhd2FpdCBpbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luKHtcbiAgICBhcHAsXG4gICAgcGx1Z2luSWQ6IEZPTERFUl9OT1RFU19QTFVHSU5fSUQsXG4gICAgc2V0dGluZ3M6IEZPTERFUl9OT1RFU19TRVRUSU5HU1xuICB9KTtcblxuICBzaG93U2FuZGJveE5vdGljZShhcHAsIGRlbW9lZFBsdWdpbklkKTtcbn1cblxuLy8gQnVpbGRzIHRoZSBzYW5kYm94IG5vdGljZSBjb250ZW50OiB3aGF0IHRoaXMgdmF1bHQgaXMsIHdoZXJlIGl0IGxpdmVzLCBob3cgbG9uZyBpdCBsaXZlcywgYW5kIHdoeVxuLy8gcmUtcnVubmluZyB0aGUgY29tbWFuZCBwcm9kdWNlcyBhIHZhdWx0IHdpdGhvdXQgdGhlIG5vdGVzIGp1c3Qgd3JpdHRlbiBoZXJlLlxuLy9cbi8vIEV2ZXJ5IGNsYWltIGhhcyB0byBzdGF5IHRydWUgb2YgdGhlIG9wZW5lciAoYGRlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHNgKTogaXQgZXh0cmFjdHMgYSBGUkVTSCBjb3B5XG4vLyBpbnRvIGl0cyBvd24gZm9sZGVyIG9uIGV2ZXJ5IG9wZW4sIGFuZCBkZWxldGVzIGV4dHJhY3RlZCBmb2xkZXJzIG9sZGVyIHRoYW4gYSBkYXkgb24gZWFjaCBsYXRlciBvcGVuLlxuLy8gU28gdGhlIHZhdWx0IGlzIGEgdGVtcG9yYXJ5IHNhbmRib3ggXHUyMDE0IGl0IG11c3QgbmV2ZXIgYmUgZGVzY3JpYmVkIGFzIGEgcGxhY2Ugd29yayBjYW4gYmUgbGVmdC5cbmZ1bmN0aW9uIGJ1aWxkU2FuZGJveE5vdGljZUZyYWdtZW50KHBsdWdpbk5hbWU6IHN0cmluZyk6IERvY3VtZW50RnJhZ21lbnQge1xuICByZXR1cm4gY3JlYXRlRnJhZ21lbnQoKGZyYWdtZW50KSA9PiB7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnVGhpcyBpcyBhIGRlbW8gdmF1bHQgZm9yICcpO1xuICAgIGFwcGVuZENvZGVCbG9jayhmcmFnbWVudCwgcGx1Z2luTmFtZSk7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnLicpO1xuXG4gICAgZnJhZ21lbnQuY3JlYXRlRWwoJ2JyJyk7XG4gICAgZnJhZ21lbnQuYXBwZW5kVGV4dCgnSXQgaXMgYSB0ZW1wb3Jhcnkgc2FuZGJveCwgY2xlYW5lZCB1cCBhdXRvbWF0aWNhbGx5IGFib3V0IGEgZGF5IGFmdGVyIHlvdSBsYXN0IHVzZSBpdC4nKTtcblxuICAgIGZyYWdtZW50LmNyZWF0ZUVsKCdicicpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ0V4ZWN1dGluZyAnKTtcbiAgICBmcmFnbWVudC5jcmVhdGVFbCgnYicsIHsgdGV4dDogYCR7cGx1Z2luTmFtZX06ICR7T1BFTl9ERU1PX1ZBVUxUX0NPTU1BTkRfTkFNRX1gIH0pO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJyBjb21tYW5kIGFnYWluIGNyZWF0ZXMgYSBuZXcgY29weSB3aXRoIHRoZSBsYXRlc3QgcGx1Z2luIHZlcnNpb24sIHNvIHlvdXIgbm90ZXMgd2lsbCBub3QgYXBwZWFyIGluIGl0LicpO1xuICB9KTtcbn1cblxuLy8gQ3JlYXRlcyBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIGludm9jYWJsZS1zY3JpcHRzIGZvbGRlciAodW5kZXIgYG1vZHVsZXNSb290YCkgaWYgaXQgaXMgbWlzc2luZy5cbi8vIEV2ZXJ5IGRlbW8gdmF1bHQgdGhlbiBoYXMgdGhlIHNhbWUgYENvZGVTY3JpcHQgVG9vbGtpdGAgbGF5b3V0IGV2ZW4gd2hlbiBpdCBzaGlwcyBubyBpbnZvY2FibGUgc2NyaXB0cy5cbi8vIFRoZSBjb21taXR0ZWQgdmF1bHQgdGhlcmVmb3JlIGNhcnJpZXMgbm8gb3RoZXJ3aXNlLWVtcHR5IHBsYWNlaG9sZGVyIGZvbGRlci5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZUludm9jYWJsZVNjcmlwdHNGb2xkZXIoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaW52b2NhYmxlU2NyaXB0c0ZvbGRlclBhdGggPSBqb2luKENPREVfU0NSSVBUX1RPT0xLSVRfTU9EVUxFU19ST09ULCBDT0RFX1NDUklQVF9UT09MS0lUX1NFVFRJTkdTLmludm9jYWJsZVNjcmlwdHNGb2xkZXIpO1xuICBpZiAoIWF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCkpIHtcbiAgICBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5ta2RpcihpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCk7XG4gIH1cbn1cblxuLy8gUmVhZHMgdGhlIHBsdWdpbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzIG91dCBvZiB0aGlzIGhlbHBlcidzIG93biBgZGF0YS5qc29uYCwgd3JpdHRlbiBieSB0aGVcbi8vIHBhY2thZ2luZyBzdGVwIChzZWUgYERlbW9WYXVsdEhlbHBlclNldHRpbmdzYCkuIEEgdmF1bHQgd2l0aG91dCBhIHJlYWRhYmxlIG1hcmtlciB3YXMgbm90IHByb2R1Y2VkIGJ5XG4vLyB0aGF0IHN0ZXAgXHUyMDE0IGhhbmQtYXNzZW1ibGVkLCBvciB1bnBhY2tlZCBmcm9tIHNvbWV0aGluZyB0aGF0IGlzIG5vdCBhIGRlbW8gdmF1bHQgXHUyMDE0IHNvIGl0IGlzIHJlZnVzZWRcbi8vIHJhdGhlciB0aGFuIGJvb3RzdHJhcHBlZCBhZ2FpbnN0IGEgZ3Vlc3MuXG5hc3luYyBmdW5jdGlvbiBnZXREZW1vZWRQbHVnaW5JZChhcHA6IEFwcCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNldHRpbmdzUGF0aCA9IGpvaW4oYXBwLnZhdWx0LmNvbmZpZ0RpciwgUExVR0lOU19GT0xERVJfTkFNRSwgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lELCBEQVRBX0pTT05fRklMRV9OQU1FKTtcbiAgaWYgKCFhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMoc2V0dGluZ3NQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RFTU9fVkFVTFRfRVJST1JfTUVTU0FHRSk7XG4gIH1cblxuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChzZXR0aW5nc1BhdGgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UsIHsgY2F1c2U6IGVycm9yIH0pO1xuICB9XG5cbiAgY29uc3QgZGVtb2VkUGx1Z2luSWQgPSAocGFyc2VkIGFzIG51bGwgfCBQYXJ0aWFsPERlbW9WYXVsdEhlbHBlclNldHRpbmdzPik/LmRlbW9lZFBsdWdpbklkO1xuICBpZiAodHlwZW9mIGRlbW9lZFBsdWdpbklkICE9PSAnc3RyaW5nJyB8fCBkZW1vZWRQbHVnaW5JZCA9PT0gRU1QVFkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UpO1xuICB9XG4gIHJldHVybiBkZW1vZWRQbHVnaW5JZDtcbn1cblxuLy8gVGVsbHMgdGhlIHVzZXIgdGhpcyB2YXVsdCBpcyBhIHNhbmRib3gsIHVzaW5nIE9ic2lkaWFuJ3Mgb3duIHNhbmRib3gtdmF1bHQgdHJlYXRtZW50OiBhbiBpbmZpbml0ZVxuLy8gZHVyYXRpb24sIGRpc21pc3NlZCBieSBjbGlja2luZyBpdC4gUmFpc2VkIGxhc3QsIHNvIGl0IGlzIHRoZSBuZXdlc3Qgbm90aWNlIG9uIHNjcmVlbiBvbmNlXG4vLyBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIHN0YXJ0dXAgc2NyaXB0IGhhcyBkb25lIGl0cyBvd24gd29yay5cbi8vXG4vLyBBIGBOb3RpY2VgIGlzIGJ1aWx0IGluc2lkZSB3aGF0ZXZlciB3aW5kb3cgaXMgYWN0aXZlIGF0IHRoYXQgbW9tZW50LCBhbmQgU2V0dGluZ3MgaXMgYSBQT1BPVVQgV0lORE9XXG4vLyAodmVyaWZpZWQgb24gMS4xMy42KSB0aGF0IGJlY29tZXMgdGhlIGFjdGl2ZSBvbmUgd2hpbGUgaXQgaXMgb3BlbiBcdTIwMTQgc28gYSBub3RpY2UgcmFpc2VkIHRoZW4gd291bGQgYmVcbi8vIGNyZWF0ZWQgaW4gdGhlIHNldHRpbmdzIHdpbmRvdyBhbmQgdmFuaXNoIHdpdGggaXQuIFNldHRpbmdzIGlzIHRoZXJlZm9yZSBjbG9zZWQgZmlyc3Q6IE9ic2lkaWFuIGhhbmRzXG4vLyB0aGUgbWFpbiB3aW5kb3cgYmFjayBhcyB0aGUgcG9wb3V0IGdvZXMgYXdheSAoc3luY2hyb25vdXNseSwgYmVmb3JlIHRoZSBub3RpY2UgaXMgYnVpbHQpLCBhbmQgYSB1c2VyXG4vLyB3aG8gaGFzIGp1c3Qgb3BlbmVkIGEgZGVtbyB2YXVsdCB3YW50cyB0byBzZWUgdGhlIHZhdWx0IHJhdGhlciB0aGFuIGEgc2V0dGluZ3Mgd2luZG93IGFueXdheS4gQ2xvc2luZ1xuLy8gYW4gYWxyZWFkeS1jbG9zZWQgU2V0dGluZ3MgaXMgYSBuby1vcCwgc28gbm8gb3Blbi1zdGF0ZSBwcm9iZSBpcyBuZWVkZWQuXG5mdW5jdGlvbiBzaG93U2FuZGJveE5vdGljZShhcHA6IEFwcCwgZGVtb2VkUGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBwbHVnaW5OYW1lID0gYXBwLnBsdWdpbnMubWFuaWZlc3RzW2RlbW9lZFBsdWdpbklkXT8ubmFtZSA/PyBkZW1vZWRQbHVnaW5JZDtcbiAgY29uc3QgZnJhZ21lbnQgPSBidWlsZFNhbmRib3hOb3RpY2VGcmFnbWVudChwbHVnaW5OYW1lKTtcbiAgYXBwLnNldHRpbmcuY2xvc2UoKTtcbiAgbmV3IE5vdGljZShmcmFnbWVudCwgU0FOREJPWF9OT1RJQ0VfRFVSQVRJT05fSU5fTUlMTElTRUNPTkRTKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQ0Esa0JBQXFCO0FBQ3JCLG9CQUFzQjtBQUN0QixzQkFBdUI7QUFJdkIsK0JBT087QUFDUCwwQkFBZ0M7QUErRGhDLE1BQU0sZ0NBQWdDO0FBQ3RDLE1BQU0sbUNBQW1DO0FBQ3pDLE1BQU0sK0JBQTBEO0FBQUEsRUFDOUQseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsYUFBYTtBQUFBLEVBQ2IsMEJBQTBCO0FBQUEsRUFDMUIsbUJBQW1CO0FBQ3JCO0FBRUEsTUFBTSx5QkFBeUI7QUFLL0IsTUFBTSx3QkFBNkM7QUFBQSxFQUNqRCxnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixpQkFBaUI7QUFDbkI7QUFFQSxNQUFNLDhCQUE4QjtBQUNwQyxNQUFNLHNCQUFzQjtBQUM1QixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLG1D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
@@ -2,27 +2,27 @@
2
2
  /**
3
3
  * @file
4
4
  *
5
- * Bootstraps a demo vault by installing, configuring, and enabling CodeScript Toolkit.
5
+ * Bootstraps a demo vault by installing, configuring, and enabling `CodeScript Toolkit`.
6
6
  *
7
7
  * A plugin's demo vault showcases the plugin through notes whose `code-button`s run TypeScript via
8
- * CodeScript Toolkit. A demo vault that does not itself ship CodeScript Toolkit therefore needs it
8
+ * `CodeScript Toolkit`. A demo vault that does not itself ship `CodeScript Toolkit` therefore needs it
9
9
  * installed, configured, and enabled before those buttons work. {@link bootstrapDemoVault} does exactly
10
- * that with no committed CodeScript Toolkit config and no manual setup, so it can be driven from a tiny
10
+ * that with no committed `CodeScript Toolkit` config and no manual setup, so it can be driven from a tiny
11
11
  * committed bootstrap plugin (`demo-vault-helper`) that is injected into every demo vault at release
12
12
  * time.
13
13
  *
14
14
  * The plugin the vault demonstrates is read from the helper's own `data.json`, written by the packaging
15
15
  * step ({@link DemoVaultHelperSettings}); a vault without that marker is refused as not a demo vault.
16
16
  *
17
- * It writes CodeScript Toolkit's settings BEFORE enabling it, so the plugin loads already configured —
18
- * no reload. CodeScript Toolkit then runs the vault's `startup.ts` (via its `startupScriptPath`
17
+ * It writes `CodeScript Toolkit`'s settings BEFORE enabling it, so the plugin loads already configured —
18
+ * no reload. `CodeScript Toolkit` then runs the vault's `startup.ts` (via its `startupScriptPath`
19
19
  * setting), which is where each vault opens its start note and does any plugin-specific setup.
20
20
  *
21
- * It also creates CodeScript Toolkit's invocable-scripts folder if it is missing, so every demo vault
21
+ * It also creates `CodeScript Toolkit`'s invocable-scripts folder if it is missing, so every demo vault
22
22
  * has the same layout even when the vault ships no invocable scripts — the vaults themselves commit no
23
23
  * empty folder for it.
24
24
  *
25
- * It then installs the Folder Notes plugin, configured to treat `README.md` as a folder's own note. A
25
+ * It then installs the `Folder Notes` plugin, configured to treat `README.md` as a folder's own note. A
26
26
  * demo vault that has outgrown a flat note list groups its notes into folders, and a group folder only
27
27
  * says what it is for if it has a note of its own — `README.md`, because that is also the file GitHub
28
28
  * renders under the file list when the same vault is browsed as a repository, so one file serves both
@@ -46,16 +46,16 @@ export interface BootstrapDemoVaultParams {
46
46
  * Bootstraps a demo vault so its notes' `code-button`s work with no manual setup: installs CodeScript
47
47
  * Toolkit from the community store (if it is not already installed), writes its settings, then enables
48
48
  * it — writing the settings BEFORE enabling so a fresh enable loads it already configured, with no
49
- * reload. If CodeScript Toolkit is already enabled but the settings just changed, it is reloaded
49
+ * reload. If `CodeScript Toolkit` is already enabled but the settings just changed, it is reloaded
50
50
  * (disabled then enabled) so it re-reads `data.json`; when the settings were already in place, nothing is
51
- * reloaded (so a routine vault re-open does not re-run CodeScript Toolkit's startup). CodeScript Toolkit
52
- * then runs the vault's `startup.ts`. Folder Notes is installed next, configured to treat `README.md` as
51
+ * reloaded (so a routine vault re-open does not re-run `CodeScript Toolkit`'s startup). `CodeScript Toolkit`
52
+ * then runs the vault's `startup.ts`. `Folder Notes` is installed next, configured to treat `README.md` as
53
53
  * a folder's own note, so a vault whose notes are grouped into folders describes each group in the file
54
54
  * explorer. Finally it closes Settings (so the notice cannot be raised inside the settings popout) and
55
55
  * raises the sandbox notice describing the opened vault as a throwaway copy.
56
56
  *
57
57
  * @param params - The {@link BootstrapDemoVaultParams}.
58
- * @returns A {@link Promise} that resolves once CodeScript Toolkit is installed, configured, and enabled
58
+ * @returns A {@link Promise} that resolves once `CodeScript Toolkit` is installed, configured, and enabled
59
59
  * and the sandbox notice has been shown.
60
60
  */
61
61
  export declare function bootstrapDemoVault(params: BootstrapDemoVaultParams): Promise<void>;