You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
46 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"use strict";
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
exports.id = "vendor-chunks/vfile";
exports.ids = ["vendor-chunks/vfile"];
exports.modules = {
/***/ "(ssr)/./node_modules/vfile/lib/index.js":
/*!*****************************************!*\
!*** ./node_modules/vfile/lib/index.js ***!
\*****************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ VFile: () => (/* binding */ VFile)\n/* harmony export */ });\n/* harmony import */ var is_buffer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-buffer */ \"(ssr)/./node_modules/is-buffer/index.js\");\n/* harmony import */ var vfile_message__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vfile-message */ \"(ssr)/./node_modules/vfile-message/lib/index.js\");\n/* harmony import */ var _minpath_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./minpath.js */ \"path\");\n/* harmony import */ var _minproc_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./minproc.js */ \"process\");\n/* harmony import */ var _minurl_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./minurl.js */ \"(ssr)/./node_modules/vfile/lib/minurl.shared.js\");\n/* harmony import */ var _minurl_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./minurl.js */ \"url\");\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */ /**\n * @typedef {Record<string, unknown> & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'} BufferEncoding\n * Encodings supported by the buffer class.\n *\n * This is a copy of the types from Node, copied to prevent Node globals from\n * being needed.\n * Copied from: <https://github.com/DefinitelyTyped/DefinitelyTyped/blob/90a4ec8/types/node/buffer.d.ts#L170>\n *\n * @typedef {Options | URL | Value | VFile} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {Value | null | undefined} [value]\n * Set `value`.\n * @property {string | null | undefined} [cwd]\n * Set `cwd`.\n * @property {Array<string> | null | undefined} [history]\n * Set `history`.\n * @property {URL | string | null | undefined} [path]\n * Set `path`.\n * @property {string | null | undefined} [basename]\n * Set `basename`.\n * @property {string | null | undefined} [stem]\n * Set `stem`.\n * @property {string | null | undefined} [extname]\n * Set `extname`.\n * @property {string | null | undefined} [dirname]\n * Set `dirname`.\n * @property {Data | null | undefined} [data]\n * Set `data`.\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * <https://github.com/mozilla/source-map/blob/58819f0/source-map.d.ts#L15-L23>.\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array<string>} sources\n * An array of URLs to the original source files.\n * @property {Array<string>} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array<string> | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record<string, unknown>} ReporterSettings\n * Configuration for reporters.\n */ /**\n * @template {ReporterSettings} Settings\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array<VFile>} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */ \n\n\n\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n *\n * @type {Array<'basename' | 'dirname' | 'extname' | 'history' | 'path' | 'stem'>}\n */ const order = [\n \"history\",\n \"path\",\n \"basename\",\n \"stem\",\n \"extname\",\n \"dirname\"\n];\nclass VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Buffer` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */ constructor(value){\n /** @type {Options | VFile} */ let options;\n if (!value) {\n options = {};\n } else if (typeof value === \"string\" || buffer(value)) {\n options = {\n value\n };\n } else if ((0,_minurl_js__WEBPACK_IMPORTED_MODULE_1__.isUrl)(value)) {\n options = {\n path: value\n };\n } else {\n options = value;\n }\n /**\n * Place to store custom information (default: `{}`).\n *\n * Its OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */ this.data = {};\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */ this.messages = [];\n /**\n * List of filepaths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */ this.history = [];\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */ this.cwd = _minproc_js__WEBPACK_IMPORTED_MODULE_2__.cwd();\n /* eslint-disable no-unused-expressions */ /**\n * Raw value.\n *\n * @type {Value}\n */ this.value;\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */ this.stored;\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */ this.result;\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */ this.map;\n /* eslint-enable no-unused-expressions */ // Set path related properties in the correct order.\n let index = -1;\n while(++index < order.length){\n const prop = order[index];\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (prop in options && options[prop] !== undefined && options[prop] !== null) {\n // @ts-expect-error: TS doesnt understand basic reality.\n this[prop] = prop === \"history\" ? [\n ...options[prop]\n ] : options[prop];\n }\n }\n /** @type {string} */ let prop;\n // Set non-path related properties.\n for(prop in options){\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop];\n }\n }\n }\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n */ get path() {\n return this.history[this.history.length - 1];\n }\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {string | URL} path\n */ set path(path) {\n if ((0,_minurl_js__WEBPACK_IMPORTED_MODULE_1__.isUrl)(path)) {\n path = (0,_minurl_js__WEBPACK_IMPORTED_MODULE_3__.fileURLToPath)(path);\n }\n assertNonEmpty(path, \"path\");\n if (this.path !== path) {\n this.history.push(path);\n }\n }\n /**\n * Get the parent path (example: `'~'`).\n */ get dirname() {\n return typeof this.path === \"string\" ? _minpath_js__WEBPACK_IMPORTED_MODULE_4__.dirname(this.path) : undefined;\n }\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if theres no `path` yet.\n */ set dirname(dirname) {\n assertPath(this.basename, \"dirname\");\n this.path = _minpath_js__WEBPACK_IMPORTED_MODULE_4__.join(dirname || \"\", this.basename);\n }\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n */ get basename() {\n return typeof this.path === \"string\" ? _minpath_js__WEBPACK_IMPORTED_MODULE_4__.basename(this.path) : undefined;\n }\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */ set basename(basename) {\n assertNonEmpty(basename, \"basename\");\n assertPart(basename, \"basename\");\n this.path = _minpath_js__WEBPACK_IMPORTED_MODULE_4__.join(this.dirname || \"\", basename);\n }\n /**\n * Get the extname (including dot) (example: `'.js'`).\n */ get extname() {\n return typeof this.path === \"string\" ? _minpath_js__WEBPACK_IMPORTED_MODULE_4__.extname(this.path) : undefined;\n }\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if theres no `path` yet.\n */ set extname(extname) {\n assertPart(extname, \"extname\");\n assertPath(this.dirname, \"extname\");\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */ ) {\n throw new Error(\"`extname` must start with `.`\");\n }\n if (extname.includes(\".\", 1)) {\n throw new Error(\"`extname` cannot contain multiple dots\");\n }\n }\n this.path = _minpath_js__WEBPACK_IMPORTED_MODULE_4__.join(this.dirname, this.stem + (extname || \"\"));\n }\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n */ get stem() {\n return typeof this.path === \"string\" ? _minpath_js__WEBPACK_IMPORTED_MODULE_4__.basename(this.path, this.extname) : undefined;\n }\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */ set stem(stem) {\n assertNonEmpty(stem, \"stem\");\n assertPart(stem, \"stem\");\n this.path = _minpath_js__WEBPACK_IMPORTED_MODULE_4__.join(this.dirname || \"\", stem + (this.extname || \"\"));\n }\n /**\n * Serialize the file.\n *\n * @param {BufferEncoding | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when its a `Buffer`\n * (default: `'utf8'`).\n * @returns {string}\n * Serialized file.\n */ toString(encoding) {\n return (this.value || \"\").toString(encoding || undefined);\n }\n /**\n * Create a warning message associated with the file.\n *\n * Its `fatal` is set to `false` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */ message(reason, place, origin) {\n const message = new vfile_message__WEBPACK_IMPORTED_MODULE_5__.VFileMessage(reason, place, origin);\n if (this.path) {\n message.name = this.path + \":\" + message.name;\n message.file = this.path;\n }\n message.fatal = false;\n this.messages.push(message);\n return message;\n }\n /**\n * Create an info message associated with the file.\n *\n * Its `fatal` is set to `null` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */ info(reason, place, origin) {\n const message = this.message(reason, place, origin);\n message.fatal = null;\n return message;\n }\n /**\n * Create a fatal error associated with the file.\n *\n * Its `fatal` is set to `true` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * > 👉 **Note**: a fatal error means that a file is no longer processable.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Message.\n * @throws {VFileMessage}\n * Message.\n */ fail(reason, place, origin) {\n const message = this.message(reason, place, origin);\n message.fatal = true;\n throw message;\n }\n}\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {void}\n * Nothing.\n */ function assertPart(part, name) {\n if (part && part.includes(_minpath_js__WEBPACK_IMPORTED_MODULE_4__.sep)) {\n throw new Error(\"`\" + name + \"` cannot be a path: did not expect `\" + _minpath_js__WEBPACK_IMPORTED_MODULE_4__.sep + \"`\");\n }\n}\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */ function assertNonEmpty(part, name) {\n if (!part) {\n throw new Error(\"`\" + name + \"` cannot be empty\");\n }\n}\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */ function assertPath(path, name) {\n if (!path) {\n throw new Error(\"Setting `\" + name + \"` requires `path` to be set too\");\n }\n}\n/**\n * Assert `value` is a buffer.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Buffer}\n * Whether `value` is a Node.js buffer.\n */ function buffer(value) {\n return is_buffer__WEBPACK_IMPORTED_MODULE_0__(value);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvdmZpbGUvbGliL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7Ozs7OztDQU9DLEdBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E2REMsR0FFRDs7Ozs7Ozs7Ozs7Q0FXQyxHQUVpQztBQUNRO0FBQ1Q7QUFDQTtBQUNXO0FBRTVDOzs7Ozs7Q0FNQyxHQUNELE1BQU1NLFFBQVE7SUFBQztJQUFXO0lBQVE7SUFBWTtJQUFRO0lBQVc7Q0FBVTtBQUVwRSxNQUFNQztJQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkMsR0FDREMsWUFBWUMsS0FBSyxDQUFFO1FBQ2pCLDRCQUE0QixHQUM1QixJQUFJQztRQUVKLElBQUksQ0FBQ0QsT0FBTztZQUNWQyxVQUFVLENBQUM7UUFDYixPQUFPLElBQUksT0FBT0QsVUFBVSxZQUFZRSxPQUFPRixRQUFRO1lBQ3JEQyxVQUFVO2dCQUFDRDtZQUFLO1FBQ2xCLE9BQU8sSUFBSUosaURBQUtBLENBQUNJLFFBQVE7WUFDdkJDLFVBQVU7Z0JBQUNSLE1BQU1PO1lBQUs7UUFDeEIsT0FBTztZQUNMQyxVQUFVRDtRQUNaO1FBRUE7Ozs7Ozs7S0FPQyxHQUNELElBQUksQ0FBQ0csSUFBSSxHQUFHLENBQUM7UUFFYjs7OztLQUlDLEdBQ0QsSUFBSSxDQUFDQyxRQUFRLEdBQUcsRUFBRTtRQUVsQjs7Ozs7O0tBTUMsR0FDRCxJQUFJLENBQUNDLE9BQU8sR0FBRyxFQUFFO1FBRWpCOzs7O0tBSUMsR0FDRCxJQUFJLENBQUNDLEdBQUcsR0FBR1osNENBQVE7UUFFbkIsd0NBQXdDLEdBQ3hDOzs7O0tBSUMsR0FDRCxJQUFJLENBQUNNLEtBQUs7UUFFVixxREFBcUQ7UUFDckQsZ0NBQWdDO1FBRWhDOzs7Ozs7S0FNQyxHQUNELElBQUksQ0FBQ08sTUFBTTtRQUVYOzs7Ozs7O0tBT0MsR0FDRCxJQUFJLENBQUNDLE1B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QUFNLEVBQUU7UUFDMUIsTUFBTUgsVUFBVSxJQUFJLENBQUNBLE9BQU8sQ0FBQ0MsUUFBUUMsT0FBT0M7UUFFNUNILFFBQVFNLEtBQUssR0FBRztRQUVoQixPQUFPTjtJQUNUO0lBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkMsR0FDRFEsS0FBS1AsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRTtRQUMxQixNQUFNSCxVQUFVLElBQUksQ0FBQ0EsT0FBTyxDQUFDQyxRQUFRQyxPQUFPQztRQUU1Q0gsUUFBUU0sS0FBSyxHQUFHO1FBRWhCLE1BQU1OO0lBQ1I7QUFDRjtBQUVBOzs7Ozs7Ozs7Q0FTQyxHQUNELFNBQVNQLFdBQVdnQixJQUFJLEVBQUVMLElBQUk7SUFDNUIsSUFBSUssUUFBUUEsS0FBS3ZCLFFBQVEsQ0FBQ3JCLDRDQUFRLEdBQUc7UUFDbkMsTUFBTSxJQUFJK0IsTUFDUixNQUFNUSxPQUFPLHlDQUF5Q3ZDLDRDQUFRLEdBQUc7SUFFckU7QUFDRjtBQUVBOzs7Ozs7Ozs7Q0FTQyxHQUNELFNBQVNzQixlQUFlc0IsSUFBSSxFQUFFTCxJQUFJO0lBQ2hDLElBQUksQ0FBQ0ssTUFBTTtRQUNULE1BQU0sSUFBSWIsTUFBTSxNQUFNUSxPQUFPO0lBQy9CO0FBQ0Y7QUFFQTs7Ozs7Ozs7O0NBU0MsR0FDRCxTQUFTZCxXQUFXekIsSUFBSSxFQUFFdUMsSUFBSTtJQUM1QixJQUFJLENBQUN2QyxNQUFNO1FBQ1QsTUFBTSxJQUFJK0IsTUFBTSxjQUFjUSxPQUFPO0lBQ3ZDO0FBQ0Y7QUFFQTs7Ozs7OztDQU9DLEdBQ0QsU0FBUzlCLE9BQU9GLEtBQUs7SUFDbkIsT0FBT1Qsc0NBQVVBLENBQUNTO0FBQ3BCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvdmZpbGUvbGliL2luZGV4LmpzP2RhMzYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLk5vZGV9IE5vZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUG9zaXRpb259IFBvc2l0aW9uXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9taW51cmwuc2hhcmVkLmpzJykuVVJMfSBVUkxcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2luZGV4LmpzJykuRGF0YX0gRGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vaW5kZXguanMnKS5WYWx1ZX0gVmFsdWVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiAmIHt0eXBlOiBzdHJpbmcsIHBvc2l0aW9uPzogUG9zaXRpb24gfCB1bmRlZmluZWR9fSBOb2RlTGlrZVxuICpcbiAqIEB0eXBlZGVmIHsnYXNjaWknIHwgJ3V0ZjgnIHwgJ3V0Zi04JyB8ICd1dGYxNmxlJyB8ICd1Y3MyJyB8ICd1Y3MtMicgfCAnYmFzZTY0JyB8ICdiYXNlNjR1cmwnIHwgJ2xhdGluMScgfCAnYmluYXJ5JyB8ICdoZXgnfSBCdWZmZXJFbmNvZGluZ1xuICogICBFbmNvZGluZ3Mgc3VwcG9ydGVkIGJ5IHRoZSBidWZmZXIgY2xhc3MuXG4gKlxuICogICBUaGlzIGlzIGEgY29weSBvZiB0aGUgdHlwZXMgZnJvbSBOb2RlLCBjb3BpZWQgdG8gcHJldmVudCBOb2RlIGdsb2JhbHMgZnJvbVxuICogICBiZWluZyBuZWVkZWQuXG4gKiAgIENvcGllZCBmcm9tOiA8aHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvYmxvYi85MGE0ZWM4L3R5cGVzL25vZGUvYnVmZmVyLmQudHMjTDE3MD5cbiAqXG4gKiBAdHlwZWRlZiB7T3B0aW9ucyB8IFVSTCB8IFZhbHVlIHwgVkZpbGV9IENvbXBhdGlibGVcbiAqICAgVGhpbmdzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuXG4gKlxuICogQHR5cGVkZWYgVkZpbGVDb3JlT3B0aW9uc1xuICogICBTZXQgbXVsdGlwbGUgdmFsdWVzLlxuICogQHByb3BlcnR5IHtWYWx1ZSB8IG51bGwgfCB1bmRlZmluZWR9IFt2YWx1ZV1cbiAqICAgU2V0IGB2YWx1ZWAuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtjd2RdXG4gKiAgIFNldCBgY3dkYC5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPiB8IG51bGwgfCB1bmRlZmluZWR9IFtoaXN0b3J5XVxuICogICBTZXQgYGhpc3RvcnlgLlxuICogQHByb3BlcnR5IHtVUkwgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbcGF0aF1cbiAqICAgU2V0IGBwYXRoYC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2Jhc2VuYW1lXVxuICogICBTZXQgYGJhc2VuYW1lYC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3N0ZW1dXG4gKiAgIFNldCBgc3RlbWAuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtleHRuYW1lXVxuICogICBTZXQgYGV4dG5hbWVgLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbZGlybmFtZV1cbiAqICAgU2V0IGBkaXJuYW1lYC5cbiAqIEBwcm9wZXJ0eSB7RGF0YSB8IG51bGwgfCB1bmRlZmluZWR9IFtkYXRhXVxuICogICBTZXQgYGRhdGFgLlxuICpcbiAqIEB0eXBlZGVmIE1hcFxuICogICBSYXcgc291cmNlIG1hcC5cbiAqXG4gKiAgIFNlZTpcbiAqICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3NvdXJjZS1tYXAvYmxvYi81ODgxOWYwL3NvdXJjZS1tYXAuZC50cyNMMTUtTDIzPi5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB2ZXJzaW9uXG4gKiAgIFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZz59IHNvdXJjZXNcbiAqICAgQW4gYXJyYXkgb2YgVVJMcyB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmc+fSBuYW1lc1xuICogICBBbiBhcnJheSBvZiBpZGVudGlmaWVycyB3aGljaCBjYW4gYmUgcmVmZXJlbmNlZCBieSBpbmRpdmlkdWFsIG1hcHBpbmdzLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCB1bmRlZmluZWR9IFtzb3VyY2VSb290XVxuICogICBUaGUgVVJMIHJvb3QgZnJvbSB3aGljaCBhbGwgc291cmNlcyBhcmUgcmVsYXRpdmUuXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZz4gfCB1bmRlZmluZWR9IFtzb3VyY2VzQ29udGVudF1cbiAqICAgQW4gYXJyYXkgb2YgY29udGVudHMgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtYXBwaW5nc1xuICogICBBIHN0cmluZyBvZiBiYXNlNjQgVkxRcyB3aGljaCBjb250YWluIHRoZSBhY3R1YWwgbWFwcGluZ3MuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZmlsZVxuICogICBUaGUgZ2VuZXJhdGVkIGZpbGUgdGhpcyBzb3VyY2UgbWFwIGlzIGFzc29jaWF0ZWQgd2l0aC5cbiAqXG4gKiBAdHlwZWRlZiB7e1trZXk6IHN0cmluZ106IHVua25vd259ICYgVkZpbGVDb3JlT3B0aW9uc30gT3B0aW9uc1xuICogICBDb25maWd1cmF0aW9uLlxuICpcbiAqICAgQSBidW5jaCBvZiBrZXlzIHRoYXQgd2lsbCBiZSBzaGFsbG93IGNvcGllZCBvdmVyIHRvIHRoZSBuZXcgZmlsZS5cbiAqXG4gKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IFJlcG9ydGVyU2V0dGluZ3NcbiAqICAgQ29uZmlndXJhdGlvbiBmb3IgcmVwb3J0ZXJzLlxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtSZXBvcnRlclNldHRpbmdzfSBTZXR0aW5nc1xuICogICBPcHRpb25zIHR5cGUuXG4gKiBAY2FsbGJhY2sgUmVwb3J0ZXJcbiAqICAgVHlwZSBmb3IgYSByZXBvcnRlci5cbiAqIEBwYXJhbSB7QXJyYXk8VkZpbGU+fSBmaWxlc1xuICogICBGaWxlcyB0byByZXBvcnQuXG4gKiBAcGFyYW0ge1NldHRpbmdzfSBvcHRpb25zXG4gKiAgIENvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBSZXBvcnQuXG4gKi9cblxuaW1wb3J0IGJ1ZmZlckxpa2UgZnJvbSAnaXMtYnVmZmVyJ1xuaW1wb3J0IHtWRmlsZU1lc3NhZ2V9IGZyb20gJ3ZmaWxlLW1lc3NhZ2UnXG5pbXBvcnQge3BhdGh9IGZyb20gJy4vbWlucGF0aC5qcydcbmltcG9ydCB7cHJvY30gZnJvbSAnLi9taW5wcm9jLmpzJ1xuaW1wb3J0IHt1cmxUb1BhdGgsIGlzVXJsfSBmcm9tICcuL21pbnVybC5qcydcblxuLyoqXG4gKiBPcmRlciBvZiBzZXR0aW5nIChsZWFzdCBzcGVjaWZpYyB0byBtb3N0KSwgd2UgbmVlZCB0aGlzIGJlY2F1c2Ugb3RoZXJ3aXNlXG4gKiBge3N0ZW06ICdhJywgcGF0aDogJ34vYi5qcyd9YCB3b3VsZCB0aHJvdywgYXMgYSBwYXRoIGlzIG5lZWRlZCBiZWZvcmUgYVxuICogc3RlbSBjYW4gYmUgc2V0LlxuICpcbiAqIEB0eXBlIHtBcnJheTwnYmFzZW5hbWUnIHwgJ2Rpcm5hbWUnIHwgJ2V4dG5hbWUnIHwgJ2hpc3RvcnknIHwgJ3BhdGgnIHwgJ3N0ZW0nPn1cbiAqL1xuY29uc3Qgb3JkZXIgPSBbJ2hpc3RvcnknLCAncGF0aCcsICdiYXNlbmFtZScsICdzdGVtJywgJ2V4dG5hbWUnLCAnZGlybmFtZSddXG5cbmV4cG9ydCBjbGFzcyBWRmlsZSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgdmlydHVhbCBmaWxlLlxuICAgKlxuICAgKiBgb3B0aW9uc2AgaXMgdHJlYXRlZCBhczpcbiAgICpcbiAgICogKiAgIGBzdHJpbmdgIG9yIGBCdWZmZXJgIOKAlCBge3ZhbHVlOiBvcHRpb25zfWBcbiAgICogKiAgIGBVUkxgIOKAlCBge3BhdGg6IG9wdGlvbnN9YFxuICAgKiAqICAgYFZGaWxlYCDigJQgc2hhbGxvdyBjb3BpZXMgaXRzIGRhdGEgb3ZlciB0byB0aGUgbmV3IGZpbGVcbiAgICogKiAgIGBvYmplY3RgIOKAlCBhbGwgZmllbGRzIGFyZSBzaGFsbG93IGNvcGllZCBvdmVyIHRvIHRoZSBuZXcgZmlsZVxuICAgKlxuICAgKiBQYXRoIHJlbGF0ZWQgZmllbGRzIGFyZSBzZXQgaW4gdGhlIGZvbGxvd2luZyBvcmRlciAobGVhc3Qgc3BlY2lmaWMgdG9cbiAgICogbW9zdCBzcGVjaWZpYyk6IGBoaXN0b3J5YCwgYHBhdGhgLCBgYmFzZW5hbWVgLCBgc3RlbWAsIGBleHRuYW1lYCxcbiAgICogYGRpcm5hbWVgLlxuICAgKlxuICAgKiBZb3UgY2Fubm90IHNldCBgZGlybmFtZWAgb3IgYGV4dG5hbWVgIHdpdGhvdXQgc2V0dGluZyBlaXRoZXIgYGhpc3RvcnlgLFxuICAgKiBgcGF0aGAsIGBiYXNlbmFtZWAsIG9yIGBzdGVtYCB0b28uXG4gICAqXG4gICAqIEBwYXJhbSB7Q29tcGF0aWJsZSB8IG51bGwgfCB1bmRlZmluZWR9IFt2YWx1ZV1cbiAgICogICBGaWxlIHZhbHVlLlxuICAgKiBAcmV0dXJuc1xuICAgKiAgIE5ldyBpbnN0YW5jZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgLyoqIEB0eXBlIHtPcHRpb25zIHwgVkZpbGV9ICovXG4gICAgbGV0IG9wdGlvbnNcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCBidWZmZXIodmFsdWUpKSB7XG4gICAgICBvcHRpb25zID0ge3ZhbHVlfVxuICAgIH0gZWxzZSBpZiAoaXNVcmwodmFsdWUpKSB7XG4gICAgICBvcHRpb25zID0ge3BhdGg6IHZhbHVlfVxuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zID0gdmFsdWVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQbGFjZSB0byBzdG9yZSBjdXN0b20gaW5mb3JtYXRpb24gKGRlZmF1bHQ6IGB7fWApLlxuICAgICAqXG4gICAgICogSXTigJlzIE9LIHRvIHN0b3JlIGN1c3RvbSBkYXRhIGRpcmVjdGx5IG9uIHRoZSBmaWxlIGJ1dCBtb3ZpbmcgaXQgdG9cbiAgICAgKiBgZGF0YWAgaXMgcmVjb21tZW5kZWQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RGF0YX1cbiAgICAgKi9cbiAgICB0aGlzLmRhdGEgPSB7fVxuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBtZXNzYWdlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7QXJyYXk8VkZpbGVNZXNzYWdlPn1cbiAgICAgKi9cbiAgICB0aGlzLm1lc3NhZ2VzID0gW11cblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgZmlsZXBhdGhzIHRoZSBmaWxlIG1vdmVkIGJldHdlZW4uXG4gICAgICpcbiAgICAgKiBUaGUgZmlyc3QgaXMgdGhlIG9yaWdpbmFsIHBhdGggYW5kIHRoZSBsYXN0IGlzIHRoZSBjdXJyZW50IHBhdGguXG4gICAgICpcbiAgICAgKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn1cbiAgICAgKi9cbiAgICB0aGlzLmhpc3RvcnkgPSBbXVxuXG4gICAgLyoqXG4gICAgICogQmFzZSBvZiBgcGF0aGAgKGRlZmF1bHQ6IGBwcm9jZXNzLmN3ZCgpYCBvciBgJy8nYCBpbiBicm93c2VycykuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMuY3dkID0gcHJvYy5jd2QoKVxuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG4gICAgLyoqXG4gICAgICogUmF3IHZhbHVlLlxuICAgICAqXG4gICAgICogQHR5cGUge1ZhbHVlfVxuICAgICAqL1xuICAgIHRoaXMudmFsdWVcblxuICAgIC8vIFRoZSBiZWxvdyBhcmUgbm9uLXN0YW5kYXJkLCB0aGV5IGFyZSDigJx3ZWxsLWtub3du4oCdLlxuICAgIC8vIEFzIGluLCB1c2VkIGluIHNldmVyYWwgdG9vbHMuXG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGEgZmlsZSB3YXMgc2F2ZWQgdG8gZGlzay5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgdXNlZCBieSB2ZmlsZSByZXBvcnRlcnMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLnN0b3JlZFxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tLCBub24tc3RyaW5nLCBjb21waWxlZCwgcmVwcmVzZW50YXRpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHVzZWQgYnkgdW5pZmllZCB0byBzdG9yZSBub24tc3RyaW5nIHJlc3VsdHMuXG4gICAgICogT25lIGV4YW1wbGUgaXMgd2hlbiB0dXJuaW5nIG1hcmtkb3duIGludG8gUmVhY3Qgbm9kZXMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7dW5rbm93bn1cbiAgICAgKi9cbiAgICB0aGlzLnJlc3VsdFxuXG4gICAgLyoqXG4gICAgICogU291cmNlIG1hcC5cbiAgICAgKlxuICAgICAqIFRoaXMgdHlwZSBpcyBlcXVpdmFsZW50IHRvIHRoZSBgUmF3U291cmNlTWFwYCB0eXBlIGZyb20gdGhlIGBzb3VyY2UtbWFwYFxuICAgICAqIG1vZHVsZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtNYXAgfCBudWxsIHwgdW5kZWZpbmVkfVxuICAgICAqL1xuICAgIHRoaXMubWFwXG4gICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi9cblxuICAgIC8vIFNldCBwYXRoIHJlbGF0ZWQgcHJvcGVydGllcyBpbiB0aGUgY29ycmVjdCBvcmRlci5cbiAgICBsZXQgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBvcmRlci5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHByb3AgPSBvcmRlcltpbmRleF1cblxuICAgICAgLy8gTm90ZTogd2Ugc3BlY2lmaWNhbGx5IHVzZSBgaW5gIGluc3RlYWQgb2YgYGhhc093blByb3BlcnR5YCB0byBhY2NlcHRcbiAgICAgIC8vIGB2ZmlsZWBzIHRvby5cbiAgICAgIGlmIChcbiAgICAgICAgcHJvcCBpbiBvcHRpb25zICYmXG4gICAgICAgIG9wdGlvbnNbcHJvcF0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBvcHRpb25zW3Byb3BdICE9PSBudWxsXG4gICAgICApIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogVFMgZG9lc27igJl0IHVuZGVyc3RhbmQgYmFzaWMgcmVhbGl0eS5cbiAgICAgICAgdGhpc1twcm9wXSA9IHByb3AgPT09ICdoaXN0b3J5JyA/IFsuLi5vcHRpb25zW3Byb3BdXSA6IG9wdGlvbnNbcHJvcF1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgcHJvcFxuXG4gICAgLy8gU2V0IG5vbi1wYXRoIHJlbGF0ZWQgcHJvcGVydGllcy5cbiAgICBmb3IgKHByb3AgaW4gb3B0aW9ucykge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogZmluZSB0byBzZXQgb3RoZXIgdGhpbmdzLlxuICAgICAgaWYgKCFvcmRlci5pbmNsdWRlcyhwcm9wKSkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBmaW5lIHRvIHNldCBvdGhlciB0aGluZ3MuXG4gICAgICAgIHRoaXNbcHJvcF0gPSBvcHRpb25zW3Byb3BdXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCBwYXRoIChleGFtcGxlOiBgJ34vaW5kZXgubWluLmpzJ2ApLlxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMV1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZ1bGwgcGF0aCAoZXhhbXBsZTogYCd+L2luZGV4Lm1pbi5qcydgKS5cbiAgICpcbiAgICogQ2Fubm90IGJlIG51bGxpZmllZC5cbiAgICogWW91IGNhbiBzZXQgYSBmaWxlIFVSTCAoYSBgVVJMYCBvYmplY3Qgd2l0aCBhIGBmaWxlOmAgcHJvdG9jb2wpIHdoaWNoIHdpbGxcbiAgICogYmUgdHVybmVkIGludG8gYSBwYXRoIHdpdGggYHVybC5maWxlVVJMVG9QYXRoYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBVUkx9IHBhdGhcbiAgICovXG4gIHNldCBwYXRoKHBhdGgpIHtcbiAgICBpZiAoaXNVcmwocGF0aCkpIHtcbiAgICAgIHBhdGggPSB1cmxUb1BhdGgocGF0aClcbiAgICB9XG5cbiAgICBhc3NlcnROb25FbXB0eShwYXRoLCAncGF0aCcpXG5cbiAgICBpZiAodGhpcy5wYXRoICE9PSBwYXRoKSB7XG4gICAgICB0aGlzLmhpc3RvcnkucHVzaChwYXRoKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHBhcmVudCBwYXRoIChleGFtcGxlOiBgJ34nYCkuXG4gICAqL1xuICBnZXQgZGlybmFtZSgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoLmRpcm5hbWUodGhpcy5wYXRoKSA6IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcGFyZW50IHBhdGggKGV4YW1wbGU6IGAnfidgKS5cbiAgICpcbiAgICogQ2Fubm90IGJlIHNldCBpZiB0aGVyZeKAmXMgbm8gYHBhdGhgIHlldC5cbiAgICovXG4gIHNldCBkaXJuYW1lKGRpcm5hbWUpIHtcbiAgICBhc3NlcnRQYXRoKHRoaXMuYmFzZW5hbWUsICdkaXJuYW1lJylcbiAgICB0aGlzLnBhdGggPSBwYXRoLmpvaW4oZGlybmFtZSB8fCAnJywgdGhpcy5iYXNlbmFtZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2VuYW1lIChpbmNsdWRpbmcgZXh0bmFtZSkgKGV4YW1wbGU6IGAnaW5kZXgubWluLmpzJ2ApLlxuICAgKi9cbiAgZ2V0IGJhc2VuYW1lKCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguYmFzZW5hbWUodGhpcy5wYXRoKSA6IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBiYXNlbmFtZSAoaW5jbHVkaW5nIGV4dG5hbWUpIChgJ2luZGV4Lm1pbi5qcydgKS5cbiAgICpcbiAgICogQ2Fubm90IGNvbnRhaW4gcGF0aCBzZXBhcmF0b3JzIChgJy8nYCBvbiB1bml4LCBtYWNPUywgYW5kIGJyb3dzZXJzLCBgJ1xcJ2BcbiAgICogb24gd2luZG93cykuXG4gICAqIENhbm5vdCBiZSBudWxsaWZpZWQgKHVzZSBgZmlsZS5wYXRoID0gZmlsZS5kaXJuYW1lYCBpbnN0ZWFkKS5cbiAgICovXG4gIHNldCBiYXNlbmFtZShiYXNlbmFtZSkge1xuICAgIGFzc2VydE5vbkVtcHR5KGJhc2VuYW1lLCAnYmFzZW5hbWUnKVxuICAgIGFzc2VydFBhcnQoYmFzZW5hbWUsICdiYXNlbmFtZScpXG4gICAgdGhpcy5wYXRoID0gcGF0aC5qb2luKHRoaXMuZGlybmFtZSB8fCAnJywgYmFzZW5hbWUpXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBleHRuYW1lIChpbmNsdWRpbmcgZG90KSAoZXhhbXBsZTogYCcuanMnYCkuXG4gICAqL1xuICBnZXQgZXh0bmFtZSgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoLmV4dG5hbWUodGhpcy5wYXRoKSA6IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZXh0bmFtZSAoaW5jbHVkaW5nIGRvdCkgKGV4YW1wbGU6IGAnLmpzJ2ApLlxuICAgKlxuICAgKiBDYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKGAnLydgIG9uIHVuaXgsIG1hY09TLCBhbmQgYnJvd3NlcnMsIGAnXFwnYFxuICAgKiBvbiB3aW5kb3dzKS5cbiAgICogQ2Fubm90IGJlIHNldCBpZiB0aGVyZeKAmXMgbm8gYHBhdGhgIHlldC5cbiAgICovXG4gIHNldCBleHRuYW1lKGV4dG5hbWUpIHtcbiAgICBhc3NlcnRQYXJ0KGV4dG5hbWUsICdleHRuYW1lJylcbiAgICBhc3NlcnRQYXRoKHRoaXMuZGlybmFtZSwgJ2V4dG5hbWUnKVxuXG4gICAgaWYgKGV4dG5hbWUpIHtcbiAgICAgIGlmIChleHRuYW1lLmNoYXJDb2RlQXQoMCkgIT09IDQ2IC8qIGAuYCAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BleHRuYW1lYCBtdXN0IHN0YXJ0IHdpdGggYC5gJylcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dG5hbWUuaW5jbHVkZXMoJy4nLCAxKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BleHRuYW1lYCBjYW5ub3QgY29udGFpbiBtdWx0aXBsZSBkb3RzJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnBhdGggPSBwYXRoLmpvaW4odGhpcy5kaXJuYW1lLCB0aGlzLnN0ZW0gKyAoZXh0bmFtZSB8fCAnJykpXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGVtIChiYXNlbmFtZSB3L28gZXh0bmFtZSkgKGV4YW1wbGU6IGAnaW5kZXgubWluJ2ApLlxuICAgKi9cbiAgZ2V0IHN0ZW0oKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnXG4gICAgICA/IHBhdGguYmFzZW5hbWUodGhpcy5wYXRoLCB0aGlzLmV4dG5hbWUpXG4gICAgICA6IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3RlbSAoYmFzZW5hbWUgdy9vIGV4dG5hbWUpIChleGFtcGxlOiBgJ2luZGV4Lm1pbidgKS5cbiAgICpcbiAgICogQ2Fubm90IGNvbnRhaW4gcGF0aCBzZXBhcmF0b3JzIChgJy8nYCBvbiB1bml4LCBtYWNPUywgYW5kIGJyb3dzZXJzLCBgJ1xcJ2BcbiAgICogb24gd2luZG93cykuXG4gICAqIENhbm5vdCBiZSBudWxsaWZpZWQgKHVzZSBgZmlsZS5wYXRoID0gZmlsZS5kaXJuYW1lYCBpbnN0ZWFkKS5cbiAgICovXG4gIHNldCBzdGVtKHN0ZW0pIHtcbiAgICBhc3NlcnROb25FbXB0eShzdGVtLCAnc3RlbScpXG4gICAgYXNzZXJ0UGFydChzdGVtLCAnc3RlbScpXG4gICAgdGhpcy5wYXRoID0gcGF0aC5qb2luKHRoaXMuZGlybmFtZSB8fCAnJywgc3RlbSArICh0aGlzLmV4dG5hbWUgfHwgJycpKVxuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSB0aGUgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXJFbmNvZGluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtlbmNvZGluZz0ndXRmOCddXG4gICAqICAgQ2hhcmFjdGVyIGVuY29kaW5nIHRvIHVuZGVyc3RhbmQgYHZhbHVlYCBhcyB3aGVuIGl04oCZcyBhIGBCdWZmZXJgXG4gICAqICAgKGRlZmF1bHQ6IGAndXRmOCdgKS5cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICogICBTZXJpYWxpemVkIGZpbGUuXG4gICAqL1xuICB0b1N0cmluZyhlbmNvZGluZykge1xuICAgIHJldHVybiAodGhpcy52YWx1ZSB8fCAnJykudG9TdHJpbmcoZW5jb2RpbmcgfHwgdW5kZWZpbmVkKVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHdhcm5pbmcgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUuXG4gICAqXG4gICAqIEl0cyBgZmF0YWxgIGlzIHNldCB0byBgZmFsc2VgIGFuZCBgZmlsZWAgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGZpbGUgcGF0aC5cbiAgICogSXRzIGFkZGVkIHRvIGBmaWxlLm1lc3NhZ2VzYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBFcnJvciB8IFZGaWxlTWVzc2FnZX0gcmVhc29uXG4gICAqICAgUmVhc29uIGZvciBtZXNzYWdlLCB1c2VzIHRoZSBzdGFjayBhbmQgbWVzc2FnZSBvZiB0aGUgZXJyb3IgaWYgZ2l2ZW4uXG4gICAqIEBwYXJhbSB7Tm9kZSB8IE5vZGVMaWtlIHwgUG9zaXRpb24gfCBQb2ludCB8IG51bGwgfCB1bmRlZmluZWR9IFtwbGFjZV1cbiAgICogICBQbGFjZSBpbiBmaWxlIHdoZXJlIHRoZSBtZXNzYWdlIG9jY3VycmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcmlnaW5dXG4gICAqICAgUGxhY2UgaW4gY29kZSB3aGVyZSB0aGUgbWVzc2FnZSBvcmlnaW5hdGVzIChleGFtcGxlOlxuICAgKiAgIGAnbXktcGFja2FnZTpteS1ydWxlJ2Agb3IgYCdteS1ydWxlJ2ApLlxuICAgKiBAcmV0dXJucyB7VkZpbGVNZXNzYWdlfVxuICAgKiAgIE1lc3NhZ2UuXG4gICAqL1xuICBtZXNzYWdlKHJlYXNvbiwgcGxhY2UsIG9yaWdpbikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgVkZpbGVNZXNzYWdlKHJlYXNvbiwgcGxhY2UsIG9yaWdpbilcblxuICAgIGlmICh0aGlzLnBhdGgpIHtcbiAgICAgIG1lc3NhZ2UubmFtZSA9IHRoaXMucGF0aCArICc6JyArIG1lc3NhZ2UubmFtZVxuICAgICAgbWVzc2FnZS5maWxlID0gdGhpcy5wYXRoXG4gICAgfVxuXG4gICAgbWVzc2FnZS5mYXRhbCA9IGZhbHNlXG5cbiAgICB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSlcblxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGluZm8gbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUuXG4gICAqXG4gICAqIEl0cyBgZmF0YWxgIGlzIHNldCB0byBgbnVsbGAgYW5kIGBmaWxlYCBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgZmlsZSBwYXRoLlxuICAgKiBJdHMgYWRkZWQgdG8gYGZpbGUubWVzc2FnZXNgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEVycm9yIHwgVkZpbGVNZXNzYWdlfSByZWFzb25cbiAgICogICBSZWFzb24gZm9yIG1lc3NhZ2UsIHVzZXMgdGhlIHN0YWNrIGFuZCBtZXNzYWdlIG9mIHRoZSBlcnJvciBpZiBnaXZlbi5cbiAgICogQHBhcmFtIHtOb2RlIHwgTm9kZUxpa2UgfCBQb3NpdGlvbiB8IFBvaW50IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3BsYWNlXVxuICAgKiAgIFBsYWNlIGluIGZpbGUgd2hlcmUgdGhlIG1lc3NhZ2Ugb2NjdXJyZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29yaWdpbl1cbiAgICogICBQbGFjZSBpbiBjb2RlIHdoZXJlIHRoZSBtZXNzYWdlIG9yaWdpbmF0ZXMgKGV4YW1wbGU6XG4gICAqICAgYCdteS1wYWNrYWdlOm15LXJ1bGUnYCBvciBgJ215LXJ1bGUnYCkuXG4gICAqIEByZXR1cm5zIHtWRmlsZU1lc3NhZ2V9XG4gICAqICAgTWVzc2FnZS5cbiAgICovXG4gIGluZm8ocmVhc29uLCBwbGFjZSwgb3JpZ2luKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubWVzc2FnZShyZWFzb24sIHBsYWNlLCBvcmlnaW4pXG5cbiAgICBtZXNzYWdlLmZhdGFsID0gbnVsbFxuXG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBmYXRhbCBlcnJvciBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUuXG4gICAqXG4gICAqIEl0cyBgZmF0YWxgIGlzIHNldCB0byBgdHJ1ZWAgYW5kIGBmaWxlYCBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgZmlsZSBwYXRoLlxuICAgKiBJdHMgYWRkZWQgdG8gYGZpbGUubWVzc2FnZXNgLlxuICAgKlxuICAgKiA+IPCfkYkgKipOb3RlKio6IGEgZmF0YWwgZXJyb3IgbWVhbnMgdGhhdCBhIGZpbGUgaXMgbm8gbG9uZ2VyIHByb2Nlc3NhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEVycm9yIHwgVkZpbGVNZXNzYWdlfSByZWFzb25cbiAgICogICBSZWFzb24gZm9yIG1lc3NhZ2UsIHVzZXMgdGhlIHN0YWNrIGFuZCBtZXNzYWdlIG9mIHRoZSBlcnJvciBpZiBnaXZlbi5cbiAgICogQHBhcmFtIHtOb2RlIHwgTm9kZUxpa2UgfCBQb3NpdGlvbiB8IFBvaW50IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3BsYWNlXVxuICAgKiAgIFBsYWNlIGluIGZpbGUgd2hlcmUgdGhlIG1lc3NhZ2Ugb2NjdXJyZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29yaWdpbl1cbiAgICogICBQbGFjZSBpbiBjb2RlIHdoZXJlIHRoZSBtZXNzYWdlIG9yaWdpbmF0ZXMgKGV4YW1wbGU6XG4gICAqICAgYCdteS1wYWNrYWdlOm15LXJ1bGUnYCBvciBgJ215LXJ1bGUnYCkuXG4gICAqIEByZXR1cm5zIHtuZXZlcn1cbiAgICogICBNZXNzYWdlLlxuICAgKiBAdGhyb3dzIHtWRmlsZU1lc3NhZ2V9XG4gICAqICAgTWVzc2FnZS5cbiAgICovXG4gIGZhaWwocmVhc29uLCBwbGFjZSwgb3JpZ2luKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubWVzc2FnZShyZWFzb24sIHBsYWNlLCBvcmlnaW4pXG5cbiAgICBtZXNzYWdlLmZhdGFsID0gdHJ1ZVxuXG4gICAgdGhyb3cgbWVzc2FnZVxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoYXQgYHBhcnRgIGlzIG5vdCBhIHBhdGggKGFzIGluLCBkb2VzIG5vdCBjb250YWluIGBwYXRoLnNlcGApLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gcGFydFxuICogICBGaWxlIHBhdGggcGFydC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiAgIFBhcnQgbmFtZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICogICBOb3RoaW5nLlxuICovXG5mdW5jdGlvbiBhc3NlcnRQYXJ0KHBhcnQsIG5hbWUpIHtcbiAgaWYgKHBhcnQgJiYgcGFydC5pbmNsdWRlcyhwYXRoLnNlcCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnYCcgKyBuYW1lICsgJ2AgY2Fubm90IGJlIGEgcGF0aDogZGlkIG5vdCBleHBlY3QgYCcgKyBwYXRoLnNlcCArICdgJ1xuICAgIClcbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IGBwYXJ0YCBpcyBub3QgZW1wdHkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHBhcnRcbiAqICAgVGhpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogICBQYXJ0IG5hbWUuXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBwYXJ0IGlzIHN0cmluZ31cbiAqICAgTm90aGluZy5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0Tm9uRW1wdHkocGFydCwgbmFtZSkge1xuICBpZiAoIXBhcnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2AnICsgbmFtZSArICdgIGNhbm5vdCBiZSBlbXB0eScpXG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgYHBhdGhgIGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gcGF0aFxuICogICBQYXRoLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqICAgRGVwZW5kZW5jeSBuYW1lLlxuICogQHJldHVybnMge2Fzc2VydHMgcGF0aCBpcyBzdHJpbmd9XG4gKiAgIE5vdGhpbmcuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFBhdGgocGF0aCwgbmFtZSkge1xuICBpZiAoIXBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldHRpbmcgYCcgKyBuYW1lICsgJ2AgcmVxdWlyZXMgYHBhdGhgIHRvIGJlIHNldCB0b28nKVxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogICB0aGluZy5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBCdWZmZXJ9XG4gKiAgIFdoZXRoZXIgYHZhbHVlYCBpcyBhIE5vZGUuanMgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBidWZmZXIodmFsdWUpIHtcbiAgcmV0dXJuIGJ1ZmZlckxpa2UodmFsdWUpXG59XG4iXSwibmFtZXMiOlsiYnVmZmVyTGlrZSIsIlZGaWxlTWVzc2FnZSIsInBhdGgiLCJwcm9jIiwidXJsVG9QYXRoIiwiaXNVcmwiLCJvcmRlciIsIlZGaWxlIiwiY29uc3RydWN0b3IiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJidWZmZXIiLCJkYXRhIiwibWVzc2FnZXMiLCJoaXN0b3J5IiwiY3dkIiwic3RvcmVkIiwicmVzdWx0IiwibWFwIiwiaW5kZXgiLCJsZW5ndGgiLCJwcm9wIiwidW5kZWZpbmVkIiwiaW5jbHVkZXMiLCJhc3NlcnROb25FbXB0eSIsInB1c2giLCJkaXJuYW1lIiwiYXNzZXJ0UGF0aCIsImJhc2VuYW1lIiwiam9pbiIsImFzc2VydFBhcnQiLCJleHRuYW1lIiwiY2hhckNvZGVBdCIsIkVycm9yIiwic3RlbSIsInRvU3RyaW5nIiwiZW5jb2RpbmciLCJtZXNzYWdlIiwicmVhc29uIiwicGxhY2UiLCJvcmlnaW4iLCJuYW1lIiwiZmlsZSIsImZhdGFsIiwiaW5mbyIsImZhaWwiLCJwYXJ0Iiwic2VwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/vfile/lib/index.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/vfile/lib/minurl.shared.js":
/*!*************************************************!*\
!*** ./node_modules/vfile/lib/minurl.shared.js ***!
\*************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isUrl: () => (/* binding */ isUrl)\n/* harmony export */ });\n/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */ /**\n * Check if `fileUrlOrPath` looks like a URL.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether its a URL.\n */ // From: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js#L1501>\nfunction isUrl(fileUrlOrPath) {\n return fileUrlOrPath !== null && typeof fileUrlOrPath === \"object\" && // @ts-expect-error: indexable.\n fileUrlOrPath.href && // @ts-expect-error: indexable.\n fileUrlOrPath.origin;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvdmZpbGUvbGliL21pbnVybC5zaGFyZWQuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0NBZ0JDLEdBRUQ7Ozs7Ozs7Q0FPQyxHQUNELGdGQUFnRjtBQUN6RSxTQUFTQSxNQUFNQyxhQUFhO0lBQ2pDLE9BQ0VBLGtCQUFrQixRQUNsQixPQUFPQSxrQkFBa0IsWUFDekIsK0JBQStCO0lBQy9CQSxjQUFjQyxJQUFJLElBQ2xCLCtCQUErQjtJQUMvQkQsY0FBY0UsTUFBTTtBQUV4QiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL3ZmaWxlL2xpYi9taW51cmwuc2hhcmVkLmpzP2EzYjEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiBVUkxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBoYXNoXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaG9zdFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhvc3RuYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaHJlZlxuICogQHByb3BlcnR5IHtzdHJpbmd9IG9yaWdpblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhc3N3b3JkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGF0aG5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwb3J0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJvdG9jb2xcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZWFyY2hcbiAqIEBwcm9wZXJ0eSB7YW55fSBzZWFyY2hQYXJhbXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB1c2VybmFtZVxuICogQHByb3BlcnR5IHsoKSA9PiBzdHJpbmd9IHRvU3RyaW5nXG4gKiBAcHJvcGVydHkgeygpID0+IHN0cmluZ30gdG9KU09OXG4gKi9cblxuLyoqXG4gKiBDaGVjayBpZiBgZmlsZVVybE9yUGF0aGAgbG9va3MgbGlrZSBhIFVSTC5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IGZpbGVVcmxPclBhdGhcbiAqICAgRmlsZSBwYXRoIG9yIFVSTC5cbiAqIEByZXR1cm5zIHtmaWxlVXJsT3JQYXRoIGlzIFVSTH1cbiAqICAgV2hldGhlciBpdOKAmXMgYSBVUkwuXG4gKi9cbi8vIEZyb206IDxodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9mY2Y4YmE0L2xpYi9pbnRlcm5hbC91cmwuanMjTDE1MDE+XG5leHBvcnQgZnVuY3Rpb24gaXNVcmwoZmlsZVVybE9yUGF0aCkge1xuICByZXR1cm4gKFxuICAgIGZpbGVVcmxPclBhdGggIT09IG51bGwgJiZcbiAgICB0eXBlb2YgZmlsZVVybE9yUGF0aCA9PT0gJ29iamVjdCcgJiZcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBpbmRleGFibGUuXG4gICAgZmlsZVVybE9yUGF0aC5ocmVmICYmXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogaW5kZXhhYmxlLlxuICAgIGZpbGVVcmxPclBhdGgub3JpZ2luXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJpc1VybCIsImZpbGVVcmxPclBhdGgiLCJocmVmIiwib3JpZ2luIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/vfile/lib/minurl.shared.js\n");
/***/ })
};
;