@mnaoumov/obsidian-lib 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/dist/lib/cjs/__merged.cjs +54 -64
- package/dist/lib/cjs/__merged.d.cts +5 -3
- package/dist/lib/cjs/active-file-provider.cjs +40 -64
- package/dist/lib/cjs/app.cjs +40 -64
- package/dist/lib/cjs/async-with-notice.cjs +40 -64
- package/dist/lib/cjs/attachment-path.cjs +101 -72
- package/dist/lib/cjs/attachment-path.d.cts +21 -43
- package/dist/lib/cjs/attachment-unit-folder.cjs +40 -64
- package/dist/lib/cjs/attachment-unit-folder.d.cts +8 -9
- package/dist/lib/cjs/backlink-index.cjs +41 -65
- package/dist/lib/cjs/backlink.cjs +40 -64
- package/dist/lib/cjs/bases-view-registrar.cjs +40 -64
- package/dist/lib/cjs/callout.cjs +40 -64
- package/dist/lib/cjs/canvas.cjs +40 -64
- package/dist/lib/cjs/case-insensitive-file-index.cjs +40 -64
- package/dist/lib/cjs/code-block-markdown-information.cjs +40 -64
- package/dist/lib/cjs/code-block-reg-exp.cjs +40 -64
- package/dist/lib/cjs/codemirror/index.cjs +40 -64
- package/dist/lib/cjs/codemirror/state-field-spec.cjs +40 -64
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/command-handler-component.cjs +40 -64
- package/dist/lib/cjs/command-handlers/command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/file-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/global-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/index.cjs +40 -64
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-registrar.cjs +40 -64
- package/dist/lib/cjs/community-plugins.cjs +40 -64
- package/dist/lib/cjs/components/abort-signal-component.cjs +40 -64
- package/dist/lib/cjs/components/all-windows-event-component.cjs +40 -64
- package/dist/lib/cjs/components/async-error-handler-component.cjs +40 -64
- package/dist/lib/cjs/components/async-events-component.cjs +40 -64
- package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +40 -64
- package/dist/lib/cjs/components/component-ex.cjs +41 -65
- package/dist/lib/cjs/components/console-debug-component.cjs +40 -64
- package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +40 -64
- package/dist/lib/cjs/components/disposable-component.cjs +40 -64
- package/dist/lib/cjs/components/embed-extensions-component.cjs +40 -64
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +40 -64
- package/dist/lib/cjs/components/index.cjs +40 -64
- package/dist/lib/cjs/components/layout-ready-component.cjs +40 -64
- package/dist/lib/cjs/components/menu-event-registrar-component.cjs +40 -64
- package/dist/lib/cjs/components/monkey-around-component.cjs +40 -64
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +40 -64
- package/dist/lib/cjs/components/plugin-context-component.cjs +40 -64
- package/dist/lib/cjs/components/plugin-gate-component.cjs +41 -65
- package/dist/lib/cjs/components/plugin-notice-component.cjs +46 -65
- package/dist/lib/cjs/components/plugin-notice-component.d.cts +3 -0
- package/dist/lib/cjs/components/plugin-settings-component.cjs +41 -65
- package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +40 -64
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +40 -64
- package/dist/lib/cjs/components/pointer-position-component.cjs +40 -64
- package/dist/lib/cjs/components/registry-component.cjs +40 -64
- package/dist/lib/cjs/components/release-notes-component.cjs +42 -65
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +40 -64
- package/dist/lib/cjs/components/rmdir-guard-component.cjs +40 -64
- package/dist/lib/cjs/components/settings-migration-component.cjs +44 -68
- package/dist/lib/cjs/components/settings-migration-component.d.cts +6 -4
- package/dist/lib/cjs/components/syntax-highlighting-component.cjs +40 -64
- package/dist/lib/cjs/components/templates-language-component.cjs +40 -64
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +40 -64
- package/dist/lib/cjs/constructors/index.cjs +40 -64
- package/dist/lib/cjs/css-class.cjs +40 -64
- package/dist/lib/cjs/data-handler.cjs +40 -64
- package/dist/lib/cjs/dataview-link.cjs +40 -64
- package/dist/lib/cjs/dataview.cjs +40 -64
- package/dist/lib/cjs/debug.cjs +40 -64
- package/dist/lib/cjs/demo-vault-helper-settings.cjs +40 -64
- package/dist/lib/cjs/demo-vault-helper.cjs +42 -65
- package/dist/lib/cjs/demo-vault-naming.cjs +40 -64
- package/dist/lib/cjs/desktop-demo-vault-opener.cjs +48 -71
- package/dist/lib/cjs/desktop-trusted-input.cjs +40 -64
- package/dist/lib/cjs/editor-extension-registrar.cjs +40 -64
- package/dist/lib/cjs/editor-suggest-registrar.cjs +40 -64
- package/dist/lib/cjs/editor.cjs +40 -64
- package/dist/lib/cjs/events.cjs +40 -64
- package/dist/lib/cjs/extensions-registrar.cjs +40 -64
- package/dist/lib/cjs/file-change.cjs +40 -64
- package/dist/lib/cjs/file-explorer.cjs +40 -64
- package/dist/lib/cjs/file-manager.cjs +40 -64
- package/dist/lib/cjs/file-system.cjs +45 -64
- package/dist/lib/cjs/file-system.d.cts +7 -0
- package/dist/lib/cjs/folder-note.cjs +40 -64
- package/dist/lib/cjs/frontmatter-formatting.cjs +41 -65
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +40 -64
- package/dist/lib/cjs/frontmatter.cjs +40 -64
- package/dist/lib/cjs/generated-during-build.cjs +42 -66
- package/dist/lib/cjs/generated-during-build.d.cts +8 -2
- package/dist/lib/cjs/hover-link-source-registrar.cjs +40 -64
- package/dist/lib/cjs/html-element.cjs +40 -64
- package/dist/lib/cjs/i18n/custom-type-options.cjs +40 -64
- package/dist/lib/cjs/i18n/default-translations.cjs +40 -64
- package/dist/lib/cjs/i18n/i18n.cjs +40 -64
- package/dist/lib/cjs/i18n/index.cjs +40 -64
- package/dist/lib/cjs/i18n/locales/en.cjs +40 -64
- package/dist/lib/cjs/i18n/locales/index.cjs +40 -64
- package/dist/lib/cjs/i18n/locales/translations-map.cjs +40 -64
- package/dist/lib/cjs/index.cjs +40 -64
- package/dist/lib/cjs/is-in-obsidian.cjs +40 -64
- package/dist/lib/cjs/library-styles.cjs +40 -64
- package/dist/lib/cjs/library.cjs +40 -64
- package/dist/lib/cjs/link-name.cjs +40 -64
- package/dist/lib/cjs/link-update-progress.cjs +40 -64
- package/dist/lib/cjs/link.cjs +40 -64
- package/dist/lib/cjs/logger.cjs +40 -64
- package/dist/lib/cjs/loop.cjs +40 -64
- package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +40 -64
- package/dist/lib/cjs/markdown-code-block-processor.cjs +40 -64
- package/dist/lib/cjs/markdown-post-processor-registrar.cjs +40 -64
- package/dist/lib/cjs/markdown-view.cjs +40 -64
- package/dist/lib/cjs/markdown.cjs +40 -64
- package/dist/lib/cjs/menu-event-registrar.cjs +40 -64
- package/dist/lib/cjs/metadata-cache.cjs +64 -70
- package/dist/lib/cjs/metadata-cache.d.cts +8 -19
- package/dist/lib/cjs/mobile-trusted-input.cjs +40 -64
- package/dist/lib/cjs/modals/alert.cjs +40 -64
- package/dist/lib/cjs/modals/confirm.cjs +40 -64
- package/dist/lib/cjs/modals/index.cjs +40 -64
- package/dist/lib/cjs/modals/minimizable-modal.cjs +40 -64
- package/dist/lib/cjs/modals/modal-command-builder.cjs +40 -64
- package/dist/lib/cjs/modals/modal.cjs +40 -64
- package/dist/lib/cjs/modals/prompt.cjs +40 -64
- package/dist/lib/cjs/modals/select-item.cjs +40 -64
- package/dist/lib/cjs/modals/select-option.cjs +40 -64
- package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +40 -64
- package/dist/lib/cjs/note-priority.cjs +41 -65
- package/dist/lib/cjs/notebook-navigator.cjs +40 -64
- package/dist/lib/cjs/obsidian-dev-utils-state.cjs +40 -64
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +40 -64
- package/dist/lib/cjs/obsidian-settings.cjs +40 -64
- package/dist/lib/cjs/parse-link.cjs +40 -64
- package/dist/lib/cjs/path-settings.cjs +40 -64
- package/dist/lib/cjs/pdf.cjs +40 -64
- package/dist/lib/cjs/plugin/index.cjs +43 -64
- package/dist/lib/cjs/plugin/index.d.cts +1 -0
- package/dist/lib/cjs/plugin/plugin-api-schema.cjs +171 -0
- package/dist/lib/cjs/plugin/plugin-api-schema.d.cts +59 -0
- package/dist/lib/cjs/plugin/plugin-api.cjs +46 -64
- package/dist/lib/cjs/plugin/plugin-api.d.cts +83 -10
- package/dist/lib/cjs/plugin/plugin-context.cjs +40 -64
- package/dist/lib/cjs/plugin/plugin-event-source.cjs +40 -64
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +40 -64
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +40 -64
- package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +41 -65
- package/dist/lib/cjs/plugin/plugin.cjs +41 -65
- package/dist/lib/cjs/plugin/settings-migration-api.cjs +69 -64
- package/dist/lib/cjs/plugin/settings-migration-api.d.cts +16 -3
- package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +40 -64
- package/dist/lib/cjs/popovers/field-popover.cjs +40 -64
- package/dist/lib/cjs/popovers/index.cjs +40 -64
- package/dist/lib/cjs/popovers/popover-anchor.cjs +40 -64
- package/dist/lib/cjs/popovers/popover.cjs +40 -64
- package/dist/lib/cjs/property-entry.cjs +40 -64
- package/dist/lib/cjs/queue.cjs +40 -64
- package/dist/lib/cjs/react/app-context.cjs +40 -64
- package/dist/lib/cjs/react/index.cjs +40 -64
- package/dist/lib/cjs/reference.cjs +40 -64
- package/dist/lib/cjs/resource-lock.cjs +40 -64
- package/dist/lib/cjs/resource-url.cjs +40 -64
- package/dist/lib/cjs/ribbon-icon-registrar.cjs +40 -64
- package/dist/lib/cjs/setting-components/checkbox-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/date-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/date-time-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/email-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/file-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/index.cjs +40 -64
- package/dist/lib/cjs/setting-components/month-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +41 -65
- package/dist/lib/cjs/setting-components/multiple-email-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/multiple-file-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/multiple-text-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/number-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/password-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +40 -64
- package/dist/lib/cjs/setting-components/telephone-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/text-based-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/time-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/typed-text-component.cjs +41 -65
- package/dist/lib/cjs/setting-components/url-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/validator-component.cjs +41 -65
- package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +40 -64
- package/dist/lib/cjs/setting-components/week-component.cjs +40 -64
- package/dist/lib/cjs/setting-ex.cjs +40 -64
- package/dist/lib/cjs/setting-group-ex.cjs +40 -64
- package/dist/lib/cjs/status-bar-item-registrar.cjs +40 -64
- package/dist/lib/cjs/templater.cjs +40 -64
- package/dist/lib/cjs/transformers/duration-transformer.cjs +40 -64
- package/dist/lib/cjs/transformers/index.cjs +40 -64
- package/dist/lib/cjs/trusted-input.cjs +40 -64
- package/dist/lib/cjs/validation.cjs +40 -64
- package/dist/lib/cjs/vault-delete.cjs +40 -64
- package/dist/lib/cjs/vault-transaction.cjs +40 -64
- package/dist/lib/cjs/vault.cjs +41 -65
- package/dist/lib/cjs/view-registrar.cjs +40 -64
- package/dist/lib/cjs/workspace.cjs +40 -64
- package/dist/lib/esm/__merged.d.mts +5 -3
- package/dist/lib/esm/__merged.mjs +20 -14
- package/dist/lib/esm/active-file-provider.mjs +6 -14
- package/dist/lib/esm/app.mjs +6 -14
- package/dist/lib/esm/async-with-notice.mjs +6 -14
- package/dist/lib/esm/attachment-path.d.mts +21 -43
- package/dist/lib/esm/attachment-path.mjs +70 -22
- package/dist/lib/esm/attachment-unit-folder.d.mts +8 -9
- package/dist/lib/esm/attachment-unit-folder.mjs +6 -14
- package/dist/lib/esm/backlink-index.mjs +6 -14
- package/dist/lib/esm/backlink.mjs +6 -14
- package/dist/lib/esm/bases-view-registrar.mjs +6 -14
- package/dist/lib/esm/callout.mjs +6 -14
- package/dist/lib/esm/canvas.mjs +6 -14
- package/dist/lib/esm/case-insensitive-file-index.mjs +6 -14
- package/dist/lib/esm/code-block-markdown-information.mjs +5 -13
- package/dist/lib/esm/code-block-reg-exp.mjs +6 -14
- package/dist/lib/esm/codemirror/index.mjs +6 -14
- package/dist/lib/esm/codemirror/state-field-spec.mjs +5 -13
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/command-handler-component.mjs +6 -14
- package/dist/lib/esm/command-handlers/command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/editor-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/file-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/folder-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/global-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/index.mjs +6 -14
- package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +6 -14
- package/dist/lib/esm/command-registrar.mjs +6 -14
- package/dist/lib/esm/community-plugins.mjs +6 -14
- package/dist/lib/esm/components/abort-signal-component.mjs +6 -14
- package/dist/lib/esm/components/all-windows-event-component.mjs +6 -14
- package/dist/lib/esm/components/async-error-handler-component.mjs +6 -14
- package/dist/lib/esm/components/async-events-component.mjs +6 -14
- package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +6 -14
- package/dist/lib/esm/components/component-ex.mjs +6 -14
- package/dist/lib/esm/components/console-debug-component.mjs +6 -14
- package/dist/lib/esm/components/core-plugin-toggle-component.mjs +6 -14
- package/dist/lib/esm/components/disposable-component.mjs +6 -14
- package/dist/lib/esm/components/embed-extensions-component.mjs +6 -14
- package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +6 -14
- package/dist/lib/esm/components/index.mjs +6 -14
- package/dist/lib/esm/components/layout-ready-component.mjs +6 -14
- package/dist/lib/esm/components/menu-event-registrar-component.mjs +6 -14
- package/dist/lib/esm/components/monkey-around-component.mjs +6 -14
- package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +6 -14
- package/dist/lib/esm/components/plugin-context-component.mjs +6 -14
- package/dist/lib/esm/components/plugin-gate-component.mjs +6 -14
- package/dist/lib/esm/components/plugin-notice-component.d.mts +3 -0
- package/dist/lib/esm/components/plugin-notice-component.mjs +12 -15
- package/dist/lib/esm/components/plugin-settings-component.mjs +6 -14
- package/dist/lib/esm/components/plugin-settings-tab-component.mjs +6 -14
- package/dist/lib/esm/components/plugin-suggestion-component.mjs +6 -14
- package/dist/lib/esm/components/pointer-position-component.mjs +6 -14
- package/dist/lib/esm/components/registry-component.mjs +6 -14
- package/dist/lib/esm/components/release-notes-component.mjs +11 -15
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +6 -14
- package/dist/lib/esm/components/rmdir-guard-component.mjs +6 -14
- package/dist/lib/esm/components/settings-migration-component.d.mts +6 -4
- package/dist/lib/esm/components/settings-migration-component.mjs +10 -18
- package/dist/lib/esm/components/syntax-highlighting-component.mjs +6 -14
- package/dist/lib/esm/components/templates-language-component.mjs +6 -14
- package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +6 -14
- package/dist/lib/esm/constructors/index.mjs +6 -14
- package/dist/lib/esm/css-class.mjs +6 -14
- package/dist/lib/esm/data-handler.mjs +6 -14
- package/dist/lib/esm/dataview-link.mjs +6 -14
- package/dist/lib/esm/dataview.mjs +6 -14
- package/dist/lib/esm/debug.mjs +6 -14
- package/dist/lib/esm/demo-vault-helper-settings.mjs +5 -13
- package/dist/lib/esm/demo-vault-helper.mjs +8 -15
- package/dist/lib/esm/demo-vault-naming.mjs +6 -14
- package/dist/lib/esm/desktop-demo-vault-opener.mjs +17 -21
- package/dist/lib/esm/desktop-trusted-input.mjs +6 -14
- package/dist/lib/esm/editor-extension-registrar.mjs +6 -14
- package/dist/lib/esm/editor-suggest-registrar.mjs +6 -14
- package/dist/lib/esm/editor.mjs +6 -14
- package/dist/lib/esm/events.mjs +6 -14
- package/dist/lib/esm/extensions-registrar.mjs +6 -14
- package/dist/lib/esm/file-change.mjs +6 -14
- package/dist/lib/esm/file-explorer.mjs +6 -14
- package/dist/lib/esm/file-manager.mjs +6 -14
- package/dist/lib/esm/file-system.d.mts +7 -0
- package/dist/lib/esm/file-system.mjs +10 -14
- package/dist/lib/esm/folder-note.mjs +6 -14
- package/dist/lib/esm/frontmatter-formatting.mjs +6 -14
- package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +6 -14
- package/dist/lib/esm/frontmatter.mjs +6 -14
- package/dist/lib/esm/generated-during-build.d.mts +8 -2
- package/dist/lib/esm/generated-during-build.mjs +8 -16
- package/dist/lib/esm/hover-link-source-registrar.mjs +6 -14
- package/dist/lib/esm/html-element.mjs +6 -14
- package/dist/lib/esm/i18n/custom-type-options.mjs +6 -14
- package/dist/lib/esm/i18n/default-translations.mjs +6 -14
- package/dist/lib/esm/i18n/i18n.mjs +6 -14
- package/dist/lib/esm/i18n/index.mjs +6 -14
- package/dist/lib/esm/i18n/locales/en.mjs +6 -14
- package/dist/lib/esm/i18n/locales/index.mjs +6 -14
- package/dist/lib/esm/i18n/locales/translations-map.mjs +6 -14
- package/dist/lib/esm/index.mjs +6 -14
- package/dist/lib/esm/is-in-obsidian.mjs +6 -14
- package/dist/lib/esm/library-styles.mjs +6 -14
- package/dist/lib/esm/library.mjs +6 -14
- package/dist/lib/esm/link-name.mjs +6 -14
- package/dist/lib/esm/link-update-progress.mjs +5 -13
- package/dist/lib/esm/link.mjs +6 -14
- package/dist/lib/esm/logger.mjs +6 -14
- package/dist/lib/esm/loop.mjs +6 -14
- package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +6 -14
- package/dist/lib/esm/markdown-code-block-processor.mjs +6 -14
- package/dist/lib/esm/markdown-post-processor-registrar.mjs +6 -14
- package/dist/lib/esm/markdown-view.mjs +6 -14
- package/dist/lib/esm/markdown.mjs +6 -14
- package/dist/lib/esm/menu-event-registrar.mjs +5 -13
- package/dist/lib/esm/metadata-cache.d.mts +8 -19
- package/dist/lib/esm/metadata-cache.mjs +35 -21
- package/dist/lib/esm/mobile-trusted-input.mjs +6 -14
- package/dist/lib/esm/modals/alert.mjs +6 -14
- package/dist/lib/esm/modals/confirm.mjs +6 -14
- package/dist/lib/esm/modals/index.mjs +6 -14
- package/dist/lib/esm/modals/minimizable-modal.mjs +6 -14
- package/dist/lib/esm/modals/modal-command-builder.mjs +6 -14
- package/dist/lib/esm/modals/modal.mjs +6 -14
- package/dist/lib/esm/modals/prompt.mjs +6 -14
- package/dist/lib/esm/modals/select-item.mjs +6 -14
- package/dist/lib/esm/modals/select-option.mjs +6 -14
- package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +6 -14
- package/dist/lib/esm/note-priority.mjs +6 -14
- package/dist/lib/esm/notebook-navigator.mjs +6 -14
- package/dist/lib/esm/obsidian-dev-utils-state.mjs +6 -14
- package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +6 -14
- package/dist/lib/esm/obsidian-settings.mjs +6 -14
- package/dist/lib/esm/parse-link.mjs +6 -14
- package/dist/lib/esm/path-settings.mjs +6 -14
- package/dist/lib/esm/pdf.mjs +6 -14
- package/dist/lib/esm/plugin/index.d.mts +1 -0
- package/dist/lib/esm/plugin/index.mjs +8 -14
- package/dist/lib/esm/plugin/plugin-api-schema.d.mts +59 -0
- package/dist/lib/esm/plugin/plugin-api-schema.mjs +73 -0
- package/dist/lib/esm/plugin/plugin-api.d.mts +83 -10
- package/dist/lib/esm/plugin/plugin-api.mjs +11 -14
- package/dist/lib/esm/plugin/plugin-context.mjs +6 -14
- package/dist/lib/esm/plugin/plugin-event-source.mjs +6 -14
- package/dist/lib/esm/plugin/plugin-install-state.mjs +6 -14
- package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +6 -14
- package/dist/lib/esm/plugin/plugin-settings-tab.mjs +6 -14
- package/dist/lib/esm/plugin/plugin.mjs +6 -14
- package/dist/lib/esm/plugin/settings-migration-api.d.mts +16 -3
- package/dist/lib/esm/plugin/settings-migration-api.mjs +30 -14
- package/dist/lib/esm/plugin-cli-handler-registrar.mjs +6 -14
- package/dist/lib/esm/popovers/field-popover.mjs +6 -14
- package/dist/lib/esm/popovers/index.mjs +6 -14
- package/dist/lib/esm/popovers/popover-anchor.mjs +6 -14
- package/dist/lib/esm/popovers/popover.mjs +6 -14
- package/dist/lib/esm/property-entry.mjs +6 -14
- package/dist/lib/esm/queue.mjs +6 -14
- package/dist/lib/esm/react/app-context.mjs +6 -14
- package/dist/lib/esm/react/index.mjs +6 -14
- package/dist/lib/esm/reference.mjs +6 -14
- package/dist/lib/esm/resource-lock.mjs +6 -14
- package/dist/lib/esm/resource-url.mjs +6 -14
- package/dist/lib/esm/ribbon-icon-registrar.mjs +6 -14
- package/dist/lib/esm/setting-components/checkbox-component.mjs +6 -14
- package/dist/lib/esm/setting-components/code-highlighter-component.mjs +6 -14
- package/dist/lib/esm/setting-components/date-component.mjs +6 -14
- package/dist/lib/esm/setting-components/date-time-component.mjs +6 -14
- package/dist/lib/esm/setting-components/email-component.mjs +6 -14
- package/dist/lib/esm/setting-components/file-component.mjs +6 -14
- package/dist/lib/esm/setting-components/index.mjs +6 -14
- package/dist/lib/esm/setting-components/month-component.mjs +6 -14
- package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +6 -14
- package/dist/lib/esm/setting-components/multiple-email-component.mjs +6 -14
- package/dist/lib/esm/setting-components/multiple-file-component.mjs +6 -14
- package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -14
- package/dist/lib/esm/setting-components/number-component.mjs +6 -14
- package/dist/lib/esm/setting-components/password-component.mjs +6 -14
- package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +6 -14
- package/dist/lib/esm/setting-components/telephone-component.mjs +6 -14
- package/dist/lib/esm/setting-components/text-based-component.mjs +6 -14
- package/dist/lib/esm/setting-components/time-component.mjs +6 -14
- package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +6 -14
- package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +6 -14
- package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +6 -14
- package/dist/lib/esm/setting-components/typed-range-text-component.mjs +6 -14
- package/dist/lib/esm/setting-components/typed-text-component.mjs +6 -14
- package/dist/lib/esm/setting-components/url-component.mjs +6 -14
- package/dist/lib/esm/setting-components/validator-component.mjs +6 -14
- package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +5 -13
- package/dist/lib/esm/setting-components/week-component.mjs +6 -14
- package/dist/lib/esm/setting-ex.mjs +6 -14
- package/dist/lib/esm/setting-group-ex.mjs +6 -14
- package/dist/lib/esm/status-bar-item-registrar.mjs +6 -14
- package/dist/lib/esm/templater.mjs +6 -14
- package/dist/lib/esm/transformers/duration-transformer.mjs +6 -14
- package/dist/lib/esm/transformers/index.mjs +6 -14
- package/dist/lib/esm/trusted-input.mjs +6 -14
- package/dist/lib/esm/validation.mjs +6 -14
- package/dist/lib/esm/vault-delete.mjs +6 -14
- package/dist/lib/esm/vault-transaction.mjs +6 -14
- package/dist/lib/esm/vault.mjs +6 -14
- package/dist/lib/esm/view-registrar.mjs +6 -14
- package/dist/lib/esm/workspace.mjs +6 -14
- package/dist/styles.css +4 -1
- package/package.json +69 -24
- package/plugin/plugin-api-schema/package.json +6 -0
|
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
(function () {
|
|
7
7
|
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for(
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for(
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
function ensureBrowserProcess() {
|
|
13
13
|
const browserProcess = {
|
|
14
14
|
browser: true,
|
|
15
15
|
cwd() {
|
|
16
|
-
return
|
|
16
|
+
return "/";
|
|
17
17
|
},
|
|
18
18
|
env: {},
|
|
19
|
-
platform:
|
|
19
|
+
platform: "android"
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
21
|
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
22
|
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
23
|
globalThis.process = browserProcess;
|
|
28
24
|
return;
|
|
29
25
|
}
|
|
30
|
-
|
|
31
26
|
if (existingProcess.versions?.node) {
|
|
32
27
|
return;
|
|
33
28
|
}
|
|
34
|
-
|
|
35
29
|
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
30
|
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
31
|
existingProcessRecord[key] ??= value;
|
|
39
32
|
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
33
|
+
existingProcessRecord["browser"] = true;
|
|
42
34
|
}
|
|
43
35
|
|
|
44
36
|
(function initEsm() {
|
|
@@ -478,4 +470,4 @@ export {
|
|
|
478
470
|
isFrontmatterChangeWithOffsets,
|
|
479
471
|
toFrontmatterChangeWithOffsets
|
|
480
472
|
};
|
|
481
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ZpbGUtY2hhbmdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSB0eXBlcyBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBmaWxlIGNoYW5nZXMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDYW52YXNEYXRhIH0gZnJvbSAnb2JzaWRpYW4vY2FudmFzLmQudHMnO1xuXG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7XG4gIGdldE5lc3RlZFByb3BlcnR5VmFsdWUsXG4gIGlzRGVlcEVxdWFsLFxuICBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMsXG4gIHNldE5lc3RlZFByb3BlcnR5VmFsdWVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtcHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZVxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzIH0gZnJvbSAnLi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgQ2FudmFzRmlsZU5vZGVSZWZlcmVuY2UsXG4gIENhbnZhc1JlZmVyZW5jZSxcbiAgQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2Vcbn0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHR5cGUge1xuICBDb250ZW50QXJndW1lbnRzLFxuICBQcm9jZXNzT3B0aW9ucyxcbiAgUHJvY2Vzc1BhcmFtc1xufSBmcm9tICcuL3ZhdWx0LnRzJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuaW1wb3J0IHtcbiAgZ2V0UGF0aCxcbiAgaXNDYW52YXNGaWxlXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5pbXBvcnQge1xuICBwYXJzZUZyb250bWF0dGVyLFxuICBzZXRGcm9udG1hdHRlclxufSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB7XG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2Vcbn0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vdmF1bHQudHMnO1xuXG5jb25zdCBFU0NBUEVEX1dJS0lMSU5LX0RJVklERVIgPSBTdHJpbmcucmF3YFxcfGA7XG4vKipcbiAqIE1hdGNoZXMgYSB3aWtpbGluayBkaXZpZGVyIHRvZ2V0aGVyIHdpdGggdGhlIGJhY2tzbGFzaCBlc2NhcGluZyBpdCwgaWYgYW55LiBBIGxvb2tiZWhpbmQgd291bGQgc2F5IFwidW5lc2NhcGVkXCJcbiAqIGRpcmVjdGx5LCBidXQgaXQgaXMgYSBzeW50YXggZXJyb3Igb24gaU9TIGJlZm9yZSAxNi40LCBiZWxvdyB0aGUgaU9TIDE1IE9ic2lkaWFuIG1vYmlsZSBzdGlsbCBzdXBwb3J0cy5cbiAqIFJlcGxhY2luZyBldmVyeSBtYXRjaCB3aXRoIGFuIGVzY2FwZWQgZGl2aWRlciBsZWF2ZXMgYW4gZXNjYXBlZCBvbmUgYXMgaXQgd2FzIGFuZCBlc2NhcGVzIGEgYmFyZSBvbmUuXG4gKi9cbmNvbnN0IE9QVElPTkFMTFlfRVNDQVBFRF9XSUtJTElOS19ESVZJREVSX1JFR0VYUCA9IC9cXFxcP1xcfC9nO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBhcHBseUNvbnRlbnRDaGFuZ2VzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBseUNvbnRlbnRDaGFuZ2VzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgY29udGVudCBjaGFuZ2VzIHRvIGFwcGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXSB8IG51bGwsIENvbnRlbnRBcmd1bWVudHM+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgYXBwbHlGaWxlQ2hhbmdlc30uXG4gKi9cbmV4cG9ydCB0eXBlIEFwcGx5RmlsZUNoYW5nZXNPcHRpb25zID0gUHJvY2Vzc09wdGlvbnM7XG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBhcHBseUZpbGVDaGFuZ2VzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBseUZpbGVDaGFuZ2VzUGFyYW1zIGV4dGVuZHMgQXBwbHlGaWxlQ2hhbmdlc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlIHdoZXJlIHRoZSBmaWxlIGNoYW5nZXMgd2lsbCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGZpbGUgY2hhbmdlcyB0byBhcHBseS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBDb250ZW50QXJndW1lbnRzPjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuLyoqXG4gKiBBIGZpbGUgY2hhbmdlIGluIHRoZSB2YXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIEEgbmV3IGNvbnRlbnQgdG8gcmVwbGFjZSB0aGUgb2xkIGNvbnRlbnQuXG4gICAqL1xuICBuZXdDb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIG9sZCBjb250ZW50IHRoYXQgd2lsbCBiZSByZXBsYWNlZC5cbiAgICovXG4gIG9sZENvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdGhhdCBjYXVzZWQgdGhlIGNoYW5nZS5cbiAgICovXG4gIHJlZmVyZW5jZTogUmVmZXJlbmNlO1xufVxuaW50ZXJmYWNlIEFwcGx5Q2FudmFzQ2hhbmdlc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGZpbGUgY2hhbmdlcyB0byBhcHBseS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBDb250ZW50QXJndW1lbnRzPjtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJldHJ5IHRoZSBvcGVyYXRpb24gaWYgdGhlIGNoYW5nZXMgYXJlIGludmFsaWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBjaGFuZ2VzIHRvIGFwcGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlczogRmlsZUNoYW5nZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBwYXJzaW5nIHRoZSBmcm9udG1hdHRlciBmYWlsZWQuXG4gICAqL1xuICByZWFkb25seSBoYXNGcm9udG1hdHRlckVycm9yOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEFwcGx5Q29udGVudENoYW5nZXNUb1RleHRSZXN1bHQge1xuICByZWFkb25seSBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT47XG4gIHJlYWRvbmx5IG5ld0NvbnRlbnQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBUaGUgZnJvbnRtYXR0ZXIgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPjtcblxuICAvKipcbiAgICogQSBtYXAgb2YgZnJvbnRtYXR0ZXIga2V5cyB0byB0aGUgZnJvbnRtYXR0ZXIgY2hhbmdlcyB3aXRoIG9mZnNldHMgdG8gYXBwbHkuXG4gICAqL1xuICByZWFkb25seSBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0TWFwOiBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEJ1aWxkRmluYWxDb250ZW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmcm9udG1hdHRlciB0byB3cml0ZSBpbnRvIHRoZSBmaW5hbCBjb250ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIGZyb250bWF0dGVyIGtleXMgdG8gdGhlIGZyb250bWF0dGVyIGNoYW5nZXMgd2l0aCBvZmZzZXRzIHRoYXQgd2VyZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXJDaGFuZ2VkOiBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgZnJvbnRtYXR0ZXIgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBuZXdDb250ZW50OiBzdHJpbmc7XG59XG5cbnR5cGUgQ2FudmFzQ2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8Q2FudmFzUmVmZXJlbmNlPjtcbnR5cGUgQ2FudmFzRmlsZU5vZGVDaGFuZ2UgPSBGaWxlQ2hhbmdlICYgV2l0aFJlZmVyZW5jZTxDYW52YXNGaWxlTm9kZVJlZmVyZW5jZT47XG50eXBlIENhbnZhc1RleHROb2RlQ2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8Q2FudmFzVGV4dE5vZGVSZWZlcmVuY2U+O1xudHlwZSBDb250ZW50Q2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8UmVmZXJlbmNlQ2FjaGU+O1xudHlwZSBGcm9udG1hdHRlckNoYW5nZSA9IEZpbGVDaGFuZ2UgJiBXaXRoUmVmZXJlbmNlPEZyb250bWF0dGVyTGlua0NhY2hlPjtcblxudHlwZSBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8RnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cz47XG5cbmludGVyZmFjZSBQYXJzZUZyb250bWF0dGVyU2FmZWx5UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IHRvIHBhcnNlIHRoZSBmcm9udG1hdHRlciBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0aGUgY29udGVudCBiZWxvbmdzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUGFyc2VGcm9udG1hdHRlclNhZmVseVJlc3VsdCB7XG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+O1xuICByZWFkb25seSBoYXNGcm9udG1hdHRlckVycm9yOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVmFsaWRhdGVDaGFuZ2VzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IGNoYW5nZXMgdG8gdmFsaWRhdGUuXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzOiBGaWxlQ2hhbmdlW107XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IHRoZSBjaGFuZ2VzIHNob3VsZCBiZSB2YWxpZGF0ZWQgYWdhaW5zdC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZyb250bWF0dGVyIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSB2YWxpZGF0ZWQgYWdhaW5zdC5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgdmFsaWRhdGVkIGFnYWluc3QuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBXaXRoUmVmZXJlbmNlPFIgZXh0ZW5kcyBSZWZlcmVuY2U+IHtcbiAgcmVmZXJlbmNlOiBSO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBzZXJpZXMgb2YgY29udGVudCBjaGFuZ2VzIHRvIHRoZSBzcGVjaWZpZWQgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGFwcGx5aW5nIHRoZSBjb250ZW50IGNoYW5nZXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGNvbnRlbnQgb3IgdG8gYG51bGxgIGlmIHVwZGF0ZSBkaWRuJ3Qgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q29udGVudENoYW5nZXMocGFyYW1zOiBBcHBseUNvbnRlbnRDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhYm9ydFNpZ25hbCxcbiAgICBjaGFuZ2VzUHJvdmlkZXIsXG4gICAgY29udGVudCxcbiAgICBwYXRoLFxuICAgIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbiAgfSA9IHBhcmFtcztcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgbGV0IGNoYW5nZXMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY2hhbmdlc1Byb3ZpZGVyLCB7IGFib3J0U2lnbmFsLCBjb250ZW50IH0pO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAoY2hhbmdlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBmcm9udG1hdHRlciwgaGFzRnJvbnRtYXR0ZXJFcnJvciB9ID0gcGFyc2VGcm9udG1hdHRlclNhZmVseSh7IGNvbnRlbnQsIHBhdGggfSk7XG5cbiAgaWYgKCFhcmVDaGFuZ2VzVmFsaWQoeyBjaGFuZ2VzLCBjb250ZW50LCBmcm9udG1hdHRlciwgcGF0aCB9KSkge1xuICAgIHJldHVybiBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXMgPyBudWxsIDogY29udGVudDtcbiAgfVxuXG4gIGNoYW5nZXMgPSBzb3J0QW5kRmlsdGVyQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICBjb25zdCB7IGZyb250bWF0dGVyQ2hhbmdlZCwgbmV3Q29udGVudCB9ID0gYXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dCh7IGNoYW5nZXMsIGNvbnRlbnQsIGhhc0Zyb250bWF0dGVyRXJyb3IsIHBhdGggfSk7XG5cbiAgYXdhaXQgYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyh7XG4gICAgYWJvcnRTaWduYWwsXG4gICAgZnJvbnRtYXR0ZXIsXG4gICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcDogZnJvbnRtYXR0ZXJDaGFuZ2VkLFxuICAgIHBhdGhcbiAgfSk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgcmV0dXJuIGJ1aWxkRmluYWxDb250ZW50KHsgZnJvbnRtYXR0ZXIsIGZyb250bWF0dGVyQ2hhbmdlZCwgbmV3Q29udGVudCB9KTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgYXBwbHlpbmcgdGhlIGZpbGUgY2hhbmdlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBjaGFuZ2VzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5RmlsZUNoYW5nZXMocGFyYW1zOiBBcHBseUZpbGVDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgY2hhbmdlc1Byb3ZpZGVyLFxuICAgIHBhdGhPckZpbGUsXG4gICAgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzID0gdHJ1ZSxcbiAgICAuLi5vcHRpb25zXG4gIH0gPSBwYXJhbXM7XG4gIGF3YWl0IHByb2Nlc3Mobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFByb2Nlc3NQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgYXN5bmMgbmV3Q29udGVudFByb3ZpZGVyKHsgYWJvcnRTaWduYWwsIGNvbnRlbnQgfSkge1xuICAgICAgcmV0dXJuIGlzQ2FudmFzRmlsZShwYXRoT3JGaWxlKVxuICAgICAgICA/IChhd2FpdCBhcHBseUNhbnZhc0NoYW5nZXMoe1xuICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIGNoYW5nZXNQcm92aWRlcixcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIHBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSxcbiAgICAgICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICAgICAgfSkpXG4gICAgICAgIDogKGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoe1xuICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIGNoYW5nZXNQcm92aWRlcixcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIHBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSxcbiAgICAgICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICAgICAgfSkpO1xuICAgIH0sXG4gICAgcGF0aE9yRmlsZSxcbiAgICAuLi5vcHRpb25zXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNDaGFuZ2Uge1xuICByZXR1cm4gaXNDYW52YXNSZWZlcmVuY2UoY2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgZmlsZSBub2RlIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgZmlsZSBub2RlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UoY2hhbmdlOiBGaWxlQ2hhbmdlKTogY2hhbmdlIGlzIENhbnZhc0ZpbGVOb2RlQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkgJiYgY2hhbmdlLnJlZmVyZW5jZS50eXBlID09PSAnZmlsZSc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlOiBGaWxlQ2hhbmdlKTogY2hhbmdlIGlzIENhbnZhc1RleHROb2RlQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkgJiYgY2hhbmdlLnJlZmVyZW5jZS50eXBlID09PSAndGV4dCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjb250ZW50IGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY29udGVudCBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRlbnRDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgQ29udGVudENoYW5nZSB7XG4gIHJldHVybiBpc1JlZmVyZW5jZUNhY2hlKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckNoYW5nZShmaWxlQ2hhbmdlOiBGaWxlQ2hhbmdlKTogZmlsZUNoYW5nZSBpcyBGcm9udG1hdHRlckNoYW5nZSB7XG4gIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyB7XG4gIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoZmlsZUNoYW5nZS5yZWZlcmVuY2UpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlIHRvIGEgZnJvbnRtYXR0ZXIgY2hhbmdlIHdpdGggb2Zmc2V0cy5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCBmaWxlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhmaWxlQ2hhbmdlOiBGcm9udG1hdHRlckNoYW5nZSk6IEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UpXG4gICAgPyBmaWxlQ2hhbmdlXG4gICAgOiB7XG4gICAgICAuLi5maWxlQ2hhbmdlLFxuICAgICAgcmVmZXJlbmNlOiB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoZmlsZUNoYW5nZS5yZWZlcmVuY2UpXG4gICAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlDYW52YXNDaGFuZ2VzKHBhcmFtczogQXBwbHlDYW52YXNDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhYm9ydFNpZ25hbCxcbiAgICBjaGFuZ2VzUHJvdmlkZXIsXG4gICAgY29udGVudCxcbiAgICBwYXRoLFxuICAgIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIsIHsgYWJvcnRTaWduYWwsIGNvbnRlbnQgfSk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIGlmIChjaGFuZ2VzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjYW52YXNEYXRhID0gcGFyc2VKc29uU2FmZShjb250ZW50KSBhcyBHZW5lcmljT2JqZWN0PENhbnZhc0RhdGE+O1xuXG4gIC8vIFRoZSBjb250ZW50IGlzIG5vdCBhIHZhbGlkIGNhbnZhcyAoYSB0cmFuc2llbnQgYHt9YCBvciBwYXJ0aWFsIG9iamVjdCkuXG4gIC8vIFRoaXMgaGFwcGVucyB3aGVuIGFub3RoZXIgcGx1Z2luIGlzIHN0aWxsIGluaXRpYWxpemluZyB0aGUgZmlsZS5cbiAgLy8gU2tpcCB0aGUgcmV3cml0ZSBzbyBubyBtYWxmb3JtZWQgb2JqZWN0IGlzIHdyaXR0ZW4gYmFjayBhbmQgdGhlIHJlbmRlcmVyIG5ldmVyIGNyYXNoZXMuXG4gIC8vIE1pcnJvcnMgdGhlIGB7IGVkZ2VzOiBbXSwgbm9kZXM6IFtdIH1gIGZhbGxiYWNrIGluIGBnZXRDYW52YXNSZWZlcmVuY2VzYC5cbiAgLy8gUmV0dXJuaW5nIHRoZSBjb250ZW50IHVuY2hhbmdlZCByYXRoZXIgdGhhbiBgbnVsbGAgY29tcGxldGVzIHRoZSBvcGVyYXRpb24gd2l0aG91dCBhIHdyaXRlOiB0aGVcbiAgLy8gcmVmdXNhbCBpcyBwZXJtYW5lbnQgZm9yIHRoaXMgY29udGVudCwgYW5kIGBudWxsYCB3b3VsZCBhc2sgYHByb2Nlc3MoKWAgdG8gcmV0cnkgaXQgZm9yZXZlci5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGNhbnZhc0RhdGEubm9kZXMpIHx8ICFBcnJheS5pc0FycmF5KGNhbnZhc0RhdGEuZWRnZXMpKSB7XG4gICAgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTphcHBseUNhbnZhc0NoYW5nZXMnKSgnTm90IGEgdmFsaWQgY2FudmFzOyBza2lwcGluZyByZXdyaXRlJywgeyBwYXRoIH0pO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgY29uc3QgY2FudmFzVGV4dENoYW5nZXMgPSBuZXcgTWFwPG51bWJlciwgQ2FudmFzVGV4dE5vZGVDaGFuZ2VbXT4oKTtcblxuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgaWYgKCFpc0NhbnZhc0NoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gJ09ubHkgY2FudmFzIGNoYW5nZXMgYXJlIHN1cHBvcnRlZCBmb3IgY2FudmFzIGZpbGVzJztcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwge1xuICAgICAgICBjaGFuZ2UsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IGNhbnZhc0RhdGEubm9kZXNbY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4OiBjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICBpZiAoaXNDYW52YXNGaWxlTm9kZUNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBpZiAobm9kZS5maWxlICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICBnZXRPYnNpZGlhbkxpYkRlYnVnZ2VyKCdGaWxlQ2hhbmdlOmFwcGx5Q2FudmFzQ2hhbmdlcycpKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IG5vZGUuZmlsZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBub2RlSW5kZXg6IGNoYW5nZS5yZWZlcmVuY2Uubm9kZUluZGV4LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgdHlwZTogJ2ZpbGUnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgICAgbm9kZS5maWxlID0gY2hhbmdlLm5ld0NvbnRlbnQ7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIGZhbHNlIGJyYW5jaCBvZiB0aGUgZWxzZS1pZiBpcyB1bnJlYWNoYWJsZTsgb25seSAnZmlsZScgYW5kICd0ZXh0JyBjYW52YXMgbm9kZSB0eXBlcyBleGlzdC4gKi9cbiAgICB9IGVsc2UgaWYgKGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGxldCBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUgPSBjYW52YXNUZXh0Q2hhbmdlcy5nZXQoY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXgpO1xuICAgICAgaWYgKCFjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUpIHtcbiAgICAgICAgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlID0gW107XG4gICAgICAgIGNhbnZhc1RleHRDaGFuZ2VzLnNldChjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCwgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlKTtcbiAgICAgIH1cblxuICAgICAgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlLnB1c2goY2hhbmdlKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IFtub2RlSW5kZXgsIGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZV0gb2YgY2FudmFzVGV4dENoYW5nZXMpIHtcbiAgICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBOb2RlIGV4aXN0ZW5jZSBpcyBhbHJlYWR5IHZlcmlmaWVkIGluIHRoZSBmaXJzdCBsb29wIGFib3ZlLiAqL1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICBpZiAodHlwZW9mIG5vZGUudGV4dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnTm9kZSB0ZXh0IGlzIG5vdCBhIHN0cmluZyc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXMgPSBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUubWFwKChjaGFuZ2UpID0+IHtcbiAgICAgIC8vIEEgY2FudmFzIHRleHQgbm9kZSBjYW4gaG9sZCBhIG1hcmtkb3duIHRhYmxlLCB3aGVyZSBhIHNpemVkIGVtYmVkIGVzY2FwZXMgdGhlIHdpa2lsaW5rXG4gICAgICAvLyBkaXZpZGVyIHNvIHRoZSBwaXBlIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgdGFibGUgY2VsbCAoYCFbW2ltZy5wbmdcXHw1MDBdXWApLiBUaGUgcmVnZW5lcmF0ZWRcbiAgICAgIC8vIGxpbmsgdXNlcyBhbiB1bmVzY2FwZWQgZGl2aWRlciwgc28gcmVzdG9yZSB0aGUgZXNjYXBpbmcgd2hlbiB0aGUgb3JpZ2luYWwgcmVmZXJlbmNlIGhhZCBpdCxcbiAgICAgIC8vIGtlZXBpbmcgYm90aCB0aGUgdGFibGUgYW5kIHRoZSBlbWJlZCBzaXplIGludGFjdCBhY3Jvc3MgdGhlIHJld3JpdGUuXG4gICAgICBjb25zdCBuZXdDb250ZW50ID0gY2hhbmdlLnJlZmVyZW5jZS5vcmlnaW5hbFJlZmVyZW5jZS5vcmlnaW5hbC5pbmNsdWRlcyhFU0NBUEVEX1dJS0lMSU5LX0RJVklERVIpXG4gICAgICAgID8gY2hhbmdlLm5ld0NvbnRlbnQucmVwbGFjZUFsbChPUFRJT05BTExZX0VTQ0FQRURfV0lLSUxJTktfRElWSURFUl9SRUdFWFAsICgpID0+IEVTQ0FQRURfV0lLSUxJTktfRElWSURFUilcbiAgICAgICAgOiBjaGFuZ2UubmV3Q29udGVudDtcbiAgICAgIHJldHVybiByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UoY2hhbmdlLnJlZmVyZW5jZS5vcmlnaW5hbFJlZmVyZW5jZSwgbmV3Q29udGVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgbmV3Tm9kZVRleHQgPSBhd2FpdCBhcHBseUNvbnRlbnRDaGFuZ2VzKHtcbiAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgY2hhbmdlc1Byb3ZpZGVyOiBjb250ZW50Q2hhbmdlcyxcbiAgICAgIGNvbnRlbnQ6IG5vZGUudGV4dCxcbiAgICAgIHBhdGg6IGAke3BhdGh9Lm5vZGUke1N0cmluZyhub2RlSW5kZXgpfS5WSVJUVUFMX0ZJTEUubWRgLFxuICAgICAgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzXG4gICAgfSk7XG5cbiAgICAvLyBgbnVsbGAgaXMgYGFwcGx5Q29udGVudENoYW5nZXNgJ3MgcmV0cnkgc2VudGluZWwsIG5vdCBhIHZhbHVlLiBBc3NpZ25pbmcgaXQgd291bGQgc2VyaWFsaXplXG4gICAgLy8gYFwidGV4dFwiOiBudWxsYCBvdmVyIHRoZSBub2RlIGFuZCBkZXN0cm95IGl0cyBjb250ZW50LiBUaGUgbWlzbWF0Y2ggaXMgcGVybWFuZW50IGZvciB0aGlzIGNvbnRlbnQgXHUyMDE0XG4gICAgLy8gdGhlIHNhbWUgY2FsbCB0aGUgZmlsZS1ub2RlIG1pc21hdGNoIGFib3ZlIGFscmVhZHkgbWFrZXMgXHUyMDE0IHNvIHJldHVybiB0aGUgY29udGVudCB1bmNoYW5nZWQgdG9cbiAgICAvLyBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIHdpdGhvdXQgYSB3cml0ZSwgcmF0aGVyIHRoYW4gYG51bGxgLCB3aGljaCB3b3VsZCByZXRyeSBmb3JldmVyLlxuICAgIGlmIChuZXdOb2RlVGV4dCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgbm9kZS50ZXh0ID0gbmV3Tm9kZVRleHQ7XG4gIH1cblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY2FudmFzRGF0YSwgbnVsbCwgJ1xcdCcpO1xufVxuXG5mdW5jdGlvbiBhcHBseUNvbnRlbnRDaGFuZ2VzVG9UZXh0KHBhcmFtczogQXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dFBhcmFtcyk6IEFwcGx5Q29udGVudENoYW5nZXNUb1RleHRSZXN1bHQge1xuICBjb25zdCB7XG4gICAgY2hhbmdlcyxcbiAgICBjb250ZW50LFxuICAgIGhhc0Zyb250bWF0dGVyRXJyb3IsXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBsZXQgbmV3Q29udGVudCA9ICcnO1xuICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgbGV0IGxhc3RDb250ZW50Q2hhbmdlOiBDb250ZW50Q2hhbmdlID0ge1xuICAgIG5ld0NvbnRlbnQ6ICcnLFxuICAgIG9sZENvbnRlbnQ6ICcnLFxuICAgIHJlZmVyZW5jZToge1xuICAgICAgbGluazogJycsXG4gICAgICBvcmlnaW5hbDogJycsXG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBlbmQ6IHsgY29sOiAwLCBsaW5lOiAwLCBvZmZzZXQ6IDAgfSxcbiAgICAgICAgc3RhcnQ6IHsgY29sOiAwLCBsaW5lOiAwLCBvZmZzZXQ6IDAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+KCk7XG5cbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgY2hhbmdlIHR5cGVzIGFyZSBoYW5kbGVkOyB0aGUgZmFsc2UgYnJhbmNoIGxlYWRzIHRvIG90aGVyIGVsc2UtaWYgY2hlY2tzLiAqL1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGlmIChsYXN0SW5kZXggPD0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpIHtcbiAgICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpO1xuICAgICAgICBuZXdDb250ZW50ICs9IGNoYW5nZS5uZXdDb250ZW50O1xuICAgICAgICBsYXN0SW5kZXggPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICAgIGxhc3RDb250ZW50Q2hhbmdlID0gY2hhbmdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdTdGFydE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gbGFzdENvbnRlbnRDaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdFbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSBsYXN0Q29udGVudENoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgICAgICBjb25zdCBvdmVybGFwcGluZ0NvbnRlbnQgPSBsYXN0Q29udGVudENoYW5nZS5uZXdDb250ZW50LnNsaWNlKG92ZXJsYXBwaW5nU3RhcnRPZmZzZXQsIG92ZXJsYXBwaW5nRW5kT2Zmc2V0KTtcbiAgICAgICAgaWYgKG92ZXJsYXBwaW5nQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ092ZXJsYXBwaW5nIGNoYW5nZXMnO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgeyBjaGFuZ2UsIGxhc3RDb250ZW50Q2hhbmdlIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdDb250ZW50ID0gbmV3Q29udGVudC5zbGljZSgwLCBuZXdDb250ZW50Lmxlbmd0aCAtIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQubGVuZ3RoKVxuICAgICAgICAgICsgbGFzdENvbnRlbnRDaGFuZ2UubmV3Q29udGVudC5zbGljZSgwLCBvdmVybGFwcGluZ1N0YXJ0T2Zmc2V0KVxuICAgICAgICAgICsgY2hhbmdlLm5ld0NvbnRlbnRcbiAgICAgICAgICArIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQuc2xpY2Uob3ZlcmxhcHBpbmdFbmRPZmZzZXQpO1xuICAgICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsbCBjaGFuZ2UgdHlwZXMgYXJlIGhhbmRsZWQgYWJvdmU7IG5vIHVua25vd24gY2hhbmdlIHR5cGVzIGluIHByYWN0aWNlLiAqL1xuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFZhbGlkYXRpb24gcmVqZWN0cyBmcm9udG1hdHRlciBjaGFuZ2VzIHdoZW4gcGFyc2luZyBmYWlscywgc28gdGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUuICovXG4gICAgICBpZiAoaGFzRnJvbnRtYXR0ZXJFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgYXBwbHkgZnJvbnRtYXR0ZXIgY2hhbmdlIGluICR7cGF0aH0sIGJlY2F1c2UgZnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWRgLCB7IGNoYW5nZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIGxldCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAuZ2V0KGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgICAgaWYgKCFmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cykge1xuICAgICAgICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzID0gW107XG4gICAgICAgICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5zZXQoY2hhbmdlLnJlZmVyZW5jZS5rZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzKTtcbiAgICAgICAgfVxuICAgICAgICBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cy5wdXNoKHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhjaGFuZ2UpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcblxuICByZXR1cm4geyBmcm9udG1hdHRlckNoYW5nZWQ6IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsIG5ld0NvbnRlbnQgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyhwYXJhbXM6IEFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHNQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGFib3J0U2lnbmFsLFxuICAgIGZyb250bWF0dGVyLFxuICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBmb3IgKGNvbnN0IFtrZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzXSBvZiBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0TWFwKSB7XG4gICAgY29uc3QgcHJvcGVydHlWYWx1ZSA9IGdldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRtYXR0ZXIsIGtleSk7XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFZhbGlkYXRpb24gZW5zdXJlcyB0aGUgcHJvcGVydHkgaXMgYSBzdHJpbmcgYmVmb3JlIHJlYWNoaW5nIHRoaXMgcG9pbnQuICovXG4gICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gICAgY29uc3QgY29udGVudENoYW5nZXM6IENvbnRlbnRDaGFuZ2VbXSA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzLm1hcCgoY2hhbmdlKSA9PiAoe1xuICAgICAgbmV3Q29udGVudDogY2hhbmdlLm5ld0NvbnRlbnQsXG4gICAgICBvbGRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIGVuZDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLmVuZE9mZnNldCxcbiAgICAgICAgICAgIGxpbmU6IDAsXG4gICAgICAgICAgICBvZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICAgIG9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcblxuICAgIGNvbnN0IG5ld1Byb3BlcnR5VmFsdWUgPSBhd2FpdCBhcHBseUNvbnRlbnRDaGFuZ2VzKHtcbiAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgY2hhbmdlc1Byb3ZpZGVyOiBjb250ZW50Q2hhbmdlcyxcbiAgICAgIGNvbnRlbnQ6IHByb3BlcnR5VmFsdWUsXG4gICAgICBwYXRoOiBgJHtwYXRofS5mcm9udG1hdHRlci4ke2tleX0uVklSVFVBTF9GSUxFLm1kYFxuICAgIH0pO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbm5lciBhcHBseUNvbnRlbnRDaGFuZ2VzIHVzZXMgdmFsaWRhdGVkIG9mZnNldHMsIHNvIG51bGwgaXMgbm90IGV4cGVjdGVkLiAqL1xuICAgIGlmIChuZXdQcm9wZXJ0eVZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKHtcbiAgICAgICRvYmplY3Q6IGZyb250bWF0dGVyLFxuICAgICAgcGF0aDoga2V5LFxuICAgICAgdmFsdWU6IG5ld1Byb3BlcnR5VmFsdWVcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhcmVDaGFuZ2VzVmFsaWQocGFyYW1zOiBWYWxpZGF0ZUNoYW5nZXNQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGNoYW5nZXMsXG4gICAgY29udGVudCxcbiAgICBmcm9udG1hdHRlcixcbiAgICBwYXRoXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyID0gZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTp2YWxpZGF0ZUNoYW5nZXMnKTtcbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgY2hhbmdlIHR5cGVzIGFyZSBoYW5kbGVkOyB0aGUgZmFsc2UgYnJhbmNoIGxlYWRzIHRvIG90aGVyIGVsc2UtaWYgY2hlY2tzLiAqL1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgICBjb25zdCBlbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gY29udGVudC5zbGljZShzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTtcbiAgICAgIGlmIChhY3R1YWxDb250ZW50ICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignQ29udGVudCBtaXNtYXRjaCcsIHtcbiAgICAgICAgICBhY3R1YWxDb250ZW50LFxuICAgICAgICAgIGVuZE9mZnNldCxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgc3RhcnRPZmZzZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsbCBjaGFuZ2UgdHlwZXMgYXJlIGhhbmRsZWQ7IG5vIHVua25vd24gY2hhbmdlIHR5cGVzIGluIHByYWN0aWNlLiAqL1xuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGNoYW5nZSkpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignUHJvcGVydHkgdmFsdWUgaXMgbm90IGEgc3RyaW5nJywge1xuICAgICAgICAgIGZyb250bWF0dGVyS2V5OiBjaGFuZ2UucmVmZXJlbmNlLmtleSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHByb3BlcnR5VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IHByb3BlcnR5VmFsdWUuc2xpY2UoY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldCwgY2hhbmdlLnJlZmVyZW5jZS5lbmRPZmZzZXQpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGFydE9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGNoYW5nZSB0eXBlcyBhcmUgaGFuZGxlZCBhYm92ZTsgbm8gdW5rbm93biBjaGFuZ2UgdHlwZXMgaW4gcHJhY3RpY2UuICovXG4gICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRmluYWxDb250ZW50KHBhcmFtczogQnVpbGRGaW5hbENvbnRlbnRQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgZnJvbnRtYXR0ZXIsXG4gICAgZnJvbnRtYXR0ZXJDaGFuZ2VkLFxuICAgIG5ld0NvbnRlbnRcbiAgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGZyb250bWF0dGVyQ2hhbmdlZC5zaXplID4gMCA/IHNldEZyb250bWF0dGVyKG5ld0NvbnRlbnQsIGZyb250bWF0dGVyKSA6IG5ld0NvbnRlbnQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXJTYWZlbHkocGFyYW1zOiBQYXJzZUZyb250bWF0dGVyU2FmZWx5UGFyYW1zKTogUGFyc2VGcm9udG1hdHRlclNhZmVseVJlc3VsdCB7XG4gIGNvbnN0IHsgY29udGVudCwgcGF0aCB9ID0gcGFyYW1zO1xuICBsZXQgZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8dW5rbm93bj4gPSB7fTtcbiAgbGV0IGhhc0Zyb250bWF0dGVyRXJyb3IgPSBmYWxzZTtcblxuICB0cnkge1xuICAgIGZyb250bWF0dGVyID0gcGFyc2VGcm9udG1hdHRlcihjb250ZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKG5ldyBFcnJvcihgRnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWQgaW4gJHtwYXRofWAsIHsgY2F1c2U6IGVycm9yIH0pKTtcbiAgICBoYXNGcm9udG1hdHRlckVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7IGZyb250bWF0dGVyLCBoYXNGcm9udG1hdHRlckVycm9yIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlSnNvblNhZmUoY29udGVudDogc3RyaW5nKTogR2VuZXJpY09iamVjdCB7XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaCB7XG4gICAgcGFyc2VkID0gbnVsbDtcbiAgfVxuXG4gIGlmIChwYXJzZWQgPT09IG51bGwgfHwgdHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcpIHtcbiAgICBwYXJzZWQgPSB7fTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWQgYXMgR2VuZXJpY09iamVjdDtcbn1cblxuZnVuY3Rpb24gc29ydEFuZEZpbHRlckNoYW5nZXMoY2hhbmdlczogRmlsZUNoYW5nZVtdKTogRmlsZUNoYW5nZVtdIHtcbiAgLy8gU29ydCBjaGFuZ2VzIGJ5IHR5cGUgYW5kIHBvc2l0aW9uXG4gIGNoYW5nZXMuc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoYSkgJiYgaXNDb250ZW50Q2hhbmdlKGIpKSB7XG4gICAgICByZXR1cm4gYS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gYi5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoYSkgJiYgaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGIpKSB7XG4gICAgICByZXR1cm4gYS5yZWZlcmVuY2Uua2V5LmxvY2FsZUNvbXBhcmUoYi5yZWZlcmVuY2Uua2V5KSB8fCBhLnJlZmVyZW5jZS5zdGFydE9mZnNldCAtIGIucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGEpICYmIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5rZXkubG9jYWxlQ29tcGFyZShiLnJlZmVyZW5jZS5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBpc0NvbnRlbnRDaGFuZ2UoYSkgPyAtMSA6IDE7XG4gIH0pO1xuXG4gIC8vIEZpbHRlciBvdXQgZHVwbGljYXRlIGFuZCBuby1vcCBjaGFuZ2VzXG4gIHJldHVybiBjaGFuZ2VzLmZpbHRlcigoY2hhbmdlLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBjaGFuZ2Uub2xkQ29udGVudCAhPT0gY2hhbmdlLm5ld0NvbnRlbnQgJiYgKGluZGV4ID09PSAwIHx8ICFpc0RlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSkpO1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsU0FBUyxrQkFBa0I7QUFDM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBZ0JQLFNBQVMsOEJBQThCO0FBQ3ZDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxlQUFlO0FBRXhCLE1BQU0sMkJBQTJCLE9BQU87QUFNeEMsTUFBTSw2Q0FBNkM7QUF3T25ELGVBQXNCLG9CQUFvQixRQUEyRDtBQUNuRyxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsOEJBQThCO0FBQUEsRUFDaEMsSUFBSTtBQUNKLGNBQVksZUFBZTtBQUMzQixNQUFJLFVBQVUsTUFBTSxhQUFhLGlCQUFpQixFQUFFLGFBQWEsUUFBUSxDQUFDO0FBQzFFLGNBQVksZUFBZTtBQUMzQixNQUFJLFlBQVksTUFBTTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sRUFBRSxhQUFhLG9CQUFvQixJQUFJLHVCQUF1QixFQUFFLFNBQVMsS0FBSyxDQUFDO0FBRXJGLE1BQUksQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLFNBQVMsYUFBYSxLQUFLLENBQUMsR0FBRztBQUM3RCxXQUFPLDhCQUE4QixPQUFPO0FB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
|
|
473
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ZpbGUtY2hhbmdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSB0eXBlcyBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBmaWxlIGNoYW5nZXMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gIFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDYW52YXNEYXRhIH0gZnJvbSAnb2JzaWRpYW4vY2FudmFzLmQudHMnO1xuXG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7XG4gIGdldE5lc3RlZFByb3BlcnR5VmFsdWUsXG4gIGlzRGVlcEVxdWFsLFxuICBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMsXG4gIHNldE5lc3RlZFByb3BlcnR5VmFsdWVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtcHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZVxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzIH0gZnJvbSAnLi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgQ2FudmFzRmlsZU5vZGVSZWZlcmVuY2UsXG4gIENhbnZhc1JlZmVyZW5jZSxcbiAgQ2FudmFzVGV4dE5vZGVSZWZlcmVuY2Vcbn0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHR5cGUge1xuICBDb250ZW50QXJndW1lbnRzLFxuICBQcm9jZXNzT3B0aW9ucyxcbiAgUHJvY2Vzc1BhcmFtc1xufSBmcm9tICcuL3ZhdWx0LnRzJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuaW1wb3J0IHtcbiAgZ2V0UGF0aCxcbiAgaXNDYW52YXNGaWxlXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5pbXBvcnQge1xuICBwYXJzZUZyb250bWF0dGVyLFxuICBzZXRGcm9udG1hdHRlclxufSBmcm9tICcuL2Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB7XG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2Vcbn0gZnJvbSAnLi9yZWZlcmVuY2UudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vdmF1bHQudHMnO1xuXG5jb25zdCBFU0NBUEVEX1dJS0lMSU5LX0RJVklERVIgPSBTdHJpbmcucmF3YFxcfGA7XG4vKipcbiAqIE1hdGNoZXMgYSB3aWtpbGluayBkaXZpZGVyIHRvZ2V0aGVyIHdpdGggdGhlIGJhY2tzbGFzaCBlc2NhcGluZyBpdCwgaWYgYW55LiBBIGxvb2tiZWhpbmQgd291bGQgc2F5IFwidW5lc2NhcGVkXCJcbiAqIGRpcmVjdGx5LCBidXQgaXQgaXMgYSBzeW50YXggZXJyb3Igb24gaU9TIGJlZm9yZSAxNi40LCBiZWxvdyB0aGUgaU9TIDE1IE9ic2lkaWFuIG1vYmlsZSBzdGlsbCBzdXBwb3J0cy5cbiAqIFJlcGxhY2luZyBldmVyeSBtYXRjaCB3aXRoIGFuIGVzY2FwZWQgZGl2aWRlciBsZWF2ZXMgYW4gZXNjYXBlZCBvbmUgYXMgaXQgd2FzIGFuZCBlc2NhcGVzIGEgYmFyZSBvbmUuXG4gKi9cbmNvbnN0IE9QVElPTkFMTFlfRVNDQVBFRF9XSUtJTElOS19ESVZJREVSX1JFR0VYUCA9IC9cXFxcP1xcfC9nO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBhcHBseUNvbnRlbnRDaGFuZ2VzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBseUNvbnRlbnRDaGFuZ2VzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgY29udGVudCBjaGFuZ2VzIHRvIGFwcGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXSB8IG51bGwsIENvbnRlbnRBcmd1bWVudHM+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgYXBwbHlGaWxlQ2hhbmdlc30uXG4gKi9cbmV4cG9ydCB0eXBlIEFwcGx5RmlsZUNoYW5nZXNPcHRpb25zID0gUHJvY2Vzc09wdGlvbnM7XG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBhcHBseUZpbGVDaGFuZ2VzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBseUZpbGVDaGFuZ2VzUGFyYW1zIGV4dGVuZHMgQXBwbHlGaWxlQ2hhbmdlc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlIHdoZXJlIHRoZSBmaWxlIGNoYW5nZXMgd2lsbCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGZpbGUgY2hhbmdlcyB0byBhcHBseS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBDb250ZW50QXJndW1lbnRzPjtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZiB0aGUgY2hhbmdlcyBhcmUgaW52YWxpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuLyoqXG4gKiBBIGZpbGUgY2hhbmdlIGluIHRoZSB2YXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIEEgbmV3IGNvbnRlbnQgdG8gcmVwbGFjZSB0aGUgb2xkIGNvbnRlbnQuXG4gICAqL1xuICBuZXdDb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIG9sZCBjb250ZW50IHRoYXQgd2lsbCBiZSByZXBsYWNlZC5cbiAgICovXG4gIG9sZENvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdGhhdCBjYXVzZWQgdGhlIGNoYW5nZS5cbiAgICovXG4gIHJlZmVyZW5jZTogUmVmZXJlbmNlO1xufVxuaW50ZXJmYWNlIEFwcGx5Q2FudmFzQ2hhbmdlc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGZpbGUgY2hhbmdlcyB0byBhcHBseS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10gfCBudWxsLCBDb250ZW50QXJndW1lbnRzPjtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJldHJ5IHRoZSBvcGVyYXRpb24gaWYgdGhlIGNoYW5nZXMgYXJlIGludmFsaWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXM/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBjaGFuZ2VzIHRvIGFwcGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlczogRmlsZUNoYW5nZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBwYXJzaW5nIHRoZSBmcm9udG1hdHRlciBmYWlsZWQuXG4gICAqL1xuICByZWFkb25seSBoYXNGcm9udG1hdHRlckVycm9yOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEFwcGx5Q29udGVudENoYW5nZXNUb1RleHRSZXN1bHQge1xuICByZWFkb25seSBmcm9udG1hdHRlckNoYW5nZWQ6IE1hcDxzdHJpbmcsIEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNbXT47XG4gIHJlYWRvbmx5IG5ld0NvbnRlbnQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBUaGUgZnJvbnRtYXR0ZXIgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjx1bmtub3duPjtcblxuICAvKipcbiAgICogQSBtYXAgb2YgZnJvbnRtYXR0ZXIga2V5cyB0byB0aGUgZnJvbnRtYXR0ZXIgY2hhbmdlcyB3aXRoIG9mZnNldHMgdG8gYXBwbHkuXG4gICAqL1xuICByZWFkb25seSBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0TWFwOiBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEJ1aWxkRmluYWxDb250ZW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmcm9udG1hdHRlciB0byB3cml0ZSBpbnRvIHRoZSBmaW5hbCBjb250ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIGZyb250bWF0dGVyIGtleXMgdG8gdGhlIGZyb250bWF0dGVyIGNoYW5nZXMgd2l0aCBvZmZzZXRzIHRoYXQgd2VyZSBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXJDaGFuZ2VkOiBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCB0byB3aGljaCB0aGUgZnJvbnRtYXR0ZXIgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBuZXdDb250ZW50OiBzdHJpbmc7XG59XG5cbnR5cGUgQ2FudmFzQ2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8Q2FudmFzUmVmZXJlbmNlPjtcbnR5cGUgQ2FudmFzRmlsZU5vZGVDaGFuZ2UgPSBGaWxlQ2hhbmdlICYgV2l0aFJlZmVyZW5jZTxDYW52YXNGaWxlTm9kZVJlZmVyZW5jZT47XG50eXBlIENhbnZhc1RleHROb2RlQ2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8Q2FudmFzVGV4dE5vZGVSZWZlcmVuY2U+O1xudHlwZSBDb250ZW50Q2hhbmdlID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8UmVmZXJlbmNlQ2FjaGU+O1xudHlwZSBGcm9udG1hdHRlckNoYW5nZSA9IEZpbGVDaGFuZ2UgJiBXaXRoUmVmZXJlbmNlPEZyb250bWF0dGVyTGlua0NhY2hlPjtcblxudHlwZSBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzID0gRmlsZUNoYW5nZSAmIFdpdGhSZWZlcmVuY2U8RnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cz47XG5cbmludGVyZmFjZSBQYXJzZUZyb250bWF0dGVyU2FmZWx5UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IHRvIHBhcnNlIHRoZSBmcm9udG1hdHRlciBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0aGUgY29udGVudCBiZWxvbmdzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUGFyc2VGcm9udG1hdHRlclNhZmVseVJlc3VsdCB7XG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+O1xuICByZWFkb25seSBoYXNGcm9udG1hdHRlckVycm9yOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVmFsaWRhdGVDaGFuZ2VzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IGNoYW5nZXMgdG8gdmFsaWRhdGUuXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzOiBGaWxlQ2hhbmdlW107XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IHRoZSBjaGFuZ2VzIHNob3VsZCBiZSB2YWxpZGF0ZWQgYWdhaW5zdC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZyb250bWF0dGVyIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSB2YWxpZGF0ZWQgYWdhaW5zdC5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgdmFsaWRhdGVkIGFnYWluc3QuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBXaXRoUmVmZXJlbmNlPFIgZXh0ZW5kcyBSZWZlcmVuY2U+IHtcbiAgcmVmZXJlbmNlOiBSO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBzZXJpZXMgb2YgY29udGVudCBjaGFuZ2VzIHRvIHRoZSBzcGVjaWZpZWQgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGFwcGx5aW5nIHRoZSBjb250ZW50IGNoYW5nZXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGNvbnRlbnQgb3IgdG8gYG51bGxgIGlmIHVwZGF0ZSBkaWRuJ3Qgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q29udGVudENoYW5nZXMocGFyYW1zOiBBcHBseUNvbnRlbnRDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhYm9ydFNpZ25hbCxcbiAgICBjaGFuZ2VzUHJvdmlkZXIsXG4gICAgY29udGVudCxcbiAgICBwYXRoLFxuICAgIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbiAgfSA9IHBhcmFtcztcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgbGV0IGNoYW5nZXMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY2hhbmdlc1Byb3ZpZGVyLCB7IGFib3J0U2lnbmFsLCBjb250ZW50IH0pO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAoY2hhbmdlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBmcm9udG1hdHRlciwgaGFzRnJvbnRtYXR0ZXJFcnJvciB9ID0gcGFyc2VGcm9udG1hdHRlclNhZmVseSh7IGNvbnRlbnQsIHBhdGggfSk7XG5cbiAgaWYgKCFhcmVDaGFuZ2VzVmFsaWQoeyBjaGFuZ2VzLCBjb250ZW50LCBmcm9udG1hdHRlciwgcGF0aCB9KSkge1xuICAgIHJldHVybiBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXMgPyBudWxsIDogY29udGVudDtcbiAgfVxuXG4gIGNoYW5nZXMgPSBzb3J0QW5kRmlsdGVyQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICBjb25zdCB7IGZyb250bWF0dGVyQ2hhbmdlZCwgbmV3Q29udGVudCB9ID0gYXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dCh7IGNoYW5nZXMsIGNvbnRlbnQsIGhhc0Zyb250bWF0dGVyRXJyb3IsIHBhdGggfSk7XG5cbiAgYXdhaXQgYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyh7XG4gICAgYWJvcnRTaWduYWwsXG4gICAgZnJvbnRtYXR0ZXIsXG4gICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcDogZnJvbnRtYXR0ZXJDaGFuZ2VkLFxuICAgIHBhdGhcbiAgfSk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgcmV0dXJuIGJ1aWxkRmluYWxDb250ZW50KHsgZnJvbnRtYXR0ZXIsIGZyb250bWF0dGVyQ2hhbmdlZCwgbmV3Q29udGVudCB9KTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgYXBwbHlpbmcgdGhlIGZpbGUgY2hhbmdlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBjaGFuZ2VzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5RmlsZUNoYW5nZXMocGFyYW1zOiBBcHBseUZpbGVDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgY2hhbmdlc1Byb3ZpZGVyLFxuICAgIHBhdGhPckZpbGUsXG4gICAgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzID0gdHJ1ZSxcbiAgICAuLi5vcHRpb25zXG4gIH0gPSBwYXJhbXM7XG4gIGF3YWl0IHByb2Nlc3Mobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFByb2Nlc3NQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgYXN5bmMgbmV3Q29udGVudFByb3ZpZGVyKHsgYWJvcnRTaWduYWwsIGNvbnRlbnQgfSkge1xuICAgICAgcmV0dXJuIGlzQ2FudmFzRmlsZShwYXRoT3JGaWxlKVxuICAgICAgICA/IChhd2FpdCBhcHBseUNhbnZhc0NoYW5nZXMoe1xuICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIGNoYW5nZXNQcm92aWRlcixcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIHBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSxcbiAgICAgICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICAgICAgfSkpXG4gICAgICAgIDogKGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoe1xuICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIGNoYW5nZXNQcm92aWRlcixcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIHBhdGg6IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSxcbiAgICAgICAgICBzaG91bGRSZXRyeU9uSW52YWxpZENoYW5nZXNcbiAgICAgICAgfSkpO1xuICAgIH0sXG4gICAgcGF0aE9yRmlsZSxcbiAgICAuLi5vcHRpb25zXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNDaGFuZ2Uge1xuICByZXR1cm4gaXNDYW52YXNSZWZlcmVuY2UoY2hhbmdlLnJlZmVyZW5jZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgZmlsZSBub2RlIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgZmlsZSBub2RlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UoY2hhbmdlOiBGaWxlQ2hhbmdlKTogY2hhbmdlIGlzIENhbnZhc0ZpbGVOb2RlQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkgJiYgY2hhbmdlLnJlZmVyZW5jZS50eXBlID09PSAnZmlsZSc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlOiBGaWxlQ2hhbmdlKTogY2hhbmdlIGlzIENhbnZhc1RleHROb2RlQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkgJiYgY2hhbmdlLnJlZmVyZW5jZS50eXBlID09PSAndGV4dCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjb250ZW50IGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY29udGVudCBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRlbnRDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgQ29udGVudENoYW5nZSB7XG4gIHJldHVybiBpc1JlZmVyZW5jZUNhY2hlKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckNoYW5nZShmaWxlQ2hhbmdlOiBGaWxlQ2hhbmdlKTogZmlsZUNoYW5nZSBpcyBGcm9udG1hdHRlckNoYW5nZSB7XG4gIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKGZpbGVDaGFuZ2UucmVmZXJlbmNlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZSB3aXRoIG9mZnNldHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyB7XG4gIHJldHVybiBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoZmlsZUNoYW5nZS5yZWZlcmVuY2UpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlIHRvIGEgZnJvbnRtYXR0ZXIgY2hhbmdlIHdpdGggb2Zmc2V0cy5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCBmaWxlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhmaWxlQ2hhbmdlOiBGcm9udG1hdHRlckNoYW5nZSk6IEZyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMge1xuICByZXR1cm4gaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGZpbGVDaGFuZ2UpXG4gICAgPyBmaWxlQ2hhbmdlXG4gICAgOiB7XG4gICAgICAuLi5maWxlQ2hhbmdlLFxuICAgICAgcmVmZXJlbmNlOiB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMoZmlsZUNoYW5nZS5yZWZlcmVuY2UpXG4gICAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlDYW52YXNDaGFuZ2VzKHBhcmFtczogQXBwbHlDYW52YXNDaGFuZ2VzUGFyYW1zKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhYm9ydFNpZ25hbCxcbiAgICBjaGFuZ2VzUHJvdmlkZXIsXG4gICAgY29udGVudCxcbiAgICBwYXRoLFxuICAgIHNob3VsZFJldHJ5T25JbnZhbGlkQ2hhbmdlcyA9IHRydWVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIsIHsgYWJvcnRTaWduYWwsIGNvbnRlbnQgfSk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIGlmIChjaGFuZ2VzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjYW52YXNEYXRhID0gcGFyc2VKc29uU2FmZShjb250ZW50KSBhcyBHZW5lcmljT2JqZWN0PENhbnZhc0RhdGE+O1xuXG4gIC8vIFRoZSBjb250ZW50IGlzIG5vdCBhIHZhbGlkIGNhbnZhcyAoYSB0cmFuc2llbnQgYHt9YCBvciBwYXJ0aWFsIG9iamVjdCkuXG4gIC8vIFRoaXMgaGFwcGVucyB3aGVuIGFub3RoZXIgcGx1Z2luIGlzIHN0aWxsIGluaXRpYWxpemluZyB0aGUgZmlsZS5cbiAgLy8gU2tpcCB0aGUgcmV3cml0ZSBzbyBubyBtYWxmb3JtZWQgb2JqZWN0IGlzIHdyaXR0ZW4gYmFjayBhbmQgdGhlIHJlbmRlcmVyIG5ldmVyIGNyYXNoZXMuXG4gIC8vIE1pcnJvcnMgdGhlIGB7IGVkZ2VzOiBbXSwgbm9kZXM6IFtdIH1gIGZhbGxiYWNrIGluIGBnZXRDYW52YXNSZWZlcmVuY2VzYC5cbiAgLy8gUmV0dXJuaW5nIHRoZSBjb250ZW50IHVuY2hhbmdlZCByYXRoZXIgdGhhbiBgbnVsbGAgY29tcGxldGVzIHRoZSBvcGVyYXRpb24gd2l0aG91dCBhIHdyaXRlOiB0aGVcbiAgLy8gcmVmdXNhbCBpcyBwZXJtYW5lbnQgZm9yIHRoaXMgY29udGVudCwgYW5kIGBudWxsYCB3b3VsZCBhc2sgYHByb2Nlc3MoKWAgdG8gcmV0cnkgaXQgZm9yZXZlci5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGNhbnZhc0RhdGEubm9kZXMpIHx8ICFBcnJheS5pc0FycmF5KGNhbnZhc0RhdGEuZWRnZXMpKSB7XG4gICAgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTphcHBseUNhbnZhc0NoYW5nZXMnKSgnTm90IGEgdmFsaWQgY2FudmFzOyBza2lwcGluZyByZXdyaXRlJywgeyBwYXRoIH0pO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgY29uc3QgY2FudmFzVGV4dENoYW5nZXMgPSBuZXcgTWFwPG51bWJlciwgQ2FudmFzVGV4dE5vZGVDaGFuZ2VbXT4oKTtcblxuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgaWYgKCFpc0NhbnZhc0NoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gJ09ubHkgY2FudmFzIGNoYW5nZXMgYXJlIHN1cHBvcnRlZCBmb3IgY2FudmFzIGZpbGVzJztcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwge1xuICAgICAgICBjaGFuZ2UsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IGNhbnZhc0RhdGEubm9kZXNbY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4OiBjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICBpZiAoaXNDYW52YXNGaWxlTm9kZUNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBpZiAobm9kZS5maWxlICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICBnZXRPYnNpZGlhbkxpYkRlYnVnZ2VyKCdGaWxlQ2hhbmdlOmFwcGx5Q2FudmFzQ2hhbmdlcycpKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IG5vZGUuZmlsZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBub2RlSW5kZXg6IGNoYW5nZS5yZWZlcmVuY2Uubm9kZUluZGV4LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgdHlwZTogJ2ZpbGUnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgICAgbm9kZS5maWxlID0gY2hhbmdlLm5ld0NvbnRlbnQ7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIGZhbHNlIGJyYW5jaCBvZiB0aGUgZWxzZS1pZiBpcyB1bnJlYWNoYWJsZTsgb25seSAnZmlsZScgYW5kICd0ZXh0JyBjYW52YXMgbm9kZSB0eXBlcyBleGlzdC4gKi9cbiAgICB9IGVsc2UgaWYgKGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGxldCBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUgPSBjYW52YXNUZXh0Q2hhbmdlcy5nZXQoY2hhbmdlLnJlZmVyZW5jZS5ub2RlSW5kZXgpO1xuICAgICAgaWYgKCFjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUpIHtcbiAgICAgICAgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlID0gW107XG4gICAgICAgIGNhbnZhc1RleHRDaGFuZ2VzLnNldChjaGFuZ2UucmVmZXJlbmNlLm5vZGVJbmRleCwgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlKTtcbiAgICAgIH1cblxuICAgICAgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlLnB1c2goY2hhbmdlKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IFtub2RlSW5kZXgsIGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZV0gb2YgY2FudmFzVGV4dENoYW5nZXMpIHtcbiAgICBjb25zdCBub2RlID0gY2FudmFzRGF0YS5ub2Rlc1tub2RlSW5kZXhdO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBOb2RlIGV4aXN0ZW5jZSBpcyBhbHJlYWR5IHZlcmlmaWVkIGluIHRoZSBmaXJzdCBsb29wIGFib3ZlLiAqL1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9ICdOb2RlIG5vdCBmb3VuZCc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICBpZiAodHlwZW9mIG5vZGUudGV4dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnTm9kZSB0ZXh0IGlzIG5vdCBhIHN0cmluZyc7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXMgPSBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUubWFwKChjaGFuZ2UpID0+IHtcbiAgICAgIC8vIEEgY2FudmFzIHRleHQgbm9kZSBjYW4gaG9sZCBhIG1hcmtkb3duIHRhYmxlLCB3aGVyZSBhIHNpemVkIGVtYmVkIGVzY2FwZXMgdGhlIHdpa2lsaW5rXG4gICAgICAvLyBkaXZpZGVyIHNvIHRoZSBwaXBlIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgdGFibGUgY2VsbCAoYCFbW2ltZy5wbmdcXHw1MDBdXWApLiBUaGUgcmVnZW5lcmF0ZWRcbiAgICAgIC8vIGxpbmsgdXNlcyBhbiB1bmVzY2FwZWQgZGl2aWRlciwgc28gcmVzdG9yZSB0aGUgZXNjYXBpbmcgd2hlbiB0aGUgb3JpZ2luYWwgcmVmZXJlbmNlIGhhZCBpdCxcbiAgICAgIC8vIGtlZXBpbmcgYm90aCB0aGUgdGFibGUgYW5kIHRoZSBlbWJlZCBzaXplIGludGFjdCBhY3Jvc3MgdGhlIHJld3JpdGUuXG4gICAgICBjb25zdCBuZXdDb250ZW50ID0gY2hhbmdlLnJlZmVyZW5jZS5vcmlnaW5hbFJlZmVyZW5jZS5vcmlnaW5hbC5pbmNsdWRlcyhFU0NBUEVEX1dJS0lMSU5LX0RJVklERVIpXG4gICAgICAgID8gY2hhbmdlLm5ld0NvbnRlbnQucmVwbGFjZUFsbChPUFRJT05BTExZX0VTQ0FQRURfV0lLSUxJTktfRElWSURFUl9SRUdFWFAsICgpID0+IEVTQ0FQRURfV0lLSUxJTktfRElWSURFUilcbiAgICAgICAgOiBjaGFuZ2UubmV3Q29udGVudDtcbiAgICAgIHJldHVybiByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UoY2hhbmdlLnJlZmVyZW5jZS5vcmlnaW5hbFJlZmVyZW5jZSwgbmV3Q29udGVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgbmV3Tm9kZVRleHQgPSBhd2FpdCBhcHBseUNvbnRlbnRDaGFuZ2VzKHtcbiAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgY2hhbmdlc1Byb3ZpZGVyOiBjb250ZW50Q2hhbmdlcyxcbiAgICAgIGNvbnRlbnQ6IG5vZGUudGV4dCxcbiAgICAgIHBhdGg6IGAke3BhdGh9Lm5vZGUke1N0cmluZyhub2RlSW5kZXgpfS5WSVJUVUFMX0ZJTEUubWRgLFxuICAgICAgc2hvdWxkUmV0cnlPbkludmFsaWRDaGFuZ2VzXG4gICAgfSk7XG5cbiAgICAvLyBgbnVsbGAgaXMgYGFwcGx5Q29udGVudENoYW5nZXNgJ3MgcmV0cnkgc2VudGluZWwsIG5vdCBhIHZhbHVlLiBBc3NpZ25pbmcgaXQgd291bGQgc2VyaWFsaXplXG4gICAgLy8gYFwidGV4dFwiOiBudWxsYCBvdmVyIHRoZSBub2RlIGFuZCBkZXN0cm95IGl0cyBjb250ZW50LiBUaGUgbWlzbWF0Y2ggaXMgcGVybWFuZW50IGZvciB0aGlzIGNvbnRlbnQgXHUyMDE0XG4gICAgLy8gdGhlIHNhbWUgY2FsbCB0aGUgZmlsZS1ub2RlIG1pc21hdGNoIGFib3ZlIGFscmVhZHkgbWFrZXMgXHUyMDE0IHNvIHJldHVybiB0aGUgY29udGVudCB1bmNoYW5nZWQgdG9cbiAgICAvLyBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIHdpdGhvdXQgYSB3cml0ZSwgcmF0aGVyIHRoYW4gYG51bGxgLCB3aGljaCB3b3VsZCByZXRyeSBmb3JldmVyLlxuICAgIGlmIChuZXdOb2RlVGV4dCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgbm9kZS50ZXh0ID0gbmV3Tm9kZVRleHQ7XG4gIH1cblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY2FudmFzRGF0YSwgbnVsbCwgJ1xcdCcpO1xufVxuXG5mdW5jdGlvbiBhcHBseUNvbnRlbnRDaGFuZ2VzVG9UZXh0KHBhcmFtczogQXBwbHlDb250ZW50Q2hhbmdlc1RvVGV4dFBhcmFtcyk6IEFwcGx5Q29udGVudENoYW5nZXNUb1RleHRSZXN1bHQge1xuICBjb25zdCB7XG4gICAgY2hhbmdlcyxcbiAgICBjb250ZW50LFxuICAgIGhhc0Zyb250bWF0dGVyRXJyb3IsXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBsZXQgbmV3Q29udGVudCA9ICcnO1xuICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgbGV0IGxhc3RDb250ZW50Q2hhbmdlOiBDb250ZW50Q2hhbmdlID0ge1xuICAgIG5ld0NvbnRlbnQ6ICcnLFxuICAgIG9sZENvbnRlbnQ6ICcnLFxuICAgIHJlZmVyZW5jZToge1xuICAgICAgbGluazogJycsXG4gICAgICBvcmlnaW5hbDogJycsXG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBlbmQ6IHsgY29sOiAwLCBsaW5lOiAwLCBvZmZzZXQ6IDAgfSxcbiAgICAgICAgc3RhcnQ6IHsgY29sOiAwLCBsaW5lOiAwLCBvZmZzZXQ6IDAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzW10+KCk7XG5cbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgY2hhbmdlIHR5cGVzIGFyZSBoYW5kbGVkOyB0aGUgZmFsc2UgYnJhbmNoIGxlYWRzIHRvIG90aGVyIGVsc2UtaWYgY2hlY2tzLiAqL1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGlmIChsYXN0SW5kZXggPD0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpIHtcbiAgICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQpO1xuICAgICAgICBuZXdDb250ZW50ICs9IGNoYW5nZS5uZXdDb250ZW50O1xuICAgICAgICBsYXN0SW5kZXggPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICAgIGxhc3RDb250ZW50Q2hhbmdlID0gY2hhbmdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdTdGFydE9mZnNldCA9IGNoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gbGFzdENvbnRlbnRDaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdFbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQgLSBsYXN0Q29udGVudENoYW5nZS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgICAgICBjb25zdCBvdmVybGFwcGluZ0NvbnRlbnQgPSBsYXN0Q29udGVudENoYW5nZS5uZXdDb250ZW50LnNsaWNlKG92ZXJsYXBwaW5nU3RhcnRPZmZzZXQsIG92ZXJsYXBwaW5nRW5kT2Zmc2V0KTtcbiAgICAgICAgaWYgKG92ZXJsYXBwaW5nQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ092ZXJsYXBwaW5nIGNoYW5nZXMnO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgeyBjaGFuZ2UsIGxhc3RDb250ZW50Q2hhbmdlIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdDb250ZW50ID0gbmV3Q29udGVudC5zbGljZSgwLCBuZXdDb250ZW50Lmxlbmd0aCAtIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQubGVuZ3RoKVxuICAgICAgICAgICsgbGFzdENvbnRlbnRDaGFuZ2UubmV3Q29udGVudC5zbGljZSgwLCBvdmVybGFwcGluZ1N0YXJ0T2Zmc2V0KVxuICAgICAgICAgICsgY2hhbmdlLm5ld0NvbnRlbnRcbiAgICAgICAgICArIGxhc3RDb250ZW50Q2hhbmdlLm5ld0NvbnRlbnQuc2xpY2Uob3ZlcmxhcHBpbmdFbmRPZmZzZXQpO1xuICAgICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsbCBjaGFuZ2UgdHlwZXMgYXJlIGhhbmRsZWQgYWJvdmU7IG5vIHVua25vd24gY2hhbmdlIHR5cGVzIGluIHByYWN0aWNlLiAqL1xuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFZhbGlkYXRpb24gcmVqZWN0cyBmcm9udG1hdHRlciBjaGFuZ2VzIHdoZW4gcGFyc2luZyBmYWlscywgc28gdGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUuICovXG4gICAgICBpZiAoaGFzRnJvbnRtYXR0ZXJFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgYXBwbHkgZnJvbnRtYXR0ZXIgY2hhbmdlIGluICR7cGF0aH0sIGJlY2F1c2UgZnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWRgLCB7IGNoYW5nZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIGxldCBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAuZ2V0KGNoYW5nZS5yZWZlcmVuY2Uua2V5KTtcbiAgICAgICAgaWYgKCFmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cykge1xuICAgICAgICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzID0gW107XG4gICAgICAgICAgZnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldE1hcC5zZXQoY2hhbmdlLnJlZmVyZW5jZS5rZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzKTtcbiAgICAgICAgfVxuICAgICAgICBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cy5wdXNoKHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyhjaGFuZ2UpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcblxuICByZXR1cm4geyBmcm9udG1hdHRlckNoYW5nZWQ6IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsIG5ld0NvbnRlbnQgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlGcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0cyhwYXJhbXM6IEFwcGx5RnJvbnRtYXR0ZXJDaGFuZ2VzV2l0aE9mZnNldHNQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGFib3J0U2lnbmFsLFxuICAgIGZyb250bWF0dGVyLFxuICAgIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRNYXAsXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBmb3IgKGNvbnN0IFtrZXksIGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzXSBvZiBmcm9udG1hdHRlckNoYW5nZXNXaXRoT2Zmc2V0TWFwKSB7XG4gICAgY29uc3QgcHJvcGVydHlWYWx1ZSA9IGdldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRtYXR0ZXIsIGtleSk7XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFZhbGlkYXRpb24gZW5zdXJlcyB0aGUgcHJvcGVydHkgaXMgYSBzdHJpbmcgYmVmb3JlIHJlYWNoaW5nIHRoaXMgcG9pbnQuICovXG4gICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gICAgY29uc3QgY29udGVudENoYW5nZXM6IENvbnRlbnRDaGFuZ2VbXSA9IGZyb250bWF0dGVyQ2hhbmdlc1dpdGhPZmZzZXRzLm1hcCgoY2hhbmdlKSA9PiAoe1xuICAgICAgbmV3Q29udGVudDogY2hhbmdlLm5ld0NvbnRlbnQsXG4gICAgICBvbGRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgb3JpZ2luYWw6ICcnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIGVuZDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLmVuZE9mZnNldCxcbiAgICAgICAgICAgIGxpbmU6IDAsXG4gICAgICAgICAgICBvZmZzZXQ6IGNoYW5nZS5yZWZlcmVuY2UuZW5kT2Zmc2V0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgY29sOiBjaGFuZ2UucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICAgIG9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcblxuICAgIGNvbnN0IG5ld1Byb3BlcnR5VmFsdWUgPSBhd2FpdCBhcHBseUNvbnRlbnRDaGFuZ2VzKHtcbiAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgY2hhbmdlc1Byb3ZpZGVyOiBjb250ZW50Q2hhbmdlcyxcbiAgICAgIGNvbnRlbnQ6IHByb3BlcnR5VmFsdWUsXG4gICAgICBwYXRoOiBgJHtwYXRofS5mcm9udG1hdHRlci4ke2tleX0uVklSVFVBTF9GSUxFLm1kYFxuICAgIH0pO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbm5lciBhcHBseUNvbnRlbnRDaGFuZ2VzIHVzZXMgdmFsaWRhdGVkIG9mZnNldHMsIHNvIG51bGwgaXMgbm90IGV4cGVjdGVkLiAqL1xuICAgIGlmIChuZXdQcm9wZXJ0eVZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKHtcbiAgICAgICRvYmplY3Q6IGZyb250bWF0dGVyLFxuICAgICAgcGF0aDoga2V5LFxuICAgICAgdmFsdWU6IG5ld1Byb3BlcnR5VmFsdWVcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhcmVDaGFuZ2VzVmFsaWQocGFyYW1zOiBWYWxpZGF0ZUNoYW5nZXNQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGNoYW5nZXMsXG4gICAgY29udGVudCxcbiAgICBmcm9udG1hdHRlcixcbiAgICBwYXRoXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyID0gZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlcignRmlsZUNoYW5nZTp2YWxpZGF0ZUNoYW5nZXMnKTtcbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgY2hhbmdlIHR5cGVzIGFyZSBoYW5kbGVkOyB0aGUgZmFsc2UgYnJhbmNoIGxlYWRzIHRvIG90aGVyIGVsc2UtaWYgY2hlY2tzLiAqL1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gY2hhbmdlLnJlZmVyZW5jZS5wb3NpdGlvbi5zdGFydC5vZmZzZXQ7XG4gICAgICBjb25zdCBlbmRPZmZzZXQgPSBjaGFuZ2UucmVmZXJlbmNlLnBvc2l0aW9uLmVuZC5vZmZzZXQ7XG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gY29udGVudC5zbGljZShzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTtcbiAgICAgIGlmIChhY3R1YWxDb250ZW50ICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignQ29udGVudCBtaXNtYXRjaCcsIHtcbiAgICAgICAgICBhY3R1YWxDb250ZW50LFxuICAgICAgICAgIGVuZE9mZnNldCxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgc3RhcnRPZmZzZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsbCBjaGFuZ2UgdHlwZXMgYXJlIGhhbmRsZWQ7IG5vIHVua25vd24gY2hhbmdlIHR5cGVzIGluIHByYWN0aWNlLiAqL1xuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGNoYW5nZSkpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICB2YWxpZGF0ZUNoYW5nZXNEZWJ1Z2dlcignUHJvcGVydHkgdmFsdWUgaXMgbm90IGEgc3RyaW5nJywge1xuICAgICAgICAgIGZyb250bWF0dGVyS2V5OiBjaGFuZ2UucmVmZXJlbmNlLmtleSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHByb3BlcnR5VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IHByb3BlcnR5VmFsdWUuc2xpY2UoY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldCwgY2hhbmdlLnJlZmVyZW5jZS5lbmRPZmZzZXQpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGFydE9mZnNldDogY2hhbmdlLnJlZmVyZW5jZS5zdGFydE9mZnNldFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGNoYW5nZSB0eXBlcyBhcmUgaGFuZGxlZCBhYm92ZTsgbm8gdW5rbm93biBjaGFuZ2UgdHlwZXMgaW4gcHJhY3RpY2UuICovXG4gICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLnJlZmVyZW5jZS5rZXkpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIHZhbGlkYXRlQ2hhbmdlc0RlYnVnZ2VyKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLnJlZmVyZW5jZS5rZXksXG4gICAgICAgICAgcGF0aFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRmluYWxDb250ZW50KHBhcmFtczogQnVpbGRGaW5hbENvbnRlbnRQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgZnJvbnRtYXR0ZXIsXG4gICAgZnJvbnRtYXR0ZXJDaGFuZ2VkLFxuICAgIG5ld0NvbnRlbnRcbiAgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGZyb250bWF0dGVyQ2hhbmdlZC5zaXplID4gMCA/IHNldEZyb250bWF0dGVyKG5ld0NvbnRlbnQsIGZyb250bWF0dGVyKSA6IG5ld0NvbnRlbnQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXJTYWZlbHkocGFyYW1zOiBQYXJzZUZyb250bWF0dGVyU2FmZWx5UGFyYW1zKTogUGFyc2VGcm9udG1hdHRlclNhZmVseVJlc3VsdCB7XG4gIGNvbnN0IHsgY29udGVudCwgcGF0aCB9ID0gcGFyYW1zO1xuICBsZXQgZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8dW5rbm93bj4gPSB7fTtcbiAgbGV0IGhhc0Zyb250bWF0dGVyRXJyb3IgPSBmYWxzZTtcblxuICB0cnkge1xuICAgIGZyb250bWF0dGVyID0gcGFyc2VGcm9udG1hdHRlcihjb250ZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKG5ldyBFcnJvcihgRnJvbnRtYXR0ZXIgcGFyc2luZyBmYWlsZWQgaW4gJHtwYXRofWAsIHsgY2F1c2U6IGVycm9yIH0pKTtcbiAgICBoYXNGcm9udG1hdHRlckVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7IGZyb250bWF0dGVyLCBoYXNGcm9udG1hdHRlckVycm9yIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlSnNvblNhZmUoY29udGVudDogc3RyaW5nKTogR2VuZXJpY09iamVjdCB7XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaCB7XG4gICAgcGFyc2VkID0gbnVsbDtcbiAgfVxuXG4gIGlmIChwYXJzZWQgPT09IG51bGwgfHwgdHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcpIHtcbiAgICBwYXJzZWQgPSB7fTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWQgYXMgR2VuZXJpY09iamVjdDtcbn1cblxuZnVuY3Rpb24gc29ydEFuZEZpbHRlckNoYW5nZXMoY2hhbmdlczogRmlsZUNoYW5nZVtdKTogRmlsZUNoYW5nZVtdIHtcbiAgLy8gU29ydCBjaGFuZ2VzIGJ5IHR5cGUgYW5kIHBvc2l0aW9uXG4gIGNoYW5nZXMuc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoYSkgJiYgaXNDb250ZW50Q2hhbmdlKGIpKSB7XG4gICAgICByZXR1cm4gYS5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0IC0gYi5yZWZlcmVuY2UucG9zaXRpb24uc3RhcnQub2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMoYSkgJiYgaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzKGIpKSB7XG4gICAgICByZXR1cm4gYS5yZWZlcmVuY2Uua2V5LmxvY2FsZUNvbXBhcmUoYi5yZWZlcmVuY2Uua2V5KSB8fCBhLnJlZmVyZW5jZS5zdGFydE9mZnNldCAtIGIucmVmZXJlbmNlLnN0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGEpICYmIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYikpIHtcbiAgICAgIHJldHVybiBhLnJlZmVyZW5jZS5rZXkubG9jYWxlQ29tcGFyZShiLnJlZmVyZW5jZS5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBpc0NvbnRlbnRDaGFuZ2UoYSkgPyAtMSA6IDE7XG4gIH0pO1xuXG4gIC8vIEZpbHRlciBvdXQgZHVwbGljYXRlIGFuZCBuby1vcCBjaGFuZ2VzXG4gIHJldHVybiBjaGFuZ2VzLmZpbHRlcigoY2hhbmdlLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBjaGFuZ2Uub2xkQ29udGVudCAhPT0gY2hhbmdlLm5ld0NvbnRlbnQgJiYgKGluZGV4ID09PSAwIHx8ICFpc0RlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSkpO1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLFNBQVMsa0JBQWtCO0FBQzNCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG9CQUFvQjtBQUM3QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWdCUCxTQUFTLDhCQUE4QjtBQUN2QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZUFBZTtBQUV4QixNQUFNLDJCQUEyQixPQUFPO0FBTXhDLE1BQU0sNkNBQTZDO0FBd09uRCxlQUFzQixvQkFBb0IsUUFBMkQ7QUFDbkcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLDhCQUE4QjtBQUFBLEVBQ2hDLElBQUk7QUFDSixjQUFZLGVBQWU7QUFDM0IsTUFBSSxVQUFVLE1BQU0sYUFBYSxpQkFBaUIsRUFBRSxhQUFhLFFBQVEsQ0FBQztBQUMxRSxjQUFZLGVBQWU7QUFDM0IsTUFBSSxZQUFZLE1BQU07QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLEVBQUUsYUFBYSxvQkFBb0IsSUFBSSx1QkFBdUIsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUVyRixNQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxTQUFTLGFBQWEsS0FBSyxDQUFDLEdBQUc7QUFDN0QsV0FBTyw4QkFBOEIsT0FBTztBQUFBLEVBQzlDO0FBRUEsWUFBVSxxQkFBcUIsT0FBTztBQUV0QyxRQUFNLEVBQUUsb0JBQW9CLFdBQVcsSUFBSSwwQkFBMEIsRUFBRSxTQUFTLFNBQVMscUJBQXFCLEtBQUssQ0FBQztBQUVwSCxRQUFNLG1DQUFtQztBQUFBLElBQ3ZDO0FBQUEsSUFDQTtBQUFBLElBQ0EsaUNBQWlDO0FBQUEsSUFDakM7QUFBQSxFQUNGLENBQUM7QUFDRCxjQUFZLGVBQWU7QUFFM0IsU0FBTyxrQkFBa0IsRUFBRSxhQUFhLG9CQUFvQixXQUFXLENBQUM7QUFDMUU7QUFRQSxlQUFzQixpQkFBaUIsUUFBK0M7QUFDcEYsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsOEJBQThCO0FBQUEsSUFDOUIsR0FBRztBQUFBLEVBQ0wsSUFBSTtBQUNKLFFBQU0sUUFBUSw0QkFBMkM7QUFBQSxJQUN2RDtBQUFBLElBQ0EsTUFBTSxtQkFBbUIsRUFBRSxhQUFhLFFBQVEsR0FBRztBQUNqRCxhQUFPLGFBQWEsVUFBVSxJQUN6QixNQUFNLG1CQUFtQjtBQUFBLFFBQzFCO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBLE1BQU0sUUFBUSxLQUFLLFVBQVU7QUFBQSxRQUM3QjtBQUFBLE1BQ0YsQ0FBQyxJQUNFLE1BQU0sb0JBQW9CO0FBQUEsUUFDM0I7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0EsTUFBTSxRQUFRLEtBQUssVUFBVTtBQUFBLFFBQzdCO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDTDtBQUFBLElBQ0E7QUFBQSxJQUNBLEdBQUc7QUFBQSxFQUNMLENBQUMsQ0FBQztBQUNKO0FBUU8sU0FBUyxlQUFlLFFBQTRDO0FBQ3pFLFNBQU8sa0JBQWtCLE9BQU8sU0FBUztBQUMzQztBQVFPLFNBQVMsdUJBQXVCLFFBQW9EO0FBQ3pGLFNBQU8sZUFBZSxNQUFNLEtBQUssT0FBTyxVQUFVLFNBQVM7QUFDN0Q7QUFRTyxTQUFTLHVCQUF1QixRQUFvRDtBQUN6RixTQUFPLGVBQWUsTUFBTSxLQUFLLE9BQU8sVUFBVSxTQUFTO0FBQzdEO0FBUU8sU0FBUyxnQkFBZ0IsWUFBcUQ7QUFDbkYsU0FBTyxpQkFBaUIsV0FBVyxTQUFTO0FBQzlDO0FBUU8sU0FBUyxvQkFBb0IsWUFBeUQ7QUFDM0YsU0FBTyx1QkFBdUIsV0FBVyxTQUFTO0FBQ3BEO0FBUU8sU0FBUywrQkFBK0IsWUFBb0U7QUFDakgsU0FBTyxrQ0FBa0MsV0FBVyxTQUFTO0FBQy9EO0FBUU8sU0FBUywrQkFBK0IsWUFBNkQ7QUFDMUcsU0FBTywrQkFBK0IsVUFBVSxJQUM1QyxhQUNBO0FBQUEsSUFDQSxHQUFHO0FBQUEsSUFDSCxXQUFXLGtDQUFrQyxXQUFXLFNBQVM7QUFBQSxFQUNuRTtBQUNKO0FBRUEsZUFBZSxtQkFBbUIsUUFBMEQ7QUFDMUYsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLDhCQUE4QjtBQUFBLEVBQ2hDLElBQUk7QUFDSixRQUFNLFVBQVUsTUFBTSxhQUFhLGlCQUFpQixFQUFFLGFBQWEsUUFBUSxDQUFDO0FBQzVFLGNBQVksZUFBZTtBQUMzQixNQUFJLFlBQVksTUFBTTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sYUFBYSxjQUFjLE9BQU87QUFReEMsTUFBSSxDQUFDLE1BQU0sUUFBUSxXQUFXLEtBQUssS0FBSyxDQUFDLE1BQU0sUUFBUSxXQUFXLEtBQUssR0FBRztBQUN4RSwyQkFBdUIsK0JBQStCLEVBQUUsd0NBQXdDLEVBQUUsS0FBSyxDQUFDO0FBQ3hHLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxvQkFBb0Isb0JBQUksSUFBb0M7QUFFbEUsYUFBVyxVQUFVLFNBQVM7QUFDNUIsUUFBSSxDQUFDLGVBQWUsTUFBTSxHQUFHO0FBQzNCLFlBQU0sVUFBVTtBQUNoQixjQUFRLE1BQU0sU0FBUztBQUFBLFFBQ3JCO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUNEO0FBQUEsSUFDRjtBQUVBLFVBQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxVQUFVLFNBQVM7QUFDeEQsUUFBSSxDQUFDLE1BQU07QUFDVCxZQUFNLFVBQVU7QUFDaEIsY0FBUSxNQUFNLFNBQVM7QUFBQSxRQUNyQixXQUFXLE9BQU8sVUFBVTtBQUFBLFFBQzVCO0FBQUEsTUFDRixDQUFDO0FBQ0QsYUFBTztBQUFBLElBQ1Q7QUFFQSxRQUFJLHVCQUF1QixNQUFNLEdBQUc7QUFDbEMsVUFBSSxLQUFLLFNBQVMsT0FBTyxZQUFZO0FBQ25DLCtCQUF1QiwrQkFBK0IsRUFBRSxvQkFBb0I7QUFBQSxVQUMxRSxlQUFlLEtBQUs7QUFBQSxVQUNwQixpQkFBaUIsT0FBTztBQUFBLFVBQ3hCLFdBQVcsT0FBTyxVQUFVO0FBQUEsVUFDNUI7QUFBQSxVQUNBLE1BQU07QUFBQSxRQUNSLENBQUM7QUFFRCxlQUFPO0FBQUEsTUFDVDtBQUNBLFdBQUssT0FBTyxPQUFPO0FBQUEsSUFFckIsV0FBVyx1QkFBdUIsTUFBTSxHQUFHO0FBRXpDLFVBQUksMkJBQTJCLGtCQUFrQixJQUFJLE9BQU8sVUFBVSxTQUFTO0FBQy9FLFVBQUksQ0FBQywwQkFBMEI7QUFDN0IsbUNBQTJCLENBQUM7QUFDNUIsMEJBQWtCLElBQUksT0FBTyxVQUFVLFdBQVcsd0JBQXdCO0FBQUEsTUFDNUU7QUFFQSwrQkFBeUIsS0FBSyxNQUFNO0FBQUEsSUFDdEM7QUFBQSxFQUNGO0FBRUEsYUFBVyxDQUFDLFdBQVcsd0JBQXdCLEtBQUssbUJBQW1CO0FBQ3JFLFVBQU0sT0FBTyxXQUFXLE1BQU0sU0FBUztBQUV2QyxRQUFJLENBQUMsTUFBTTtBQUNULFlBQU0sVUFBVTtBQUNoQixjQUFRLE1BQU0sU0FBUztBQUFBLFFBQ3JCO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUVELGFBQU87QUFBQSxJQUNUO0FBR0EsUUFBSSxPQUFPLEtBQUssU0FBUyxVQUFVO0FBQ2pDLFlBQU0sVUFBVTtBQUNoQixjQUFRLE1BQU0sU0FBUztBQUFBLFFBQ3JCO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUVELGFBQU87QUFBQSxJQUNUO0FBRUEsVUFBTSxpQkFBaUIseUJBQXlCLElBQUksQ0FBQyxXQUFXO0FBSzlELFlBQU0sYUFBYSxPQUFPLFVBQVUsa0JBQWtCLFNBQVMsU0FBUyx3QkFBd0IsSUFDNUYsT0FBTyxXQUFXLFdBQVcsNENBQTRDLE1BQU0sd0JBQXdCLElBQ3ZHLE9BQU87QUFDWCxhQUFPLHNCQUFzQixPQUFPLFVBQVUsbUJBQW1CLFVBQVU7QUFBQSxJQUM3RSxDQUFDO0FBQ0QsVUFBTSxjQUFjLE1BQU0sb0JBQW9CO0FBQUEsTUFDNUM7QUFBQSxNQUNBLGlCQUFpQjtBQUFBLE1BQ2pCLFNBQVMsS0FBSztBQUFBLE1BQ2QsTUFBTSxHQUFHLElBQUksUUFBUSxPQUFPLFNBQVMsQ0FBQztBQUFBLE1BQ3RDO0FBQUEsSUFDRixDQUFDO0FBTUQsUUFBSSxnQkFBZ0IsTUFBTTtBQUN4QixhQUFPO0FBQUEsSUFDVDtBQUVBLFNBQUssT0FBTztBQUFBLEVBQ2Q7QUFFQSxTQUFPLEtBQUssVUFBVSxZQUFZLE1BQU0sR0FBSTtBQUM5QztBQUVBLFNBQVMsMEJBQTBCLFFBQTBFO0FBQzNHLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBQ0osTUFBSSxhQUFhO0FBQ2pCLE1BQUksWUFBWTtBQUNoQixNQUFJLG9CQUFtQztBQUFBLElBQ3JDLFlBQVk7QUFBQSxJQUNaLFlBQVk7QUFBQSxJQUNaLFdBQVc7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxRQUNSLEtBQUssRUFBRSxLQUFLLEdBQUcsTUFBTSxHQUFHLFFBQVEsRUFBRTtBQUFBLFFBQ2xDLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxHQUFHLFFBQVEsRUFBRTtBQUFBLE1BQ3RDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxRQUFNLGtDQUFrQyxvQkFBSSxJQUE0QztBQUV4RixhQUFXLFVBQVUsU0FBUztBQUU1QixRQUFJLGdCQUFnQixNQUFNLEdBQUc7QUFFM0IsVUFBSSxhQUFhLE9BQU8sVUFBVSxTQUFTLE1BQU0sUUFBUTtBQUN2RCxzQkFBYyxRQUFRLE1BQU0sV0FBVyxPQUFPLFVBQVUsU0FBUyxNQUFNLE1BQU07QUFDN0Usc0JBQWMsT0FBTztBQUNyQixvQkFBWSxPQUFPLFVBQVUsU0FBUyxJQUFJO0FBQzFDLDRCQUFvQjtBQUFBLE1BQ3RCLE9BQU87QUFDTCxjQUFNLHlCQUF5QixPQUFPLFVBQVUsU0FBUyxNQUFNLFNBQVMsa0JBQWtCLFVBQVUsU0FBUyxNQUFNO0FBQ25ILGNBQU0sdUJBQXVCLE9BQU8sVUFBVSxTQUFTLElBQUksU0FBUyxrQkFBa0IsVUFBVSxTQUFTLE1BQU07QUFDL0csY0FBTSxxQkFBcUIsa0JBQWtCLFdBQVcsTUFBTSx3QkFBd0Isb0JBQW9CO0FBQzFHLFlBQUksdUJBQXVCLE9BQU8sWUFBWTtBQUM1QyxnQkFBTSxVQUFVO0FBQ2hCLGtCQUFRLE1BQU0sU0FBUyxFQUFFLFFBQVEsa0JBQWtCLENBQUM7QUFDcEQsZ0JBQU0sSUFBSSxNQUFNLE9BQU87QUFBQSxRQUN6QjtBQUNBLHFCQUFhLFdBQVcsTUFBTSxHQUFHLFdBQVcsU0FBUyxrQkFBa0IsV0FBVyxNQUFNLElBQ3BGLGtCQUFrQixXQUFXLE1BQU0sR0FBRyxzQkFBc0IsSUFDNUQsT0FBTyxhQUNQLGtCQUFrQixXQUFXLE1BQU0sb0JBQW9CO0FBQUEsTUFDN0Q7QUFBQSxJQUVGLFdBQVcsb0JBQW9CLE1BQU0sR0FBRztBQUd0QyxVQUFJLHFCQUFxQjtBQUN2QixnQkFBUSxNQUFNLHNDQUFzQyxJQUFJLHdDQUF3QyxFQUFFLE9BQU8sQ0FBQztBQUFBLE1BQzVHLE9BQU87QUFFTCxZQUFJLGdDQUFnQyxnQ0FBZ0MsSUFBSSxPQUFPLFVBQVUsR0FBRztBQUM1RixZQUFJLENBQUMsK0JBQStCO0FBQ2xDLDBDQUFnQyxDQUFDO0FBQ2pDLDBDQUFnQyxJQUFJLE9BQU8sVUFBVSxLQUFLLDZCQUE2QjtBQUFBLFFBQ3pGO0FBQ0Esc0NBQThCLEtBQUssK0JBQStCLE1BQU0sQ0FBQztBQUFBLE1BQzNFO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxnQkFBYyxRQUFRLE1BQU0sU0FBUztBQUVyQyxTQUFPLEVBQUUsb0JBQW9CLGlDQUFpQyxXQUFXO0FBQzNFO0FBRUEsZUFBZSxtQ0FBbUMsUUFBaUU7QUFDakgsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixhQUFXLENBQUMsS0FBSyw2QkFBNkIsS0FBSyxpQ0FBaUM7QUFDbEYsVUFBTSxnQkFBZ0IsdUJBQXVCLGFBQWEsR0FBRztBQUU3RCxRQUFJLE9BQU8sa0JBQWtCLFVBQVU7QUFDckM7QUFBQSxJQUNGO0FBR0EsVUFBTSxpQkFBa0MsOEJBQThCLElBQUksQ0FBQyxZQUFZO0FBQUEsTUFDckYsWUFBWSxPQUFPO0FBQUEsTUFDbkIsWUFBWSxPQUFPO0FBQUEsTUFDbkIsV0FBVztBQUFBLFFBQ1QsTUFBTTtBQUFBLFFBQ04sVUFBVTtBQUFBLFFBQ1YsVUFBVTtBQUFBLFVBQ1IsS0FBSztBQUFBLFlBQ0gsS0FBSyxPQUFPLFVBQVU7QUFBQSxZQUN0QixNQUFNO0FBQUEsWUFDTixRQUFRLE9BQU8sVUFBVTtBQUFBLFVBQzNCO0FBQUEsVUFDQSxPQUFPO0FBQUEsWUFDTCxLQUFLLE9BQU8sVUFBVTtBQUFBLFlBQ3RCLE1BQU07QUFBQSxZQUNOLFFBQVEsT0FBTyxVQUFVO0FBQUEsVUFDM0I7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0YsRUFBRTtBQUVGLFVBQU0sbUJBQW1CLE1BQU0sb0JBQW9CO0FBQUEsTUFDakQ7QUFBQSxNQUNBLGlCQUFpQjtBQUFBLE1BQ2pCLFNBQVM7QUFBQSxNQUNULE1BQU0sR0FBRyxJQUFJLGdCQUFnQixHQUFHO0FBQUEsSUFDbEMsQ0FBQztBQUVELFFBQUkscUJBQXFCLE1BQU07QUFDN0I7QUFBQSxJQUNGO0FBR0EsMkJBQXVCO0FBQUEsTUFDckIsU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sT0FBTztBQUFBLElBQ1QsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQUVBLFNBQVMsZ0JBQWdCLFFBQXdDO0FBQy9ELFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBQ0osUUFBTSwwQkFBMEIsdUJBQXVCLDRCQUE0QjtBQUNuRixhQUFXLFVBQVUsU0FBUztBQUU1QixRQUFJLGdCQUFnQixNQUFNLEdBQUc7QUFFM0IsWUFBTSxjQUFjLE9BQU8sVUFBVSxTQUFTLE1BQU07QUFDcEQsWUFBTSxZQUFZLE9BQU8sVUFBVSxTQUFTLElBQUk7QUFDaEQsWUFBTSxnQkFBZ0IsUUFBUSxNQUFNLGFBQWEsU0FBUztBQUMxRCxVQUFJLGtCQUFrQixPQUFPLFlBQVk7QUFDdkMsZ0NBQXdCLG9CQUFvQjtBQUFBLFVBQzFDO0FBQUEsVUFDQTtBQUFBLFVBQ0EsaUJBQWlCLE9BQU87QUFBQSxVQUN4QjtBQUFBLFVBQ0E7QUFBQSxRQUNGLENBQUM7QUFFRCxlQUFPO0FBQUEsTUFDVDtBQUFBLElBRUYsV0FBVywrQkFBK0IsTUFBTSxHQUFHO0FBRWpELFlBQU0sZ0JBQWdCLHVCQUF1QixhQUFhLE9BQU8sVUFBVSxHQUFHO0FBQzlFLFVBQUksT0FBTyxrQkFBa0IsVUFBVTtBQUNyQyxnQ0FBd0Isa0NBQWtDO0FBQUEsVUFDeEQsZ0JBQWdCLE9BQU8sVUFBVTtBQUFBLFVBQ2pDO0FBQUEsVUFDQTtBQUFBLFFBQ0YsQ0FBQztBQUNELGVBQU87QUFBQSxNQUNUO0FBRUEsWUFBTSxnQkFBZ0IsY0FBYyxNQUFNLE9BQU8sVUFBVSxhQUFhLE9BQU8sVUFBVSxTQUFTO0FBQ2xHLFVBQUksa0JBQWtCLE9BQU8sWUFBWTtBQUN2QyxnQ0FBd0Isb0JBQW9CO0FBQUEsVUFDMUM7QUFBQSxVQUNBLGlCQUFpQixPQUFPO0FBQUEsVUFDeEIsZ0JBQWdCLE9BQU8sVUFBVTtBQUFBLFVBQ2pDO0FBQUEsVUFDQSxhQUFhLE9BQU8sVUFBVTtBQUFBLFFBQ2hDLENBQUM7QUFFRCxlQUFPO0FBQUEsTUFDVDtBQUFBLElBRUYsV0FBVyxvQkFBb0IsTUFBTSxHQUFHO0FBRXRDLFlBQU0sZ0JBQWdCLHVCQUF1QixhQUFhLE9BQU8sVUFBVSxHQUFHO0FBQzlFLFVBQUksa0JBQWtCLE9BQU8sWUFBWTtBQUN2QyxnQ0FBd0Isb0JBQW9CO0FBQUEsVUFDMUM7QUFBQSxVQUNBLGlCQUFpQixPQUFPO0FBQUEsVUFDeEIsZ0JBQWdCLE9BQU8sVUFBVTtBQUFBLFVBQ2pDO0FBQUEsUUFDRixDQUFDO0FBRUQsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQUVBLFNBQVMsa0JBQWtCLFFBQXlDO0FBQ2xFLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixTQUFPLG1CQUFtQixPQUFPLElBQUksZUFBZSxZQUFZLFdBQVcsSUFBSTtBQUNqRjtBQUVBLFNBQVMsdUJBQXVCLFFBQW9FO0FBQ2xHLFFBQU0sRUFBRSxTQUFTLEtBQUssSUFBSTtBQUMxQixNQUFJLGNBQTRDLENBQUM7QUFDakQsTUFBSSxzQkFBc0I7QUFFMUIsTUFBSTtBQUNGLGtCQUFjLGlCQUFpQixPQUFPO0FBQUEsRUFDeEMsU0FBUyxPQUFPO0FBQ2QsZUFBVyxJQUFJLE1BQU0saUNBQWlDLElBQUksSUFBSSxFQUFFLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFDL0UsMEJBQXNCO0FBQUEsRUFDeEI7QUFFQSxTQUFPLEVBQUUsYUFBYSxvQkFBb0I7QUFDNUM7QUFFQSxTQUFTLGNBQWMsU0FBZ0M7QUFDckQsTUFBSTtBQUNKLE1BQUk7QUFDRixhQUFTLEtBQUssTUFBTSxPQUFPO0FBQUEsRUFDN0IsUUFBUTtBQUNOLGFBQVM7QUFBQSxFQUNYO0FBRUEsTUFBSSxXQUFXLFFBQVEsT0FBTyxXQUFXLFVBQVU7QUFDakQsYUFBUyxDQUFDO0FBQUEsRUFDWjtBQUVBLFNBQU87QUFDVDtBQUVBLFNBQVMscUJBQXFCLFNBQXFDO0FBRWpFLFVBQVEsS0FBSyxDQUFDLEdBQUcsTUFBTTtBQUNyQixRQUFJLGdCQUFnQixDQUFDLEtBQUssZ0JBQWdCLENBQUMsR0FBRztBQUM1QyxhQUFPLEVBQUUsVUFBVSxTQUFTLE1BQU0sU0FBUyxFQUFFLFVBQVUsU0FBUyxNQUFNO0FBQUEsSUFDeEU7QUFFQSxRQUFJLCtCQUErQixDQUFDLEtBQUssK0JBQStCLENBQUMsR0FBRztBQUMxRSxhQUFPLEVBQUUsVUFBVSxJQUFJLGNBQWMsRUFBRSxVQUFVLEdBQUcsS0FBSyxFQUFFLFVBQVUsY0FBYyxFQUFFLFVBQVU7QUFBQSxJQUNqRztBQUVBLFFBQUksb0JBQW9CLENBQUMsS0FBSyxvQkFBb0IsQ0FBQyxHQUFHO0FBQ3BELGFBQU8sRUFBRSxVQUFVLElBQUksY0FBYyxFQUFFLFVBQVUsR0FBRztBQUFBLElBQ3REO0FBRUEsV0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUs7QUFBQSxFQUNuQyxDQUFDO0FBR0QsU0FBTyxRQUFRLE9BQU8sQ0FBQyxRQUFRLFVBQVU7QUFDdkMsV0FBTyxPQUFPLGVBQWUsT0FBTyxlQUFlLFVBQVUsS0FBSyxDQUFDLFlBQVksUUFBUSxRQUFRLFFBQVEsQ0FBQyxDQUFDO0FBQUEsRUFDM0csQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
(function () {
|
|
7
7
|
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for(
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for(
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
function ensureBrowserProcess() {
|
|
13
13
|
const browserProcess = {
|
|
14
14
|
browser: true,
|
|
15
15
|
cwd() {
|
|
16
|
-
return
|
|
16
|
+
return "/";
|
|
17
17
|
},
|
|
18
18
|
env: {},
|
|
19
|
-
platform:
|
|
19
|
+
platform: "android"
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
21
|
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
22
|
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
23
|
globalThis.process = browserProcess;
|
|
28
24
|
return;
|
|
29
25
|
}
|
|
30
|
-
|
|
31
26
|
if (existingProcess.versions?.node) {
|
|
32
27
|
return;
|
|
33
28
|
}
|
|
34
|
-
|
|
35
29
|
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
30
|
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
31
|
existingProcessRecord[key] ??= value;
|
|
39
32
|
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
33
|
+
existingProcessRecord["browser"] = true;
|
|
42
34
|
}
|
|
43
35
|
|
|
44
36
|
(function initEsm() {
|
|
@@ -65,4 +57,4 @@ async function revealInFileExplorer(params) {
|
|
|
65
57
|
export {
|
|
66
58
|
revealInFileExplorer
|
|
67
59
|
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ZpbGUtZXhwbG9yZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBPYnNpZGlhbidzIGNvcmUgZmlsZSBleHBsb3Jlci5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IEludGVybmFsUGx1Z2luTmFtZSB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcblxuLyoqXG4gKiBIb3cgbWFueSBhbmltYXRpb24gZnJhbWVzIHRoZSBleHBsb3JlciBrZWVwcyByZS1hY3RpdmF0aW5nIGl0c2VsZiBmb3IgYWZ0ZXIgaXRzIHJldmVhbCBzZXR0bGVzLlxuICpcbiAqIGByZXZlYWxJbkZvbGRlcmAgYXdhaXRzIGByZXZlYWxMZWFmYCwgd2hpY2ggYWN0aXZhdGVzIHRoZSBleHBsb3JlciwgYW5kIHRoZW4gYWN0aXZhdGVzIGl0IEFHQUlOIGluc2lkZVxuICogYGFwcC5uZXh0RnJhbWVgLiBXYWl0aW5nIG9uZSBmcmFtZSBpcyBub3QgZW5vdWdoIHRvIGxhbmQgYWZ0ZXIgdGhhdDogYSBjYWxsZXIgZm9jdXNpbmcgYW4gZWRpdG9yIG9uIHRoZVxuICogZmlyc3QgZnJhbWUgbG9zdCB0aGUgZm9jdXMgYmFjayB0byB0aGUgZXhwbG9yZXIgb24gZXZlcnkgcmVhbCBtb3VzZSBjbGljayAobWVhc3VyZWQgaW4gT2JzaWRpYW4gMS4xMy54KS5cbiAqL1xuY29uc3QgRlJBTUVTX1RPX09VVExBU1RfVEhFX0VYUExPUkVSX0FDVElWQVRJT04gPSAyO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXZlYWxJbkZpbGVFeHBsb3Jlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV2ZWFsSW5GaWxlRXhwbG9yZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZpbGUgb3IgZm9sZGVyIHRvIHJldmVhbC5cbiAgICovXG4gIHJlYWRvbmx5IGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xufVxuXG4vKipcbiAqIEhpZ2hsaWdodHMgYSBmaWxlIG9yIGZvbGRlciBpbiB0aGUgY29yZSBmaWxlIGV4cGxvcmVyLCBhbmQgcmVzb2x2ZXMgb25seSBvbmNlIHRoZSBleHBsb3JlciBoYXNcbiAqIGZpbmlzaGVkIHRha2luZyB0aGUgZm9jdXMgZm9yIGl0LlxuICpcbiAqIFRoZSBjb3JlIHBsdWdpbidzIGByZXZlYWxJbkZvbGRlcmAgaXMgdHlwZWQgYHZvaWRgIGJ1dCBpcyBhc3luY2hyb25vdXMgYXQgcnVudGltZSwgYW5kIHRoZSBleHBsb3JlclxuICogcmUtYWN0aXZhdGVzIGl0c2VsZiBvbiBhIGxhdGVyIGZyYW1lLiBBIGNhbGxlciB0aGF0IG1vdmVzIHRoZSBmb2N1cyBzb21ld2hlcmUgZWxzZSByaWdodCBhZnRlciB0aGVcbiAqIHJldmVhbCBcdTIwMTQgYmFjayBpbnRvIGFuIGVkaXRvciwgc2F5IFx1MjAxNCBsb3NlcyB0aGF0IHJhY2UgdW5sZXNzIGl0IGF3YWl0cyB0aGlzLlxuICpcbiAqIEEgZGlzYWJsZWQgZmlsZSBleHBsb3JlciByZXZlYWxzIG5vdGhpbmcsIGFuZCB0aGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyBhdCBvbmNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgZXhwbG9yZXIgaGFzIGZpbmlzaGVkIHJldmVhbGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldmVhbEluRmlsZUV4cGxvcmVyKHBhcmFtczogUmV2ZWFsSW5GaWxlRXhwbG9yZXJQYXJhbXMpOiBQcm9taXNlPHZvaWQ+
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ZpbGUtZXhwbG9yZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBPYnNpZGlhbidzIGNvcmUgZmlsZSBleHBsb3Jlci5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgVEFic3RyYWN0RmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IEludGVybmFsUGx1Z2luTmFtZSB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcblxuLyoqXG4gKiBIb3cgbWFueSBhbmltYXRpb24gZnJhbWVzIHRoZSBleHBsb3JlciBrZWVwcyByZS1hY3RpdmF0aW5nIGl0c2VsZiBmb3IgYWZ0ZXIgaXRzIHJldmVhbCBzZXR0bGVzLlxuICpcbiAqIGByZXZlYWxJbkZvbGRlcmAgYXdhaXRzIGByZXZlYWxMZWFmYCwgd2hpY2ggYWN0aXZhdGVzIHRoZSBleHBsb3JlciwgYW5kIHRoZW4gYWN0aXZhdGVzIGl0IEFHQUlOIGluc2lkZVxuICogYGFwcC5uZXh0RnJhbWVgLiBXYWl0aW5nIG9uZSBmcmFtZSBpcyBub3QgZW5vdWdoIHRvIGxhbmQgYWZ0ZXIgdGhhdDogYSBjYWxsZXIgZm9jdXNpbmcgYW4gZWRpdG9yIG9uIHRoZVxuICogZmlyc3QgZnJhbWUgbG9zdCB0aGUgZm9jdXMgYmFjayB0byB0aGUgZXhwbG9yZXIgb24gZXZlcnkgcmVhbCBtb3VzZSBjbGljayAobWVhc3VyZWQgaW4gT2JzaWRpYW4gMS4xMy54KS5cbiAqL1xuY29uc3QgRlJBTUVTX1RPX09VVExBU1RfVEhFX0VYUExPUkVSX0FDVElWQVRJT04gPSAyO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXZlYWxJbkZpbGVFeHBsb3Jlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV2ZWFsSW5GaWxlRXhwbG9yZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZpbGUgb3IgZm9sZGVyIHRvIHJldmVhbC5cbiAgICovXG4gIHJlYWRvbmx5IGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xufVxuXG4vKipcbiAqIEhpZ2hsaWdodHMgYSBmaWxlIG9yIGZvbGRlciBpbiB0aGUgY29yZSBmaWxlIGV4cGxvcmVyLCBhbmQgcmVzb2x2ZXMgb25seSBvbmNlIHRoZSBleHBsb3JlciBoYXNcbiAqIGZpbmlzaGVkIHRha2luZyB0aGUgZm9jdXMgZm9yIGl0LlxuICpcbiAqIFRoZSBjb3JlIHBsdWdpbidzIGByZXZlYWxJbkZvbGRlcmAgaXMgdHlwZWQgYHZvaWRgIGJ1dCBpcyBhc3luY2hyb25vdXMgYXQgcnVudGltZSwgYW5kIHRoZSBleHBsb3JlclxuICogcmUtYWN0aXZhdGVzIGl0c2VsZiBvbiBhIGxhdGVyIGZyYW1lLiBBIGNhbGxlciB0aGF0IG1vdmVzIHRoZSBmb2N1cyBzb21ld2hlcmUgZWxzZSByaWdodCBhZnRlciB0aGVcbiAqIHJldmVhbCBcdTIwMTQgYmFjayBpbnRvIGFuIGVkaXRvciwgc2F5IFx1MjAxNCBsb3NlcyB0aGF0IHJhY2UgdW5sZXNzIGl0IGF3YWl0cyB0aGlzLlxuICpcbiAqIEEgZGlzYWJsZWQgZmlsZSBleHBsb3JlciByZXZlYWxzIG5vdGhpbmcsIGFuZCB0aGUgcmV0dXJuZWQgcHJvbWlzZSByZXNvbHZlcyBhdCBvbmNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgZXhwbG9yZXIgaGFzIGZpbmlzaGVkIHJldmVhbGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldmVhbEluRmlsZUV4cGxvcmVyKHBhcmFtczogUmV2ZWFsSW5GaWxlRXhwbG9yZXJQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhYnN0cmFjdEZpbGUsIGFwcCB9ID0gcGFyYW1zO1xuICBjb25zdCBmaWxlRXhwbG9yZXIgPSBhcHAuaW50ZXJuYWxQbHVnaW5zLmdldEVuYWJsZWRQbHVnaW5CeUlkKEludGVybmFsUGx1Z2luTmFtZS5GaWxlRXhwbG9yZXIpO1xuICBpZiAoIWZpbGVFeHBsb3Jlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFR5cGVkIGB2b2lkYCwgcmV0dXJucyBhIHByb21pc2UgYXQgcnVudGltZS5cbiAgY29uc3QgcmV2ZWFsSW5Gb2xkZXI6IChmaWxlOiBUQWJzdHJhY3RGaWxlKSA9PiB1bmtub3duID0gZmlsZUV4cGxvcmVyLnJldmVhbEluRm9sZGVyLmJpbmQoZmlsZUV4cGxvcmVyKTtcbiAgYXdhaXQgcmV2ZWFsSW5Gb2xkZXIoYWJzdHJhY3RGaWxlKTtcblxuICBmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgRlJBTUVTX1RPX09VVExBU1RfVEhFX0VYUExPUkVSX0FDVElWQVRJT047IGZyYW1lKyspIHtcbiAgICBhd2FpdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luYygpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsMEJBQTBCO0FBU25DLE1BQU0sNENBQTRDO0FBOEJsRCxlQUFzQixxQkFBcUIsUUFBbUQ7QUFDNUYsUUFBTSxFQUFFLGNBQWMsSUFBSSxJQUFJO0FBQzlCLFFBQU0sZUFBZSxJQUFJLGdCQUFnQixxQkFBcUIsbUJBQW1CLFlBQVk7QUFDN0YsTUFBSSxDQUFDLGNBQWM7QUFDakI7QUFBQSxFQUNGO0FBR0EsUUFBTSxpQkFBbUQsYUFBYSxlQUFlLEtBQUssWUFBWTtBQUN0RyxRQUFNLGVBQWUsWUFBWTtBQUVqQyxXQUFTLFFBQVEsR0FBRyxRQUFRLDJDQUEyQyxTQUFTO0FBQzlFLFVBQU0sMkJBQTJCO0FBQUEsRUFDbkM7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
(function () {
|
|
7
7
|
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for(
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for(
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
function ensureBrowserProcess() {
|
|
13
13
|
const browserProcess = {
|
|
14
14
|
browser: true,
|
|
15
15
|
cwd() {
|
|
16
|
-
return
|
|
16
|
+
return "/";
|
|
17
17
|
},
|
|
18
18
|
env: {},
|
|
19
|
-
platform:
|
|
19
|
+
platform: "android"
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
21
|
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
22
|
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
23
|
globalThis.process = browserProcess;
|
|
28
24
|
return;
|
|
29
25
|
}
|
|
30
|
-
|
|
31
26
|
if (existingProcess.versions?.node) {
|
|
32
27
|
return;
|
|
33
28
|
}
|
|
34
|
-
|
|
35
29
|
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
30
|
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
31
|
existingProcessRecord[key] ??= value;
|
|
39
32
|
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
33
|
+
existingProcessRecord["browser"] = true;
|
|
42
34
|
}
|
|
43
35
|
|
|
44
36
|
(function initEsm() {
|
|
@@ -166,4 +158,4 @@ export {
|
|
|
166
158
|
processFrontmatter,
|
|
167
159
|
waitForPendingLinkUpdates
|
|
168
160
|
};
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ZpbGUtbWFuYWdlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBmaWxlcyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUnO1xuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7XG4gIGlzRGVlcEVxdWFsLFxuICBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXNcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9mcm9udG1hdHRlci50cyc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlTG9ja0NvbXBvbmVudCB9IGZyb20gJy4vcmVzb3VyY2UtbG9jay50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFByb2Nlc3NPcHRpb25zLFxuICBQcm9jZXNzUGFyYW1zXG59IGZyb20gJy4vdmF1bHQudHMnO1xuXG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRQYXRoLFxuICBpc01hcmtkb3duRmlsZVxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIHBhcnNlRnJvbnRtYXR0ZXIsXG4gIHNldEZyb250bWF0dGVyXG59IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vdmF1bHQudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBhZGRBbGlhc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQWxpYXNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFsaWFzIHRvIGFkZC5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIFRGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UtbG9jayBjb21wb25lbnQgdXNlZCB0byBsb2NrIHRoZSBub3RlIHdoaWxlIGl0IGlzIGJlaW5nIG1vZGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VMb2NrQ29tcG9uZW50OiBudWxsIHwgUmVzb3VyY2VMb2NrQ29tcG9uZW50O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBkZWxldGVBbGlhc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQWxpYXNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFsaWFzIHRvIGRlbGV0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIFRGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UtbG9jayBjb21wb25lbnQgdXNlZCB0byBsb2NrIHRoZSBub3RlIHdoaWxlIGl0IGlzIGJlaW5nIG1vZGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VMb2NrQ29tcG9uZW50OiBudWxsIHwgUmVzb3VyY2VMb2NrQ29tcG9uZW50O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBwcm9jZXNzRnJvbnRtYXR0ZXJ9LlxuICovXG5leHBvcnQgdHlwZSBQcm9jZXNzRnJvbnRtYXR0ZXJPcHRpb25zID0gUHJvY2Vzc09wdGlvbnM7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHByb2Nlc3NGcm9udG1hdHRlcn0uXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0Zyb250bWF0dGVyUGFyYW1zPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4gZXh0ZW5kcyBQcm9jZXNzRnJvbnRtYXR0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IG1vZGlmaWVzIHRoZSBmcm9udCBtYXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBmcm9udG1hdHRlciAtIFRoZSBmcm9udCBtYXR0ZXIgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAgICogQHJldHVybnMgQSB2YWx1ZSB0aGF0IG1heSBiZSBgbnVsbGAgdG8gYWJvcnQgdGhlIHByb2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBmcm9udG1hdHRlckZ1bmN0aW9uOiAoZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+LCBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48bnVsbD4+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBBZGRzIGFuIGFsaWFzIHRvIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBmaWxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBhZGRpbmcgdGhlIGFsaWFzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhbGlhcyBoYXMgYmVlbiBhZGRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZEFsaWFzKHBhcmFtczogQWRkQWxpYXNQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGFsaWFzLFxuICAgIGFwcCxcbiAgICBwYXRoT3JGaWxlLFxuICAgIHJlc291cmNlTG9ja0NvbXBvbmVudFxuICB9ID0gcGFyYW1zO1xuICBpZiAoIWFsaWFzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoeyBhcHAsIHBhdGhPckZpbGUgfSk7XG5cbiAgaWYgKCFpc01hcmtkb3duRmlsZShmaWxlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAke2ZpbGUucGF0aH0gaXMgbm90IGEgbWFya2Rvd24gZmlsZS5gKTtcbiAgfVxuXG4gIGlmIChhbGlhcyA9PT0gZmlsZS5iYXNlbmFtZSB8fCBhbGlhcyA9PT0gZmlsZS5uYW1lKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXdhaXQgcHJvY2Vzc0Zyb250bWF0dGVyKHtcbiAgICBhcHAsXG4gICAgZnJvbnRtYXR0ZXJGdW5jdGlvbjogKGZyb250bWF0dGVyKSA9PiB7XG4gICAgICBmcm9udG1hdHRlci5hbGlhc2VzID8/PSBbXTtcblxuICAgICAgaWYgKCFmcm9udG1hdHRlci5hbGlhc2VzLmluY2x1ZGVzKGFsaWFzKSkge1xuICAgICAgICBmcm9udG1hdHRlci5hbGlhc2VzLnB1c2goYWxpYXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGF0aE9yRmlsZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwsXG4gICAgcmVzb3VyY2VMb2NrQ29tcG9uZW50XG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgYW4gYWxpYXMgZnJvbSB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gZmlsZSBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBkZWxldGluZyB0aGUgYWxpYXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFsaWFzIGhhcyBiZWVuIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVBbGlhcyhwYXJhbXM6IERlbGV0ZUFsaWFzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhbGlhcyxcbiAgICBhcHAsXG4gICAgcGF0aE9yRmlsZSxcbiAgICByZXNvdXJjZUxvY2tDb21wb25lbnRcbiAgfSA9IHBhcmFtcztcbiAgaWYgKCFhbGlhcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghaXNNYXJrZG93bkZpbGUocGF0aE9yRmlsZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgJHtnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSl9IGlzIG5vdCBhIG1hcmtkb3duIGZpbGUuYCk7XG4gIH1cblxuICBhd2FpdCBwcm9jZXNzRnJvbnRtYXR0ZXIoe1xuICAgIGFwcCxcbiAgICBmcm9udG1hdHRlckZ1bmN0aW9uOiAoZnJvbnRtYXR0ZXIpID0+IHtcbiAgICAgIGlmICghZnJvbnRtYXR0ZXIuYWxpYXNlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGZyb250bWF0dGVyLmFsaWFzZXMgPSBmcm9udG1hdHRlci5hbGlhc2VzLmZpbHRlcigoYSkgPT4gYSAhPT0gYWxpYXMpO1xuXG4gICAgICBpZiAoZnJvbnRtYXR0ZXIuYWxpYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGVsZXRlIGZyb250bWF0dGVyLmFsaWFzZXM7XG4gICAgICB9XG4gICAgfSxcbiAgICBwYXRoT3JGaWxlLFxuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCxcbiAgICByZXNvdXJjZUxvY2tDb21wb25lbnRcbiAgfSk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBmaWxlLCBhbGxvd2luZyBtb2RpZmljYXRpb25zIHZpYSBhIHByb3ZpZGVkIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBwcm9jZXNzaW5nIHRoZSBmcm9udCBtYXR0ZXIuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZyb250IG1hdHRlciBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIHNhdmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0Zyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4ocGFyYW1zOiBQcm9jZXNzRnJvbnRtYXR0ZXJQYXJhbXM8Q3VzdG9tRnJvbnRtYXR0ZXI+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgZnJvbnRtYXR0ZXJGdW5jdGlvbixcbiAgICBwYXRoT3JGaWxlLFxuICAgIC4uLm9wdGlvbnNcbiAgfSA9IHBhcmFtcztcbiAgaWYgKCFpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAke2dldFBhdGgoYXBwLCBwYXRoT3JGaWxlKX0gaXMgbm90IGEgbWFya2Rvd24gZmlsZS5gKTtcbiAgfVxuXG4gIGF3YWl0IHByb2Nlc3Mobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFByb2Nlc3NQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgYXN5bmMgbmV3Q29udGVudFByb3ZpZGVyKHsgYWJvcnRTaWduYWwsIGNvbnRlbnQgfSkge1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgICAgY29uc3Qgb2xkRnJvbnRtYXR0ZXIgPSBwYXJzZUZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPihjb250ZW50KTtcbiAgICAgIGNvbnN0IG5ld0Zyb250bWF0dGVyID0gcGFyc2VGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj4oY29udGVudCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmcm9udG1hdHRlckZ1bmN0aW9uKG5ld0Zyb250bWF0dGVyLCBhYm9ydFNpZ25hbCk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXNEZWVwRXF1YWwob2xkRnJvbnRtYXR0ZXIsIG5ld0Zyb250bWF0dGVyKSA/IGNvbnRlbnQgOiBzZXRGcm9udG1hdHRlcihjb250ZW50LCBuZXdGcm9udG1hdHRlcik7XG4gICAgfSxcbiAgICBwYXRoT3JGaWxlLFxuICAgIC4uLm9wdGlvbnNcbiAgfSkpO1xufVxuXG4vKipcbiAqIFdhaXRzIHVudGlsIE9ic2lkaWFuJ3Mgb3duIGluLWZsaWdodCBsaW5rIHVwZGF0ZSBoYXMgZGVjaWRlZCB3aGljaCBsaW5rcyB0byByZXdyaXRlLlxuICpcbiAqIGBGaWxlTWFuYWdlci5ydW5Bc3luY0xpbmtVcGRhdGUoKWAgc25hcHNob3RzIGV2ZXJ5IHJlZmVyZW5jZSdzIHJlc29sdmVkIHBhdGhzLCBzZXRzXG4gKiBgRmlsZU1hbmFnZXIuaW5Qcm9ncmVzc1VwZGF0ZXNgIHRvIGFuIGFycmF5LCBhbmQgaW52b2tlcyB0aGUgcGFzc2VkIGhhbmRsZXIgXHUyMDE0IHRoZSBoYW5kbGVyIGJlaW5nIHdoYXRcbiAqIHBlcmZvcm1zIHRoZSBhY3R1YWwgcmVuYW1lLiBJbiBpdHMgYGZpbmFsbHlgIGJsb2NrIGl0IHNldHMgYGluUHJvZ3Jlc3NVcGRhdGVzYCBiYWNrIHRvIGBudWxsYCBhbmRcbiAqIHRoZW4gaW1tZWRpYXRlbHkgY2FsbHMgYEZpbGVNYW5hZ2VyLnVwZGF0ZUFsbExpbmtzKClgLCB3aG9zZSBwZXItcmVmZXJlbmNlIGRlY2lzaW9uIFx1MjAxNCByZXdyaXRlIG9ubHlcbiAqIHdoZW4gdGhlIGxpbmsncyByZXNvbHZlZCBwYXRocyBjaGFuZ2VkIFx1MjAxNCBydW5zIHN5bmNocm9ub3VzbHksIHdpdGggbm8gYGF3YWl0YCBpbiBiZXR3ZWVuLiBTb1xuICogb2JzZXJ2aW5nIGEgYG51bGxgIGBpblByb2dyZXNzVXBkYXRlc2AgcHJvdmVzIHRoYXQgZGVjaXNpb24gaGFzIGFscmVhZHkgYmVlbiBtYWRlLlxuICpcbiAqIFRoYXQgbWF0dGVycyBmb3IgYW55IGNvZGUgdGhhdCB0ZW1wb3JhcmlseSByZWdpc3RlcnMgYSBwaGFudG9tIGZpbGUgYXQgYSBwYXRoIHRoYXQgbm8gbG9uZ2VyIGV4aXN0c1xuICogKHNlZSBgcmVnaXN0ZXJGaWxlc2AgaW4gYG1ldGFkYXRhLWNhY2hlLnRzYCkgYW5kIGhvbGRzIHRoYXQgcmVnaXN0cmF0aW9uIGFjcm9zcyBhbiBgYXdhaXRgOiB3aGlsZSBpdFxuICogaXMgbGl2ZSwgYSBsaW5rIHRvIHRoZSBvbGQgcGF0aCBzdGlsbCByZXNvbHZlcywgc28gT2JzaWRpYW4gY29uY2x1ZGVzIG5vdGhpbmcgY2hhbmdlZCBhbmQgc2lsZW50bHlcbiAqIHJld3JpdGVzIG5vdGhpbmcuIEF3YWl0aW5nIHRoaXMgZnVuY3Rpb24gYmVmb3JlIHJlZ2lzdGVyaW5nIGtlZXBzIHRoZSBwaGFudG9tIG91dCBvZiB0aGF0IGRlY2lzaW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIG5vIGxpbmsgdXBkYXRlIGlzIGluIGZsaWdodC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JQZW5kaW5nTGlua1VwZGF0ZXMoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA2MF8wMDA7XG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoe1xuICAgIG9wZXJhdGlvbkZ1bmN0aW9uOiAoKSA9PiBhcHAuZmlsZU1hbmFnZXIuaW5Qcm9ncmVzc1VwZGF0ZXMgPT09IG51bGwsXG4gICAgb3BlcmF0aW9uTmFtZTogJ3dhaXRGb3JQZW5kaW5nTGlua1VwZGF0ZXMnLFxuICAgIHJldHJ5T3B0aW9uczoge1xuICAgICAgLy8gUG9sbCBvbiB0aGUgbWFjcm90YXNrIHF1ZXVlOiB0aGUgbGluayB1cGRhdGUgc2V0dGxlcyB0aHJvdWdoIG1pY3JvdGFza3MsIHNvIGFueSBwb3NpdGl2ZSBkZWxheSBvbmx5IGFkZHMgbGF0ZW5jeS5cbiAgICAgIHJldHJ5RGVsYXlJbk1pbGxpc2Vjb25kczogMCxcbiAgICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgICB9XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVVBLFNBQVMsd0JBQXdCO0FBQ2pDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFB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
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ZpbGUtbWFuYWdlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBmaWxlcyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUnO1xuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7XG4gIGlzRGVlcEVxdWFsLFxuICBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXNcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9mcm9udG1hdHRlci50cyc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlTG9ja0NvbXBvbmVudCB9IGZyb20gJy4vcmVzb3VyY2UtbG9jay50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFByb2Nlc3NPcHRpb25zLFxuICBQcm9jZXNzUGFyYW1zXG59IGZyb20gJy4vdmF1bHQudHMnO1xuXG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRQYXRoLFxuICBpc01hcmtkb3duRmlsZVxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIHBhcnNlRnJvbnRtYXR0ZXIsXG4gIHNldEZyb250bWF0dGVyXG59IGZyb20gJy4vZnJvbnRtYXR0ZXIudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vdmF1bHQudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBhZGRBbGlhc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQWxpYXNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFsaWFzIHRvIGFkZC5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIFRGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UtbG9jayBjb21wb25lbnQgdXNlZCB0byBsb2NrIHRoZSBub3RlIHdoaWxlIGl0IGlzIGJlaW5nIG1vZGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VMb2NrQ29tcG9uZW50OiBudWxsIHwgUmVzb3VyY2VMb2NrQ29tcG9uZW50O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBkZWxldGVBbGlhc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQWxpYXNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFsaWFzIHRvIGRlbGV0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9yIFRGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UtbG9jayBjb21wb25lbnQgdXNlZCB0byBsb2NrIHRoZSBub3RlIHdoaWxlIGl0IGlzIGJlaW5nIG1vZGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VMb2NrQ29tcG9uZW50OiBudWxsIHwgUmVzb3VyY2VMb2NrQ29tcG9uZW50O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBwcm9jZXNzRnJvbnRtYXR0ZXJ9LlxuICovXG5leHBvcnQgdHlwZSBQcm9jZXNzRnJvbnRtYXR0ZXJPcHRpb25zID0gUHJvY2Vzc09wdGlvbnM7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHByb2Nlc3NGcm9udG1hdHRlcn0uXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0Zyb250bWF0dGVyUGFyYW1zPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4gZXh0ZW5kcyBQcm9jZXNzRnJvbnRtYXR0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IG1vZGlmaWVzIHRoZSBmcm9udCBtYXR0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBmcm9udG1hdHRlciAtIFRoZSBmcm9udCBtYXR0ZXIgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAgICogQHJldHVybnMgQSB2YWx1ZSB0aGF0IG1heSBiZSBgbnVsbGAgdG8gYWJvcnQgdGhlIHByb2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBmcm9udG1hdHRlckZ1bmN0aW9uOiAoZnJvbnRtYXR0ZXI6IENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+LCBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48bnVsbD4+O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBBZGRzIGFuIGFsaWFzIHRvIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBmaWxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBhZGRpbmcgdGhlIGFsaWFzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhbGlhcyBoYXMgYmVlbiBhZGRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZEFsaWFzKHBhcmFtczogQWRkQWxpYXNQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGFsaWFzLFxuICAgIGFwcCxcbiAgICBwYXRoT3JGaWxlLFxuICAgIHJlc291cmNlTG9ja0NvbXBvbmVudFxuICB9ID0gcGFyYW1zO1xuICBpZiAoIWFsaWFzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoeyBhcHAsIHBhdGhPckZpbGUgfSk7XG5cbiAgaWYgKCFpc01hcmtkb3duRmlsZShmaWxlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAke2ZpbGUucGF0aH0gaXMgbm90IGEgbWFya2Rvd24gZmlsZS5gKTtcbiAgfVxuXG4gIGlmIChhbGlhcyA9PT0gZmlsZS5iYXNlbmFtZSB8fCBhbGlhcyA9PT0gZmlsZS5uYW1lKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXdhaXQgcHJvY2Vzc0Zyb250bWF0dGVyKHtcbiAgICBhcHAsXG4gICAgZnJvbnRtYXR0ZXJGdW5jdGlvbjogKGZyb250bWF0dGVyKSA9PiB7XG4gICAgICBmcm9udG1hdHRlci5hbGlhc2VzID8/PSBbXTtcblxuICAgICAgaWYgKCFmcm9udG1hdHRlci5hbGlhc2VzLmluY2x1ZGVzKGFsaWFzKSkge1xuICAgICAgICBmcm9udG1hdHRlci5hbGlhc2VzLnB1c2goYWxpYXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGF0aE9yRmlsZSxcbiAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwsXG4gICAgcmVzb3VyY2VMb2NrQ29tcG9uZW50XG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgYW4gYWxpYXMgZnJvbSB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gZmlsZSBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBkZWxldGluZyB0aGUgYWxpYXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFsaWFzIGhhcyBiZWVuIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVBbGlhcyhwYXJhbXM6IERlbGV0ZUFsaWFzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhbGlhcyxcbiAgICBhcHAsXG4gICAgcGF0aE9yRmlsZSxcbiAgICByZXNvdXJjZUxvY2tDb21wb25lbnRcbiAgfSA9IHBhcmFtcztcbiAgaWYgKCFhbGlhcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghaXNNYXJrZG93bkZpbGUocGF0aE9yRmlsZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgJHtnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSl9IGlzIG5vdCBhIG1hcmtkb3duIGZpbGUuYCk7XG4gIH1cblxuICBhd2FpdCBwcm9jZXNzRnJvbnRtYXR0ZXIoe1xuICAgIGFwcCxcbiAgICBmcm9udG1hdHRlckZ1bmN0aW9uOiAoZnJvbnRtYXR0ZXIpID0+IHtcbiAgICAgIGlmICghZnJvbnRtYXR0ZXIuYWxpYXNlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGZyb250bWF0dGVyLmFsaWFzZXMgPSBmcm9udG1hdHRlci5hbGlhc2VzLmZpbHRlcigoYSkgPT4gYSAhPT0gYWxpYXMpO1xuXG4gICAgICBpZiAoZnJvbnRtYXR0ZXIuYWxpYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGVsZXRlIGZyb250bWF0dGVyLmFsaWFzZXM7XG4gICAgICB9XG4gICAgfSxcbiAgICBwYXRoT3JGaWxlLFxuICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCxcbiAgICByZXNvdXJjZUxvY2tDb21wb25lbnRcbiAgfSk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBmaWxlLCBhbGxvd2luZyBtb2RpZmljYXRpb25zIHZpYSBhIHByb3ZpZGVkIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBwcm9jZXNzaW5nIHRoZSBmcm9udCBtYXR0ZXIuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZyb250IG1hdHRlciBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIHNhdmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0Zyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4ocGFyYW1zOiBQcm9jZXNzRnJvbnRtYXR0ZXJQYXJhbXM8Q3VzdG9tRnJvbnRtYXR0ZXI+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgZnJvbnRtYXR0ZXJGdW5jdGlvbixcbiAgICBwYXRoT3JGaWxlLFxuICAgIC4uLm9wdGlvbnNcbiAgfSA9IHBhcmFtcztcbiAgaWYgKCFpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAke2dldFBhdGgoYXBwLCBwYXRoT3JGaWxlKX0gaXMgbm90IGEgbWFya2Rvd24gZmlsZS5gKTtcbiAgfVxuXG4gIGF3YWl0IHByb2Nlc3Mobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFByb2Nlc3NQYXJhbXM+KHtcbiAgICBhcHAsXG4gICAgYXN5bmMgbmV3Q29udGVudFByb3ZpZGVyKHsgYWJvcnRTaWduYWwsIGNvbnRlbnQgfSkge1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgICAgY29uc3Qgb2xkRnJvbnRtYXR0ZXIgPSBwYXJzZUZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPihjb250ZW50KTtcbiAgICAgIGNvbnN0IG5ld0Zyb250bWF0dGVyID0gcGFyc2VGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj4oY29udGVudCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmcm9udG1hdHRlckZ1bmN0aW9uKG5ld0Zyb250bWF0dGVyLCBhYm9ydFNpZ25hbCk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXNEZWVwRXF1YWwob2xkRnJvbnRtYXR0ZXIsIG5ld0Zyb250bWF0dGVyKSA/IGNvbnRlbnQgOiBzZXRGcm9udG1hdHRlcihjb250ZW50LCBuZXdGcm9udG1hdHRlcik7XG4gICAgfSxcbiAgICBwYXRoT3JGaWxlLFxuICAgIC4uLm9wdGlvbnNcbiAgfSkpO1xufVxuXG4vKipcbiAqIFdhaXRzIHVudGlsIE9ic2lkaWFuJ3Mgb3duIGluLWZsaWdodCBsaW5rIHVwZGF0ZSBoYXMgZGVjaWRlZCB3aGljaCBsaW5rcyB0byByZXdyaXRlLlxuICpcbiAqIGBGaWxlTWFuYWdlci5ydW5Bc3luY0xpbmtVcGRhdGUoKWAgc25hcHNob3RzIGV2ZXJ5IHJlZmVyZW5jZSdzIHJlc29sdmVkIHBhdGhzLCBzZXRzXG4gKiBgRmlsZU1hbmFnZXIuaW5Qcm9ncmVzc1VwZGF0ZXNgIHRvIGFuIGFycmF5LCBhbmQgaW52b2tlcyB0aGUgcGFzc2VkIGhhbmRsZXIgXHUyMDE0IHRoZSBoYW5kbGVyIGJlaW5nIHdoYXRcbiAqIHBlcmZvcm1zIHRoZSBhY3R1YWwgcmVuYW1lLiBJbiBpdHMgYGZpbmFsbHlgIGJsb2NrIGl0IHNldHMgYGluUHJvZ3Jlc3NVcGRhdGVzYCBiYWNrIHRvIGBudWxsYCBhbmRcbiAqIHRoZW4gaW1tZWRpYXRlbHkgY2FsbHMgYEZpbGVNYW5hZ2VyLnVwZGF0ZUFsbExpbmtzKClgLCB3aG9zZSBwZXItcmVmZXJlbmNlIGRlY2lzaW9uIFx1MjAxNCByZXdyaXRlIG9ubHlcbiAqIHdoZW4gdGhlIGxpbmsncyByZXNvbHZlZCBwYXRocyBjaGFuZ2VkIFx1MjAxNCBydW5zIHN5bmNocm9ub3VzbHksIHdpdGggbm8gYGF3YWl0YCBpbiBiZXR3ZWVuLiBTb1xuICogb2JzZXJ2aW5nIGEgYG51bGxgIGBpblByb2dyZXNzVXBkYXRlc2AgcHJvdmVzIHRoYXQgZGVjaXNpb24gaGFzIGFscmVhZHkgYmVlbiBtYWRlLlxuICpcbiAqIFRoYXQgbWF0dGVycyBmb3IgYW55IGNvZGUgdGhhdCB0ZW1wb3JhcmlseSByZWdpc3RlcnMgYSBwaGFudG9tIGZpbGUgYXQgYSBwYXRoIHRoYXQgbm8gbG9uZ2VyIGV4aXN0c1xuICogKHNlZSBgcmVnaXN0ZXJGaWxlc2AgaW4gYG1ldGFkYXRhLWNhY2hlLnRzYCkgYW5kIGhvbGRzIHRoYXQgcmVnaXN0cmF0aW9uIGFjcm9zcyBhbiBgYXdhaXRgOiB3aGlsZSBpdFxuICogaXMgbGl2ZSwgYSBsaW5rIHRvIHRoZSBvbGQgcGF0aCBzdGlsbCByZXNvbHZlcywgc28gT2JzaWRpYW4gY29uY2x1ZGVzIG5vdGhpbmcgY2hhbmdlZCBhbmQgc2lsZW50bHlcbiAqIHJld3JpdGVzIG5vdGhpbmcuIEF3YWl0aW5nIHRoaXMgZnVuY3Rpb24gYmVmb3JlIHJlZ2lzdGVyaW5nIGtlZXBzIHRoZSBwaGFudG9tIG91dCBvZiB0aGF0IGRlY2lzaW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIG5vIGxpbmsgdXBkYXRlIGlzIGluIGZsaWdodC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JQZW5kaW5nTGlua1VwZGF0ZXMoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA2MF8wMDA7XG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoe1xuICAgIG9wZXJhdGlvbkZ1bmN0aW9uOiAoKSA9PiBhcHAuZmlsZU1hbmFnZXIuaW5Qcm9ncmVzc1VwZGF0ZXMgPT09IG51bGwsXG4gICAgb3BlcmF0aW9uTmFtZTogJ3dhaXRGb3JQZW5kaW5nTGlua1VwZGF0ZXMnLFxuICAgIHJldHJ5T3B0aW9uczoge1xuICAgICAgLy8gUG9sbCBvbiB0aGUgbWFjcm90YXNrIHF1ZXVlOiB0aGUgbGluayB1cGRhdGUgc2V0dGxlcyB0aHJvdWdoIG1pY3JvdGFza3MsIHNvIGFueSBwb3NpdGl2ZSBkZWxheSBvbmx5IGFkZHMgbGF0ZW5jeS5cbiAgICAgIHJldHJ5RGVsYXlJbk1pbGxpc2Vjb25kczogMCxcbiAgICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgICB9XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSxTQUFTLHdCQUF3QjtBQUNqQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztB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
|
|
@@ -528,6 +528,13 @@ export declare function isMarkdownFile(pathOrFile: null | PathOrAbstractFile): b
|
|
|
528
528
|
* @returns A boolean indicating whether the file is a note.
|
|
529
529
|
*/
|
|
530
530
|
export declare function isNote(pathOrFile: null | PathOrAbstractFile): boolean;
|
|
531
|
+
/**
|
|
532
|
+
* Checks if the given value is a path or a file.
|
|
533
|
+
*
|
|
534
|
+
* @param value - The value to check.
|
|
535
|
+
* @returns A boolean indicating whether the value is a string or an instance of file.
|
|
536
|
+
*/
|
|
537
|
+
export declare function isPathOrFile(value: unknown): value is PathOrFile;
|
|
531
538
|
/**
|
|
532
539
|
* Checks if the given file should be treated as an attachment because of its extension.
|
|
533
540
|
*
|