obsidian-dev-utils 54.0.3 → 55.1.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/CHANGELOG.md +19 -1
- package/dist/lib/cjs/@types/debug.d.cts +4 -1
- package/dist/lib/cjs/abort-controller.cjs +1 -1
- package/dist/lib/cjs/abort-controller.d.cts +1 -1
- package/dist/lib/cjs/array.cjs +1 -1
- package/dist/lib/cjs/array.d.cts +1 -1
- package/dist/lib/cjs/async-events.cjs +1 -1
- package/dist/lib/cjs/async-events.d.cts +1 -1
- package/dist/lib/cjs/async.cjs +1 -1
- package/dist/lib/cjs/async.d.cts +1 -1
- package/dist/lib/cjs/blob.cjs +1 -1
- package/dist/lib/cjs/blob.d.cts +1 -1
- package/dist/lib/cjs/codemirror/state-field-spec.cjs +1 -1
- package/dist/lib/cjs/codemirror/state-field-spec.d.cts +1 -1
- package/dist/lib/cjs/css-class.cjs +1 -1
- package/dist/lib/cjs/css-class.d.cts +1 -1
- package/dist/lib/cjs/debug-controller.cjs +1 -1
- package/dist/lib/cjs/debug-controller.d.cts +1 -1
- package/dist/lib/cjs/debug.cjs +1 -1
- package/dist/lib/cjs/debug.d.cts +1 -1
- package/dist/lib/cjs/enum.cjs +1 -1
- package/dist/lib/cjs/enum.d.cts +1 -1
- package/dist/lib/cjs/error.cjs +1 -1
- package/dist/lib/cjs/error.d.cts +1 -1
- package/dist/lib/cjs/function.cjs +1 -1
- package/dist/lib/cjs/function.d.cts +1 -1
- package/dist/lib/cjs/html-element.cjs +1 -1
- package/dist/lib/cjs/html-element.d.cts +1 -1
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/library.cjs +2 -2
- package/dist/lib/cjs/library.d.cts +1 -1
- package/dist/lib/cjs/object-utils.cjs +2 -2
- package/dist/lib/cjs/object-utils.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/i18next.d.cts +1 -1
- package/dist/lib/cjs/obsidian/app.cjs +1 -1
- package/dist/lib/cjs/obsidian/app.d.cts +1 -1
- package/dist/lib/cjs/obsidian/async-with-notice.cjs +1 -1
- package/dist/lib/cjs/obsidian/async-with-notice.d.cts +1 -1
- package/dist/lib/cjs/obsidian/attachment-path.cjs +1 -1
- package/dist/lib/cjs/obsidian/attachment-path.d.cts +1 -1
- package/dist/lib/cjs/obsidian/backlink.cjs +1 -1
- package/dist/lib/cjs/obsidian/backlink.d.cts +1 -1
- package/dist/lib/cjs/obsidian/callout.cjs +1 -1
- package/dist/lib/cjs/obsidian/callout.d.cts +1 -1
- package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +1 -1
- package/dist/lib/cjs/obsidian/code-block-markdown-information.d.cts +1 -1
- package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/commands/command-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/commands/command-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/commands/editor-command-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/commands/editor-command-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/commands/file-command-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/commands/file-command-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/commands/folder-command-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/commands/folder-command-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/commands/non-editor-command-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/commands/non-editor-command-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/all-windows-event-handler.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/all-windows-event-handler.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/async-events-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/async-events-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/date-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/email-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/email-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/file-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/month-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/number-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/number-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/password-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/password-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/time-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/url-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/url-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/validator-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/setting-components/week-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +1 -1
- package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.d.cts +1 -1
- package/dist/lib/cjs/obsidian/dataview-link.cjs +1 -1
- package/dist/lib/cjs/obsidian/dataview-link.d.cts +1 -1
- package/dist/lib/cjs/obsidian/dataview.cjs +1 -1
- package/dist/lib/cjs/obsidian/dataview.d.cts +1 -1
- package/dist/lib/cjs/obsidian/editor.cjs +1 -1
- package/dist/lib/cjs/obsidian/editor.d.cts +1 -1
- package/dist/lib/cjs/obsidian/file-change.cjs +4 -4
- package/dist/lib/cjs/obsidian/file-change.d.cts +4 -4
- package/dist/lib/cjs/obsidian/file-manager.cjs +2 -2
- package/dist/lib/cjs/obsidian/file-manager.d.cts +1 -1
- package/dist/lib/cjs/obsidian/file-system.cjs +1 -1
- package/dist/lib/cjs/obsidian/file-system.d.cts +1 -1
- package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +1 -1
- package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.d.cts +1 -1
- package/dist/lib/cjs/obsidian/frontmatter.cjs +1 -1
- package/dist/lib/cjs/obsidian/frontmatter.d.cts +2 -2
- package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/i18n/default-translations-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/i18n/default-translations-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/i18n/i18n.cjs +1 -1
- package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +1 -1
- package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +1 -1
- package/dist/lib/cjs/obsidian/i18n/locales/en.d.cts +1 -1
- package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +1 -1
- package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +1 -1
- package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/obsidian/is-in-obsidian.d.cts +1 -1
- package/dist/lib/cjs/obsidian/link.cjs +16 -12
- package/dist/lib/cjs/obsidian/link.d.cts +1 -1
- package/dist/lib/cjs/obsidian/logger.cjs +1 -1
- package/dist/lib/cjs/obsidian/logger.d.cts +1 -1
- package/dist/lib/cjs/obsidian/loop.cjs +1 -1
- package/dist/lib/cjs/obsidian/loop.d.cts +1 -1
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +5 -5
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +3 -2
- package/dist/lib/cjs/obsidian/markdown-view.cjs +1 -1
- package/dist/lib/cjs/obsidian/markdown-view.d.cts +1 -1
- package/dist/lib/cjs/obsidian/markdown.cjs +1 -1
- package/dist/lib/cjs/obsidian/markdown.d.cts +1 -1
- package/dist/lib/cjs/obsidian/metadata-cache.cjs +1 -1
- package/dist/lib/cjs/obsidian/metadata-cache.d.cts +1 -1
- package/dist/lib/cjs/obsidian/modals/alert.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/alert.d.cts +1 -1
- package/dist/lib/cjs/obsidian/modals/confirm.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/confirm.d.cts +1 -1
- package/dist/lib/cjs/obsidian/modals/modal-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/modal-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/modals/prompt.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/prompt.d.cts +1 -1
- package/dist/lib/cjs/obsidian/modals/select-item.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/select-item.d.cts +1 -1
- package/dist/lib/cjs/obsidian/monkey-around.cjs +1 -1
- package/dist/lib/cjs/obsidian/monkey-around.d.cts +1 -1
- package/dist/lib/cjs/obsidian/obsidian-settings.cjs +1 -1
- package/dist/lib/cjs/obsidian/obsidian-settings.d.cts +1 -1
- package/dist/lib/cjs/obsidian/pdf.cjs +1 -1
- package/dist/lib/cjs/obsidian/pdf.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/path-settings.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-id.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-id.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-types-base.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-types-base.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +1 -1
- package/dist/lib/cjs/obsidian/queue.cjs +1 -1
- package/dist/lib/cjs/obsidian/queue.d.cts +1 -1
- package/dist/lib/cjs/obsidian/react/app-context.cjs +1 -1
- package/dist/lib/cjs/obsidian/react/app-context.d.cts +1 -1
- package/dist/lib/cjs/obsidian/reference.cjs +1 -1
- package/dist/lib/cjs/obsidian/reference.d.cts +1 -1
- package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +1 -1
- package/dist/lib/cjs/obsidian/rename-delete-handler.d.cts +1 -1
- package/dist/lib/cjs/obsidian/resource-url.cjs +1 -1
- package/dist/lib/cjs/obsidian/resource-url.d.cts +1 -1
- package/dist/lib/cjs/obsidian/setting-ex.cjs +1 -1
- package/dist/lib/cjs/obsidian/setting-ex.d.cts +1 -1
- package/dist/lib/cjs/obsidian/setting-group-ex.cjs +1 -1
- package/dist/lib/cjs/obsidian/setting-group-ex.d.cts +1 -1
- package/dist/lib/cjs/obsidian/validation.cjs +1 -1
- package/dist/lib/cjs/obsidian/validation.d.cts +1 -1
- package/dist/lib/cjs/obsidian/vault-delete.cjs +1 -1
- package/dist/lib/cjs/obsidian/vault-delete.d.cts +1 -1
- package/dist/lib/cjs/obsidian/vault.cjs +2 -2
- package/dist/lib/cjs/obsidian/vault.d.cts +8 -2
- package/dist/lib/cjs/obsidian/workspace.cjs +1 -1
- package/dist/lib/cjs/obsidian/workspace.d.cts +1 -1
- package/dist/lib/cjs/path.cjs +1 -1
- package/dist/lib/cjs/path.d.cts +1 -1
- package/dist/lib/cjs/reg-exp.cjs +1 -1
- package/dist/lib/cjs/reg-exp.d.cts +1 -1
- package/dist/lib/cjs/script-utils/build.cjs +1 -1
- package/dist/lib/cjs/script-utils/build.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +2 -2
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild.d.cts +1 -1
- package/dist/lib/cjs/script-utils/cli-utils.cjs +1 -1
- package/dist/lib/cjs/script-utils/cli-utils.d.cts +1 -1
- package/dist/lib/cjs/script-utils/code-generator.cjs +1 -1
- package/dist/lib/cjs/script-utils/code-generator.d.cts +1 -1
- package/dist/lib/cjs/script-utils/commitlint-config.cjs +1 -1
- package/dist/lib/cjs/script-utils/commitlint-config.d.cts +1 -1
- package/dist/lib/cjs/script-utils/exec.cjs +1 -1
- package/dist/lib/cjs/script-utils/exec.d.cts +1 -1
- package/dist/lib/cjs/script-utils/formatters/dprint.cjs +1 -1
- package/dist/lib/cjs/script-utils/formatters/dprint.d.cts +1 -1
- package/dist/lib/cjs/script-utils/fs.cjs +1 -1
- package/dist/lib/cjs/script-utils/fs.d.cts +1 -1
- package/dist/lib/cjs/script-utils/json.cjs +1 -1
- package/dist/lib/cjs/script-utils/json.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/cspell.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/cspell.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +16 -12
- package/dist/lib/cjs/script-utils/linters/eslint-config.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.cts +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/markdownlint.d.cts +1 -1
- package/dist/lib/cjs/script-utils/nano-staged-config.cjs +1 -1
- package/dist/lib/cjs/script-utils/nano-staged-config.d.cts +1 -1
- package/dist/lib/cjs/script-utils/npm-publish.cjs +1 -1
- package/dist/lib/cjs/script-utils/npm-publish.d.cts +1 -1
- package/dist/lib/cjs/script-utils/npm-run.cjs +1 -1
- package/dist/lib/cjs/script-utils/npm-run.d.cts +1 -1
- package/dist/lib/cjs/script-utils/npm.cjs +1 -1
- package/dist/lib/cjs/script-utils/npm.d.cts +1 -1
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +1 -1
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +1 -1
- package/dist/lib/cjs/script-utils/root.cjs +1 -1
- package/dist/lib/cjs/script-utils/root.d.cts +1 -1
- package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +1 -1
- package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +1 -1
- package/dist/lib/cjs/script-utils/version.cjs +1 -1
- package/dist/lib/cjs/script-utils/version.d.cts +1 -1
- package/dist/lib/cjs/strict-proxy.cjs +178 -0
- package/dist/lib/cjs/strict-proxy.d.cts +23 -0
- package/dist/lib/cjs/string.cjs +14 -14
- package/dist/lib/cjs/string.d.cts +9 -5
- package/dist/lib/cjs/transformers/date-transformer.cjs +1 -1
- package/dist/lib/cjs/transformers/date-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/duration-transformer.cjs +1 -1
- package/dist/lib/cjs/transformers/duration-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/group-transformer.cjs +1 -1
- package/dist/lib/cjs/transformers/group-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/map-transformer.cjs +1 -1
- package/dist/lib/cjs/transformers/map-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/set-transformer.cjs +1 -1
- package/dist/lib/cjs/transformers/set-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +1 -1
- package/dist/lib/cjs/transformers/skip-private-property-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/transformer.cjs +1 -1
- package/dist/lib/cjs/transformers/transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +1 -1
- package/dist/lib/cjs/transformers/two-way-map-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/typed-transformer.cjs +1 -1
- package/dist/lib/cjs/transformers/typed-transformer.d.cts +1 -1
- package/dist/lib/cjs/two-way-map.cjs +1 -1
- package/dist/lib/cjs/two-way-map.d.cts +1 -1
- package/dist/lib/cjs/type-guards.cjs +1 -1
- package/dist/lib/cjs/type-guards.d.cts +4 -4
- package/dist/lib/cjs/type.cjs +1 -1
- package/dist/lib/cjs/type.d.cts +1 -1
- package/dist/lib/cjs/url.cjs +1 -1
- package/dist/lib/cjs/url.d.cts +1 -1
- package/dist/lib/cjs/value-provider.cjs +5 -5
- package/dist/lib/cjs/value-provider.d.cts +7 -4
- package/dist/lib/esm/@types/debug.d.mts +4 -1
- package/dist/lib/esm/abort-controller.d.mts +1 -1
- package/dist/lib/esm/abort-controller.mjs +1 -1
- package/dist/lib/esm/array.d.mts +1 -1
- package/dist/lib/esm/array.mjs +1 -1
- package/dist/lib/esm/async-events.d.mts +1 -1
- package/dist/lib/esm/async-events.mjs +1 -1
- package/dist/lib/esm/async.d.mts +1 -1
- package/dist/lib/esm/async.mjs +1 -1
- package/dist/lib/esm/blob.d.mts +1 -1
- package/dist/lib/esm/blob.mjs +1 -1
- package/dist/lib/esm/codemirror/state-field-spec.d.mts +1 -1
- package/dist/lib/esm/css-class.d.mts +1 -1
- package/dist/lib/esm/css-class.mjs +1 -1
- package/dist/lib/esm/debug-controller.d.mts +1 -1
- package/dist/lib/esm/debug.d.mts +1 -1
- package/dist/lib/esm/debug.mjs +1 -1
- package/dist/lib/esm/enum.d.mts +1 -1
- package/dist/lib/esm/enum.mjs +1 -1
- package/dist/lib/esm/error.d.mts +1 -1
- package/dist/lib/esm/error.mjs +1 -1
- package/dist/lib/esm/function.d.mts +1 -1
- package/dist/lib/esm/function.mjs +1 -1
- package/dist/lib/esm/html-element.d.mts +1 -1
- package/dist/lib/esm/html-element.mjs +1 -1
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/library.d.mts +1 -1
- package/dist/lib/esm/library.mjs +2 -2
- package/dist/lib/esm/object-utils.d.mts +1 -1
- package/dist/lib/esm/object-utils.mjs +2 -2
- package/dist/lib/esm/obsidian/@types/i18next.d.mts +1 -1
- package/dist/lib/esm/obsidian/app.d.mts +1 -1
- package/dist/lib/esm/obsidian/app.mjs +1 -1
- package/dist/lib/esm/obsidian/async-with-notice.d.mts +1 -1
- package/dist/lib/esm/obsidian/async-with-notice.mjs +1 -1
- package/dist/lib/esm/obsidian/attachment-path.d.mts +1 -1
- package/dist/lib/esm/obsidian/attachment-path.mjs +1 -1
- package/dist/lib/esm/obsidian/backlink.d.mts +1 -1
- package/dist/lib/esm/obsidian/backlink.mjs +1 -1
- package/dist/lib/esm/obsidian/callout.d.mts +1 -1
- package/dist/lib/esm/obsidian/callout.mjs +1 -1
- package/dist/lib/esm/obsidian/code-block-markdown-information.d.mts +1 -1
- package/dist/lib/esm/obsidian/commands/abstract-file-command-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/commands/abstract-file-command-base.mjs +1 -1
- package/dist/lib/esm/obsidian/commands/command-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/commands/command-base.mjs +1 -1
- package/dist/lib/esm/obsidian/commands/editor-command-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/commands/editor-command-base.mjs +1 -1
- package/dist/lib/esm/obsidian/commands/file-command-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/commands/file-command-base.mjs +1 -1
- package/dist/lib/esm/obsidian/commands/folder-command-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/commands/folder-command-base.mjs +1 -1
- package/dist/lib/esm/obsidian/commands/non-editor-command-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/commands/non-editor-command-base.mjs +1 -1
- package/dist/lib/esm/obsidian/components/all-windows-event-handler.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/all-windows-event-handler.mjs +1 -1
- package/dist/lib/esm/obsidian/components/async-events-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/async-events-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/date-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/date-time-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/email-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/file-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/month-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/number-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/password-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/telephone-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/text-based-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/time-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/url-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/validator-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/value-component-with-change-tracking.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/week-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +1 -1
- package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.d.mts +1 -1
- package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +1 -1
- package/dist/lib/esm/obsidian/dataview-link.d.mts +1 -1
- package/dist/lib/esm/obsidian/dataview-link.mjs +1 -1
- package/dist/lib/esm/obsidian/dataview.d.mts +1 -1
- package/dist/lib/esm/obsidian/dataview.mjs +1 -1
- package/dist/lib/esm/obsidian/editor.d.mts +1 -1
- package/dist/lib/esm/obsidian/editor.mjs +1 -1
- package/dist/lib/esm/obsidian/file-change.d.mts +4 -4
- package/dist/lib/esm/obsidian/file-change.mjs +4 -4
- package/dist/lib/esm/obsidian/file-manager.d.mts +1 -1
- package/dist/lib/esm/obsidian/file-manager.mjs +2 -2
- package/dist/lib/esm/obsidian/file-system.d.mts +1 -1
- package/dist/lib/esm/obsidian/file-system.mjs +1 -1
- package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.d.mts +1 -1
- package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +1 -1
- package/dist/lib/esm/obsidian/frontmatter.d.mts +2 -2
- package/dist/lib/esm/obsidian/frontmatter.mjs +1 -1
- package/dist/lib/esm/obsidian/i18n/custom-type-options-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/i18n/custom-type-options-base.mjs +1 -1
- package/dist/lib/esm/obsidian/i18n/default-translations-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/i18n/default-translations-base.mjs +1 -1
- package/dist/lib/esm/obsidian/i18n/i18n.d.mts +1 -1
- package/dist/lib/esm/obsidian/i18n/i18n.mjs +1 -1
- package/dist/lib/esm/obsidian/i18n/locales/en.d.mts +1 -1
- package/dist/lib/esm/obsidian/i18n/locales/en.mjs +1 -1
- package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +1 -1
- package/dist/lib/esm/obsidian/i18n/locales/translations-map.mjs +1 -1
- package/dist/lib/esm/obsidian/is-in-obsidian.d.mts +1 -1
- package/dist/lib/esm/obsidian/is-in-obsidian.mjs +1 -1
- package/dist/lib/esm/obsidian/link.d.mts +1 -1
- package/dist/lib/esm/obsidian/link.mjs +16 -12
- package/dist/lib/esm/obsidian/logger.d.mts +1 -1
- package/dist/lib/esm/obsidian/logger.mjs +1 -1
- package/dist/lib/esm/obsidian/loop.d.mts +1 -1
- package/dist/lib/esm/obsidian/loop.mjs +1 -1
- package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +3 -2
- package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +5 -5
- package/dist/lib/esm/obsidian/markdown-view.d.mts +1 -1
- package/dist/lib/esm/obsidian/markdown-view.mjs +1 -1
- package/dist/lib/esm/obsidian/markdown.d.mts +1 -1
- package/dist/lib/esm/obsidian/markdown.mjs +1 -1
- package/dist/lib/esm/obsidian/metadata-cache.d.mts +1 -1
- package/dist/lib/esm/obsidian/metadata-cache.mjs +1 -1
- package/dist/lib/esm/obsidian/modals/alert.d.mts +1 -1
- package/dist/lib/esm/obsidian/modals/alert.mjs +1 -1
- package/dist/lib/esm/obsidian/modals/confirm.d.mts +1 -1
- package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
- package/dist/lib/esm/obsidian/modals/modal-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/modals/modal-base.mjs +1 -1
- package/dist/lib/esm/obsidian/modals/prompt.d.mts +1 -1
- package/dist/lib/esm/obsidian/modals/prompt.mjs +1 -1
- package/dist/lib/esm/obsidian/modals/select-item.d.mts +1 -1
- package/dist/lib/esm/obsidian/modals/select-item.mjs +1 -1
- package/dist/lib/esm/obsidian/monkey-around.d.mts +1 -1
- package/dist/lib/esm/obsidian/monkey-around.mjs +1 -1
- package/dist/lib/esm/obsidian/obsidian-settings.d.mts +1 -1
- package/dist/lib/esm/obsidian/obsidian-settings.mjs +1 -1
- package/dist/lib/esm/obsidian/pdf.d.mts +1 -1
- package/dist/lib/esm/obsidian/pdf.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/path-settings.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/path-settings.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-base.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-id.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-id.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-settings-wrapper.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin-types-base.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +1 -1
- package/dist/lib/esm/obsidian/queue.d.mts +1 -1
- package/dist/lib/esm/obsidian/queue.mjs +1 -1
- package/dist/lib/esm/obsidian/react/app-context.d.mts +1 -1
- package/dist/lib/esm/obsidian/react/app-context.mjs +1 -1
- package/dist/lib/esm/obsidian/reference.d.mts +1 -1
- package/dist/lib/esm/obsidian/reference.mjs +1 -1
- package/dist/lib/esm/obsidian/rename-delete-handler.d.mts +1 -1
- package/dist/lib/esm/obsidian/rename-delete-handler.mjs +1 -1
- package/dist/lib/esm/obsidian/resource-url.d.mts +1 -1
- package/dist/lib/esm/obsidian/resource-url.mjs +1 -1
- package/dist/lib/esm/obsidian/setting-ex.d.mts +1 -1
- package/dist/lib/esm/obsidian/setting-ex.mjs +1 -1
- package/dist/lib/esm/obsidian/setting-group-ex.d.mts +1 -1
- package/dist/lib/esm/obsidian/setting-group-ex.mjs +1 -1
- package/dist/lib/esm/obsidian/validation.d.mts +1 -1
- package/dist/lib/esm/obsidian/validation.mjs +1 -1
- package/dist/lib/esm/obsidian/vault-delete.d.mts +1 -1
- package/dist/lib/esm/obsidian/vault-delete.mjs +1 -1
- package/dist/lib/esm/obsidian/vault.d.mts +8 -2
- package/dist/lib/esm/obsidian/vault.mjs +2 -2
- package/dist/lib/esm/obsidian/workspace.d.mts +1 -1
- package/dist/lib/esm/obsidian/workspace.mjs +1 -1
- package/dist/lib/esm/path.d.mts +1 -1
- package/dist/lib/esm/path.mjs +1 -1
- package/dist/lib/esm/reg-exp.d.mts +1 -1
- package/dist/lib/esm/reg-exp.mjs +1 -1
- package/dist/lib/esm/script-utils/build.d.mts +1 -1
- package/dist/lib/esm/script-utils/build.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +3 -3
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild.d.mts +1 -1
- package/dist/lib/esm/script-utils/bundlers/esbuild.mjs +1 -1
- package/dist/lib/esm/script-utils/cli-utils.d.mts +1 -1
- package/dist/lib/esm/script-utils/cli-utils.mjs +1 -1
- package/dist/lib/esm/script-utils/code-generator.d.mts +1 -1
- package/dist/lib/esm/script-utils/code-generator.mjs +1 -1
- package/dist/lib/esm/script-utils/commitlint-config.d.mts +1 -1
- package/dist/lib/esm/script-utils/commitlint-config.mjs +1 -1
- package/dist/lib/esm/script-utils/exec.d.mts +1 -1
- package/dist/lib/esm/script-utils/exec.mjs +1 -1
- package/dist/lib/esm/script-utils/formatters/dprint.d.mts +1 -1
- package/dist/lib/esm/script-utils/formatters/dprint.mjs +1 -1
- package/dist/lib/esm/script-utils/fs.d.mts +1 -1
- package/dist/lib/esm/script-utils/fs.mjs +1 -1
- package/dist/lib/esm/script-utils/json.d.mts +1 -1
- package/dist/lib/esm/script-utils/json.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/cspell.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/cspell.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-config.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +6 -2
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.mts +3 -1
- package/dist/lib/esm/script-utils/linters/eslint.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/eslint.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/markdownlint.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/markdownlint.mjs +1 -1
- package/dist/lib/esm/script-utils/nano-staged-config.d.mts +1 -1
- package/dist/lib/esm/script-utils/nano-staged-config.mjs +1 -1
- package/dist/lib/esm/script-utils/npm-publish.d.mts +1 -1
- package/dist/lib/esm/script-utils/npm-publish.mjs +1 -1
- package/dist/lib/esm/script-utils/npm-run.d.mts +1 -1
- package/dist/lib/esm/script-utils/npm-run.mjs +1 -1
- package/dist/lib/esm/script-utils/npm.d.mts +1 -1
- package/dist/lib/esm/script-utils/npm.mjs +1 -1
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +1 -1
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +1 -1
- package/dist/lib/esm/script-utils/root.d.mts +1 -1
- package/dist/lib/esm/script-utils/root.mjs +1 -1
- package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +1 -1
- package/dist/lib/esm/script-utils/test-runners/vitest.mjs +1 -1
- package/dist/lib/esm/script-utils/version.d.mts +1 -1
- package/dist/lib/esm/script-utils/version.mjs +1 -1
- package/dist/lib/esm/strict-proxy.d.mts +23 -0
- package/dist/lib/esm/strict-proxy.mjs +72 -0
- package/dist/lib/esm/string.d.mts +9 -5
- package/dist/lib/esm/string.mjs +14 -14
- package/dist/lib/esm/transformers/date-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/date-transformer.mjs +1 -1
- package/dist/lib/esm/transformers/duration-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/duration-transformer.mjs +1 -1
- package/dist/lib/esm/transformers/group-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/group-transformer.mjs +1 -1
- package/dist/lib/esm/transformers/map-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/map-transformer.mjs +1 -1
- package/dist/lib/esm/transformers/set-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/set-transformer.mjs +1 -1
- package/dist/lib/esm/transformers/skip-private-property-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +1 -1
- package/dist/lib/esm/transformers/transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/transformer.mjs +1 -1
- package/dist/lib/esm/transformers/two-way-map-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/two-way-map-transformer.mjs +1 -1
- package/dist/lib/esm/transformers/typed-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/typed-transformer.mjs +1 -1
- package/dist/lib/esm/two-way-map.d.mts +1 -1
- package/dist/lib/esm/two-way-map.mjs +1 -1
- package/dist/lib/esm/type-guards.d.mts +4 -4
- package/dist/lib/esm/type-guards.mjs +1 -1
- package/dist/lib/esm/type.d.mts +1 -1
- package/dist/lib/esm/type.mjs +1 -1
- package/dist/lib/esm/url.d.mts +1 -1
- package/dist/lib/esm/url.mjs +1 -1
- package/dist/lib/esm/value-provider.d.mts +7 -4
- package/dist/lib/esm/value-provider.mjs +5 -5
- package/package.json +1 -2
- package/dist/lib/cjs/script-utils/linters/eslint-types/@types/eslint-plugin-modules-newlines.d.cts +0 -14
- package/dist/lib/esm/script-utils/linters/eslint-types/@types/eslint-plugin-modules-newlines.d.mts +0 -14
- package/script-utils/linters/eslint-types/@types/eslint-plugin-modules-newlines/package.json +0 -4
|
@@ -467,4 +467,4 @@ async function updateVersionInFilesForPlugin(newVersion) {
|
|
|
467
467
|
updateVersionInFiles,
|
|
468
468
|
validate
|
|
469
469
|
});
|
|
470
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy92ZXJzaW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgdmVyc2lvbiB1cGRhdGVzIGluIGEgcHJvamVjdC5cbiAqIEl0IGluY2x1ZGVzIHRhc2tzIHN1Y2ggYXMgdmFsaWRhdGluZyB2ZXJzaW9uIHVwZGF0ZSB0eXBlcywgY2hlY2tpbmcgdGhlIHN0YXRlXG4gKiBvZiBHaXQgYW5kIEdpdEh1YiBDTEksIHVwZGF0aW5nIHZlcnNpb24gbnVtYmVycyBpbiBmaWxlcywgYW5kIHBlcmZvcm1pbmdcbiAqIEdpdCBvcGVyYXRpb25zIHN1Y2ggYXMgdGFnZ2luZyBhbmQgcHVzaGluZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJlbGVhc2VUeXBlIH0gZnJvbSAnc2VtdmVyJztcblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIHJlYWRGaWxlLFxuICBybSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgY3JlYXRlSW50ZXJmYWNlIH0gZnJvbSAnbm9kZTpyZWFkbGluZS9wcm9taXNlcyc7XG5pbXBvcnQge1xuICBpbmMsXG4gIHByZXJlbGVhc2Vcbn0gZnJvbSAnc2VtdmVyJztcblxuaW1wb3J0IHR5cGUgeyBQYWNrYWdlTG9ja0pzb24gfSBmcm9tICcuL25wbS50cyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuLi9vYnNpZGlhbi9wbHVnaW4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHsgcmVwbGFjZUFsbCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQge1xuICBhc3NlcnROb25OdWxsYWJsZSxcbiAgZW5zdXJlTm9uTnVsbGFibGVcbn0gZnJvbSAnLi4vdHlwZS1ndWFyZHMudHMnO1xuaW1wb3J0IHsgcmVhZGRpclBvc2l4IH0gZnJvbSAnLi9mcy50cyc7XG5pbXBvcnQgeyBlZGl0SnNvbiB9IGZyb20gJy4vanNvbi50cyc7XG5pbXBvcnQge1xuICBucG1SdW4sXG4gIG5wbVJ1bk9wdGlvbmFsXG59IGZyb20gJy4vbnBtLXJ1bi50cyc7XG5pbXBvcnQge1xuICBlZGl0TnBtU2hyaW5rV3JhcEpzb24sXG4gIGVkaXRQYWNrYWdlSnNvbixcbiAgZWRpdFBhY2thZ2VMb2NrSnNvbixcbiAgcmVhZFBhY2thZ2VKc29uXG59IGZyb20gJy4vbnBtLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMgfSBmcm9tICcuL29ic2lkaWFuLWRldi11dGlscy1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGV4ZWNGcm9tUm9vdCxcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi9yb290LnRzJztcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBwcmUtcmVsZWFzZSBpZGVudGlmaWVyIHVzZWQgZm9yIHByZS1yZWxlYXNlIHZlcnNpb25zLlxuICovXG5jb25zdCBERUZBVUxUX1BSRUlEID0gJ2JldGEnO1xuXG4vKipcbiAqIEVudW0gcmVwcmVzZW50aW5nIGRpZmZlcmVudCB0eXBlcyBvZiB2ZXJzaW9uIHVwZGF0ZXMuXG4gKlxuICogQWxpZ25zIHdpdGggbnBtJ3MgYG5wbSB2ZXJzaW9uYCBpbmNyZW1lbnQgdHlwZXMgcGx1cyBgTWFudWFsYCBmb3IgZXhwbGljaXQgdmVyc2lvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFZlcnNpb25VcGRhdGVUeXBlIHtcbiAgSW52YWxpZCA9ICdpbnZhbGlkJyxcbiAgTWFqb3IgPSAnbWFqb3InLFxuICBNYW51YWwgPSAnbWFudWFsJyxcbiAgTWlub3IgPSAnbWlub3InLFxuICBQYXRjaCA9ICdwYXRjaCcsXG4gIFByZU1ham9yID0gJ3ByZW1ham9yJyxcbiAgUHJlTWlub3IgPSAncHJlbWlub3InLFxuICBQcmVQYXRjaCA9ICdwcmVwYXRjaCcsXG4gIFByZVJlbGVhc2UgPSAncHJlcmVsZWFzZSdcbn1cblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgbWFuaWZlc3QgZmlsZSBmb3JtYXQgZm9yIE9ic2lkaWFuIHBsdWdpbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFuaWZlc3Qge1xuICAvKipcbiAgICogQSBtaW5pbXVtIE9ic2lkaWFuIHZlcnNpb24gcmVxdWlyZWQgZm9yIHRoZSBwbHVnaW4uXG4gICAqL1xuICBtaW5BcHBWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdmVyc2lvbiBvZiB0aGUgcGx1Z2luLlxuICAgKi9cbiAgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR5cGUgcmVwcmVzZW50aW5nIHRoZSBzdHJ1Y3R1cmUgb2YgT2JzaWRpYW4gcmVsZWFzZXMgSlNPTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhblJlbGVhc2VzSnNvbiB7XG4gIC8qKlxuICAgKiBBIG5hbWUgb2YgdGhlIE9ic2lkaWFuIHJlbGVhc2UuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIEdpdCB0YWcgZm9yIHRoZSBuZXcgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgdG8gdXNlIGZvciB0aGUgdGFnLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0YWcgaGFzIGJlZW4gY3JlYXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZEdpdFRhZyhuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KGBnaXQgdGFnIC1hICR7bmV3VmVyc2lvbn0gLW0gJHtuZXdWZXJzaW9ufSAtLWZvcmNlYCwgeyBpc1F1aWV0OiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdXBkYXRlZCBmaWxlcyB0byB0aGUgR2l0IHN0YWdpbmcgYXJlYSBhbmQgY29tbWl0cyB0aGVtIHdpdGggdGhlIG5ldyB2ZXJzaW9uIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gbnVtYmVyIHVzZWQgYXMgdGhlIGNvbW1pdCBtZXNzYWdlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWxlcyBoYXZlIGJlZW4gYWRkZWQgYW5kIGNvbW1pdHRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZFVwZGF0ZWRGaWxlc1RvR2l0KG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWydnaXQnLCAnYWRkJywgJy0tYWxsJ10sIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnZ2l0JywgJ2NvbW1pdCcsICctbScsIGBjaG9yZTogcmVsZWFzZSAke25ld1ZlcnNpb259YCwgJy0tYWxsb3ctZW1wdHknXSwgeyBpc1F1aWV0OiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgR2l0SHViIENMSSBpcyBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS5cbiAqXG4gKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIEdpdEh1YiBDTEkgaXMgbm90IGluc3RhbGxlZC5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBHaXRIdWIgQ0xJIGlzIG5vdCBpbnN0YWxsZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0dpdEh1YkNsaUluc3RhbGxlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjRnJvbVJvb3QoJ2doIC0tdmVyc2lvbicsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHaXRIdWIgQ0xJIGlzIG5vdCBpbnN0YWxsZWQuIFBsZWFzZSBpbnN0YWxsIGl0IGZyb20gaHR0cHM6Ly9jbGkuZ2l0aHViLmNvbS8nKTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiBHaXQgaXMgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uXG4gKlxuICogVGhyb3dzIGFuIGVycm9yIGlmIEdpdCBpcyBub3QgaW5zdGFsbGVkLlxuICpcbiAqIEB0aHJvd3MgRXJyb3IgaWYgR2l0IGlzIG5vdCBpbnN0YWxsZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0dpdEluc3RhbGxlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjRnJvbVJvb3QoJ2dpdCAtLXZlcnNpb24nLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcignR2l0IGlzIG5vdCBpbnN0YWxsZWQuIFBsZWFzZSBpbnN0YWxsIGl0IGZyb20gaHR0cHM6Ly9naXQtc2NtLmNvbS8nKTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgR2l0IHJlcG9zaXRvcnkgaXMgY2xlYW4sIG1lYW5pbmcgdGhlcmUgYXJlIG5vIHVuY29tbWl0dGVkIGNoYW5nZXMuXG4gKlxuICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBub3QgY2xlYW4uXG4gKlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgR2l0IHJlcG9zaXRvcnkgaXMgbm90IGNsZWFuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tHaXRSZXBvQ2xlYW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3Rkb3V0ID0gYXdhaXQgZXhlY0Zyb21Sb290KCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0tdW50cmFja2VkLWZpbGVzPWFsbCcsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgICBpZiAoc3Rkb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcignR2l0IHJlcG9zaXRvcnkgaXMgbm90IGNsZWFuLiBQbGVhc2UgY29tbWl0IG9yIHN0YXNoIHlvdXIgY2hhbmdlcyBiZWZvcmUgcmVsZWFzaW5nIGEgbmV3IHZlcnNpb24uJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb3BpZXMgdGhlIHVwZGF0ZWQgbWFuaWZlc3QgZmlsZSB0byB0aGUgZGlzdHJpYnV0aW9uIGJ1aWxkIGZvbGRlci5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvcHkgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29weVVwZGF0ZWRNYW5pZmVzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgY3AoXG4gICAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uKSxcbiAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZShqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uKSksXG4gICAgeyBmb3JjZTogdHJ1ZSB9XG4gICk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbmV3IHZlcnNpb24gc3RyaW5nIGJhc2VkIG9uIHRoZSBjdXJyZW50IHZlcnNpb24gYW5kIHRoZSBzcGVjaWZpZWQgdXBkYXRlIHR5cGUuXG4gKlxuICogVXNlcyB0aGUgYHNlbXZlcmAgcGFja2FnZSB0byBjb21wdXRlIHRoZSBuZXh0IHZlcnNpb24sIHN1cHBvcnRpbmcgYWxsIG5wbSBpbmNyZW1lbnQgdHlwZXM6XG4gKiBgbWFqb3JgLCBgbWlub3JgLCBgcGF0Y2hgLCBgcHJlbWFqb3JgLCBgcHJlbWlub3JgLCBgcHJlcGF0Y2hgLCBhbmQgYHByZXJlbGVhc2VgLlxuICogUHJlLXJlbGVhc2UgdmVyc2lvbnMgdXNlIHRoZSBgYmV0YWAgaWRlbnRpZmllciBieSBkZWZhdWx0IChlLmcuLCBgMS4yLjQtYmV0YS4wYCkuXG4gKlxuICogQHBhcmFtIHZlcnNpb25VcGRhdGVUeXBlIC0gVGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgb3IgYW4gZXhwbGljaXQgdmVyc2lvbiBzdHJpbmcuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgdmVyc2lvbiBzdHJpbmcuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBjdXJyZW50IHZlcnNpb24gaXMgaW52YWxpZCBvciB0aGUgaW5jcmVtZW50IGZhaWxzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TmV3VmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgdmVyc2lvblR5cGUgPSBnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGlmICh2ZXJzaW9uVHlwZSA9PT0gVmVyc2lvblVwZGF0ZVR5cGUuTWFudWFsKSB7XG4gICAgcmV0dXJuIHZlcnNpb25VcGRhdGVUeXBlO1xuICB9XG5cbiAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpzb24oKTtcbiAgY29uc3QgY3VycmVudFZlcnNpb24gPSBwYWNrYWdlSnNvbi52ZXJzaW9uID8/ICcnO1xuXG4gIGNvbnN0IHJlbGVhc2VUeXBlID0gdmVyc2lvblR5cGUgYXMgUmVsZWFzZVR5cGU7XG4gIGNvbnN0IGlzUHJlUmVsZWFzZVR5cGUgPSByZWxlYXNlVHlwZS5zdGFydHNXaXRoKCdwcmUnKTtcbiAgY29uc3QgbmV3VmVyc2lvbiA9IGlzUHJlUmVsZWFzZVR5cGVcbiAgICA/IGluYyhjdXJyZW50VmVyc2lvbiwgcmVsZWFzZVR5cGUsIERFRkFVTFRfUFJFSUQpXG4gICAgOiBpbmMoY3VycmVudFZlcnNpb24sIHJlbGVhc2VUeXBlKTtcbiAgYXNzZXJ0Tm9uTnVsbGFibGUobmV3VmVyc2lvbiwgYEZhaWxlZCB0byBpbmNyZW1lbnQgdmVyc2lvbiBmcm9tICcke2N1cnJlbnRWZXJzaW9ufScgd2l0aCB0eXBlICcke3ZlcnNpb25UeXBlfSdgKTtcblxuICByZXR1cm4gbmV3VmVyc2lvbjtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHJlbGVhc2Ugbm90ZXMgZm9yIGEgc3BlY2lmaWMgdmVyc2lvbiBmcm9tIHRoZSBjaGFuZ2Vsb2cuXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gbnVtYmVyIGZvciB3aGljaCB0byBnZXQgdGhlIHJlbGVhc2Ugbm90ZXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZWxlYXNlIG5vdGVzIGZvciB0aGUgc3BlY2lmaWVkIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZWxlYXNlTm90ZXMobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgY2hhbmdlbG9nUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kKTtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGNoYW5nZWxvZ1BhdGgsICd1dGYtOCcpO1xuICBjb25zdCBuZXdWZXJzaW9uRXNjYXBlZCA9IHJlcGxhY2VBbGwobmV3VmVyc2lvbiwgJy4nLCAnXFxcXC4nKTtcbiAgY29uc3QgbWF0Y2ggPSBuZXcgUmVnRXhwKGBcXG4jIyAke25ld1ZlcnNpb25Fc2NhcGVkfVxcblxcbigoLnxcXG4pKz8pXFxuXFxuIyNgKS5leGVjKGNvbnRlbnQpO1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gdjggdHJhY2tzIG9wdGlvbmFsIGNoYWluaW5nIGFuZCB0ZXJuYXJ5IGFzIHNlcGFyYXRlIGJyYW5jaGVzOyBib3RoIHBhdGhzIGFyZSB0ZXN0ZWQuICovXG4gIGxldCByZWxlYXNlTm90ZXMgPSBtYXRjaD8uWzFdID8gYCR7bWF0Y2hbMV19XFxuXFxuYCA6ICcnO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gIGNvbnN0IHRhZ3MgPSAoYXdhaXQgZXhlY0Zyb21Sb290KCdnaXQgdGFnIC0tc29ydD0tY3JlYXRvcmRhdGUnLCB7IGlzUXVpZXQ6IHRydWUgfSkpLnNwbGl0KC9cXHI/XFxuLyk7XG4gIGNvbnN0IHByZXZpb3VzVmVyc2lvbiA9IHRhZ3NbMV07XG4gIGxldCBjaGFuZ2VzVXJsOiBzdHJpbmc7XG5cbiAgY29uc3QgcmVwb1VybCA9IGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2ggcmVwbyB2aWV3IC0tanNvbiB1cmwgLXEgLnVybCcsIHsgaXNRdWlldDogdHJ1ZSB9KTtcblxuICBpZiAocHJldmlvdXNWZXJzaW9uKSB7XG4gICAgY2hhbmdlc1VybCA9IGAke3JlcG9Vcmx9L2NvbXBhcmUvJHtwcmV2aW91c1ZlcnNpb259Li4uJHtuZXdWZXJzaW9ufWA7XG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlc1VybCA9IGAke3JlcG9Vcmx9L2NvbW1pdHMvJHtuZXdWZXJzaW9ufWA7XG4gIH1cblxuICByZWxlYXNlTm90ZXMgKz0gYCoqRnVsbCBDaGFuZ2Vsb2cqKjogJHtjaGFuZ2VzVXJsfWA7XG4gIHJldHVybiByZWxlYXNlTm90ZXM7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiB2ZXJzaW9uIHVwZGF0ZSBiYXNlZCBvbiB0aGUgaW5wdXQgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSBpbnB1dCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2ZXJzaW9uIHVwZGF0ZSB0eXBlLlxuICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgYFZlcnNpb25VcGRhdGVUeXBlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNpb25VcGRhdGVUeXBlKHZlcnNpb25VcGRhdGVUeXBlOiBzdHJpbmcpOiBWZXJzaW9uVXBkYXRlVHlwZSB7XG4gIGNvbnN0IHZlcnNpb25VcGRhdGVUeXBlRW51bSA9IHZlcnNpb25VcGRhdGVUeXBlIGFzIFZlcnNpb25VcGRhdGVUeXBlO1xuICBzd2l0Y2ggKHZlcnNpb25VcGRhdGVUeXBlRW51bSkge1xuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuTWFqb3I6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5NaW5vcjpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLlBhdGNoOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuUHJlTWFqb3I6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5QcmVNaW5vcjpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLlByZVBhdGNoOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuUHJlUmVsZWFzZTpcbiAgICAgIHJldHVybiB2ZXJzaW9uVXBkYXRlVHlwZUVudW07XG5cbiAgICBkZWZhdWx0OlxuICAgICAgaWYgKC9eXFxkK1xcLlxcZCtcXC5cXGQrKD86LVtcXHdcXGQuLV0rKT8kLy50ZXN0KHZlcnNpb25VcGRhdGVUeXBlKSkge1xuICAgICAgICByZXR1cm4gVmVyc2lvblVwZGF0ZVR5cGUuTWFudWFsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gVmVyc2lvblVwZGF0ZVR5cGUuSW52YWxpZDtcbiAgfVxufVxuXG4vKipcbiAqIFB1c2hlcyBjb21taXRzIGFuZCB0YWdzIHRvIHRoZSByZW1vdGUgR2l0IHJlcG9zaXRvcnkuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwdXNoIG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdpdFB1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHB1c2ggLS1mb2xsb3ctdGFncyAtLWZvcmNlJywgeyBpc1F1aWV0OiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIFB1Ymxpc2hlcyBhIEdpdEh1YiByZWxlYXNlIGZvciB0aGUgbmV3IHZlcnNpb24uXG4gKlxuICogSGFuZGxlcyB0aGUgY3JlYXRpb24gb2YgYSByZWxlYXNlIGFuZCB1cGxvYWRpbmcgZmlsZXMgZm9yIGVpdGhlciBhbiBPYnNpZGlhbiBwbHVnaW4gb3IgYW5vdGhlciBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciBmb3IgdGhlIHJlbGVhc2UuXG4gKiBAcGFyYW0gaXNPYnNpZGlhblBsdWdpbiAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBwcm9qZWN0IGlzIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcmVsZWFzZSBoYXMgYmVlbiBwdWJsaXNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwdWJsaXNoR2l0SHViUmVsZWFzZShuZXdWZXJzaW9uOiBzdHJpbmcsIGlzT2JzaWRpYW5QbHVnaW46IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IGZpbGVQYXRoczogc3RyaW5nW107XG5cbiAgaWYgKGlzT2JzaWRpYW5QbHVnaW4pIHtcbiAgICBjb25zdCBidWlsZEZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCk7XG4gICAgY29uc3QgZmlsZU5hbWVzID0gYXdhaXQgcmVhZGRpclBvc2l4KGJ1aWxkRm9sZGVyKTtcbiAgICBmaWxlUGF0aHMgPSBmaWxlTmFtZXMubWFwKChmaWxlTmFtZSkgPT4gam9pbihidWlsZEZvbGRlciwgZmlsZU5hbWUpKTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgcmVzdWx0T3V0cHV0ID0gYXdhaXQgZXhlY0Zyb21Sb290KFsnbnBtJywgJ3BhY2snLCAnLS1wYWNrLWRlc3RpbmF0aW9uJywgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCAnLS1qc29uJ10sIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgICBjb25zdCBpbmRleCA9IHJlc3VsdE91dHB1dC5pbmRleE9mKCdbXFxuICB7Jyk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmluZCB0aGUgc3RhcnQgb2YgdGhlIEpTT04gYXJyYXkgaW4gdGhlIHJlc3VsdCBvdXRwdXQnKTtcbiAgICB9XG4gICAgcmVzdWx0T3V0cHV0ID0gcmVzdWx0T3V0cHV0LnNsaWNlKGluZGV4KTtcbiAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3VsdE91dHB1dCkgYXMgW3sgZmlsZW5hbWU6IHN0cmluZyB9XTtcbiAgICBmaWxlUGF0aHMgPSBbXG4gICAgICBqb2luKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdCwgcmVzdWx0WzBdLmZpbGVuYW1lKSxcbiAgICAgIGpvaW4oT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLlN0eWxlc0NzcylcbiAgICBdO1xuICB9XG5cbiAgZmlsZVBhdGhzID0gZmlsZVBhdGhzLmZpbHRlcigoZmlsZVBhdGgpID0+IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoZmlsZVBhdGgpKSk7XG5cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFtcbiAgICAnZ2gnLFxuICAgICdyZWxlYXNlJyxcbiAgICAnY3JlYXRlJyxcbiAgICBuZXdWZXJzaW9uLFxuICAgIC4uLmZpbGVQYXRocyxcbiAgICAnLS10aXRsZScsXG4gICAgYHYke25ld1ZlcnNpb259YCxcbiAgICAuLi4oaXNQcmVSZWxlYXNlKG5ld1ZlcnNpb24pID8gWyctLXByZXJlbGVhc2UnXSA6IFtdKSxcbiAgICAnLS1ub3Rlcy1maWxlJyxcbiAgICAnLSdcbiAgXSwge1xuICAgIGlzUXVpZXQ6IHRydWUsXG4gICAgc3RkaW46IGF3YWl0IGdldFJlbGVhc2VOb3RlcyhuZXdWZXJzaW9uKVxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHRoZSBjaGFuZ2Vsb2cgZmlsZSB3aXRoIG5ldyB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBjb21taXQgbWVzc2FnZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgY3VycmVudCBjaGFuZ2Vsb2csIGFwcGVuZHMgbmV3IGVudHJpZXMgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbixcbiAqIGFuZCBwcm9tcHRzIHRoZSB1c2VyIHRvIHJldmlldyB0aGUgY2hhbmdlcy5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgdG8gYmUgYWRkZWQgdG8gdGhlIGNoYW5nZWxvZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2hhbmdlbG9nIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUNoYW5nZWxvZyhuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgSEVBREVSX0xJTkVTX0NPVU5UID0gMjtcbiAgY29uc3QgY2hhbmdlbG9nUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kKTtcbiAgbGV0IHByZXZpb3VzQ2hhbmdlbG9nTGluZXM6IHN0cmluZ1tdO1xuICBpZiAoZXhpc3RzU3luYyhjaGFuZ2Vsb2dQYXRoKSkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShjaGFuZ2Vsb2dQYXRoLCAndXRmLTgnKTtcbiAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJykuc2xpY2UoSEVBREVSX0xJTkVTX0NPVU5UKTtcbiAgICBpZiAocHJldmlvdXNDaGFuZ2Vsb2dMaW5lcy5hdCgtMSkgPT09ICcnKSB7XG4gICAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLnBvcCgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzID0gW107XG4gIH1cblxuICBjb25zdCBsYXN0VGFnID0gcmVwbGFjZUFsbChwcmV2aW91c0NoYW5nZWxvZ0xpbmVzWzBdID8/ICcnLCAnIyMgJywgJycpO1xuICBjb25zdCBjb21taXRSYW5nZSA9IGxhc3RUYWcgPyBgJHtsYXN0VGFnfS4uSEVBRGAgOiAnSEVBRCc7XG4gIGNvbnN0IGNvbW1pdE1lc3NhZ2VzU3RyID0gYXdhaXQgZXhlY0Zyb21Sb290KGBnaXQgbG9nICR7Y29tbWl0UmFuZ2V9IC0tZm9ybWF0PSVCIC0tZmlyc3QtcGFyZW50IC16YCwgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICBjb25zdCBjb21taXRNZXNzYWdlcyA9IGNvbW1pdE1lc3NhZ2VzU3RyLnNwbGl0KCdcXDAnKS5maWx0ZXIoQm9vbGVhbikubWFwKHRvU2luZ2xlTGluZSk7XG5cbiAgbGV0IG5ld0NoYW5nZUxvZyA9IGAjIENIQU5HRUxPR1xcblxcbiMjICR7bmV3VmVyc2lvbn1cXG5cXG5gO1xuXG4gIGZvciAoY29uc3QgbWVzc2FnZSBvZiBjb21taXRNZXNzYWdlcykge1xuICAgIG5ld0NoYW5nZUxvZyArPSBgLSAke21lc3NhZ2V9XFxuYDtcbiAgfVxuXG4gIGlmIChwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICBuZXdDaGFuZ2VMb2cgKz0gJ1xcbic7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHByZXZpb3VzQ2hhbmdlbG9nTGluZXMpIHtcbiAgICAgIG5ld0NoYW5nZUxvZyArPSBgJHtsaW5lfVxcbmA7XG4gICAgfVxuICB9XG5cbiAgYXdhaXQgd3JpdGVGaWxlKGNoYW5nZWxvZ1BhdGgsIG5ld0NoYW5nZUxvZywgJ3V0Zi04Jyk7XG5cbiAgY29uc3QgY29kZVZlcnNpb24gPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2NvZGUgLS12ZXJzaW9uJywge1xuICAgIGlzUXVpZXQ6IHRydWUsXG4gICAgc2hvdWxkSWdub3JlRXhpdENvZGU6IHRydWVcbiAgfSk7XG4gIGNvbnN0IHZlcnNpb25EZWJ1Z2dlciA9IGdldExpYkRlYnVnZ2VyKCdWZXJzaW9uJyk7XG4gIGlmIChjb2RlVmVyc2lvbikge1xuICAgIHZlcnNpb25EZWJ1Z2dlcihgUGxlYXNlIHVwZGF0ZSB0aGUgJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZH0gZmlsZS4gQ2xvc2UgVmlzdWFsIFN0dWRpbyBDb2RlIHdoZW4geW91IGFyZSBkb25lLi4uYCk7XG4gICAgYXdhaXQgZXhlY0Zyb21Sb290KFsnY29kZScsICctdycsIGNoYW5nZWxvZ1BhdGhdLCB7XG4gICAgICBpc1F1aWV0OiB0cnVlLFxuICAgICAgc2hvdWxkSWdub3JlRXhpdENvZGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB2ZXJzaW9uRGVidWdnZXIoJ0NvdWxkIG5vdCBmaW5kIFZpc3VhbCBTdHVkaW8gQ29kZSBpbiB5b3VyIFBBVEguIFVzaW5nIGNvbnNvbGUgbW9kZSBpbnN0ZWFkLicpO1xuICAgIGF3YWl0IGNyZWF0ZUludGVyZmFjZShwcm9jZXNzLnN0ZGluLCBwcm9jZXNzLnN0ZG91dCkucXVlc3Rpb24oXG4gICAgICBgUGxlYXNlIHVwZGF0ZSB0aGUgJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZH0gZmlsZS4gUHJlc3MgRW50ZXIgd2hlbiB5b3UgYXJlIGRvbmUuLi5gXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHZlcnNpb24gb2YgdGhlIHByb2plY3QgYmFzZWQgb24gdGhlIHNwZWNpZmllZCB1cGRhdGUgdHlwZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgc2VyaWVzIG9mIHRhc2tzIHRvIGhhbmRsZSB2ZXJzaW9uIHVwZGF0ZXM6XG4gKiAxLiBWYWxpZGF0ZXMgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUuXG4gKiAyLiBDaGVja3MgaWYgR2l0IGFuZCBHaXRIdWIgQ0xJIGFyZSBpbnN0YWxsZWQuXG4gKiAzLiBWZXJpZmllcyB0aGF0IHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBjbGVhbi5cbiAqIDQuIFJ1bnMgc3BlbGxjaGVjayBhbmQgbGludGluZy5cbiAqIDUuIEJ1aWxkcyB0aGUgcHJvamVjdC5cbiAqIDYuIFVwZGF0ZXMgdmVyc2lvbiBpbiBmaWxlcyBhbmQgY2hhbmdlbG9nLlxuICogNy4gQWRkcyB1cGRhdGVkIGZpbGVzIHRvIEdpdCwgdGFncyB0aGUgY29tbWl0LCBhbmQgcHVzaGVzIHRvIHRoZSByZXBvc2l0b3J5LlxuICogOC4gSWYgYW4gT2JzaWRpYW4gcGx1Z2luLCBjb3BpZXMgdGhlIHVwZGF0ZWQgbWFuaWZlc3QgYW5kIHB1Ymxpc2hlcyBhIEdpdEh1YiByZWxlYXNlLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIHRvIHBlcmZvcm0gKG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZW1ham9yLCBwcmVtaW5vciwgcHJlcGF0Y2gsIHByZXJlbGVhc2UsIG9yIHgueS56Wy1zdWZmaXhdKS5cbiAqIEBwYXJhbSBwcmVwYXJlR2l0SHViUmVsZWFzZSAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcHJlcGFyZSB0aGUgR2l0SHViIHJlbGVhc2UuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHZlcnNpb24gdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZT86IHN0cmluZywgcHJlcGFyZUdpdEh1YlJlbGVhc2U/OiAobmV3VmVyc2lvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghdmVyc2lvblVwZGF0ZVR5cGUpIHtcbiAgICBjb25zdCBucG1PbGRWZXJzaW9uID0gcHJvY2Vzcy5lbnZbJ25wbV9vbGRfdmVyc2lvbiddO1xuICAgIGNvbnN0IG5wbU5ld1ZlcnNpb24gPSBwcm9jZXNzLmVudlsnbnBtX25ld192ZXJzaW9uJ107XG5cbiAgICBpZiAobnBtT2xkVmVyc2lvbiAmJiBucG1OZXdWZXJzaW9uKSB7XG4gICAgICBhd2FpdCB1cGRhdGVWZXJzaW9uSW5GaWxlcyhucG1PbGRWZXJzaW9uKTtcbiAgICAgIGF3YWl0IHVwZGF0ZVZlcnNpb24obnBtTmV3VmVyc2lvbiwgcHJlcGFyZUdpdEh1YlJlbGVhc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTm8gdmVyc2lvbiB1cGRhdGUgdHlwZSBwcm92aWRlZCcpO1xuICB9XG5cbiAgY29uc3QgaXNPYnNpZGlhblBsdWdpbiA9IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uKSkgJiYgKGF3YWl0IHJlYWRQYWNrYWdlSnNvbigpKS5uYW1lICE9PSAnb2JzaWRpYW4tZGV2LXV0aWxzJztcblxuICB2YWxpZGF0ZSh2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGF3YWl0IGNoZWNrR2l0SW5zdGFsbGVkKCk7XG4gIGF3YWl0IGNoZWNrR2l0UmVwb0NsZWFuKCk7XG4gIGF3YWl0IGNoZWNrR2l0SHViQ2xpSW5zdGFsbGVkKCk7XG4gIGF3YWl0IG5wbVJ1bignZm9ybWF0OmNoZWNrJyk7XG4gIGF3YWl0IG5wbVJ1bignc3BlbGxjaGVjaycpO1xuICBhd2FpdCBucG1SdW4oJ2xpbnQ6bWQnKTtcbiAgYXdhaXQgbnBtUnVuKCdidWlsZCcpO1xuICBhd2FpdCBucG1SdW4oJ2xpbnQnKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3QnKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3Q6aW50ZWdyYXRpb24nKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3Q6Y292ZXJhZ2UnKTtcblxuICBjb25zdCBuZXdWZXJzaW9uID0gYXdhaXQgZ2V0TmV3VmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGF3YWl0IHVwZGF0ZVZlcnNpb25JbkZpbGVzKG5ld1ZlcnNpb24pO1xuICBpZiAoaXNPYnNpZGlhblBsdWdpbikge1xuICAgIGF3YWl0IHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb24pO1xuICB9XG5cbiAgYXdhaXQgdXBkYXRlQ2hhbmdlbG9nKG5ld1ZlcnNpb24pO1xuICBhd2FpdCBhZGRVcGRhdGVkRmlsZXNUb0dpdChuZXdWZXJzaW9uKTtcbiAgYXdhaXQgYWRkR2l0VGFnKG5ld1ZlcnNpb24pO1xuICBhd2FpdCBnaXRQdXNoKCk7XG4gIGF3YWl0IHByZXBhcmVHaXRIdWJSZWxlYXNlPy4obmV3VmVyc2lvbik7XG4gIGF3YWl0IHB1Ymxpc2hHaXRIdWJSZWxlYXNlKG5ld1ZlcnNpb24sIGlzT2JzaWRpYW5QbHVnaW4pO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHZlcnNpb24gaW4gdmFyaW91cyBmaWxlcywgaW5jbHVkaW5nIGBwYWNrYWdlLmpzb25gLCBgcGFja2FnZS1sb2NrLmpzb25gLFxuICogYW5kIE9ic2lkaWFuIHBsdWdpbiBtYW5pZmVzdHMgaWYgYXBwbGljYWJsZS5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBzdHJpbmcgdG8gdXBkYXRlIGluIHRoZSBmaWxlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbkluRmlsZXMobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGVkaXRQYWNrYWdlSnNvbigocGFja2FnZUpzb24pID0+IHtcbiAgICBwYWNrYWdlSnNvbi52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgfSk7XG5cbiAgYXdhaXQgZWRpdFBhY2thZ2VMb2NrSnNvbih1cGRhdGUsIHsgc2hvdWxkU2tpcElmTWlzc2luZzogdHJ1ZSB9KTtcbiAgYXdhaXQgZWRpdE5wbVNocmlua1dyYXBKc29uKHVwZGF0ZSwgeyBzaG91bGRTa2lwSWZNaXNzaW5nOiB0cnVlIH0pO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZShwYWNrYWdlTG9ja0pzb246IFBhY2thZ2VMb2NrSnNvbik6IHZvaWQge1xuICAgIHBhY2thZ2VMb2NrSnNvbi52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICBjb25zdCBkZWZhdWx0UGFja2FnZSA9IHBhY2thZ2VMb2NrSnNvbi5wYWNrYWdlcz8uWycnXTtcbiAgICBpZiAoZGVmYXVsdFBhY2thZ2UpIHtcbiAgICAgIGRlZmF1bHRQYWNrYWdlLnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZSB0byBlbnN1cmUgaXQgaXMgZWl0aGVyIGEgcmVjb2duaXplZCB0eXBlXG4gKiBvciBhIHZhbGlkIG1hbnVhbCB2ZXJzaW9uIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblVwZGF0ZVR5cGUgLSBUaGUgdmVyc2lvbiB1cGRhdGUgdHlwZSB0byB2YWxpZGF0ZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUgaXMgaW52YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlKHZlcnNpb25VcGRhdGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGdldFZlcnNpb25VcGRhdGVUeXBlKHZlcnNpb25VcGRhdGVUeXBlKSA9PT0gVmVyc2lvblVwZGF0ZVR5cGUuSW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdJbnZhbGlkIHZlcnNpb24gdXBkYXRlIHR5cGUuIFBsZWFzZSB1c2UgXFwnbWFqb3JcXCcsIFxcJ21pbm9yXFwnLCBcXCdwYXRjaFxcJywgXFwncHJlbWFqb3JcXCcsIFxcJ3ByZW1pbm9yXFwnLCBcXCdwcmVwYXRjaFxcJywgXFwncHJlcmVsZWFzZVxcJywgb3IgXFwneC55LnpbLXN1ZmZpeF1cXCcgZm9ybWF0LidcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogRmV0Y2hlcyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgT2JzaWRpYW4gZnJvbSB0aGUgR2l0SHViIHJlbGVhc2VzIEFQSS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBPYnNpZGlhbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0T2JzaWRpYW5WZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gV2UgcnVuIHRoaXMgb3V0c2lkZSBvZiBPYnNpZGlhbiwgc28gd2UgZG9uJ3QgaGF2ZSBgcmVxdWVzdFVybCgpYC5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9vYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzL3JlbGVhc2VzL2xhdGVzdCcpO1xuICBjb25zdCBvYnNpZGlhblJlbGVhc2VzSnNvbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBQYXJ0aWFsPE9ic2lkaWFuUmVsZWFzZXNKc29uPjtcbiAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKG9ic2lkaWFuUmVsZWFzZXNKc29uLm5hbWUsICdDb3VsZCBub3QgZmluZCB0aGUgbmFtZSBvZiB0aGUgbGF0ZXN0IE9ic2lkaWFuIHJlbGVhc2UnKTtcbn1cblxuZnVuY3Rpb24gaXNQcmVSZWxlYXNlKHZlcnNpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJlcmVsZWFzZSh2ZXJzaW9uKSAhPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gdG9TaW5nbGVMaW5lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBzdHIuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBsaW5lcy5qb2luKCcgJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBtYW5pZmVzdEJldGFKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0QmV0YUpzb24pO1xuICBpZiAoaXNQcmVSZWxlYXNlKG5ld1ZlcnNpb24pKSB7XG4gICAgYXdhaXQgY3AoXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24pLFxuICAgICAgbWFuaWZlc3RCZXRhSnNvblBhdGgsXG4gICAgICB7IGZvcmNlOiB0cnVlIH1cbiAgICApO1xuICAgIGF3YWl0IGVkaXRKc29uPE1hbmlmZXN0PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEJldGFKc29uLCAobWFuaWZlc3QpID0+IHtcbiAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxhdGVzdE9ic2lkaWFuVmVyc2lvbiA9IGF3YWl0IGdldExhdGVzdE9ic2lkaWFuVmVyc2lvbigpO1xuXG4gICAgYXdhaXQgZWRpdEpzb248TWFuaWZlc3Q+KE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiwgKG1hbmlmZXN0KSA9PiB7XG4gICAgICBtYW5pZmVzdC5taW5BcHBWZXJzaW9uID0gbGF0ZXN0T2JzaWRpYW5WZXJzaW9uO1xuICAgICAgbWFuaWZlc3QudmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gICAgfSk7XG5cbiAgICBhd2FpdCBlZGl0SnNvbjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5WZXJzaW9uc0pzb24sICh2ZXJzaW9ucykgPT4ge1xuICAgICAgdmVyc2lvbnNbbmV3VmVyc2lvbl0gPSBsYXRlc3RPYnNpZGlhblZlcnNpb247XG4gICAgfSk7XG5cbiAgICBpZiAoZXhpc3RzU3luYyhtYW5pZmVzdEJldGFKc29uUGF0aCkpIHtcbiAgICAgIGF3YWl0IHJtKG1hbmlmZXN0QmV0YUpzb25QYXRoKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCBjb3B5VXBkYXRlZE1hbmlmZXN0KCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLHFCQUEyQjtBQUMzQixzQkFLTztBQUNQLElBQUFBLG1CQUFnQztBQUNoQyxvQkFHTztBQUlQLG1CQUErQjtBQUMvQix3Q0FBd0M7QUFDeEMsa0JBQXFCO0FBQ3JCLG9CQUEyQjtBQUMzQix5QkFHTztBQUNQLGdCQUE2QjtBQUM3QixrQkFBeUI7QUFDekIscUJBR087QUFDUCxpQkFLTztBQUNQLDJDQUEwQztBQUMxQyxrQkFHTztBQUtQLE1BQU0sZ0JB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Qy9ELFlBQU0sa0NBQXNCLFFBQVEsRUFBRSxxQkFBcUIsS0FBSyxDQUFDO0FBRWpFLFdBQVMsT0FBTyxpQkFBd0M7QUFDdEQsb0JBQWdCLFVBQVU7QUFDMUIsVUFBTSxpQkFBaUIsZ0JBQWdCLFdBQVcsRUFBRTtBQUNwRCxRQUFJLGdCQUFnQjtBQUNsQixxQkFBZSxVQUFVO0FBQUEsSUFDM0I7QUFBQSxFQUNGO0FBQ0Y7QUFTTyxTQUFTLFNBQVMsbUJBQWlDO0FBQ3hELE1BQUkscUJBQXFCLGlCQUFpQixNQUFNLHlCQUEyQjtBQUN6RSxVQUFNLElBQUk7QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjtBQU9BLGVBQWUsMkJBQTRDO0FBRXpELFFBQU0sV0FBVyxNQUFNLE1BQU0sMkVBQTJFO0FBQ3hHLFFBQU0sdUJBQXVCLE1BQU0sU0FBUyxLQUFLO0FBQ2pELGFBQU8sc0NBQWtCLHFCQUFxQixNQUFNLHdEQUF3RDtBQUM5RztBQUVBLFNBQVMsYUFBYSxTQUEwQjtBQUM5QyxhQUFPLDBCQUFXLE9BQU8sTUFBTTtBQUNqQztBQUVBLFNBQVMsYUFBYSxLQUFxQjtBQUN6QyxRQUFNLFFBQVEsSUFBSSxNQUFNLE9BQU8sRUFBRSxPQUFPLE9BQU87QUFDL0MsU0FBTyxNQUFNLEtBQUssR0FBRztBQUN2QjtBQUVBLGVBQWUsOEJBQThCLFlBQW1DO0FBQzlFLFFBQU0sMkJBQXVCLHFDQUF3QiwwREFBd0IsZ0JBQWdCO0FBQzdGLE1BQUksYUFBYSxVQUFVLEdBQUc7QUFDNUIsY0FBTTtBQUFBLFVBQ0oscUNBQXdCLDBEQUF3QixZQUFZO0FBQUEsTUFDNUQ7QUFBQSxNQUNBLEVBQUUsT0FBTyxLQUFLO0FBQUEsSUFDaEI7QUFDQSxjQUFNLHNCQUFtQiwwREFBd0Isa0JBQWtCLENBQUMsYUFBYTtBQUMvRSxlQUFTLFVBQVU7QUFBQSxJQUNyQixDQUFDO0FBQUEsRUFDSCxPQUFPO0FBQ0wsVUFBTSx3QkFBd0IsTUFBTSx5QkFBeUI7QUFFN0QsY0FBTSxzQkFBbUIsMERBQXdCLGNBQWMsQ0FBQyxhQUFhO0FBQzNFLGVBQVMsZ0JBQWdCO0FBQ3pCLGVBQVMsVUFBVTtBQUFBLElBQ3JCLENBQUM7QUFFRCxjQUFNLHNCQUFpQywwREFBd0IsY0FBYyxDQUFDLGFBQWE7QUFDekYsZUFBUyxVQUFVLElBQUk7QUFBQSxJQUN6QixDQUFDO0FBRUQsWUFBSSwyQkFBVyxvQkFBb0IsR0FBRztBQUNwQyxnQkFBTSxvQkFBRyxvQkFBb0I7QUFBQSxJQUMvQjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLG9CQUFvQjtBQUM1QjsiLAogICJuYW1lcyI6IFsiaW1wb3J0X3Byb21pc2VzIiwgIlZlcnNpb25VcGRhdGVUeXBlIl0KfQo=
|
|
470
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy92ZXJzaW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyB2ZXJzaW9uIHVwZGF0ZXMgaW4gYSBwcm9qZWN0LlxuICogSXQgaW5jbHVkZXMgdGFza3Mgc3VjaCBhcyB2YWxpZGF0aW5nIHZlcnNpb24gdXBkYXRlIHR5cGVzLCBjaGVja2luZyB0aGUgc3RhdGVcbiAqIG9mIEdpdCBhbmQgR2l0SHViIENMSSwgdXBkYXRpbmcgdmVyc2lvbiBudW1iZXJzIGluIGZpbGVzLCBhbmQgcGVyZm9ybWluZ1xuICogR2l0IG9wZXJhdGlvbnMgc3VjaCBhcyB0YWdnaW5nIGFuZCBwdXNoaW5nLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVsZWFzZVR5cGUgfSBmcm9tICdzZW12ZXInO1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBjcCxcbiAgcmVhZEZpbGUsXG4gIHJtLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBjcmVhdGVJbnRlcmZhY2UgfSBmcm9tICdub2RlOnJlYWRsaW5lL3Byb21pc2VzJztcbmltcG9ydCB7XG4gIGluYyxcbiAgcHJlcmVsZWFzZVxufSBmcm9tICdzZW12ZXInO1xuXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VMb2NrSnNvbiB9IGZyb20gJy4vbnBtLnRzJztcblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICcuLi9kZWJ1Zy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vcGF0aC50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi4vc3RyaW5nLnRzJztcbmltcG9ydCB7XG4gIGFzc2VydE5vbk51bGxhYmxlLFxuICBlbnN1cmVOb25OdWxsYWJsZVxufSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgeyByZWFkZGlyUG9zaXggfSBmcm9tICcuL2ZzLnRzJztcbmltcG9ydCB7IGVkaXRKc29uIH0gZnJvbSAnLi9qc29uLnRzJztcbmltcG9ydCB7XG4gIG5wbVJ1bixcbiAgbnBtUnVuT3B0aW9uYWxcbn0gZnJvbSAnLi9ucG0tcnVuLnRzJztcbmltcG9ydCB7XG4gIGVkaXROcG1TaHJpbmtXcmFwSnNvbixcbiAgZWRpdFBhY2thZ2VKc29uLFxuICBlZGl0UGFja2FnZUxvY2tKc29uLFxuICByZWFkUGFja2FnZUpzb25cbn0gZnJvbSAnLi9ucG0udHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuL3Jvb3QudHMnO1xuXG5pbnRlcmZhY2UgTnBtUGFja1Jlc3VsdCB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgcHJlLXJlbGVhc2UgaWRlbnRpZmllciB1c2VkIGZvciBwcmUtcmVsZWFzZSB2ZXJzaW9ucy5cbiAqL1xuY29uc3QgREVGQVVMVF9QUkVJRCA9ICdiZXRhJztcblxuLyoqXG4gKiBFbnVtIHJlcHJlc2VudGluZyBkaWZmZXJlbnQgdHlwZXMgb2YgdmVyc2lvbiB1cGRhdGVzLlxuICpcbiAqIEFsaWducyB3aXRoIG5wbSdzIGBucG0gdmVyc2lvbmAgaW5jcmVtZW50IHR5cGVzIHBsdXMgYE1hbnVhbGAgZm9yIGV4cGxpY2l0IHZlcnNpb25zLlxuICovXG5leHBvcnQgZW51bSBWZXJzaW9uVXBkYXRlVHlwZSB7XG4gIEludmFsaWQgPSAnaW52YWxpZCcsXG4gIE1ham9yID0gJ21ham9yJyxcbiAgTWFudWFsID0gJ21hbnVhbCcsXG4gIE1pbm9yID0gJ21pbm9yJyxcbiAgUGF0Y2ggPSAncGF0Y2gnLFxuICBQcmVNYWpvciA9ICdwcmVtYWpvcicsXG4gIFByZU1pbm9yID0gJ3ByZW1pbm9yJyxcbiAgUHJlUGF0Y2ggPSAncHJlcGF0Y2gnLFxuICBQcmVSZWxlYXNlID0gJ3ByZXJlbGVhc2UnXG59XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIG1hbmlmZXN0IGZpbGUgZm9ybWF0IGZvciBPYnNpZGlhbiBwbHVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIEEgbWluaW11bSBPYnNpZGlhbiB2ZXJzaW9uIHJlcXVpcmVkIGZvciB0aGUgcGx1Z2luLlxuICAgKi9cbiAgbWluQXBwVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAgICovXG4gIHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgc3RydWN0dXJlIG9mIE9ic2lkaWFuIHJlbGVhc2VzIEpTT04uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5SZWxlYXNlc0pzb24ge1xuICAvKipcbiAgICogQSBuYW1lIG9mIHRoZSBPYnNpZGlhbiByZWxlYXNlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBHaXQgdGFnIGZvciB0aGUgbmV3IHZlcnNpb24uXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gbnVtYmVyIHRvIHVzZSBmb3IgdGhlIHRhZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFnIGhhcyBiZWVuIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRHaXRUYWcobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChgZ2l0IHRhZyAtYSAke25ld1ZlcnNpb259IC1tICR7bmV3VmVyc2lvbn0gLS1mb3JjZWAsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBBZGRzIHVwZGF0ZWQgZmlsZXMgdG8gdGhlIEdpdCBzdGFnaW5nIGFyZWEgYW5kIGNvbW1pdHMgdGhlbSB3aXRoIHRoZSBuZXcgdmVyc2lvbiBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciB1c2VkIGFzIHRoZSBjb21taXQgbWVzc2FnZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZXMgaGF2ZSBiZWVuIGFkZGVkIGFuZCBjb21taXR0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRVcGRhdGVkRmlsZXNUb0dpdChuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnZ2l0JywgJ2FkZCcsICctLWFsbCddLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ2dpdCcsICdjb21taXQnLCAnLW0nLCBgY2hvcmU6IHJlbGVhc2UgJHtuZXdWZXJzaW9ufWAsICctLWFsbG93LWVtcHR5J10sIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIEdpdEh1YiBDTEkgaXMgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uXG4gKlxuICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBHaXRIdWIgQ0xJIGlzIG5vdCBpbnN0YWxsZWQuXG4gKlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgR2l0SHViIENMSSBpcyBub3QgaW5zdGFsbGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tHaXRIdWJDbGlJbnN0YWxsZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY0Zyb21Sb290KCdnaCAtLXZlcnNpb24nLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcignR2l0SHViIENMSSBpcyBub3QgaW5zdGFsbGVkLiBQbGVhc2UgaW5zdGFsbCBpdCBmcm9tIGh0dHBzOi8vY2xpLmdpdGh1Yi5jb20vJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgR2l0IGlzIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiBHaXQgaXMgbm90IGluc3RhbGxlZC5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIGlmIEdpdCBpcyBub3QgaW5zdGFsbGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tHaXRJbnN0YWxsZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY0Zyb21Sb290KCdnaXQgLS12ZXJzaW9uJywgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dpdCBpcyBub3QgaW5zdGFsbGVkLiBQbGVhc2UgaW5zdGFsbCBpdCBmcm9tIGh0dHBzOi8vZ2l0LXNjbS5jb20vJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIEdpdCByZXBvc2l0b3J5IGlzIGNsZWFuLCBtZWFuaW5nIHRoZXJlIGFyZSBubyB1bmNvbW1pdHRlZCBjaGFuZ2VzLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgR2l0IHJlcG9zaXRvcnkgaXMgbm90IGNsZWFuLlxuICpcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEdpdCByZXBvc2l0b3J5IGlzIG5vdCBjbGVhbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrR2l0UmVwb0NsZWFuKCk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0ZG91dCA9IGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAtLXVudHJhY2tlZC1maWxlcz1hbGwnLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gICAgaWYgKHN0ZG91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dpdCByZXBvc2l0b3J5IGlzIG5vdCBjbGVhbi4gUGxlYXNlIGNvbW1pdCBvciBzdGFzaCB5b3VyIGNoYW5nZXMgYmVmb3JlIHJlbGVhc2luZyBhIG5ldyB2ZXJzaW9uLicpO1xuICB9XG59XG5cbi8qKlxuICogQ29waWVzIHRoZSB1cGRhdGVkIG1hbmlmZXN0IGZpbGUgdG8gdGhlIGRpc3RyaWJ1dGlvbiBidWlsZCBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb3B5IG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlVcGRhdGVkTWFuaWZlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGNwKFxuICAgIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiksXG4gICAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbikpLFxuICAgIHsgZm9yY2U6IHRydWUgfVxuICApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG5ldyB2ZXJzaW9uIHN0cmluZyBiYXNlZCBvbiB0aGUgY3VycmVudCB2ZXJzaW9uIGFuZCB0aGUgc3BlY2lmaWVkIHVwZGF0ZSB0eXBlLlxuICpcbiAqIFVzZXMgdGhlIGBzZW12ZXJgIHBhY2thZ2UgdG8gY29tcHV0ZSB0aGUgbmV4dCB2ZXJzaW9uLCBzdXBwb3J0aW5nIGFsbCBucG0gaW5jcmVtZW50IHR5cGVzOlxuICogYG1ham9yYCwgYG1pbm9yYCwgYHBhdGNoYCwgYHByZW1ham9yYCwgYHByZW1pbm9yYCwgYHByZXBhdGNoYCwgYW5kIGBwcmVyZWxlYXNlYC5cbiAqIFByZS1yZWxlYXNlIHZlcnNpb25zIHVzZSB0aGUgYGJldGFgIGlkZW50aWZpZXIgYnkgZGVmYXVsdCAoZS5nLiwgYDEuMi40LWJldGEuMGApLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIG9yIGFuIGV4cGxpY2l0IHZlcnNpb24gc3RyaW5nLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHZlcnNpb24gc3RyaW5nLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgY3VycmVudCB2ZXJzaW9uIGlzIGludmFsaWQgb3IgdGhlIGluY3JlbWVudCBmYWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE5ld1ZlcnNpb24odmVyc2lvblVwZGF0ZVR5cGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHZlcnNpb25UeXBlID0gZ2V0VmVyc2lvblVwZGF0ZVR5cGUodmVyc2lvblVwZGF0ZVR5cGUpO1xuICBpZiAodmVyc2lvblR5cGUgPT09IFZlcnNpb25VcGRhdGVUeXBlLk1hbnVhbCkge1xuICAgIHJldHVybiB2ZXJzaW9uVXBkYXRlVHlwZTtcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gcGFja2FnZUpzb24udmVyc2lvbiA/PyAnJztcblxuICBjb25zdCByZWxlYXNlVHlwZSA9IHZlcnNpb25UeXBlIGFzIFJlbGVhc2VUeXBlO1xuICBjb25zdCBpc1ByZVJlbGVhc2VUeXBlID0gcmVsZWFzZVR5cGUuc3RhcnRzV2l0aCgncHJlJyk7XG4gIGNvbnN0IG5ld1ZlcnNpb24gPSBpc1ByZVJlbGVhc2VUeXBlXG4gICAgPyBpbmMoY3VycmVudFZlcnNpb24sIHJlbGVhc2VUeXBlLCBERUZBVUxUX1BSRUlEKVxuICAgIDogaW5jKGN1cnJlbnRWZXJzaW9uLCByZWxlYXNlVHlwZSk7XG4gIGFzc2VydE5vbk51bGxhYmxlKG5ld1ZlcnNpb24sIGBGYWlsZWQgdG8gaW5jcmVtZW50IHZlcnNpb24gZnJvbSAnJHtjdXJyZW50VmVyc2lvbn0nIHdpdGggdHlwZSAnJHt2ZXJzaW9uVHlwZX0nYCk7XG5cbiAgcmV0dXJuIG5ld1ZlcnNpb247XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSByZWxlYXNlIG5vdGVzIGZvciBhIHNwZWNpZmljIHZlcnNpb24gZnJvbSB0aGUgY2hhbmdlbG9nLlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciBmb3Igd2hpY2ggdG8gZ2V0IHRoZSByZWxlYXNlIG5vdGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgcmVsZWFzZSBub3RlcyBmb3IgdGhlIHNwZWNpZmllZCB2ZXJzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmVsZWFzZU5vdGVzKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNoYW5nZWxvZ1BhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZCk7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShjaGFuZ2Vsb2dQYXRoLCAndXRmLTgnKTtcbiAgY29uc3QgbmV3VmVyc2lvbkVzY2FwZWQgPSByZXBsYWNlQWxsKG5ld1ZlcnNpb24sICcuJywgJ1xcXFwuJyk7XG4gIGNvbnN0IG1hdGNoID0gbmV3IFJlZ0V4cChgXFxuIyMgJHtuZXdWZXJzaW9uRXNjYXBlZH1cXG5cXG4oKC58XFxuKSs/KVxcblxcbiMjYCkuZXhlYyhjb250ZW50KTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIHY4IHRyYWNrcyBvcHRpb25hbCBjaGFpbmluZyBhbmQgdGVybmFyeSBhcyBzZXBhcmF0ZSBicmFuY2hlczsgYm90aCBwYXRocyBhcmUgdGVzdGVkLiAqL1xuICBsZXQgcmVsZWFzZU5vdGVzID0gbWF0Y2g/LlsxXSA/IGAke21hdGNoWzFdfVxcblxcbmAgOiAnJztcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCB0YWdzID0gKGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHRhZyAtLXNvcnQ9LWNyZWF0b3JkYXRlJywgeyBpc1F1aWV0OiB0cnVlIH0pKS5zcGxpdCgvXFxyP1xcbi8pO1xuICBjb25zdCBwcmV2aW91c1ZlcnNpb24gPSB0YWdzWzFdO1xuICBsZXQgY2hhbmdlc1VybDogc3RyaW5nO1xuXG4gIGNvbnN0IHJlcG9VcmwgPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2doIHJlcG8gdmlldyAtLWpzb24gdXJsIC1xIC51cmwnLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG5cbiAgaWYgKHByZXZpb3VzVmVyc2lvbikge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21wYXJlLyR7cHJldmlvdXNWZXJzaW9ufS4uLiR7bmV3VmVyc2lvbn1gO1xuICB9IGVsc2Uge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21taXRzLyR7bmV3VmVyc2lvbn1gO1xuICB9XG5cbiAgcmVsZWFzZU5vdGVzICs9IGAqKkZ1bGwgQ2hhbmdlbG9nKio6ICR7Y2hhbmdlc1VybH1gO1xuICByZXR1cm4gcmVsZWFzZU5vdGVzO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblVwZGF0ZVR5cGUgLSBUaGUgaW5wdXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIGBWZXJzaW9uVXBkYXRlVHlwZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogVmVyc2lvblVwZGF0ZVR5cGUge1xuICBjb25zdCB2ZXJzaW9uVXBkYXRlVHlwZUVudW0gPSB2ZXJzaW9uVXBkYXRlVHlwZSBhcyBWZXJzaW9uVXBkYXRlVHlwZTtcbiAgc3dpdGNoICh2ZXJzaW9uVXBkYXRlVHlwZUVudW0pIHtcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLk1ham9yOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuTWlub3I6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5QYXRjaDpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLlByZU1ham9yOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuUHJlTWlub3I6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5QcmVQYXRjaDpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLlByZVJlbGVhc2U6XG4gICAgICByZXR1cm4gdmVyc2lvblVwZGF0ZVR5cGVFbnVtO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICgvXlxcZCtcXC5cXGQrXFwuXFxkKyg/Oi1bXFx3XFxkLi1dKyk/JC8udGVzdCh2ZXJzaW9uVXBkYXRlVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIFZlcnNpb25VcGRhdGVUeXBlLk1hbnVhbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFZlcnNpb25VcGRhdGVUeXBlLkludmFsaWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXNoZXMgY29tbWl0cyBhbmQgdGFncyB0byB0aGUgcmVtb3RlIEdpdCByZXBvc2l0b3J5LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcHVzaCBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnaXRQdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBleGVjRnJvbVJvb3QoJ2dpdCBwdXNoIC0tZm9sbG93LXRhZ3MgLS1mb3JjZScsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoZXMgYSBHaXRIdWIgcmVsZWFzZSBmb3IgdGhlIG5ldyB2ZXJzaW9uLlxuICpcbiAqIEhhbmRsZXMgdGhlIGNyZWF0aW9uIG9mIGEgcmVsZWFzZSBhbmQgdXBsb2FkaW5nIGZpbGVzIGZvciBlaXRoZXIgYW4gT2JzaWRpYW4gcGx1Z2luIG9yIGFub3RoZXIgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgZm9yIHRoZSByZWxlYXNlLlxuICogQHBhcmFtIGlzT2JzaWRpYW5QbHVnaW4gLSBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgcHJvamVjdCBpcyBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHJlbGVhc2UgaGFzIGJlZW4gcHVibGlzaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVibGlzaEdpdEh1YlJlbGVhc2UobmV3VmVyc2lvbjogc3RyaW5nLCBpc09ic2lkaWFuUGx1Z2luOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBmaWxlUGF0aHM6IHN0cmluZ1tdO1xuXG4gIGlmIChpc09ic2lkaWFuUGx1Z2luKSB7XG4gICAgY29uc3QgYnVpbGRGb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQpO1xuICAgIGNvbnN0IGZpbGVOYW1lcyA9IGF3YWl0IHJlYWRkaXJQb3NpeChidWlsZEZvbGRlcik7XG4gICAgZmlsZVBhdGhzID0gZmlsZU5hbWVzLm1hcCgoZmlsZU5hbWUpID0+IGpvaW4oYnVpbGRGb2xkZXIsIGZpbGVOYW1lKSk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHJlc3VsdE91dHB1dCA9IGF3YWl0IGV4ZWNGcm9tUm9vdChbJ25wbScsICdwYWNrJywgJy0tcGFjay1kZXN0aW5hdGlvbicsIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdCwgJy0tanNvbiddLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gICAgY29uc3QgaW5kZXggPSByZXN1bHRPdXRwdXQuaW5kZXhPZignW1xcbiAgeycpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBKU09OIGFycmF5IGluIHRoZSByZXN1bHQgb3V0cHV0Jyk7XG4gICAgfVxuICAgIHJlc3VsdE91dHB1dCA9IHJlc3VsdE91dHB1dC5zbGljZShpbmRleCk7XG4gICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShyZXN1bHRPdXRwdXQpIGFzIFtOcG1QYWNrUmVzdWx0XTtcbiAgICBmaWxlUGF0aHMgPSBbXG4gICAgICBqb2luKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdCwgcmVzdWx0WzBdLmZpbGVuYW1lKSxcbiAgICAgIGpvaW4oT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLlN0eWxlc0NzcylcbiAgICBdO1xuICB9XG5cbiAgZmlsZVBhdGhzID0gZmlsZVBhdGhzLmZpbHRlcigoZmlsZVBhdGgpID0+IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoZmlsZVBhdGgpKSk7XG5cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFtcbiAgICAnZ2gnLFxuICAgICdyZWxlYXNlJyxcbiAgICAnY3JlYXRlJyxcbiAgICBuZXdWZXJzaW9uLFxuICAgIC4uLmZpbGVQYXRocyxcbiAgICAnLS10aXRsZScsXG4gICAgYHYke25ld1ZlcnNpb259YCxcbiAgICAuLi4oaXNQcmVSZWxlYXNlKG5ld1ZlcnNpb24pID8gWyctLXByZXJlbGVhc2UnXSA6IFtdKSxcbiAgICAnLS1ub3Rlcy1maWxlJyxcbiAgICAnLSdcbiAgXSwge1xuICAgIGlzUXVpZXQ6IHRydWUsXG4gICAgc3RkaW46IGF3YWl0IGdldFJlbGVhc2VOb3RlcyhuZXdWZXJzaW9uKVxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHRoZSBjaGFuZ2Vsb2cgZmlsZSB3aXRoIG5ldyB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBjb21taXQgbWVzc2FnZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgY3VycmVudCBjaGFuZ2Vsb2csIGFwcGVuZHMgbmV3IGVudHJpZXMgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbixcbiAqIGFuZCBwcm9tcHRzIHRoZSB1c2VyIHRvIHJldmlldyB0aGUgY2hhbmdlcy5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgdG8gYmUgYWRkZWQgdG8gdGhlIGNoYW5nZWxvZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2hhbmdlbG9nIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUNoYW5nZWxvZyhuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgSEVBREVSX0xJTkVTX0NPVU5UID0gMjtcbiAgY29uc3QgY2hhbmdlbG9nUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kKTtcbiAgbGV0IHByZXZpb3VzQ2hhbmdlbG9nTGluZXM6IHN0cmluZ1tdO1xuICBpZiAoZXhpc3RzU3luYyhjaGFuZ2Vsb2dQYXRoKSkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShjaGFuZ2Vsb2dQYXRoLCAndXRmLTgnKTtcbiAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJykuc2xpY2UoSEVBREVSX0xJTkVTX0NPVU5UKTtcbiAgICBpZiAocHJldmlvdXNDaGFuZ2Vsb2dMaW5lcy5hdCgtMSkgPT09ICcnKSB7XG4gICAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLnBvcCgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzID0gW107XG4gIH1cblxuICBjb25zdCBsYXN0VGFnID0gcmVwbGFjZUFsbChwcmV2aW91c0NoYW5nZWxvZ0xpbmVzWzBdID8/ICcnLCAnIyMgJywgJycpO1xuICBjb25zdCBjb21taXRSYW5nZSA9IGxhc3RUYWcgPyBgJHtsYXN0VGFnfS4uSEVBRGAgOiAnSEVBRCc7XG4gIGNvbnN0IGNvbW1pdE1lc3NhZ2VzU3RyID0gYXdhaXQgZXhlY0Zyb21Sb290KGBnaXQgbG9nICR7Y29tbWl0UmFuZ2V9IC0tZm9ybWF0PSVCIC0tZmlyc3QtcGFyZW50IC16YCwgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICBjb25zdCBjb21taXRNZXNzYWdlcyA9IGNvbW1pdE1lc3NhZ2VzU3RyLnNwbGl0KCdcXDAnKS5maWx0ZXIoQm9vbGVhbikubWFwKHRvU2luZ2xlTGluZSk7XG5cbiAgbGV0IG5ld0NoYW5nZUxvZyA9IGAjIENIQU5HRUxPR1xcblxcbiMjICR7bmV3VmVyc2lvbn1cXG5cXG5gO1xuXG4gIGZvciAoY29uc3QgbWVzc2FnZSBvZiBjb21taXRNZXNzYWdlcykge1xuICAgIG5ld0NoYW5nZUxvZyArPSBgLSAke21lc3NhZ2V9XFxuYDtcbiAgfVxuXG4gIGlmIChwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICBuZXdDaGFuZ2VMb2cgKz0gJ1xcbic7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHByZXZpb3VzQ2hhbmdlbG9nTGluZXMpIHtcbiAgICAgIG5ld0NoYW5nZUxvZyArPSBgJHtsaW5lfVxcbmA7XG4gICAgfVxuICB9XG5cbiAgYXdhaXQgd3JpdGVGaWxlKGNoYW5nZWxvZ1BhdGgsIG5ld0NoYW5nZUxvZywgJ3V0Zi04Jyk7XG5cbiAgY29uc3QgY29kZVZlcnNpb24gPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2NvZGUgLS12ZXJzaW9uJywge1xuICAgIGlzUXVpZXQ6IHRydWUsXG4gICAgc2hvdWxkSWdub3JlRXhpdENvZGU6IHRydWVcbiAgfSk7XG4gIGNvbnN0IHZlcnNpb25EZWJ1Z2dlciA9IGdldExpYkRlYnVnZ2VyKCdWZXJzaW9uJyk7XG4gIGlmIChjb2RlVmVyc2lvbikge1xuICAgIHZlcnNpb25EZWJ1Z2dlcihgUGxlYXNlIHVwZGF0ZSB0aGUgJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZH0gZmlsZS4gQ2xvc2UgVmlzdWFsIFN0dWRpbyBDb2RlIHdoZW4geW91IGFyZSBkb25lLi4uYCk7XG4gICAgYXdhaXQgZXhlY0Zyb21Sb290KFsnY29kZScsICctdycsIGNoYW5nZWxvZ1BhdGhdLCB7XG4gICAgICBpc1F1aWV0OiB0cnVlLFxuICAgICAgc2hvdWxkSWdub3JlRXhpdENvZGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB2ZXJzaW9uRGVidWdnZXIoJ0NvdWxkIG5vdCBmaW5kIFZpc3VhbCBTdHVkaW8gQ29kZSBpbiB5b3VyIFBBVEguIFVzaW5nIGNvbnNvbGUgbW9kZSBpbnN0ZWFkLicpO1xuICAgIGF3YWl0IGNyZWF0ZUludGVyZmFjZShwcm9jZXNzLnN0ZGluLCBwcm9jZXNzLnN0ZG91dCkucXVlc3Rpb24oXG4gICAgICBgUGxlYXNlIHVwZGF0ZSB0aGUgJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZH0gZmlsZS4gUHJlc3MgRW50ZXIgd2hlbiB5b3UgYXJlIGRvbmUuLi5gXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHZlcnNpb24gb2YgdGhlIHByb2plY3QgYmFzZWQgb24gdGhlIHNwZWNpZmllZCB1cGRhdGUgdHlwZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgc2VyaWVzIG9mIHRhc2tzIHRvIGhhbmRsZSB2ZXJzaW9uIHVwZGF0ZXM6XG4gKiAxLiBWYWxpZGF0ZXMgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUuXG4gKiAyLiBDaGVja3MgaWYgR2l0IGFuZCBHaXRIdWIgQ0xJIGFyZSBpbnN0YWxsZWQuXG4gKiAzLiBWZXJpZmllcyB0aGF0IHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBjbGVhbi5cbiAqIDQuIFJ1bnMgc3BlbGxjaGVjayBhbmQgbGludGluZy5cbiAqIDUuIEJ1aWxkcyB0aGUgcHJvamVjdC5cbiAqIDYuIFVwZGF0ZXMgdmVyc2lvbiBpbiBmaWxlcyBhbmQgY2hhbmdlbG9nLlxuICogNy4gQWRkcyB1cGRhdGVkIGZpbGVzIHRvIEdpdCwgdGFncyB0aGUgY29tbWl0LCBhbmQgcHVzaGVzIHRvIHRoZSByZXBvc2l0b3J5LlxuICogOC4gSWYgYW4gT2JzaWRpYW4gcGx1Z2luLCBjb3BpZXMgdGhlIHVwZGF0ZWQgbWFuaWZlc3QgYW5kIHB1Ymxpc2hlcyBhIEdpdEh1YiByZWxlYXNlLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIHRvIHBlcmZvcm0gKG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZW1ham9yLCBwcmVtaW5vciwgcHJlcGF0Y2gsIHByZXJlbGVhc2UsIG9yIHgueS56Wy1zdWZmaXhdKS5cbiAqIEBwYXJhbSBwcmVwYXJlR2l0SHViUmVsZWFzZSAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcHJlcGFyZSB0aGUgR2l0SHViIHJlbGVhc2UuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHZlcnNpb24gdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZT86IHN0cmluZywgcHJlcGFyZUdpdEh1YlJlbGVhc2U/OiAobmV3VmVyc2lvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghdmVyc2lvblVwZGF0ZVR5cGUpIHtcbiAgICBjb25zdCBucG1PbGRWZXJzaW9uID0gcHJvY2Vzcy5lbnZbJ25wbV9vbGRfdmVyc2lvbiddO1xuICAgIGNvbnN0IG5wbU5ld1ZlcnNpb24gPSBwcm9jZXNzLmVudlsnbnBtX25ld192ZXJzaW9uJ107XG5cbiAgICBpZiAobnBtT2xkVmVyc2lvbiAmJiBucG1OZXdWZXJzaW9uKSB7XG4gICAgICBhd2FpdCB1cGRhdGVWZXJzaW9uSW5GaWxlcyhucG1PbGRWZXJzaW9uKTtcbiAgICAgIGF3YWl0IHVwZGF0ZVZlcnNpb24obnBtTmV3VmVyc2lvbiwgcHJlcGFyZUdpdEh1YlJlbGVhc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTm8gdmVyc2lvbiB1cGRhdGUgdHlwZSBwcm92aWRlZCcpO1xuICB9XG5cbiAgY29uc3QgaXNPYnNpZGlhblBsdWdpbiA9IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uKSkgJiYgKGF3YWl0IHJlYWRQYWNrYWdlSnNvbigpKS5uYW1lICE9PSAnb2JzaWRpYW4tZGV2LXV0aWxzJztcblxuICB2YWxpZGF0ZSh2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGF3YWl0IGNoZWNrR2l0SW5zdGFsbGVkKCk7XG4gIGF3YWl0IGNoZWNrR2l0UmVwb0NsZWFuKCk7XG4gIGF3YWl0IGNoZWNrR2l0SHViQ2xpSW5zdGFsbGVkKCk7XG4gIGF3YWl0IG5wbVJ1bignZm9ybWF0OmNoZWNrJyk7XG4gIGF3YWl0IG5wbVJ1bignc3BlbGxjaGVjaycpO1xuICBhd2FpdCBucG1SdW4oJ2xpbnQ6bWQnKTtcbiAgYXdhaXQgbnBtUnVuKCdidWlsZCcpO1xuICBhd2FpdCBucG1SdW4oJ2xpbnQnKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3QnKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3Q6aW50ZWdyYXRpb24nKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3Q6Y292ZXJhZ2UnKTtcblxuICBjb25zdCBuZXdWZXJzaW9uID0gYXdhaXQgZ2V0TmV3VmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGF3YWl0IHVwZGF0ZVZlcnNpb25JbkZpbGVzKG5ld1ZlcnNpb24pO1xuICBpZiAoaXNPYnNpZGlhblBsdWdpbikge1xuICAgIGF3YWl0IHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb24pO1xuICB9XG5cbiAgYXdhaXQgdXBkYXRlQ2hhbmdlbG9nKG5ld1ZlcnNpb24pO1xuICBhd2FpdCBhZGRVcGRhdGVkRmlsZXNUb0dpdChuZXdWZXJzaW9uKTtcbiAgYXdhaXQgYWRkR2l0VGFnKG5ld1ZlcnNpb24pO1xuICBhd2FpdCBnaXRQdXNoKCk7XG4gIGF3YWl0IHByZXBhcmVHaXRIdWJSZWxlYXNlPy4obmV3VmVyc2lvbik7XG4gIGF3YWl0IHB1Ymxpc2hHaXRIdWJSZWxlYXNlKG5ld1ZlcnNpb24sIGlzT2JzaWRpYW5QbHVnaW4pO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHZlcnNpb24gaW4gdmFyaW91cyBmaWxlcywgaW5jbHVkaW5nIGBwYWNrYWdlLmpzb25gLCBgcGFja2FnZS1sb2NrLmpzb25gLFxuICogYW5kIE9ic2lkaWFuIHBsdWdpbiBtYW5pZmVzdHMgaWYgYXBwbGljYWJsZS5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBzdHJpbmcgdG8gdXBkYXRlIGluIHRoZSBmaWxlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbkluRmlsZXMobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGVkaXRQYWNrYWdlSnNvbigocGFja2FnZUpzb24pID0+IHtcbiAgICBwYWNrYWdlSnNvbi52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgfSk7XG5cbiAgYXdhaXQgZWRpdFBhY2thZ2VMb2NrSnNvbih1cGRhdGUsIHsgc2hvdWxkU2tpcElmTWlzc2luZzogdHJ1ZSB9KTtcbiAgYXdhaXQgZWRpdE5wbVNocmlua1dyYXBKc29uKHVwZGF0ZSwgeyBzaG91bGRTa2lwSWZNaXNzaW5nOiB0cnVlIH0pO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZShwYWNrYWdlTG9ja0pzb246IFBhY2thZ2VMb2NrSnNvbik6IHZvaWQge1xuICAgIHBhY2thZ2VMb2NrSnNvbi52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICBjb25zdCBkZWZhdWx0UGFja2FnZSA9IHBhY2thZ2VMb2NrSnNvbi5wYWNrYWdlcz8uWycnXTtcbiAgICBpZiAoZGVmYXVsdFBhY2thZ2UpIHtcbiAgICAgIGRlZmF1bHRQYWNrYWdlLnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZSB0byBlbnN1cmUgaXQgaXMgZWl0aGVyIGEgcmVjb2duaXplZCB0eXBlXG4gKiBvciBhIHZhbGlkIG1hbnVhbCB2ZXJzaW9uIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblVwZGF0ZVR5cGUgLSBUaGUgdmVyc2lvbiB1cGRhdGUgdHlwZSB0byB2YWxpZGF0ZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUgaXMgaW52YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlKHZlcnNpb25VcGRhdGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGdldFZlcnNpb25VcGRhdGVUeXBlKHZlcnNpb25VcGRhdGVUeXBlKSA9PT0gVmVyc2lvblVwZGF0ZVR5cGUuSW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdJbnZhbGlkIHZlcnNpb24gdXBkYXRlIHR5cGUuIFBsZWFzZSB1c2UgXFwnbWFqb3JcXCcsIFxcJ21pbm9yXFwnLCBcXCdwYXRjaFxcJywgXFwncHJlbWFqb3JcXCcsIFxcJ3ByZW1pbm9yXFwnLCBcXCdwcmVwYXRjaFxcJywgXFwncHJlcmVsZWFzZVxcJywgb3IgXFwneC55LnpbLXN1ZmZpeF1cXCcgZm9ybWF0LidcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogRmV0Y2hlcyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgT2JzaWRpYW4gZnJvbSB0aGUgR2l0SHViIHJlbGVhc2VzIEFQSS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBPYnNpZGlhbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0T2JzaWRpYW5WZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gV2UgcnVuIHRoaXMgb3V0c2lkZSBvZiBPYnNpZGlhbiwgc28gd2UgZG9uJ3QgaGF2ZSBgcmVxdWVzdFVybCgpYC5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9vYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzL3JlbGVhc2VzL2xhdGVzdCcpO1xuICBjb25zdCBvYnNpZGlhblJlbGVhc2VzSnNvbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBQYXJ0aWFsPE9ic2lkaWFuUmVsZWFzZXNKc29uPjtcbiAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKG9ic2lkaWFuUmVsZWFzZXNKc29uLm5hbWUsICdDb3VsZCBub3QgZmluZCB0aGUgbmFtZSBvZiB0aGUgbGF0ZXN0IE9ic2lkaWFuIHJlbGVhc2UnKTtcbn1cblxuZnVuY3Rpb24gaXNQcmVSZWxlYXNlKHZlcnNpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJlcmVsZWFzZSh2ZXJzaW9uKSAhPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gdG9TaW5nbGVMaW5lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBzdHIuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBsaW5lcy5qb2luKCcgJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBtYW5pZmVzdEJldGFKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0QmV0YUpzb24pO1xuICBpZiAoaXNQcmVSZWxlYXNlKG5ld1ZlcnNpb24pKSB7XG4gICAgYXdhaXQgY3AoXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24pLFxuICAgICAgbWFuaWZlc3RCZXRhSnNvblBhdGgsXG4gICAgICB7IGZvcmNlOiB0cnVlIH1cbiAgICApO1xuICAgIGF3YWl0IGVkaXRKc29uPE1hbmlmZXN0PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEJldGFKc29uLCAobWFuaWZlc3QpID0+IHtcbiAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxhdGVzdE9ic2lkaWFuVmVyc2lvbiA9IGF3YWl0IGdldExhdGVzdE9ic2lkaWFuVmVyc2lvbigpO1xuXG4gICAgYXdhaXQgZWRpdEpzb248TWFuaWZlc3Q+KE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiwgKG1hbmlmZXN0KSA9PiB7XG4gICAgICBtYW5pZmVzdC5taW5BcHBWZXJzaW9uID0gbGF0ZXN0T2JzaWRpYW5WZXJzaW9uO1xuICAgICAgbWFuaWZlc3QudmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gICAgfSk7XG5cbiAgICBhd2FpdCBlZGl0SnNvbjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5WZXJzaW9uc0pzb24sICh2ZXJzaW9ucykgPT4ge1xuICAgICAgdmVyc2lvbnNbbmV3VmVyc2lvbl0gPSBsYXRlc3RPYnNpZGlhblZlcnNpb247XG4gICAgfSk7XG5cbiAgICBpZiAoZXhpc3RzU3luYyhtYW5pZmVzdEJldGFKc29uUGF0aCkpIHtcbiAgICAgIGF3YWl0IHJtKG1hbmlmZXN0QmV0YUpzb25QYXRoKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCBjb3B5VXBkYXRlZE1hbmlmZXN0KCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLHFCQUEyQjtBQUMzQixzQkFLTztBQUNQLElBQUFBLG1CQUFnQztBQUNoQyxvQkFHTztBQUlQLG1CQUErQjtBQUMvQix3Q0FBd0M7QUFDeEMsa0JBQXFCO0FBQ3JCLG9CQUEyQjtBQUMzQix5QkFHTztBQUNQLGdCQUE2QjtBQUM3QixrQkFBeUI7QUFDekIscUJBR087QUFDUCxpQkFLTztBQUNQLDJD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LFFBQVEsRUFBRSxxQkFBcUIsS0FBSyxDQUFDO0FBQy9ELFlBQU0sa0NBQXNCLFFBQVEsRUFBRSxxQkFBcUIsS0FBSyxDQUFDO0FBRWpFLFdBQVMsT0FBTyxpQkFBd0M7QUFDdEQsb0JBQWdCLFVBQVU7QUFDMUIsVUFBTSxpQkFBaUIsZ0JBQWdCLFdBQVcsRUFBRTtBQUNwRCxRQUFJLGdCQUFnQjtBQUNsQixxQkFBZSxVQUFVO0FBQUEsSUFDM0I7QUFBQSxFQUNGO0FBQ0Y7QUFTTyxTQUFTLFNBQVMsbUJBQWlDO0FBQ3hELE1BQUkscUJBQXFCLGlCQUFpQixNQUFNLHlCQUEyQjtBQUN6RSxVQUFNLElBQUk7QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjtBQU9BLGVBQWUsMkJBQTRDO0FBRXpELFFBQU0sV0FBVyxNQUFNLE1BQU0sMkVBQTJFO0FBQ3hHLFFBQU0sdUJBQXVCLE1BQU0sU0FBUyxLQUFLO0FBQ2pELGFBQU8sc0NBQWtCLHFCQUFxQixNQUFNLHdEQUF3RDtBQUM5RztBQUVBLFNBQVMsYUFBYSxTQUEwQjtBQUM5QyxhQUFPLDBCQUFXLE9BQU8sTUFBTTtBQUNqQztBQUVBLFNBQVMsYUFBYSxLQUFxQjtBQUN6QyxRQUFNLFFBQVEsSUFBSSxNQUFNLE9BQU8sRUFBRSxPQUFPLE9BQU87QUFDL0MsU0FBTyxNQUFNLEtBQUssR0FBRztBQUN2QjtBQUVBLGVBQWUsOEJBQThCLFlBQW1DO0FBQzlFLFFBQU0sMkJBQXVCLHFDQUF3QiwwREFBd0IsZ0JBQWdCO0FBQzdGLE1BQUksYUFBYSxVQUFVLEdBQUc7QUFDNUIsY0FBTTtBQUFBLFVBQ0oscUNBQXdCLDBEQUF3QixZQUFZO0FBQUEsTUFDNUQ7QUFBQSxNQUNBLEVBQUUsT0FBTyxLQUFLO0FBQUEsSUFDaEI7QUFDQSxjQUFNLHNCQUFtQiwwREFBd0Isa0JBQWtCLENBQUMsYUFBYTtBQUMvRSxlQUFTLFVBQVU7QUFBQSxJQUNyQixDQUFDO0FBQUEsRUFDSCxPQUFPO0FBQ0wsVUFBTSx3QkFBd0IsTUFBTSx5QkFBeUI7QUFFN0QsY0FBTSxzQkFBbUIsMERBQXdCLGNBQWMsQ0FBQyxhQUFhO0FBQzNFLGVBQVMsZ0JBQWdCO0FBQ3pCLGVBQVMsVUFBVTtBQUFBLElBQ3JCLENBQUM7QUFFRCxjQUFNLHNCQUFpQywwREFBd0IsY0FBYyxDQUFDLGFBQWE7QUFDekYsZUFBUyxVQUFVLElBQUk7QUFBQSxJQUN6QixDQUFDO0FBRUQsWUFBSSwyQkFBVyxvQkFBb0IsR0FBRztBQUNwQyxnQkFBTSxvQkFBRyxvQkFBb0I7QUFBQSxJQUMvQjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLG9CQUFvQjtBQUM1QjsiLAogICJuYW1lcyI6IFsiaW1wb3J0X3Byb21pc2VzIiwgIlZlcnNpb25VcGRhdGVUeXBlIl0KfQo=
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function initCjs() {
|
|
7
|
+
const globalThisRecord = globalThis;
|
|
8
|
+
globalThisRecord['__name'] ??= name;
|
|
9
|
+
const originalRequire = require;
|
|
10
|
+
if (originalRequire && !originalRequire.__isPatched) {
|
|
11
|
+
// eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
|
|
12
|
+
require = Object.assign(
|
|
13
|
+
(id) => requirePatched(id),
|
|
14
|
+
originalRequire,
|
|
15
|
+
{
|
|
16
|
+
__isPatched: true
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const newFuncs = {
|
|
22
|
+
__extractDefault() {
|
|
23
|
+
return extractDefault;
|
|
24
|
+
},
|
|
25
|
+
process() {
|
|
26
|
+
const browserProcess = {
|
|
27
|
+
browser: true,
|
|
28
|
+
cwd() {
|
|
29
|
+
return '/';
|
|
30
|
+
},
|
|
31
|
+
env: {},
|
|
32
|
+
platform: 'android'
|
|
33
|
+
};
|
|
34
|
+
return browserProcess;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
for (const key of Object.keys(newFuncs)) {
|
|
39
|
+
globalThisRecord[key] ??= newFuncs[key]?.();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function name(obj) {
|
|
43
|
+
return obj;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function extractDefault(module) {
|
|
47
|
+
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
51
|
+
'obsidian',
|
|
52
|
+
'@codemirror/autocomplete',
|
|
53
|
+
'@codemirror/collab',
|
|
54
|
+
'@codemirror/commands',
|
|
55
|
+
'@codemirror/language',
|
|
56
|
+
'@codemirror/lint',
|
|
57
|
+
'@codemirror/search',
|
|
58
|
+
'@codemirror/state',
|
|
59
|
+
'@codemirror/text',
|
|
60
|
+
'@codemirror/view',
|
|
61
|
+
'@lezer/common',
|
|
62
|
+
'@lezer/lr',
|
|
63
|
+
'@lezer/highlight'];
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
67
|
+
'@codemirror/closebrackets',
|
|
68
|
+
'@codemirror/comment',
|
|
69
|
+
'@codemirror/fold',
|
|
70
|
+
'@codemirror/gutter',
|
|
71
|
+
'@codemirror/highlight',
|
|
72
|
+
'@codemirror/history',
|
|
73
|
+
'@codemirror/matchbrackets',
|
|
74
|
+
'@codemirror/panel',
|
|
75
|
+
'@codemirror/rangeset',
|
|
76
|
+
'@codemirror/rectangular-selection',
|
|
77
|
+
'@codemirror/stream-parser',
|
|
78
|
+
'@codemirror/tooltip'];
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
function requirePatched(id) {
|
|
82
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
|
|
83
|
+
return originalRequire?.(id);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
|
|
87
|
+
if (globalThis?.app?.isMobile) {
|
|
88
|
+
if (id === 'process' || id === 'node:process') {
|
|
89
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
90
|
+
return globalThis.process;
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
const module = originalRequire?.(id);
|
|
94
|
+
if (module) {
|
|
95
|
+
return extractDefault(module);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
100
|
+
return {};
|
|
101
|
+
}
|
|
102
|
+
})();
|
|
103
|
+
|
|
104
|
+
"use strict";
|
|
105
|
+
var __defProp = Object.defineProperty;
|
|
106
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
107
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
108
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
109
|
+
var __export = (target, all) => {
|
|
110
|
+
for (var name in all)
|
|
111
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
112
|
+
};
|
|
113
|
+
var __copyProps = (to, from, except, desc) => {
|
|
114
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
115
|
+
for (let key of __getOwnPropNames(from))
|
|
116
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
117
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
118
|
+
}
|
|
119
|
+
return to;
|
|
120
|
+
};
|
|
121
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
122
|
+
var strict_proxy_exports = {};
|
|
123
|
+
__export(strict_proxy_exports, {
|
|
124
|
+
strictProxy: () => strictProxy
|
|
125
|
+
});
|
|
126
|
+
module.exports = __toCommonJS(strict_proxy_exports);
|
|
127
|
+
const STRICT_PROXY_MARKER = /* @__PURE__ */ Symbol("strictProxy");
|
|
128
|
+
const PASSTHROUGH_PROPS = /* @__PURE__ */ new Set([
|
|
129
|
+
Symbol.iterator,
|
|
130
|
+
Symbol.toPrimitive,
|
|
131
|
+
Symbol.toStringTag,
|
|
132
|
+
"then",
|
|
133
|
+
"toJSON"
|
|
134
|
+
]);
|
|
135
|
+
function strictProxy(partial) {
|
|
136
|
+
return wrapProxy(partial);
|
|
137
|
+
}
|
|
138
|
+
function isObjectLike(value) {
|
|
139
|
+
return value !== null && typeof value === "object";
|
|
140
|
+
}
|
|
141
|
+
function isPlainObject(value) {
|
|
142
|
+
return isObjectLike(value) && Object.getPrototypeOf(value) === Object.prototype;
|
|
143
|
+
}
|
|
144
|
+
function wrapProxy(value) {
|
|
145
|
+
if (!isObjectLike(value)) {
|
|
146
|
+
return value;
|
|
147
|
+
}
|
|
148
|
+
if (STRICT_PROXY_MARKER in value) {
|
|
149
|
+
return value;
|
|
150
|
+
}
|
|
151
|
+
Object.defineProperty(value, STRICT_PROXY_MARKER, { value: true });
|
|
152
|
+
const proxiedChildren = /* @__PURE__ */ new Map();
|
|
153
|
+
return new Proxy(value, {
|
|
154
|
+
get(target, prop, receiver) {
|
|
155
|
+
if (prop in target) {
|
|
156
|
+
if (proxiedChildren.has(prop)) {
|
|
157
|
+
return proxiedChildren.get(prop);
|
|
158
|
+
}
|
|
159
|
+
const val = Reflect.get(target, prop, receiver);
|
|
160
|
+
if (isPlainObject(val)) {
|
|
161
|
+
const result = wrapProxy(val);
|
|
162
|
+
proxiedChildren.set(prop, result);
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
return val;
|
|
166
|
+
}
|
|
167
|
+
if (typeof prop === "symbol" || PASSTHROUGH_PROPS.has(prop)) {
|
|
168
|
+
return Reflect.get(target, prop, receiver);
|
|
169
|
+
}
|
|
170
|
+
throw new Error(`Unmocked property "${prop}" was accessed on mock object`);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
175
|
+
0 && (module.exports = {
|
|
176
|
+
strictProxy
|
|
177
|
+
});
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0cmljdC1wcm94eS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFN0cmljdGx5LXR5cGVkIG1vY2sgb2JqZWN0IGZhY3RvcnkgdmlhIGBQcm94eWAuIFRocm93cyBhIGRlc2NyaXB0aXZlIGVycm9yXG4gKiB3aGVuIGFueSB1bm1vY2tlZCBwcm9wZXJ0eSBpcyBhY2Nlc3NlZCwgcHJldmVudGluZyBzaWxlbnQgYHVuZGVmaW5lZGAgcmV0dXJucy5cbiAqXG4gKiBUaGUgcHJveHkgaW1wbGVtZW50YXRpb24gbWlycm9ycyB0aGUgZGVzaWduIG9mXG4gKiBgb2JzaWRpYW4tdGVzdC1tb2Nrcy9zcmMvaW50ZXJuYWwvc3RyaWN0LXByb3h5LnRzYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBhcnRpYWxEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuY29uc3QgU1RSSUNUX1BST1hZX01BUktFUiA9IFN5bWJvbCgnc3RyaWN0UHJveHknKTtcblxuY29uc3QgUEFTU1RIUk9VR0hfUFJPUFMgPSBuZXcgU2V0PHN0cmluZyB8IHN5bWJvbD4oW1xuICBTeW1ib2wuaXRlcmF0b3IsXG4gIFN5bWJvbC50b1ByaW1pdGl2ZSxcbiAgU3ltYm9sLnRvU3RyaW5nVGFnLFxuICAndGhlbicsXG4gICd0b0pTT04nXG5dKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RyaWN0bHktdHlwZWQgbW9jayBvYmplY3QgZnJvbSBhIHBhcnRpYWwgaW1wbGVtZW50YXRpb24uXG4gKiBVc2VzIGEgYFByb3h5YCB0aGF0IHRocm93cyBhIGRlc2NyaXB0aXZlIGVycm9yIHdoZW4gYW55IHVubW9ja2VkXG4gKiBwcm9wZXJ0eSBpcyBhY2Nlc3NlZCwgcHJldmVudGluZyBzaWxlbnQgYHVuZGVmaW5lZGAgcmV0dXJucy5cbiAqXG4gKiAtIElkZW1wb3RlbnQ6IGRvdWJsZS13cmFwcGluZyBpcyBhIG5vLW9wLlxuICogLSBQYXNzdGhyb3VnaCBmb3Igd2VsbC1rbm93biBwcm9wcyAoYHRoZW5gLCBgdG9KU09OYCwgYFN5bWJvbC5pdGVyYXRvcmAsIGV0Yy4pLlxuICogLSBSZWN1cnNpdmUgcHJveHlpbmcgb2YgbmVzdGVkIHBsYWluIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIHBhcnRpYWwgLSBBIHBhcnRpYWwgb2JqZWN0IGNvbnRhaW5pbmcgb25seSB0aGUgbW9ja2VkIG1lbWJlcnMuXG4gKiBAcmV0dXJucyBBIHByb3h5IHR5cGVkIGFzIGBUYCB0aGF0IHRocm93cyBvbiB1bm1vY2tlZCBwcm9wZXJ0eSBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpY3RQcm94eTxUPihwYXJ0aWFsOiBQYXJ0aWFsRGVlcDxUPik6IFQge1xuICByZXR1cm4gd3JhcFByb3h5PFQ+KHBhcnRpYWwpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGFuIG9iamVjdC1saWtlIHZhbHVlIChub3QgbnVsbCkuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgb2JqZWN0LWxpa2UuXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG9iamVjdCB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0IChub3QgYSBjbGFzcyBpbnN0YW5jZSwgYXJyYXksIG51bGwsIGV0Yy4pLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LlxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIFdyYXBzIGEgdmFsdWUgaW4gYSBzdHJpY3QgcHJveHkuIElkZW1wb3RlbnQgXHUyMDE0IGRvdWJsZS13cmFwcGluZyBpcyBhIG5vLW9wLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB3cmFwLlxuICogQHJldHVybnMgVGhlIHByb3hpZWQgdmFsdWUgdHlwZWQgYXMgYFRgLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBUIHByb3ZpZGVzIHJldHVybiB0eXBlIGluZmVyZW5jZSBhdCBjYWxsIHNpdGVzLlxuZnVuY3Rpb24gd3JhcFByb3h5PFQ+KHZhbHVlOiB1bmtub3duKTogVCB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZSBhcyBUO1xuICB9XG5cbiAgaWYgKFNUUklDVF9QUk9YWV9NQVJLRVIgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgYXMgVDtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsdWUsIFNUUklDVF9QUk9YWV9NQVJLRVIsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgY29uc3QgcHJveGllZENoaWxkcmVuID0gbmV3IE1hcDxzdHJpbmcgfCBzeW1ib2w+KCk7XG5cbiAgcmV0dXJuIG5ldyBQcm94eSh2YWx1ZSwge1xuICAgIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTogdW5rbm93biB7XG4gICAgICBpZiAocHJvcCBpbiB0YXJnZXQpIHtcbiAgICAgICAgaWYgKHByb3hpZWRDaGlsZHJlbi5oYXMocHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gcHJveGllZENoaWxkcmVuLmdldChwcm9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbDogdW5rbm93biA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gd3JhcFByb3h5PHVua25vd24+KHZhbCk7XG4gICAgICAgICAgcHJveGllZENoaWxkcmVuLnNldChwcm9wLCByZXN1bHQpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJyB8fCBQQVNTVEhST1VHSF9QUk9QUy5oYXMocHJvcCkpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubW9ja2VkIHByb3BlcnR5IFwiJHtwcm9wfVwiIHdhcyBhY2Nlc3NlZCBvbiBtb2NrIG9iamVjdGApO1xuICAgIH1cbiAgfSkgYXMgVDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEsTUFBTSxzQkFBc0IsdUJBQU8sYUFBYTtBQUVoRCxNQUFNLG9CQUFvQixvQkFBSSxJQUFxQjtBQUFBLEVBQ2pELE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUNGLENBQUM7QUFjTSxTQUFTLFlBQWUsU0FBNEI7QUFDekQsU0FBTyxVQUFhLE9BQU87QUFDN0I7QUFRQSxTQUFTLGFBQWEsT0FBaUM7QUFDckQsU0FBTyxVQUFVLFFBQVEsT0FBTyxVQUFVO0FBQzVDO0FBUUEsU0FBUyxjQUFjLE9BQWtEO0FBQ3ZFLFNBQU8sYUFBYSxLQUFLLEtBQUssT0FBTyxlQUFlLEtBQUssTUFBTSxPQUFPO0FBQ3hFO0FBU0EsU0FBUyxVQUFhLE9BQW1CO0FBQ3ZDLE1BQUksQ0FBQyxhQUFhLEtBQUssR0FBRztBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksdUJBQXVCLE9BQU87QUFDaEMsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPLGVBQWUsT0FBTyxxQkFBcUIsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUVqRSxRQUFNLGtCQUFrQixvQkFBSSxJQUFxQjtBQUVqRCxTQUFPLElBQUksTUFBTSxPQUFPO0FBQUEsSUFDdEIsSUFBSSxRQUFRLE1BQU0sVUFBbUI7QUFDbkMsVUFBSSxRQUFRLFFBQVE7QUFDbEIsWUFBSSxnQkFBZ0IsSUFBSSxJQUFJLEdBQUc7QUFDN0IsaUJBQU8sZ0JBQWdCLElBQUksSUFBSTtBQUFBLFFBQ2pDO0FBRUEsY0FBTSxNQUFlLFFBQVEsSUFBSSxRQUFRLE1BQU0sUUFBUTtBQUN2RCxZQUFJLGNBQWMsR0FBRyxHQUFHO0FBQ3RCLGdCQUFNLFNBQVMsVUFBbUIsR0FBRztBQUNyQywwQkFBZ0IsSUFBSSxNQUFNLE1BQU07QUFDaEMsaUJBQU87QUFBQSxRQUNUO0FBQ0EsZUFBTztBQUFBLE1BQ1Q7QUFFQSxVQUFJLE9BQU8sU0FBUyxZQUFZLGtCQUFrQixJQUFJLElBQUksR0FBRztBQUMzRCxlQUFPLFFBQVEsSUFBSSxRQUFRLE1BQU0sUUFBUTtBQUFBLE1BQzNDO0FBRUEsWUFBTSxJQUFJLE1BQU0sc0JBQXNCLElBQUksK0JBQStCO0FBQUEsSUFDM0U7QUFBQSxFQUNGLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Strictly-typed mock object factory via `Proxy`. Throws a descriptive error
|
|
5
|
+
* when any unmocked property is accessed, preventing silent `undefined` returns.
|
|
6
|
+
*
|
|
7
|
+
* The proxy implementation mirrors the design of
|
|
8
|
+
* `obsidian-test-mocks/src/internal/strict-proxy.ts`.
|
|
9
|
+
*/
|
|
10
|
+
import type { PartialDeep } from 'type-fest';
|
|
11
|
+
/**
|
|
12
|
+
* Creates a strictly-typed mock object from a partial implementation.
|
|
13
|
+
* Uses a `Proxy` that throws a descriptive error when any unmocked
|
|
14
|
+
* property is accessed, preventing silent `undefined` returns.
|
|
15
|
+
*
|
|
16
|
+
* - Idempotent: double-wrapping is a no-op.
|
|
17
|
+
* - Passthrough for well-known props (`then`, `toJSON`, `Symbol.iterator`, etc.).
|
|
18
|
+
* - Recursive proxying of nested plain objects.
|
|
19
|
+
*
|
|
20
|
+
* @param partial - A partial object containing only the mocked members.
|
|
21
|
+
* @returns A proxy typed as `T` that throws on unmocked property access.
|
|
22
|
+
*/
|
|
23
|
+
export declare function strictProxy<T>(partial: PartialDeep<T>): T;
|
package/dist/lib/cjs/string.cjs
CHANGED
|
@@ -230,24 +230,24 @@ function replaceAll(str, searchValue, replacer) {
|
|
|
230
230
|
const SOURCE_INDEX_OFFSET_FOR_GROUP_ARG = 2;
|
|
231
231
|
const hasGroupsArg = typeof args.at(-1) === "object";
|
|
232
232
|
const sourceIndex = hasGroupsArg ? args.length - SOURCE_INDEX_OFFSET_FOR_GROUP_ARG : args.length - 1;
|
|
233
|
-
const
|
|
233
|
+
const replaceArgs = {
|
|
234
|
+
// eslint-disable-next-line no-restricted-syntax -- Can't avoid.
|
|
235
|
+
capturedGroupArgs: [],
|
|
234
236
|
groups: hasGroupsArg ? args.at(-1) : void 0,
|
|
235
237
|
missingGroupIndices: [],
|
|
236
238
|
offset: args.at(sourceIndex - 1),
|
|
237
239
|
source: args.at(sourceIndex),
|
|
238
240
|
substring
|
|
239
241
|
};
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
242
|
+
for (let i = 0; i < sourceIndex - 1; i++) {
|
|
243
|
+
const item = args[i];
|
|
244
|
+
if (typeof item === "string") {
|
|
245
|
+
replaceArgs.capturedGroupArgs.push(item);
|
|
246
|
+
} else if (typeof item === "undefined") {
|
|
247
|
+
replaceArgs.missingGroupIndices.push(i);
|
|
243
248
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
return "";
|
|
247
|
-
}
|
|
248
|
-
throw new Error(`Unexpected argument type: ${typeof arg}`);
|
|
249
|
-
});
|
|
250
|
-
return replacer(commonArgs, ...groupArgs) ?? commonArgs.substring;
|
|
249
|
+
}
|
|
250
|
+
return replacer(replaceArgs) ?? replaceArgs.substring;
|
|
251
251
|
});
|
|
252
252
|
}
|
|
253
253
|
async function replaceAllAsync(str, searchValue, replacer, abortSignal) {
|
|
@@ -257,8 +257,8 @@ async function replaceAllAsync(str, searchValue, replacer, abortSignal) {
|
|
|
257
257
|
return replaceAll(str, searchValue, replacer);
|
|
258
258
|
}
|
|
259
259
|
const replacementAsyncFns = [];
|
|
260
|
-
replaceAll(str, searchValue, (
|
|
261
|
-
replacementAsyncFns.push(() => (0, import_value_provider.resolveValue)(replacer, abortSignal,
|
|
260
|
+
replaceAll(str, searchValue, (args) => {
|
|
261
|
+
replacementAsyncFns.push(() => (0, import_value_provider.resolveValue)(replacer, { abortSignal, ...args }));
|
|
262
262
|
return "";
|
|
263
263
|
});
|
|
264
264
|
const replacements = [];
|
|
@@ -321,4 +321,4 @@ function unindent(text, prefix, shouldThrowIfNotIndented = false) {
|
|
|
321
321
|
unescape,
|
|
322
322
|
unindent
|
|
323
323
|
});
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igc3RyaW5nIG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJy4vdHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuL3ZhbHVlLXByb3ZpZGVyLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxOZXZlciB9IGZyb20gJy4vYWJvcnQtY29udHJvbGxlci50cyc7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICcuL3JlZy1leHAudHMnO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBlbnN1cmVOb25OdWxsYWJsZVxufSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4vdmFsdWUtcHJvdmlkZXIudHMnO1xuXG4vKipcbiAqIEEgc3luY2hyb25vdXMvYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gVmFsdWVQcm92aWRlcjxTdHJpbmdSZXBsYWNlbWVudCwgW1JlcGxhY2VDb21tb25BcmdzLCAuLi5SZXBsYWNlR3JvdXBBcmdzXT47XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBmb3IgdGhlIGByZXBsYWNlQWxsYC9gcmVwbGFjZUFsbEFzeW5jYCBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUNvbW1vbkFyZ3Mge1xuICAvKipcbiAgICogR3JvdXBzIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIGdyb3VwczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNlcyBvZiB0aGUgZ3JvdXBzIHRoYXQgd2VyZSBub3QgZm91bmQgaW4gdGhlIG1hdGNoLlxuICAgKi9cbiAgbWlzc2luZ0dyb3VwSW5kaWNlczogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEFuIG9mZnNldCBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBvZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzb3VyY2Ugb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3Vic3RyaW5nIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIHN1YnN0cmluZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICovXG5leHBvcnQgdHlwZSBSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gKCguLi5hcmdzOiBbUmVwbGFjZUNvbW1vbkFyZ3MsIC4uLlJlcGxhY2VHcm91cEFyZ3NdKSA9PiBTdHJpbmdSZXBsYWNlbWVudCkgfCBTdHJpbmdSZXBsYWNlbWVudDtcblxudHlwZSBTdHJpbmdSZXBsYWNlbWVudCA9IE1heWJlUmV0dXJuPHN0cmluZz47XG5cbi8qKlxuICogTWFwcGluZyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gdGhlaXIgZXNjYXBlZCBjb3VudGVycGFydHMuXG4gKi9cbmNvbnN0IEVTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdcXG4nOiAnXFxcXG4nLFxuICAnXFxyJzogJ1xcXFxyJyxcbiAgJ1xcdCc6ICdcXFxcdCcsXG4gICdcXGInOiAnXFxcXGInLFxuICAnXFxmJzogJ1xcXFxmJyxcbiAgJ1xcJyc6ICdcXFxcXFwnJyxcbiAgJ1wiJzogJ1xcXFxcIicsXG4gICdcXFxcJzogJ1xcXFxcXFxcJ1xufSBhcyBjb25zdDtcblxuY29uc3QgQ1IgPSAnXFxyJztcbmNvbnN0IExGID0gJ1xcbic7XG5jb25zdCBOT1RfRk9VTkRfSU5ERVggPSAtMTtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIGVzY2FwZWQgc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIHVuZXNjYXBlZCBjb3VudGVycGFydHMuXG4gKi9cbmNvbnN0IFVORVNDQVBFX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoRVNDQVBFX01BUCkpIHtcbiAgVU5FU0NBUEVfTUFQW3ZhbHVlXSA9IGtleTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBhZGRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNoZWNrLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gZW5zdXJlLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB0aGF0IGVuZHMgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRW5kc1dpdGgoc3RyOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5lbmRzV2l0aChzdWZmaXgpID8gc3RyIDogc3RyICsgc3VmZml4O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHN0cmluZyBoYXMgYExGYCBsaW5lIGVuZGluZ3MuXG4gKlxuICogSXQgcmVwbGFjZXMgYENSTEZgIGxpbmUgZW5kaW5ncyB3aXRoIGBMRmAuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggYExGYCBsaW5lIGVuZGluZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVMZkVuZGluZ3Moc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2VBbGwoL1xcclxcbj8vZywgJ1xcbicpO1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgYWRkaW5nIGl0IGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgdGhhdCBzdGFydHMgd2l0aCB0aGUgcHJlZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlU3RhcnRzV2l0aChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnN0YXJ0c1dpdGgocHJlZml4KSA/IHN0ciA6IHByZWZpeCArIHN0cjtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZShzdHIsIEVTQ0FQRV9NQVApO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IG1hcHMgTEYtbm9ybWFsaXplZCBvZmZzZXRzIHRvIG9yaWdpbmFsIG9mZnNldHMuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gZ2V0IHRoZSBMRi1ub3JtYWxpemVkIGluZGljZXMgZnJvbS5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBtYXBzIExGLW5vcm1hbGl6ZWQgb2Zmc2V0cyB0byBvcmlnaW5hbCBvZmZzZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGZOb3JtYWxpemVkT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcHBlcihzdHI6IHN0cmluZyk6IChsZk9mZnNldDogbnVtYmVyKSA9PiBudW1iZXIge1xuICBjb25zdCBsZk9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXA6IG51bWJlcltdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3RyW2ldID09PSBDUiAmJiBzdHJbaSArIDFdID09PSBMRikge1xuICAgICAgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwLnB1c2goaSArIDEpO1xuICAgICAgaSsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZk9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXAucHVzaChpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGxmT2Zmc2V0OiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICAgIGlmIChsZk9mZnNldCA8IDApIHtcbiAgICAgIHJldHVybiBsZk9mZnNldDtcbiAgICB9XG4gICAgaWYgKGxmT2Zmc2V0ID49IGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBsZk9mZnNldCAtIGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5sZW5ndGggKyBzdHIubGVuZ3RoO1xuICAgIH1cblxuICAgIGFzc2VydChsZk9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXBbbGZPZmZzZXRdICE9PSB1bmRlZmluZWQsICdDb3VsZCBub3QgbWFwIG9mZnNldCcpO1xuICAgIHJldHVybiBsZk9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXBbbGZPZmZzZXRdO1xuICB9O1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0cmluZyBoYXMgYSBzaW5nbGUgb2NjdXJyZW5jZSBvZiBhIHNlYXJjaCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBzZWFyY2hWYWx1ZSAtIFRoZSBzZWFyY2ggdmFsdWUgdG8gY2hlY2sgZm9yLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCB2YWx1ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW5nbGVPY2N1cnJlbmNlKHN0cjogc3RyaW5nLCBzZWFyY2hWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpcnN0SW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hWYWx1ZSk7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHN0ci5sYXN0SW5kZXhPZihzZWFyY2hWYWx1ZSk7XG4gIHJldHVybiBmaXJzdEluZGV4ICE9PSBOT1RfRk9VTkRfSU5ERVggJiYgZmlyc3RJbmRleCA9PT0gbGFzdEluZGV4O1xufVxuXG4vKipcbiAqIEluZGVudHMgYSBzdHJpbmcgYnkgYWRkaW5nIGEgcHJlZml4IHRvIGVhY2ggbGluZS5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSBzdHJpbmcgdG8gaW5kZW50LlxuICogQHBhcmFtIHByZWZpeCAtIFRoZSBwcmVmaXggdG8gYWRkIHRvIGVhY2ggbGluZS5cbiAqIEByZXR1cm5zIFRoZSBpbmRlbnRlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRlbnQodGV4dDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IGAke3ByZWZpeH0ke2xpbmV9YCkuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIHN1YnN0cmluZyBhdCBhIHNwZWNpZmllZCBwb3NpdGlvbiBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHN1YnN0cmluZyBpbnRvLlxuICogQHBhcmFtIHN1YnN0cmluZyAtIFRoZSBzdWJzdHJpbmcgdG8gaW5zZXJ0LlxuICogQHBhcmFtIHN0YXJ0SW5kZXggLSBUaGUgaW5kZXggdG8gaW5zZXJ0IHRoZSBzdWJzdHJpbmcgYXQuXG4gKiBAcGFyYW0gZW5kSW5kZXggLSBUaGUgaW5kZXggdG8gZW5kIHRoZSBzdWJzdHJpbmcgYXQuXG4gKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgc3RyaW5nIHdpdGggdGhlIHN1YnN0cmluZyBpbnNlcnRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEF0KHN0cjogc3RyaW5nLCBzdWJzdHJpbmc6IHN0cmluZywgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleD86IG51bWJlcik6IHN0cmluZyB7XG4gIGVuZEluZGV4ID8/PSBzdGFydEluZGV4O1xuICByZXR1cm4gc3RyLnNsaWNlKDAsIHN0YXJ0SW5kZXgpICsgc3Vic3RyaW5nICsgc3RyLnNsaWNlKGVuZEluZGV4KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBpbnRvIGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZSBuYW1lIGJ5IHJlcGxhY2luZyBpbnZhbGlkIGNoYXJhY3RlcnMgd2l0aCB1bmRlcnNjb3Jlcy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHZhbGlkIHZhcmlhYmxlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVmFsaWRWYXJpYWJsZU5hbWUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIC9bXmEtekEtWjAtOV9dL2csICdfJyk7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHN0cmluZyBieSBjb252ZXJ0aW5nIGl0IHRvIHRoZSBORkMgZm9ybSBhbmQgcmVwbGFjaW5nIG5vbi1icmVha2luZyBzcGFjZXMgd2l0aCByZWd1bGFyIHNwYWNlcy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIC9cXHUwMEEwfFxcdTIwMkYvZywgJyAnKS5ub3JtYWxpemUoJ05GQycpO1xufVxuXG4vKipcbiAqIFJlcGxhY2VzIG9jY3VycmVuY2VzIG9mIHN0cmluZ3MgaW4gYSBnaXZlbiBzdHJpbmcgYmFzZWQgb24gYSByZXBsYWNlbWVudHMgbWFwLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzIG9uLlxuICogQHBhcmFtIHJlcGxhY2VtZW50c01hcCAtIEFuIG9iamVjdCBtYXBwaW5nIHN0cmluZ3MgdG8gdGhlaXIgcmVwbGFjZW1lbnQgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIG1vZGlmaWVkIHN0cmluZyB3aXRoIHJlcGxhY2VtZW50cyBhcHBsaWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShzdHI6IHN0cmluZywgcmVwbGFjZW1lbnRzTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhyZXBsYWNlbWVudHNNYXApLm1hcCgoc291cmNlKSA9PiBlc2NhcGVSZWdFeHAoc291cmNlKSkuam9pbignfCcpLCAnZycpO1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIHJlZ0V4cCwgKHsgc3Vic3RyaW5nOiBzb3VyY2UgfSkgPT4gZW5zdXJlTm9uTnVsbGFibGUocmVwbGFjZW1lbnRzTWFwW3NvdXJjZV0pKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBhbGwgb2NjdXJyZW5jZXMgb2YgYSBzZWFyY2ggc3RyaW5nIG9yIHBhdHRlcm4gd2l0aCB0aGUgcmVzdWx0cyBvZiBhbiByZXBsYWNlciBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlcGxhY2VHcm91cEFyZ3MgLSBUaGUgdHlwZSBvZiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgaW4gd2hpY2ggdG8gcGVyZm9ybSByZXBsYWNlbWVudHMuXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHJlcGxhY2VyIC0gQSByZXBsYWNlciBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggYWxsIHJlcGxhY2VtZW50cyBtYWRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUFsbDxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+KFxuICBzdHI6IHN0cmluZyxcbiAgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgcmVwbGFjZXI6IFJlcGxhY2VyPFJlcGxhY2VHcm91cEFyZ3M+XG4pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBpZiAoc2VhcmNoVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXNlYXJjaFZhbHVlLmdsb2JhbCkge1xuICAgIHNlYXJjaFZhbHVlID0gbmV3IFJlZ0V4cChzZWFyY2hWYWx1ZS5zb3VyY2UsIGAke3NlYXJjaFZhbHVlLmZsYWdzfWdgKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCByZXBsYWNlcik7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2VBbGwoc2VhcmNoVmFsdWUsIChzdWJzdHJpbmc6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgY29uc3QgU09VUkNFX0lOREVYX09GRlNFVF9GT1JfR1JPVVBfQVJHID0gMjtcbiAgICBjb25zdCBoYXNHcm91cHNBcmcgPSB0eXBlb2YgYXJncy5hdCgtMSkgPT09ICdvYmplY3QnO1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gaGFzR3JvdXBzQXJnID8gYXJncy5sZW5ndGggLSBTT1VSQ0VfSU5ERVhfT0ZGU0VUX0ZPUl9HUk9VUF9BUkcgOiBhcmdzLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCBjb21tb25BcmdzOiBSZXBsYWNlQ29tbW9uQXJncyA9IHtcbiAgICAgIGdyb3VwczogaGFzR3JvdXBzQXJnID8gYXJncy5hdCgtMSkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA6IHVuZGVmaW5lZCxcbiAgICAgIG1pc3NpbmdHcm91cEluZGljZXM6IFtdLFxuICAgICAgb2Zmc2V0OiBhcmdzLmF0KHNvdXJjZUluZGV4IC0gMSkgYXMgbnVtYmVyLFxuICAgICAgc291cmNlOiBhcmdzLmF0KHNvdXJjZUluZGV4KSBhcyBzdHJpbmcsXG4gICAgICBzdWJzdHJpbmdcbiAgICB9O1xuXG4gICAgY29uc3QgZ3JvdXBBcmdzID0gYXJncy5zbGljZSgwLCBzb3VyY2VJbmRleCAtIDEpLm1hcCgoYXJnLCBpbmRleCk6IHN0cmluZyA9PiB7XG4gICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGFyZztcbiAgICAgIH1cblxuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEl0IGluY29ycmVjdGx5IHJlcG9ydHMgdGhpcyBhcyB1bmNvdmVyZWQsIGJ1dCBpdCBpcyBjb3ZlcmVkIGJ5IGBzaG91bGQgcG9wdWxhdGUgbWlzc2luZ0dyb3VwSW5kaWNlcyBmb3IgdW5kZWZpbmVkIGNhcHR1cmUgZ3JvdXBzYCB0ZXN0LiAqL1xuICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIGNvbW1vbkFyZ3MubWlzc2luZ0dyb3VwSW5kaWNlcy5wdXNoKGluZGV4KTtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gTmV2ZXIgaGFwcGVucy4gKi9cbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBhcmd1bWVudCB0eXBlOiAke3R5cGVvZiBhcmd9YCk7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIH0pIGFzIFJlcGxhY2VHcm91cEFyZ3M7XG5cbiAgICByZXR1cm4gKHJlcGxhY2VyKGNvbW1vbkFyZ3MsIC4uLmdyb3VwQXJncykgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSA/PyBjb21tb25BcmdzLnN1YnN0cmluZztcbiAgfSk7XG59XG5cbi8qKlxuICogQXN5bmNocm9ub3VzbHkgcmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gYXN5bmNocm9ub3VzIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUmVwbGFjZUdyb3VwQXJncyAtIFRoZSB0eXBlIG9mIGFkZGl0aW9uYWwgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcmVwbGFjZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyBpbiB3aGljaCB0byBwZXJmb3JtIHJlcGxhY2VtZW50cy5cbiAqIEBwYXJhbSBzZWFyY2hWYWx1ZSAtIFRoZSBzdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0gcmVwbGFjZXIgLSBBIHN5bmNocm9ub3VzL2FzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzdHJpbmcgd2l0aCBhbGwgcmVwbGFjZW1lbnRzIG1hZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQWxsQXN5bmM8UmVwbGFjZUdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPihcbiAgc3RyOiBzdHJpbmcsXG4gIHNlYXJjaFZhbHVlOiBSZWdFeHAgfCBzdHJpbmcsXG4gIHJlcGxhY2VyOiBBc3luY1JlcGxhY2VyPFJlcGxhY2VHcm91cEFyZ3M+LFxuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBhYm9ydFNpZ25hbCA/Pz0gYWJvcnRTaWduYWxOZXZlcigpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiByZXBsYWNlQWxsKHN0ciwgc2VhcmNoVmFsdWUsIHJlcGxhY2VyKTtcbiAgfVxuXG4gIGNvbnN0IHJlcGxhY2VtZW50QXN5bmNGbnM6ICgoKSA9PiBQcm9taXNlPFN0cmluZ1JlcGxhY2VtZW50PilbXSA9IFtdO1xuXG4gIHJlcGxhY2VBbGw8UmVwbGFjZUdyb3VwQXJncz4oc3RyLCBzZWFyY2hWYWx1ZSwgKGNvbW1vbkFyZ3MsIC4uLmdyb3VwQXJncykgPT4ge1xuICAgIHJlcGxhY2VtZW50QXN5bmNGbnMucHVzaCgoKSA9PiByZXNvbHZlVmFsdWUocmVwbGFjZXIsIGFib3J0U2lnbmFsLCBjb21tb25BcmdzLCAuLi5ncm91cEFyZ3MpKTtcbiAgICByZXR1cm4gJyc7XG4gIH0pO1xuXG4gIGNvbnN0IHJlcGxhY2VtZW50czogU3RyaW5nUmVwbGFjZW1lbnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYXN5bmNGbiBvZiByZXBsYWNlbWVudEFzeW5jRm5zKSB7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICByZXBsYWNlbWVudHMucHVzaChhd2FpdCBhc3luY0ZuKCkpO1xuICB9XG5cbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCBzZWFyY2hWYWx1ZSwgKGFyZ3MpOiBzdHJpbmcgPT4gcmVwbGFjZW1lbnRzLnNoaWZ0KCkgPz8gYXJncy5zdWJzdHJpbmcpO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBzcGVjaWZpZWQgc3VmZml4IGZyb20gdGhlIGVuZCBvZiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byB0cmltLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gcmVtb3ZlIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHNob3VsZFZhbGlkYXRlIC0gSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQHRocm93cyBJZiBgdmFsaWRhdGVgIGlzIGB0cnVlYCBhbmQgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbUVuZChzdHI6IHN0cmluZywgc3VmZml4OiBzdHJpbmcsIHNob3VsZFZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuZW5kc1dpdGgoc3VmZml4KSkge1xuICAgIHJldHVybiBzdHIuc2xpY2UoMCwgLXN1ZmZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHNob3VsZFZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHtzdHJ9IGRvZXMgbm90IGVuZCB3aXRoIHN1ZmZpeCAke3N1ZmZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIHNwZWNpZmllZCBwcmVmaXggZnJvbSB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHZhbGlkYXRlIC0gSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBwcmVmaXguXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGB2YWxpZGF0ZWAgaXMgYHRydWVgIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1TdGFydChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIHZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgcmV0dXJuIHN0ci5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7c3RyfSBkb2VzIG5vdCBzdGFydCB3aXRoIHByZWZpeCAke3ByZWZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVW5lc2NhcGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBlc2NhcGUgc2VxdWVuY2VzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlKHN0ciwgVU5FU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBVbmluZGVudHMgYSBzdHJpbmcgYnkgcmVtb3ZpbmcgYSBwcmVmaXggZnJvbSBlYWNoIGxpbmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgc3RyaW5nIHRvIHVuaW5kZW50LlxuICogQHBhcmFtIHByZWZpeCAtIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gZWFjaCBsaW5lLlxuICogQHBhcmFtIHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCAtIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIGEgbGluZSBpcyBub3QgaW5kZW50ZWQgd2l0aCB0aGUgcHJlZml4LlxuICogQHJldHVybnMgVGhlIHVuaW5kZW50ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pbmRlbnQodGV4dDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkID0gZmFsc2UpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiB7XG4gICAgaWYgKGxpbmUuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gbGluZS5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICB9XG4gICAgaWYgKHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBMaW5lIFwiJHtsaW5lfVwiIGlzIG5vdCBpbmRlbnRlZCB3aXRoIFwiJHtwcmVmaXh9XCJgKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH0pLmpvaW4oJ1xcbicpO1xufVxuIl0sCiAgIm1hcHBp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
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBzdHJpbmcgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4vdmFsdWUtcHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9hYm9ydC1jb250cm9sbGVyLnRzJztcbmltcG9ydCB7IGVzY2FwZVJlZ0V4cCB9IGZyb20gJy4vcmVnLWV4cC50cyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi92YWx1ZS1wcm92aWRlci50cyc7XG5cbi8qKlxuICogQSBzeW5jaHJvbm91cy9hc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICovXG5leHBvcnQgdHlwZSBBc3luY1JlcGxhY2VyPENhcHR1cmVkR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gVmFsdWVQcm92aWRlcjxTdHJpbmdSZXBsYWNlbWVudCwgUmVwbGFjZUFyZ3M8Q2FwdHVyZWRHcm91cEFyZ3M+PjtcblxuLyoqXG4gKiBDb21tb24gYXJndW1lbnRzIGZvciB0aGUgYHJlcGxhY2VBbGxgL2ByZXBsYWNlQWxsQXN5bmNgIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsYWNlQXJnczxDYXB0dXJlZEdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPiB7XG4gIC8qKlxuICAgKiBDYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gICAqL1xuICBjYXB0dXJlZEdyb3VwQXJnczogQ2FwdHVyZWRHcm91cEFyZ3M7XG5cbiAgLyoqXG4gICAqIEdyb3VwcyBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBncm91cHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljZXMgb2YgdGhlIGdyb3VwcyB0aGF0IHdlcmUgbm90IGZvdW5kIGluIHRoZSBtYXRjaC5cbiAgICovXG4gIG1pc3NpbmdHcm91cEluZGljZXM6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBBbiBvZmZzZXQgb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgb2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgc291cmNlIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIHNvdXJjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN1YnN0cmluZyBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBzdWJzdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVwbGFjZXI8Q2FwdHVyZWRHcm91cEFyZ3MgZXh0ZW5kcyBzdHJpbmdbXT4gPSAoKGFyZ3M6IFJlcGxhY2VBcmdzPENhcHR1cmVkR3JvdXBBcmdzPikgPT4gU3RyaW5nUmVwbGFjZW1lbnQpIHwgU3RyaW5nUmVwbGFjZW1lbnQ7XG5cbnR5cGUgU3RyaW5nUmVwbGFjZW1lbnQgPSBNYXliZVJldHVybjxzdHJpbmc+O1xuXG4vKipcbiAqIE1hcHBpbmcgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIGVzY2FwZWQgY291bnRlcnBhcnRzLlxuICovXG5jb25zdCBFU0NBUEVfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnXFxuJzogJ1xcXFxuJyxcbiAgJ1xccic6ICdcXFxccicsXG4gICdcXHQnOiAnXFxcXHQnLFxuICAnXFxiJzogJ1xcXFxiJyxcbiAgJ1xcZic6ICdcXFxcZicsXG4gICdcXCcnOiAnXFxcXFxcJycsXG4gICdcIic6ICdcXFxcXCInLFxuICAnXFxcXCc6ICdcXFxcXFxcXCdcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IENSID0gJ1xccic7XG5jb25zdCBMRiA9ICdcXG4nO1xuY29uc3QgTk9UX0ZPVU5EX0lOREVYID0gLTE7XG5cbi8qKlxuICogTWFwcGluZyBvZiBlc2NhcGVkIHNwZWNpYWwgY2hhcmFjdGVycyB0byB0aGVpciB1bmVzY2FwZWQgY291bnRlcnBhcnRzLlxuICovXG5jb25zdCBVTkVTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbmZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKEVTQ0FQRV9NQVApKSB7XG4gIFVORVNDQVBFX01BUFt2YWx1ZV0gPSBrZXk7XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgYWRkaW5nIGl0IGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBzdWZmaXggLSBUaGUgc3VmZml4IHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgdGhhdCBlbmRzIHdpdGggdGhlIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUVuZHNXaXRoKHN0cjogc3RyaW5nLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIuZW5kc1dpdGgoc3VmZml4KSA/IHN0ciA6IHN0ciArIHN1ZmZpeDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgaGFzIGBMRmAgbGluZSBlbmRpbmdzLlxuICpcbiAqIEl0IHJlcGxhY2VzIGBDUkxGYCBsaW5lIGVuZGluZ3Mgd2l0aCBgTEZgLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGBMRmAgbGluZSBlbmRpbmdzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTGZFbmRpbmdzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKC9cXHJcXG4/L2csICdcXG4nKTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIGFkZGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byBlbnN1cmUuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHRoYXQgc3RhcnRzIHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVN0YXJ0c1dpdGgoc3RyOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5zdGFydHNXaXRoKHByZWZpeCkgPyBzdHIgOiBwcmVmaXggKyBzdHI7XG59XG5cbi8qKlxuICogRXNjYXBlcyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2Uoc3RyLCBFU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBtYXBzIExGLW5vcm1hbGl6ZWQgb2Zmc2V0cyB0byBvcmlnaW5hbCBvZmZzZXRzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGdldCB0aGUgTEYtbm9ybWFsaXplZCBpbmRpY2VzIGZyb20uXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgbWFwcyBMRi1ub3JtYWxpemVkIG9mZnNldHMgdG8gb3JpZ2luYWwgb2Zmc2V0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExmTm9ybWFsaXplZE9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXBwZXIoc3RyOiBzdHJpbmcpOiAobGZPZmZzZXQ6IG51bWJlcikgPT4gbnVtYmVyIHtcbiAgY29uc3QgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0cltpXSA9PT0gQ1IgJiYgc3RyW2kgKyAxXSA9PT0gTEYpIHtcbiAgICAgIGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5wdXNoKGkgKyAxKTtcbiAgICAgIGkrKztcbiAgICB9IGVsc2Uge1xuICAgICAgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwLnB1c2goaSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChsZk9mZnNldDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBpZiAobGZPZmZzZXQgPCAwKSB7XG4gICAgICByZXR1cm4gbGZPZmZzZXQ7XG4gICAgfVxuICAgIGlmIChsZk9mZnNldCA+PSBsZk9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXAubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbGZPZmZzZXQgLSBsZk9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXAubGVuZ3RoICsgc3RyLmxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3NlcnQobGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwW2xmT2Zmc2V0XSAhPT0gdW5kZWZpbmVkLCAnQ291bGQgbm90IG1hcCBvZmZzZXQnKTtcbiAgICByZXR1cm4gbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwW2xmT2Zmc2V0XTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgYSBzZWFyY2ggdmFsdWUuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc2VhcmNoIHZhbHVlIHRvIGNoZWNrIGZvci5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgc3RyaW5nIGhhcyBhIHNpbmdsZSBvY2N1cnJlbmNlIG9mIHRoZSBzZWFyY2ggdmFsdWUsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzU2luZ2xlT2NjdXJyZW5jZShzdHI6IHN0cmluZywgc2VhcmNoVmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBmaXJzdEluZGV4ID0gc3RyLmluZGV4T2Yoc2VhcmNoVmFsdWUpO1xuICBjb25zdCBsYXN0SW5kZXggPSBzdHIubGFzdEluZGV4T2Yoc2VhcmNoVmFsdWUpO1xuICByZXR1cm4gZmlyc3RJbmRleCAhPT0gTk9UX0ZPVU5EX0lOREVYICYmIGZpcnN0SW5kZXggPT09IGxhc3RJbmRleDtcbn1cblxuLyoqXG4gKiBJbmRlbnRzIGEgc3RyaW5nIGJ5IGFkZGluZyBhIHByZWZpeCB0byBlYWNoIGxpbmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgc3RyaW5nIHRvIGluZGVudC5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIGFkZCB0byBlYWNoIGxpbmUuXG4gKiBAcmV0dXJucyBUaGUgaW5kZW50ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5kZW50KHRleHQ6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBgJHtwcmVmaXh9JHtsaW5lfWApLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIEluc2VydHMgYSBzdWJzdHJpbmcgYXQgYSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gaW5zZXJ0IHRoZSBzdWJzdHJpbmcgaW50by5cbiAqIEBwYXJhbSBzdWJzdHJpbmcgLSBUaGUgc3Vic3RyaW5nIHRvIGluc2VydC5cbiAqIEBwYXJhbSBzdGFydEluZGV4IC0gVGhlIGluZGV4IHRvIGluc2VydCB0aGUgc3Vic3RyaW5nIGF0LlxuICogQHBhcmFtIGVuZEluZGV4IC0gVGhlIGluZGV4IHRvIGVuZCB0aGUgc3Vic3RyaW5nIGF0LlxuICogQHJldHVybnMgVGhlIG1vZGlmaWVkIHN0cmluZyB3aXRoIHRoZSBzdWJzdHJpbmcgaW5zZXJ0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBdChzdHI6IHN0cmluZywgc3Vic3RyaW5nOiBzdHJpbmcsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg/OiBudW1iZXIpOiBzdHJpbmcge1xuICBlbmRJbmRleCA/Pz0gc3RhcnRJbmRleDtcbiAgcmV0dXJuIHN0ci5zbGljZSgwLCBzdGFydEluZGV4KSArIHN1YnN0cmluZyArIHN0ci5zbGljZShlbmRJbmRleCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgaW50byBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUgbmFtZSBieSByZXBsYWNpbmcgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGggdW5kZXJzY29yZXMuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZCB2YXJpYWJsZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVZhbGlkVmFyaWFibGVOYW1lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCAvW15hLXpBLVowLTlfXS9nLCAnXycpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBzdHJpbmcgYnkgY29udmVydGluZyBpdCB0byB0aGUgTkZDIGZvcm0gYW5kIHJlcGxhY2luZyBub24tYnJlYWtpbmcgc3BhY2VzIHdpdGggcmVndWxhciBzcGFjZXMuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCAvXFx1MDBBMHxcXHUyMDJGL2csICcgJykubm9ybWFsaXplKCdORkMnKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBvY2N1cnJlbmNlcyBvZiBzdHJpbmdzIGluIGEgZ2l2ZW4gc3RyaW5nIGJhc2VkIG9uIGEgcmVwbGFjZW1lbnRzIG1hcC5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBwZXJmb3JtIHJlcGxhY2VtZW50cyBvbi5cbiAqIEBwYXJhbSByZXBsYWNlbWVudHNNYXAgLSBBbiBvYmplY3QgbWFwcGluZyBzdHJpbmdzIHRvIHRoZWlyIHJlcGxhY2VtZW50IHZhbHVlcy5cbiAqIEByZXR1cm5zIFRoZSBtb2RpZmllZCBzdHJpbmcgd2l0aCByZXBsYWNlbWVudHMgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2Uoc3RyOiBzdHJpbmcsIHJlcGxhY2VtZW50c01hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XG4gIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMocmVwbGFjZW1lbnRzTWFwKS5tYXAoKHNvdXJjZSkgPT4gZXNjYXBlUmVnRXhwKHNvdXJjZSkpLmpvaW4oJ3wnKSwgJ2cnKTtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCByZWdFeHAsICh7IHN1YnN0cmluZzogc291cmNlIH0pID0+IGVuc3VyZU5vbk51bGxhYmxlKHJlcGxhY2VtZW50c01hcFtzb3VyY2VdKSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBSZXBsYWNlR3JvdXBBcmdzIC0gVGhlIHR5cGUgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXBsYWNlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGhlIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSByZXBsYWNlciAtIEEgcmVwbGFjZXIgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGFsbCByZXBsYWNlbWVudHMgbWFkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VBbGw8Q2FwdHVyZWRHcm91cEFyZ3MgZXh0ZW5kcyBzdHJpbmdbXT4oXG4gIHN0cjogc3RyaW5nLFxuICBzZWFyY2hWYWx1ZTogUmVnRXhwIHwgc3RyaW5nLFxuICByZXBsYWNlcjogUmVwbGFjZXI8Q2FwdHVyZWRHcm91cEFyZ3M+XG4pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBpZiAoc2VhcmNoVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXNlYXJjaFZhbHVlLmdsb2JhbCkge1xuICAgIHNlYXJjaFZhbHVlID0gbmV3IFJlZ0V4cChzZWFyY2hWYWx1ZS5zb3VyY2UsIGAke3NlYXJjaFZhbHVlLmZsYWdzfWdgKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCByZXBsYWNlcik7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2VBbGwoc2VhcmNoVmFsdWUsIChzdWJzdHJpbmc6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgY29uc3QgU09VUkNFX0lOREVYX09GRlNFVF9GT1JfR1JPVVBfQVJHID0gMjtcbiAgICBjb25zdCBoYXNHcm91cHNBcmcgPSB0eXBlb2YgYXJncy5hdCgtMSkgPT09ICdvYmplY3QnO1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gaGFzR3JvdXBzQXJnID8gYXJncy5sZW5ndGggLSBTT1VSQ0VfSU5ERVhfT0ZGU0VUX0ZPUl9HUk9VUF9BUkcgOiBhcmdzLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCByZXBsYWNlQXJnczogUmVwbGFjZUFyZ3M8Q2FwdHVyZWRHcm91cEFyZ3M+ID0ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4IC0tIENhbid0IGF2b2lkLlxuICAgICAgY2FwdHVyZWRHcm91cEFyZ3M6IFtdIGFzIHVua25vd25bXSBhcyBDYXB0dXJlZEdyb3VwQXJncyxcbiAgICAgIGdyb3VwczogaGFzR3JvdXBzQXJnID8gYXJncy5hdCgtMSkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA6IHVuZGVmaW5lZCxcbiAgICAgIG1pc3NpbmdHcm91cEluZGljZXM6IFtdLFxuICAgICAgb2Zmc2V0OiBhcmdzLmF0KHNvdXJjZUluZGV4IC0gMSkgYXMgbnVtYmVyLFxuICAgICAgc291cmNlOiBhcmdzLmF0KHNvdXJjZUluZGV4KSBhcyBzdHJpbmcsXG4gICAgICBzdWJzdHJpbmdcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2VJbmRleCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGFyZ3NbaV07XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlcGxhY2VBcmdzLmNhcHR1cmVkR3JvdXBBcmdzLnB1c2goaXRlbSk7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCB0cmFja3MgdGhlIGltcGxpY2l0IGVsc2UgYnJhbmNoIHRoYXQgbmV2ZXIgaGFwcGVucy4gKi9cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIHJlcGxhY2VBcmdzLm1pc3NpbmdHcm91cEluZGljZXMucHVzaChpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKHJlcGxhY2VyKHJlcGxhY2VBcmdzKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/IHJlcGxhY2VBcmdzLnN1YnN0cmluZztcbiAgfSk7XG59XG5cbi8qKlxuICogQXN5bmNocm9ub3VzbHkgcmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gYXN5bmNocm9ub3VzIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUmVwbGFjZUdyb3VwQXJncyAtIFRoZSB0eXBlIG9mIGFkZGl0aW9uYWwgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcmVwbGFjZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyBpbiB3aGljaCB0byBwZXJmb3JtIHJlcGxhY2VtZW50cy5cbiAqIEBwYXJhbSBzZWFyY2hWYWx1ZSAtIFRoZSBzdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0gcmVwbGFjZXIgLSBBIHN5bmNocm9ub3VzL2FzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzdHJpbmcgd2l0aCBhbGwgcmVwbGFjZW1lbnRzIG1hZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQWxsQXN5bmM8UmVwbGFjZUdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPihcbiAgc3RyOiBzdHJpbmcsXG4gIHNlYXJjaFZhbHVlOiBSZWdFeHAgfCBzdHJpbmcsXG4gIHJlcGxhY2VyOiBBc3luY1JlcGxhY2VyPFJlcGxhY2VHcm91cEFyZ3M+LFxuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBhYm9ydFNpZ25hbCA/Pz0gYWJvcnRTaWduYWxOZXZlcigpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiByZXBsYWNlQWxsKHN0ciwgc2VhcmNoVmFsdWUsIHJlcGxhY2VyKTtcbiAgfVxuXG4gIGNvbnN0IHJlcGxhY2VtZW50QXN5bmNGbnM6ICgoKSA9PiBQcm9taXNlPFN0cmluZ1JlcGxhY2VtZW50PilbXSA9IFtdO1xuXG4gIHJlcGxhY2VBbGw8UmVwbGFjZUdyb3VwQXJncz4oc3RyLCBzZWFyY2hWYWx1ZSwgKGFyZ3MpID0+IHtcbiAgICByZXBsYWNlbWVudEFzeW5jRm5zLnB1c2goKCkgPT4gcmVzb2x2ZVZhbHVlKHJlcGxhY2VyLCB7IGFib3J0U2lnbmFsLCAuLi5hcmdzIH0pKTtcbiAgICByZXR1cm4gJyc7XG4gIH0pO1xuXG4gIGNvbnN0IHJlcGxhY2VtZW50czogU3RyaW5nUmVwbGFjZW1lbnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYXN5bmNGbiBvZiByZXBsYWNlbWVudEFzeW5jRm5zKSB7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICByZXBsYWNlbWVudHMucHVzaChhd2FpdCBhc3luY0ZuKCkpO1xuICB9XG5cbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCBzZWFyY2hWYWx1ZSwgKGFyZ3MpOiBzdHJpbmcgPT4gcmVwbGFjZW1lbnRzLnNoaWZ0KCkgPz8gYXJncy5zdWJzdHJpbmcpO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBzcGVjaWZpZWQgc3VmZml4IGZyb20gdGhlIGVuZCBvZiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byB0cmltLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gcmVtb3ZlIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHNob3VsZFZhbGlkYXRlIC0gSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQHRocm93cyBJZiBgdmFsaWRhdGVgIGlzIGB0cnVlYCBhbmQgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbUVuZChzdHI6IHN0cmluZywgc3VmZml4OiBzdHJpbmcsIHNob3VsZFZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuZW5kc1dpdGgoc3VmZml4KSkge1xuICAgIHJldHVybiBzdHIuc2xpY2UoMCwgLXN1ZmZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHNob3VsZFZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHtzdHJ9IGRvZXMgbm90IGVuZCB3aXRoIHN1ZmZpeCAke3N1ZmZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIHNwZWNpZmllZCBwcmVmaXggZnJvbSB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHZhbGlkYXRlIC0gSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBwcmVmaXguXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGB2YWxpZGF0ZWAgaXMgYHRydWVgIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1TdGFydChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIHZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgcmV0dXJuIHN0ci5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7c3RyfSBkb2VzIG5vdCBzdGFydCB3aXRoIHByZWZpeCAke3ByZWZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVW5lc2NhcGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBlc2NhcGUgc2VxdWVuY2VzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlKHN0ciwgVU5FU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBVbmluZGVudHMgYSBzdHJpbmcgYnkgcmVtb3ZpbmcgYSBwcmVmaXggZnJvbSBlYWNoIGxpbmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgc3RyaW5nIHRvIHVuaW5kZW50LlxuICogQHBhcmFtIHByZWZpeCAtIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gZWFjaCBsaW5lLlxuICogQHBhcmFtIHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCAtIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIGEgbGluZSBpcyBub3QgaW5kZW50ZWQgd2l0aCB0aGUgcHJlZml4LlxuICogQHJldHVybnMgVGhlIHVuaW5kZW50ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pbmRlbnQodGV4dDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkID0gZmFsc2UpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiB7XG4gICAgaWYgKGxpbmUuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gbGluZS5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICB9XG4gICAgaWYgKHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBMaW5lIFwiJHtsaW5lfVwiIGlzIG5vdCBpbmRlbnRlZCB3aXRoIFwiJHtwcmVmaXh9XCJgKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH0pLmpvaW4oJ1xcbicpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBLDhCQUFpQztBQUNqQyxxQkFBNkI7QUFDN0IseUJBR087QUFDUCw0QkFBNkI7QUFvRDdCLE1BQU0sYUFBcUM7QUFBQSxFQUN6QyxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixLQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixLQUFNO0FBQUEsRUFDTixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQ1I7QUFFQSxNQUFNLEtBQUs7QUFDWCxNQUFNLEtBQUs7QUFDWCxNQUFNLGtCQUFrQjtBQUt4QixNQUFNLGVBQXVDLENBQUM7QUFDOUMsV0FBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxVQUFVLEdBQUc7QUFDckQsZUFBYSxLQUFLLElBQUk7QUFDeEI7QUFTTyxTQUFTLGVBQWUsS0FBYSxRQUF3QjtBQUNsRSxTQUFPLElBQUksU0FBUyxNQUFNLElBQUksTUFBTSxNQUFNO0FBQzVDO0FBVU8sU0FBUyxnQkFBZ0IsS0FBcUI7QUFDbkQsU0FBTyxJQUFJLFdBQVcsVUFBVSxJQUFJO0FBQ3RDO0FBU08sU0FBUyxpQkFBaUIsS0FBYSxRQUF3QjtBQUNwRSxTQUFPLElBQUksV0FBVyxNQUFNLElBQUksTUFBTSxTQUFTO0FBQ2pEO0FBUU8sU0FBUyxPQUFPLEtBQXFCO0FBQzFDLFNBQU8sUUFBUSxLQUFLLFVBQVU7QUFDaEM7QUFRTyxTQUFTLDRDQUE0QyxLQUEyQztBQUNyRyxRQUFNLDhCQUF3QyxDQUFDO0FBRS9DLFdBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLEtBQUs7QUFDbkMsUUFBSSxJQUFJLENBQUMsTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSTtBQUN0QyxrQ0FBNEIsS0FBSyxJQUFJLENBQUM7QUFDdEM7QUFBQSxJQUNGLE9BQU87QUFDTCxrQ0FBNEIsS0FBSyxDQUFDO0FBQUEsSUFDcEM7QUFBQSxFQUNGO0FBRUEsU0FBTyxDQUFDLGFBQTZCO0FBQ25DLFFBQUksV0FBVyxHQUFHO0FBQ2hCLGFBQU87QUFBQSxJQUNUO0FBQ0EsUUFBSSxZQUFZLDRCQUE0QixRQUFRO0FBQ2xELGFBQU8sV0FBVyw0QkFBNEIsU0FBUyxJQUFJO0FBQUEsSUFDN0Q7QUFFQSxtQ0FBTyw0QkFBNEIsUUFBUSxNQUFNLFFBQVcsc0JBQXNCO0FBQ2xGLFdBQU8sNEJBQTRCLFFBQVE7QUFBQSxFQUM3QztBQUNGO0FBU08sU0FBUyxvQkFBb0IsS0FBYSxhQUE4QjtBQUM3RSxRQUFNLGFBQWEsSUFBSSxRQUFRLFdBQVc7QUFDMUMsUUFBTSxZQUFZLElBQUksWUFBWSxXQUFXO0FBQzdDLFNBQU8sZUFBZSxtQkFBbUIsZUFBZTtBQUMxRDtBQVNPLFNBQVMsT0FBTyxNQUFjLFFBQXdCO0FBQzNELFNBQU8sS0FBSyxNQUFNLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsRUFBRSxLQUFLLElBQUk7QUFDckU7QUFXTyxTQUFTLFNBQVMsS0FBYSxXQUFtQixZQUFvQixVQUEyQjtBQUN0RyxlQUFhO0FBQ2IsU0FBTyxJQUFJLE1BQU0sR0FBRyxVQUFVLElBQUksWUFBWSxJQUFJLE1BQU0sUUFBUTtBQUNsRTtBQVFPLFNBQVMsc0JBQXNCLEtBQXFCO0FBQ3pELFNBQU8sV0FBVyxLQUFLLGtCQUFrQixHQUFHO0FBQzlDO0FBUU8sU0FBUyxVQUFVLEtBQXFCO0FBQzdDLFNBQU8sV0FBVyxLQUFLLGtCQUFrQixHQUFHLEVBQUUsVUFBVSxLQUFLO0FBQy9EO0FBU08sU0FBUyxRQUFRLEtBQWEsaUJBQWlEO0FBQ3BGLFFBQU0sU0FBUyxJQUFJLE9BQU8sT0FBTyxLQUFLLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBVyw2QkFBYSxNQUFNLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRyxHQUFHO0FBQzNHLFNBQU8sV0FBVyxLQUFLLFFBQVEsQ0FBQyxFQUFFLFdBQVcsT0FBTyxVQUFNLHNDQUFrQixnQkFBZ0IsTUFBTSxDQUFDLENBQUM7QUFDdEc7QUFXTyxTQUFTLFdBQ2QsS0FDQSxhQUNBLFVBQ1E7QUFDUixNQUFJLE9BQU8sYUFBYSxhQUFhO0FBQ25DLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSx1QkFBdUIsVUFBVSxDQUFDLFlBQVksUUFBUTtBQUN4RCxrQkFBYyxJQUFJLE9BQU8sWUFBWSxRQUFRLEdBQUcsWUFBWSxLQUFLLEdBQUc7QUFBQSxFQUN0RTtBQUVBLE1BQUksT0FBTyxhQUFhLFVBQVU7QUFDaEMsV0FBTyxJQUFJLFdBQVcsYUFBYSxRQUFRO0FBQUEsRUFDN0M7QUFFQSxTQUFPLElBQUksV0FBVyxhQUFhLENBQUMsY0FBc0IsU0FBb0I7QUFDNUUsVUFBTSxvQ0FBb0M7QUFDMUMsVUFBTSxlQUFlLE9BQU8sS0FBSyxHQUFHLEVBQUUsTUFBTTtBQUM1QyxVQUFNLGNBQWMsZUFBZSxLQUFLLFNBQVMsb0NBQW9DLEtBQUssU0FBUztBQUVuRyxVQUFNLGNBQThDO0FBQUE7QUFBQSxNQUVsRCxtQkFBbUIsQ0FBQztBQUFBLE1BQ3BCLFFBQVEsZUFBZSxLQUFLLEdBQUcsRUFBRSxJQUEwQztBQUFBLE1BQzNFLHFCQUFxQixDQUFDO0FBQUEsTUFDdEIsUUFBUSxLQUFLLEdBQUcsY0FBYyxDQUFDO0FBQUEsTUFDL0IsUUFBUSxLQUFLLEdBQUcsV0FBVztBQUFBLE1BQzNCO0FBQUEsSUFDRjtBQUVBLGFBQVMsSUFBSSxHQUFHLElBQUksY0FBYyxHQUFHLEtBQUs7QUFDeEMsWUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixVQUFJLE9BQU8sU0FBUyxVQUFVO0FBQzVCLG9CQUFZLGtCQUFrQixLQUFLLElBQUk7QUFBQSxNQUV6QyxXQUFXLE9BQU8sU0FBUyxhQUFhO0FBRXRDLG9CQUFZLG9CQUFvQixLQUFLLENBQUM7QUFBQSxNQUN4QztBQUFBLElBQ0Y7QUFFQSxXQUFRLFNBQVMsV0FBVyxLQUE0QixZQUFZO0FBQUEsRUFDdEUsQ0FBQztBQUNIO0FBWUEsZUFBc0IsZ0JBQ3BCLEtBQ0EsYUFDQSxVQUNBLGFBQ2lCO0FBQ2pCLHNCQUFnQiwwQ0FBaUI7QUFDakMsY0FBWSxlQUFlO0FBQzNCLE1BQUksT0FBTyxhQUFhLFVBQVU7QUFDaEMsV0FBTyxXQUFXLEtBQUssYUFBYSxRQUFRO0FBQUEsRUFDOUM7QUFFQSxRQUFNLHNCQUE0RCxDQUFDO0FBRW5FLGFBQTZCLEtBQUssYUFBYSxDQUFDLFNBQVM7QUFDdkQsd0JBQW9CLEtBQUssVUFBTSxvQ0FBYSxVQUFVLEVBQUUsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQy9FLFdBQU87QUFBQSxFQUNULENBQUM7QUFFRCxRQUFNLGVBQW9DLENBQUM7QUFFM0MsYUFBVyxXQUFXLHFCQUFxQjtBQUN6QyxnQkFBWSxlQUFlO0FBQzNCLGlCQUFhLEtBQUssTUFBTSxRQUFRLENBQUM7QUFBQSxFQUNuQztBQUVBLGNBQVksZUFBZTtBQUMzQixTQUFPLFdBQVcsS0FBSyxhQUFhLENBQUMsU0FBaUIsYUFBYSxNQUFNLEtBQUssS0FBSyxTQUFTO0FBQzlGO0FBV08sU0FBUyxRQUFRLEtBQWEsUUFBZ0IsZ0JBQWtDO0FBQ3JGLE1BQUksSUFBSSxTQUFTLE1BQU0sR0FBRztBQUN4QixXQUFPLElBQUksTUFBTSxHQUFHLENBQUMsT0FBTyxNQUFNO0FBQUEsRUFDcEM7QUFFQSxNQUFJLGdCQUFnQjtBQUNsQixVQUFNLElBQUksTUFBTSxVQUFVLEdBQUcsNkJBQTZCLE1BQU0sRUFBRTtBQUFBLEVBQ3BFO0FBRUEsU0FBTztBQUNUO0FBV08sU0FBUyxVQUFVLEtBQWEsUUFBZ0IsVUFBNEI7QUFDakYsTUFBSSxJQUFJLFdBQVcsTUFBTSxHQUFHO0FBQzFCLFdBQU8sSUFBSSxNQUFNLE9BQU8sTUFBTTtBQUFBLEVBQ2hDO0FBRUEsTUFBSSxVQUFVO0FBQ1osVUFBTSxJQUFJLE1BQU0sVUFBVSxHQUFHLCtCQUErQixNQUFNLEVBQUU7QUFBQSxFQUN0RTtBQUVBLFNBQU87QUFDVDtBQVFPLFNBQVMsU0FBUyxLQUFxQjtBQUM1QyxTQUFPLFFBQVEsS0FBSyxZQUFZO0FBQ2xDO0FBVU8sU0FBUyxTQUFTLE1BQWMsUUFBZ0IsMkJBQTJCLE9BQWU7QUFDL0YsU0FBTyxLQUFLLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTO0FBQ3BDLFFBQUksS0FBSyxXQUFXLE1BQU0sR0FBRztBQUMzQixhQUFPLEtBQUssTUFBTSxPQUFPLE1BQU07QUFBQSxJQUNqQztBQUNBLFFBQUksMEJBQTBCO0FBQzVCLFlBQU0sSUFBSSxNQUFNLFNBQVMsSUFBSSwyQkFBMkIsTUFBTSxHQUFHO0FBQUEsSUFDbkU7QUFDQSxXQUFPO0FBQUEsRUFDVCxDQUFDLEVBQUUsS0FBSyxJQUFJO0FBQ2Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @
|
|
2
|
+
* @file
|
|
3
3
|
*
|
|
4
4
|
* Contains utility functions for string operations.
|
|
5
5
|
*/
|
|
@@ -8,11 +8,15 @@ import type { ValueProvider } from './value-provider.cjs';
|
|
|
8
8
|
/**
|
|
9
9
|
* A synchronous/asynchronous function that generates replacement strings, or a string to replace with.
|
|
10
10
|
*/
|
|
11
|
-
export type AsyncReplacer<
|
|
11
|
+
export type AsyncReplacer<CapturedGroupArgs extends string[]> = ValueProvider<StringReplacement, ReplaceArgs<CapturedGroupArgs>>;
|
|
12
12
|
/**
|
|
13
13
|
* Common arguments for the `replaceAll`/`replaceAllAsync` functions.
|
|
14
14
|
*/
|
|
15
|
-
export interface
|
|
15
|
+
export interface ReplaceArgs<CapturedGroupArgs extends string[]> {
|
|
16
|
+
/**
|
|
17
|
+
* Captured group arguments.
|
|
18
|
+
*/
|
|
19
|
+
capturedGroupArgs: CapturedGroupArgs;
|
|
16
20
|
/**
|
|
17
21
|
* Groups of the match.
|
|
18
22
|
*/
|
|
@@ -37,7 +41,7 @@ export interface ReplaceCommonArgs {
|
|
|
37
41
|
/**
|
|
38
42
|
* A synchronous function that generates replacement strings, or a string to replace with.
|
|
39
43
|
*/
|
|
40
|
-
export type Replacer<
|
|
44
|
+
export type Replacer<CapturedGroupArgs extends string[]> = ((args: ReplaceArgs<CapturedGroupArgs>) => StringReplacement) | StringReplacement;
|
|
41
45
|
type StringReplacement = MaybeReturn<string>;
|
|
42
46
|
/**
|
|
43
47
|
* Ensures that a string ends with the specified suffix, adding it if necessary.
|
|
@@ -135,7 +139,7 @@ export declare function replace(str: string, replacementsMap: Record<string, str
|
|
|
135
139
|
* @param replacer - A replacer function that generates replacement strings, or a string to replace with.
|
|
136
140
|
* @returns The string with all replacements made.
|
|
137
141
|
*/
|
|
138
|
-
export declare function replaceAll<
|
|
142
|
+
export declare function replaceAll<CapturedGroupArgs extends string[]>(str: string, searchValue: RegExp | string, replacer: Replacer<CapturedGroupArgs>): string;
|
|
139
143
|
/**
|
|
140
144
|
* Asynchronously replaces all occurrences of a search string or pattern with the results of an asynchronous replacer function.
|
|
141
145
|
*
|
|
@@ -166,4 +166,4 @@ class DateTransformer extends import_typed_transformer.TypedTransformer {
|
|
|
166
166
|
0 && (module.exports = {
|
|
167
167
|
DateTransformer
|
|
168
168
|
});
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy9kYXRlLXRyYW5zZm9ybWVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gRGF0ZSB0byBhbiBJU08gc3RyaW5nIGFuZCBiYWNrLlxuICovXG5cbmltcG9ydCB7IFR5cGVkVHJhbnNmb3JtZXIgfSBmcm9tICcuL3R5cGVkLXRyYW5zZm9ybWVyLnRzJztcblxuLyoqXG4gKiBBIHRyYW5zZm9ybWVyIHRoYXQgY2FuIHRyYW5zZm9ybSBEYXRlIHRvIGFuIElTTyBzdHJpbmcgYW5kIGJhY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlVHJhbnNmb3JtZXIgZXh0ZW5kcyBUeXBlZFRyYW5zZm9ybWVyPERhdGUsIHN0cmluZz4ge1xuICAvKipcbiAgICogQW4gaWQgb2YgdGhlIHRyYW5zZm9ybWVyLlxuICAgKlxuICAgKiBAcmV0dXJucyBgZGF0ZWAuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdkYXRlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBhIERhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHZhbHVlIGlzIGEgRGF0ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBjYW5UcmFuc2Zvcm0odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBEYXRlIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSB2YWx1ZSBmcm9tIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNmb3JtZWRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICogQHJldHVybnMgVGhlIHJlc3RvcmVkIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlc3RvcmVWYWx1ZSh0cmFuc2Zvcm1lZFZhbHVlOiBzdHJpbmcpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodHJhbnNmb3JtZWRWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB0aGUgdmFsdWUgdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsK0JBQWlDO0FBSzFCLE1BQU0sd0JBQXdCLDBDQUErQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1sRSxJQUFvQixLQUFhO0FBQy9CLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsYUFBYSxPQUErQjtBQUMxRCxXQUFPLGlCQUFpQjtBQUFBLEVBQzFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsYUFBYSxrQkFBZ0M7QUFDM0QsV0FBTyxJQUFJLEtBQUssZ0JBQWdCO0FBQUEsRUFDbEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixlQUFlLE9BQXFCO0FBQ2xELFdBQU8sTUFBTSxZQUFZO0FBQUEsRUFDM0I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|