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.
55 lines
78 KiB
JavaScript
55 lines
78 KiB
JavaScript
"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/react-markdown";
|
|
exports.ids = ["vendor-chunks/react-markdown"];
|
|
exports.modules = {
|
|
|
|
/***/ "(ssr)/./node_modules/react-markdown/lib/ast-to-react.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/react-markdown/lib/ast-to-react.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 */ childrenToReact: () => (/* binding */ childrenToReact)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-is */ \"(ssr)/./node_modules/react-is/index.js\");\n/* harmony import */ var hast_util_whitespace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! hast-util-whitespace */ \"(ssr)/./node_modules/hast-util-whitespace/index.js\");\n/* harmony import */ var property_information__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! property-information */ \"(ssr)/./node_modules/property-information/index.js\");\n/* harmony import */ var property_information__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! property-information */ \"(ssr)/./node_modules/property-information/lib/find.js\");\n/* harmony import */ var property_information__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! property-information */ \"(ssr)/./node_modules/property-information/lib/hast-to-react.js\");\n/* harmony import */ var space_separated_tokens__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! space-separated-tokens */ \"(ssr)/./node_modules/space-separated-tokens/index.js\");\n/* harmony import */ var comma_separated_tokens__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! comma-separated-tokens */ \"(ssr)/./node_modules/comma-separated-tokens/index.js\");\n/* harmony import */ var style_to_object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! style-to-object */ \"(ssr)/./node_modules/style-to-object/index.mjs\");\n/* harmony import */ var _uri_transformer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uri-transformer.js */ \"(ssr)/./node_modules/react-markdown/lib/uri-transformer.js\");\n/**\n * @template T\n * @typedef {import('react').ComponentType<T>} ComponentType<T>\n */ /**\n * @template {import('react').ElementType} T\n * @typedef {import('react').ComponentPropsWithoutRef<T>} ComponentPropsWithoutRef<T>\n */ /**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('./complex-types.js').ReactMarkdownProps} ReactMarkdownProps\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {Options} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @typedef {import('react').HTMLAttributeAnchorTarget} TransformLinkTargetType\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {TransformLinkTargetType|undefined}\n *\n * @typedef {keyof JSX.IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef {ComponentPropsWithoutRef<'code'> & ReactMarkdownProps & {inline?: boolean}} CodeProps\n * @typedef {ComponentPropsWithoutRef<'h1'> & ReactMarkdownProps & {level: number}} HeadingProps\n * @typedef {ComponentPropsWithoutRef<'li'> & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} LiProps\n * @typedef {ComponentPropsWithoutRef<'ol'> & ReactMarkdownProps & {depth: number, ordered: true}} OrderedListProps\n * @typedef {ComponentPropsWithoutRef<'td'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: false}} TableDataCellProps\n * @typedef {ComponentPropsWithoutRef<'th'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: true}} TableHeaderCellProps\n * @typedef {ComponentPropsWithoutRef<'tr'> & ReactMarkdownProps & {isHeader: boolean}} TableRowProps\n * @typedef {ComponentPropsWithoutRef<'ul'> & ReactMarkdownProps & {depth: number, ordered: false}} UnorderedListProps\n *\n * @typedef {ComponentType<CodeProps>} CodeComponent\n * @typedef {ComponentType<HeadingProps>} HeadingComponent\n * @typedef {ComponentType<LiProps>} LiComponent\n * @typedef {ComponentType<OrderedListProps>} OrderedListComponent\n * @typedef {ComponentType<TableDataCellProps>} TableDataCellComponent\n * @typedef {ComponentType<TableHeaderCellProps>} TableHeaderCellComponent\n * @typedef {ComponentType<TableRowProps>} TableRowComponent\n * @typedef {ComponentType<UnorderedListProps>} UnorderedListComponent\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableDataCellComponent|ReactMarkdownNames} td\n * @property {TableHeaderCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {Partial<Omit<import('./complex-types.js').NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components\n *\n * @typedef Options\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {TransformLinkTargetType|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */ \n\n\n\n\n\n\n\nconst own = {}.hasOwnProperty;\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set([\n \"table\",\n \"thead\",\n \"tbody\",\n \"tfoot\",\n \"tr\"\n]);\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */ function childrenToReact(context, node) {\n /** @type {Array<ReactNode>} */ const children = [];\n let childIndex = -1;\n /** @type {Comment|Doctype|Element|Raw|Text} */ let child;\n while(++childIndex < node.children.length){\n child = node.children[childIndex];\n if (child.type === \"element\") {\n children.push(toReact(context, child, childIndex, node));\n } else if (child.type === \"text\") {\n // Currently, a warning is triggered by react for *any* white space in\n // tables.\n // So we drop it.\n // See: <https://github.com/facebook/react/pull/7081>.\n // See: <https://github.com/facebook/react/pull/7515>.\n // See: <https://github.com/remarkjs/remark-react/issues/64>.\n // See: <https://github.com/remarkjs/react-markdown/issues/576>.\n if (node.type !== \"element\" || !tableElements.has(node.tagName) || !(0,hast_util_whitespace__WEBPACK_IMPORTED_MODULE_3__.whitespace)(child)) {\n children.push(child.value);\n }\n } else if (child.type === \"raw\" && !context.options.skipHtml) {\n // Default behavior is to show (encoded) HTML.\n children.push(child.value);\n }\n }\n return children;\n}\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */ function toReact(context, node, index, parent) {\n const options = context.options;\n const transform = options.transformLinkUri === undefined ? _uri_transformer_js__WEBPACK_IMPORTED_MODULE_4__.uriTransformer : options.transformLinkUri;\n const parentSchema = context.schema;\n /** @type {ReactMarkdownNames} */ // @ts-expect-error assume a known HTML/SVG element.\n const name = node.tagName;\n /** @type {Record<string, unknown>} */ const properties = {};\n let schema = parentSchema;\n /** @type {string} */ let property;\n if (parentSchema.space === \"html\" && name === \"svg\") {\n schema = property_information__WEBPACK_IMPORTED_MODULE_5__.svg;\n context.schema = schema;\n }\n if (node.properties) {\n for(property in node.properties){\n if (own.call(node.properties, property)) {\n addProperty(properties, property, node.properties[property], context);\n }\n }\n }\n if (name === \"ol\" || name === \"ul\") {\n context.listDepth++;\n }\n const children = childrenToReact(context, node);\n if (name === \"ol\" || name === \"ul\") {\n context.listDepth--;\n }\n // Restore parent schema.\n context.schema = parentSchema;\n // Nodes created by plugins do not have positional info, in which case we use\n // an object that matches the position interface.\n const position = node.position || {\n start: {\n line: null,\n column: null,\n offset: null\n },\n end: {\n line: null,\n column: null,\n offset: null\n }\n };\n const component = options.components && own.call(options.components, name) ? options.components[name] : name;\n const basic = typeof component === \"string\" || component === react__WEBPACK_IMPORTED_MODULE_0__.Fragment;\n if (!react_is__WEBPACK_IMPORTED_MODULE_1__.isValidElementType(component)) {\n throw new TypeError(`Component for name \\`${name}\\` not defined or is not renderable`);\n }\n properties.key = index;\n if (name === \"a\" && options.linkTarget) {\n properties.target = typeof options.linkTarget === \"function\" ? options.linkTarget(String(properties.href || \"\"), node.children, typeof properties.title === \"string\" ? properties.title : null) : options.linkTarget;\n }\n if (name === \"a\" && transform) {\n properties.href = transform(String(properties.href || \"\"), node.children, typeof properties.title === \"string\" ? properties.title : null);\n }\n if (!basic && name === \"code\" && parent.type === \"element\" && parent.tagName !== \"pre\") {\n properties.inline = true;\n }\n if (!basic && (name === \"h1\" || name === \"h2\" || name === \"h3\" || name === \"h4\" || name === \"h5\" || name === \"h6\")) {\n properties.level = Number.parseInt(name.charAt(1), 10);\n }\n if (name === \"img\" && options.transformImageUri) {\n properties.src = options.transformImageUri(String(properties.src || \"\"), String(properties.alt || \"\"), typeof properties.title === \"string\" ? properties.title : null);\n }\n if (!basic && name === \"li\" && parent.type === \"element\") {\n const input = getInputElement(node);\n properties.checked = input && input.properties ? Boolean(input.properties.checked) : null;\n properties.index = getElementsBeforeCount(parent, node);\n properties.ordered = parent.tagName === \"ol\";\n }\n if (!basic && (name === \"ol\" || name === \"ul\")) {\n properties.ordered = name === \"ol\";\n properties.depth = context.listDepth;\n }\n if (name === \"td\" || name === \"th\") {\n if (properties.align) {\n if (!properties.style) properties.style = {};\n // @ts-expect-error assume `style` is an object\n properties.style.textAlign = properties.align;\n delete properties.align;\n }\n if (!basic) {\n properties.isHeader = name === \"th\";\n }\n }\n if (!basic && name === \"tr\" && parent.type === \"element\") {\n properties.isHeader = Boolean(parent.tagName === \"thead\");\n }\n // If `sourcePos` is given, pass source information (line/column info from markdown source).\n if (options.sourcePos) {\n properties[\"data-sourcepos\"] = flattenPosition(position);\n }\n if (!basic && options.rawSourcePos) {\n properties.sourcePosition = node.position;\n }\n // If `includeElementIndex` is given, pass node index info to components.\n if (!basic && options.includeElementIndex) {\n properties.index = getElementsBeforeCount(parent, node);\n properties.siblingCount = getElementsBeforeCount(parent);\n }\n if (!basic) {\n properties.node = node;\n }\n // Ensure no React warnings are emitted for void elements w/ children.\n return children.length > 0 ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(component, properties, children) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(component, properties);\n}\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */ function getInputElement(node) {\n let index = -1;\n while(++index < node.children.length){\n const child = node.children[index];\n if (child.type === \"element\" && child.tagName === \"input\") {\n return child;\n }\n }\n return null;\n}\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */ function getElementsBeforeCount(parent, node) {\n let index = -1;\n let count = 0;\n while(++index < parent.children.length){\n if (parent.children[index] === node) break;\n if (parent.children[index].type === \"element\") count++;\n }\n return count;\n}\n/**\n * @param {Record<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */ function addProperty(props, prop, value, ctx) {\n const info = (0,property_information__WEBPACK_IMPORTED_MODULE_6__.find)(ctx.schema, prop);\n let result = value;\n // Ignore nullish and `NaN` values.\n // eslint-disable-next-line no-self-compare\n if (result === null || result === undefined || result !== result) {\n return;\n }\n // Accept `array`.\n // Most props are space-separated.\n if (Array.isArray(result)) {\n result = info.commaSeparated ? (0,comma_separated_tokens__WEBPACK_IMPORTED_MODULE_7__.stringify)(result) : (0,space_separated_tokens__WEBPACK_IMPORTED_MODULE_8__.stringify)(result);\n }\n if (info.property === \"style\" && typeof result === \"string\") {\n result = parseStyle(result);\n }\n if (info.space && info.property) {\n props[own.call(property_information__WEBPACK_IMPORTED_MODULE_9__.hastToReact, info.property) ? property_information__WEBPACK_IMPORTED_MODULE_9__.hastToReact[info.property] : info.property] = result;\n } else if (info.attribute) {\n props[info.attribute] = result;\n }\n}\n/**\n * @param {string} value\n * @returns {Record<string, string>}\n */ function parseStyle(value) {\n /** @type {Record<string, string>} */ const result = {};\n try {\n (0,style_to_object__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value, iterator);\n } catch {\n // Silent.\n }\n return result;\n /**\n * @param {string} name\n * @param {string} v\n */ function iterator(name, v) {\n const k = name.slice(0, 4) === \"-ms-\" ? `ms-${name.slice(4)}` : name;\n result[k.replace(/-([a-z])/g, styleReplacer)] = v;\n }\n}\n/**\n * @param {unknown} _\n * @param {string} $1\n */ function styleReplacer(_, $1) {\n return $1.toUpperCase();\n}\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */ function flattenPosition(pos) {\n return [\n pos.start.line,\n \":\",\n pos.start.column,\n \"-\",\n pos.end.line,\n \":\",\n pos.end.column\n ].map(String).join(\"\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVhY3QtbWFya2Rvd24vbGliL2FzdC10by1yZWFjdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOzs7Q0FHQyxHQUVEOzs7Q0FHQyxHQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwRkMsR0FFd0I7QUFDSztBQUNpQjtBQUNZO0FBQ0Q7QUFDQTtBQUN2QjtBQUNnQjtBQUVuRCxNQUFNVyxNQUFNLENBQUMsRUFBRUMsY0FBYztBQUU3Qiw2RUFBNkU7QUFDN0UsWUFBWTtBQUNaLE1BQU1DLGdCQUFnQixJQUFJQyxJQUFJO0lBQUM7SUFBUztJQUFTO0lBQVM7SUFBUztDQUFLO0FBRXhFOzs7Q0FHQyxHQUNNLFNBQVNDLGdCQUFnQkMsT0FBTyxFQUFFQyxJQUFJO0lBQzNDLDZCQUE2QixHQUM3QixNQUFNQyxXQUFXLEVBQUU7SUFDbkIsSUFBSUMsYUFBYSxDQUFDO0lBQ2xCLDZDQUE2QyxHQUM3QyxJQUFJQztJQUVKLE1BQU8sRUFBRUQsYUFBYUYsS0FBS0MsUUFBUSxDQUFDRyxNQUFNLENBQUU7UUFDMUNELFFBQVFILEtBQUtDLFFBQVEsQ0FBQ0MsV0FBVztRQUVqQyxJQUFJQyxNQUFNRSxJQUFJLEtBQUssV0FBVztZQUM1QkosU0FBU0ssSUFBSSxDQUFDQyxRQUFRUixTQUFTSSxPQUFPRCxZQUFZRjtRQUNwRCxPQUFPLElBQUlHLE1BQU1FLElBQUksS0FBSyxRQUFRO1lBQ2hDLHNFQUFzRTtZQUN0RSxVQUFVO1lBQ1YsaUJBQWlCO1lBQ2pCLHNEQUFzRDtZQUN0RCxzREFBc0Q7WUFDdEQsNkRBQTZEO1lBQzdELGdFQUFnRTtZQUNoRSxJQUNFTCxLQUFLSyxJQUFJLEtBQUssYUFDZCxDQUFDVCxjQUFjWSxHQUFHLENBQUNSLEtBQUtTLE9BQU8sS0FDL0IsQ0FBQ3hCLGdFQUFVQSxDQUFD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QUFDRixNQUFNO0tBQ2YsQ0FDRTZELEdBQUcsQ0FBQ2pELFFBQ0prRCxJQUFJLENBQUM7QUFDViIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LW1hcmtkb3duL2xpYi9hc3QtdG8tcmVhY3QuanM/NzJkNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdyZWFjdCcpLkNvbXBvbmVudFR5cGU8VD59IENvbXBvbmVudFR5cGU8VD5cbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7aW1wb3J0KCdyZWFjdCcpLkVsZW1lbnRUeXBlfSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdyZWFjdCcpLkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjxUPn0gQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPFQ+XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdyZWFjdCcpLlJlYWN0Tm9kZX0gUmVhY3ROb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvc2l0aW9ufSBQb3NpdGlvblxuICogQHR5cGVkZWYge2ltcG9ydCgnaGFzdCcpLkVsZW1lbnR9IEVsZW1lbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2hhc3QnKS5FbGVtZW50Q29udGVudH0gRWxlbWVudENvbnRlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2hhc3QnKS5Sb290fSBSb290XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdoYXN0JykuVGV4dH0gVGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnaGFzdCcpLkNvbW1lbnR9IENvbW1lbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2hhc3QnKS5Eb2NUeXBlfSBEb2N0eXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdwcm9wZXJ0eS1pbmZvcm1hdGlvbicpLkluZm99IEluZm9cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3Byb3BlcnR5LWluZm9ybWF0aW9uJykuU2NoZW1hfSBTY2hlbWFcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vY29tcGxleC10eXBlcy5qcycpLlJlYWN0TWFya2Rvd25Qcm9wc30gUmVhY3RNYXJrZG93blByb3BzXG4gKlxuICogQHR5cGVkZWYgUmF3XG4gKiBAcHJvcGVydHkgeydyYXcnfSB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdmFsdWVcbiAqXG4gKiBAdHlwZWRlZiBDb250ZXh0XG4gKiBAcHJvcGVydHkge09wdGlvbnN9IG9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U2NoZW1hfSBzY2hlbWFcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsaXN0RGVwdGhcbiAqXG4gKiBAY2FsbGJhY2sgVHJhbnNmb3JtTGlua1xuICogQHBhcmFtIHtzdHJpbmd9IGhyZWZcbiAqIEBwYXJhbSB7QXJyYXk8RWxlbWVudENvbnRlbnQ+fSBjaGlsZHJlblxuICogQHBhcmFtIHtzdHJpbmc/fSB0aXRsZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqXG4gKiBAY2FsbGJhY2sgVHJhbnNmb3JtSW1hZ2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBzcmNcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbHRcbiAqIEBwYXJhbSB7c3RyaW5nP30gdGl0bGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKlxuICogQHR5cGVkZWYge2ltcG9ydCgncmVhY3QnKS5IVE1MQXR0cmlidXRlQW5jaG9yVGFyZ2V0fSBUcmFuc2Zvcm1MaW5rVGFyZ2V0VHlwZVxuICpcbiAqIEBjYWxsYmFjayBUcmFuc2Zvcm1MaW5rVGFyZ2V0XG4gKiBAcGFyYW0ge3N0cmluZ30gaHJlZlxuICogQHBhcmFtIHtBcnJheTxFbGVtZW50Q29udGVudD59IGNoaWxkcmVuXG4gKiBAcGFyYW0ge3N0cmluZz99IHRpdGxlXG4gKiBAcmV0dXJucyB7VHJhbnNmb3JtTGlua1RhcmdldFR5cGV8dW5kZWZpbmVkfVxuICpcbiAqIEB0eXBlZGVmIHtrZXlvZiBKU1guSW50cmluc2ljRWxlbWVudHN9IFJlYWN0TWFya2Rvd25OYW1lc1xuICpcbiAqIFRvIGRvOiBpcyBgZGF0YS1zb3VyY2Vwb3NgIHR5cGVhYmxlP1xuICpcbiAqIEB0eXBlZGVmIHtDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2NvZGUnPiAmIFJlYWN0TWFya2Rvd25Qcm9wcyAmIHtpbmxpbmU/OiBib29sZWFufX0gQ29kZVByb3BzXG4gKiBAdHlwZWRlZiB7Q29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdoMSc+ICYgUmVhY3RNYXJrZG93blByb3BzICYge2xldmVsOiBudW1iZXJ9fSBIZWFkaW5nUHJvcHNcbiAqIEB0eXBlZGVmIHtDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2xpJz4gJiBSZWFjdE1hcmtkb3duUHJvcHMgJiB7Y2hlY2tlZDogYm9vbGVhbnxudWxsLCBpbmRleDogbnVtYmVyLCBvcmRlcmVkOiBib29sZWFufX0gTGlQcm9wc1xuICogQHR5cGVkZWYge0NvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnb2wnPiAmIFJlYWN0TWFya2Rvd25Qcm9wcyAmIHtkZXB0aDogbnVtYmVyLCBvcmRlcmVkOiB0cnVlfX0gT3JkZXJlZExpc3RQcm9wc1xuICogQHR5cGVkZWYge0NvbXBvbmVudFByb3BzV2l0aG91dFJlZjwndGQnPiAmIFJlYWN0TWFya2Rvd25Qcm9wcyAmIHtzdHlsZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBpc0hlYWRlcjogZmFsc2V9fSBUYWJsZURhdGFDZWxsUHJvcHNcbiAqIEB0eXBlZGVmIHtDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J3RoJz4gJiBSZWFjdE1hcmtkb3duUHJvcHMgJiB7c3R5bGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgaXNIZWFkZXI6IHRydWV9fSBUYWJsZUhlYWRlckNlbGxQcm9wc1xuICogQHR5cGVkZWYge0NvbXBvbmVudFByb3BzV2l0aG91dFJlZjwndHInPiAmIFJlYWN0TWFya2Rvd25Qcm9wcyAmIHtpc0hlYWRlcjogYm9vbGVhbn19IFRhYmxlUm93UHJvcHNcbiAqIEB0eXBlZGVmIHtDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J3VsJz4gJiBSZWFjdE1hcmtkb3duUHJvcHMgJiB7ZGVwdGg6IG51bWJlciwgb3JkZXJlZDogZmFsc2V9fSBVbm9yZGVyZWRMaXN0UHJvcHNcbiAqXG4gKiBAdHlwZWRlZiB7Q29tcG9uZW50VHlwZTxDb2RlUHJvcHM+fSBDb2RlQ29tcG9uZW50XG4gKiBAdHlwZWRlZiB7Q29tcG9uZW50VHlwZTxIZWFkaW5nUHJvcHM+fSBIZWFkaW5nQ29tcG9uZW50XG4gKiBAdHlwZWRlZiB7Q29tcG9uZW50VHlwZTxMaVByb3BzPn0gTGlDb21wb25lbnRcbiAqIEB0eXBlZGVmIHtDb21wb25lbnRUeXBlPE9yZGVyZWRMaXN0UHJvcHM+fSBPcmRlcmVkTGlzdENvbXBvbmVudFxuICogQHR5cGVkZWYge0NvbXBvbmVudFR5cGU8VGFibGVEYXRhQ2VsbFByb3BzPn0gVGFibGVEYXRhQ2VsbENvbXBvbmVudFxuICogQHR5cGVkZWYge0NvbXBvbmVudFR5cGU8VGFibGVIZWFkZXJDZWxsUHJvcHM+fSBUYWJsZUhlYWRlckNlbGxDb21wb25lbnRcbiAqIEB0eXBlZGVmIHtDb21wb25lbnRUeXBlPFRhYmxlUm93UHJvcHM+fSBUYWJsZVJvd0NvbXBvbmVudFxuICogQHR5cGVkZWYge0NvbXBvbmVudFR5cGU8VW5vcmRlcmVkTGlzdFByb3BzPn0gVW5vcmRlcmVkTGlzdENvbXBvbmVudFxuICpcbiAqIEB0eXBlZGVmIFNwZWNpYWxDb21wb25lbnRzXG4gKiBAcHJvcGVydHkge0NvZGVDb21wb25lbnR8UmVhY3RNYXJrZG93bk5hbWVzfSBjb2RlXG4gKiBAcHJvcGVydHkge0hlYWRpbmdDb21wb25lbnR8UmVhY3RNYXJrZG93bk5hbWVzfSBoMVxuICogQHByb3BlcnR5IHtIZWFkaW5nQ29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gaDJcbiAqIEBwcm9wZXJ0eSB7SGVhZGluZ0NvbXBvbmVudHxSZWFjdE1hcmtkb3duTmFtZXN9IGgzXG4gKiBAcHJvcGVydHkge0hlYWRpbmdDb21wb25lbnR8UmVhY3RNYXJrZG93bk5hbWVzfSBoNFxuICogQHByb3BlcnR5IHtIZWFkaW5nQ29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gaDVcbiAqIEBwcm9wZXJ0eSB7SGVhZGluZ0NvbXBvbmVudHxSZWFjdE1hcmtkb3duTmFtZXN9IGg2XG4gKiBAcHJvcGVydHkge0xpQ29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gbGlcbiAqIEBwcm9wZXJ0eSB7T3JkZXJlZExpc3RDb21wb25lbnR8UmVhY3RNYXJrZG93bk5hbWVzfSBvbFxuICogQHByb3BlcnR5IHtUYWJsZURhdGFDZWxsQ29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gdGRcbiAqIEBwcm9wZXJ0eSB7VGFibGVIZWFkZXJDZWxsQ29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gdGhcbiAqIEBwcm9wZXJ0eSB7VGFibGVSb3dDb21wb25lbnR8UmVhY3RNYXJrZG93bk5hbWVzfSB0clxuICogQHByb3BlcnR5IHtVbm9yZGVyZWRMaXN0Q29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gdWxcbiAqXG4gKiBAdHlwZWRlZiB7UGFydGlhbDxPbWl0PGltcG9ydCgnLi9jb21wbGV4LXR5cGVzLmpzJykuTm9ybWFsQ29tcG9uZW50cywga2V5b2YgU3BlY2lhbENvbXBvbmVudHM+ICYgU3BlY2lhbENvbXBvbmVudHM+fSBDb21wb25lbnRzXG4gKlxuICogQHR5cGVkZWYgT3B0aW9uc1xuICogQHByb3BlcnR5IHtib29sZWFufSBbc291cmNlUG9zPWZhbHNlXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbcmF3U291cmNlUG9zPWZhbHNlXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbc2tpcEh0bWw9ZmFsc2VdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtpbmNsdWRlRWxlbWVudEluZGV4PWZhbHNlXVxuICogQHByb3BlcnR5IHtudWxsfGZhbHNlfFRyYW5zZm9ybUxpbmt9IFt0cmFuc2Zvcm1MaW5rVXJpXVxuICogQHByb3BlcnR5IHtUcmFuc2Zvcm1JbWFnZX0gW3RyYW5zZm9ybUltYWdlVXJpXVxuICogQHByb3BlcnR5IHtUcmFuc2Zvcm1MaW5rVGFyZ2V0VHlwZXxUcmFuc2Zvcm1MaW5rVGFyZ2V0fSBbbGlua1RhcmdldF1cbiAqIEBwcm9wZXJ0eSB7Q29tcG9uZW50c30gW2NvbXBvbmVudHNdXG4gKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0SXMgZnJvbSAncmVhY3QtaXMnXG5pbXBvcnQge3doaXRlc3BhY2V9IGZyb20gJ2hhc3QtdXRpbC13aGl0ZXNwYWNlJ1xuaW1wb3J0IHtzdmcsIGZpbmQsIGhhc3RUb1JlYWN0fSBmcm9tICdwcm9wZXJ0eS1pbmZvcm1hdGlvbidcbmltcG9ydCB7c3RyaW5naWZ5IGFzIHNwYWNlc30gZnJvbSAnc3BhY2Utc2VwYXJhdGVkLXRva2VucydcbmltcG9ydCB7c3RyaW5naWZ5IGFzIGNvbW1hc30gZnJvbSAnY29tbWEtc2VwYXJhdGVkLXRva2VucydcbmltcG9ydCBzdHlsZSBmcm9tICdzdHlsZS10by1vYmplY3QnXG5pbXBvcnQge3VyaVRyYW5zZm9ybWVyfSBmcm9tICcuL3VyaS10cmFuc2Zvcm1lci5qcydcblxuY29uc3Qgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gVGhlIHRhYmxlLXJlbGF0ZWQgZWxlbWVudHMgdGhhdCBtdXN0IG5vdCBjb250YWluIHdoaXRlc3BhY2UgdGV4dCBhY2NvcmRpbmdcbi8vIHRvIFJlYWN0LlxuY29uc3QgdGFibGVFbGVtZW50cyA9IG5ldyBTZXQoWyd0YWJsZScsICd0aGVhZCcsICd0Ym9keScsICd0Zm9vdCcsICd0ciddKVxuXG4vKipcbiAqIEBwYXJhbSB7Q29udGV4dH0gY29udGV4dFxuICogQHBhcmFtIHtFbGVtZW50fFJvb3R9IG5vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkcmVuVG9SZWFjdChjb250ZXh0LCBub2RlKSB7XG4gIC8qKiBAdHlwZSB7QXJyYXk8UmVhY3ROb2RlPn0gKi9cbiAgY29uc3QgY2hpbGRyZW4gPSBbXVxuICBsZXQgY2hpbGRJbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7Q29tbWVudHxEb2N0eXBlfEVsZW1lbnR8UmF3fFRleHR9ICovXG4gIGxldCBjaGlsZFxuXG4gIHdoaWxlICgrK2NoaWxkSW5kZXggPCBub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGNoaWxkID0gbm9kZS5jaGlsZHJlbltjaGlsZEluZGV4XVxuXG4gICAgaWYgKGNoaWxkLnR5cGUgPT09ICdlbGVtZW50Jykge1xuICAgICAgY2hpbGRyZW4ucHVzaCh0b1JlYWN0KGNvbnRleHQsIGNoaWxkLCBjaGlsZEluZGV4LCBub2RlKSlcbiAgICB9IGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgLy8gQ3VycmVudGx5LCBhIHdhcm5pbmcgaXMgdHJpZ2dlcmVkIGJ5IHJlYWN0IGZvciAqYW55KiB3aGl0ZSBzcGFjZSBpblxuICAgICAgLy8gdGFibGVzLlxuICAgICAgLy8gU28gd2UgZHJvcCBpdC5cbiAgICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcwODE+LlxuICAgICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzUxNT4uXG4gICAgICAvLyBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vcmVtYXJranMvcmVtYXJrLXJlYWN0L2lzc3Vlcy82ND4uXG4gICAgICAvLyBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vcmVtYXJranMvcmVhY3QtbWFya2Rvd24vaXNzdWVzLzU3Nj4uXG4gICAgICBpZiAoXG4gICAgICAgIG5vZGUudHlwZSAhPT0gJ2VsZW1lbnQnIHx8XG4gICAgICAgICF0YWJsZUVsZW1lbnRzLmhhcyhub2RlLnRhZ05hbWUpIHx8XG4gICAgICAgICF3aGl0ZXNwYWNlKGNoaWxkKVxuICAgICAgKSB7XG4gICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQudmFsdWUpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaGlsZC50eXBlID09PSAncmF3JyAmJiAhY29udGV4dC5vcHRpb25zLnNraXBIdG1sKSB7XG4gICAgICAvLyBEZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHNob3cgKGVuY29kZWQpIEhUTUwuXG4gICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkLnZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjaGlsZHJlblxufVxuXG4vKipcbiAqIEBwYXJhbSB7Q29udGV4dH0gY29udGV4dFxuICogQHBhcmFtIHtFbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7RWxlbWVudHxSb290fSBwYXJlbnRcbiAqL1xuZnVuY3Rpb24gdG9SZWFjdChjb250ZXh0LCBub2RlLCBpbmRleCwgcGFyZW50KSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBjb250ZXh0Lm9wdGlvbnNcbiAgY29uc3QgdHJhbnNmb3JtID1cbiAgICBvcHRpb25zLnRyYW5zZm9ybUxpbmtVcmkgPT09IHVuZGVmaW5lZFxuICAgICAgPyB1cmlUcmFuc2Zvcm1lclxuICAgICAgOiBvcHRpb25zLnRyYW5zZm9ybUxpbmtVcmlcbiAgY29uc3QgcGFyZW50U2NoZW1hID0gY29udGV4dC5zY2hlbWFcbiAgLyoqIEB0eXBlIHtSZWFjdE1hcmtkb3duTmFtZXN9ICovXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgYXNzdW1lIGEga25vd24gSFRNTC9TVkcgZWxlbWVudC5cbiAgY29uc3QgbmFtZSA9IG5vZGUudGFnTmFtZVxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAqL1xuICBjb25zdCBwcm9wZXJ0aWVzID0ge31cbiAgbGV0IHNjaGVtYSA9IHBhcmVudFNjaGVtYVxuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgbGV0IHByb3BlcnR5XG5cbiAgaWYgKHBhcmVudFNjaGVtYS5zcGFjZSA9PT0gJ2h0bWwnICYmIG5hbWUgPT09ICdzdmcnKSB7XG4gICAgc2NoZW1hID0gc3ZnXG4gICAgY29udGV4dC5zY2hlbWEgPSBzY2hlbWFcbiAgfVxuXG4gIGlmIChub2RlLnByb3BlcnRpZXMpIHtcbiAgICBmb3IgKHByb3BlcnR5IGluIG5vZGUucHJvcGVydGllcykge1xuICAgICAgaWYgKG93bi5jYWxsKG5vZGUucHJvcGVydGllcywgcHJvcGVydHkpKSB7XG4gICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCBub2RlLnByb3BlcnRpZXNbcHJvcGVydHldLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChuYW1lID09PSAnb2wnIHx8IG5hbWUgPT09ICd1bCcpIHtcbiAgICBjb250ZXh0Lmxpc3REZXB0aCsrXG4gIH1cblxuICBjb25zdCBjaGlsZHJlbiA9IGNoaWxkcmVuVG9SZWFjdChjb250ZXh0LCBub2RlKVxuXG4gIGlmIChuYW1lID09PSAnb2wnIHx8IG5hbWUgPT09ICd1bCcpIHtcbiAgICBjb250ZXh0Lmxpc3REZXB0aC0tXG4gIH1cblxuICAvLyBSZXN0b3JlIHBhcmVudCBzY2hlbWEuXG4gIGNvbnRleHQuc2NoZW1hID0gcGFyZW50U2NoZW1hXG5cbiAgLy8gTm9kZXMgY3JlYXRlZCBieSBwbHVnaW5zIGRvIG5vdCBoYXZlIHBvc2l0aW9uYWwgaW5mbywgaW4gd2hpY2ggY2FzZSB3ZSB1c2VcbiAgLy8gYW4gb2JqZWN0IHRoYXQgbWF0Y2hlcyB0aGUgcG9zaXRpb24gaW50ZXJmYWNlLlxuICBjb25zdCBwb3NpdGlvbiA9IG5vZGUucG9zaXRpb24gfHwge1xuICAgIHN0YXJ0OiB7bGluZTogbnVsbCwgY29sdW1uOiBudWxsLCBvZmZzZXQ6IG51bGx9LFxuICAgIGVuZDoge2xpbmU6IG51bGwsIGNvbHVtbjogbnVsbCwgb2Zmc2V0OiBudWxsfVxuICB9XG4gIGNvbnN0IGNvbXBvbmVudCA9XG4gICAgb3B0aW9ucy5jb21wb25lbnRzICYmIG93bi5jYWxsKG9wdGlvbnMuY29tcG9uZW50cywgbmFtZSlcbiAgICAgID8gb3B0aW9ucy5jb21wb25lbnRzW25hbWVdXG4gICAgICA6IG5hbWVcbiAgY29uc3QgYmFzaWMgPSB0eXBlb2YgY29tcG9uZW50ID09PSAnc3RyaW5nJyB8fCBjb21wb25lbnQgPT09IFJlYWN0LkZyYWdtZW50XG5cbiAgaWYgKCFSZWFjdElzLmlzVmFsaWRFbGVtZW50VHlwZShjb21wb25lbnQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBDb21wb25lbnQgZm9yIG5hbWUgXFxgJHtuYW1lfVxcYCBub3QgZGVmaW5lZCBvciBpcyBub3QgcmVuZGVyYWJsZWBcbiAgICApXG4gIH1cblxuICBwcm9wZXJ0aWVzLmtleSA9IGluZGV4XG5cbiAgaWYgKG5hbWUgPT09ICdhJyAmJiBvcHRpb25zLmxpbmtUYXJnZXQpIHtcbiAgICBwcm9wZXJ0aWVzLnRhcmdldCA9XG4gICAgICB0eXBlb2Ygb3B0aW9ucy5saW5rVGFyZ2V0ID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gb3B0aW9ucy5saW5rVGFyZ2V0KFxuICAgICAgICAgICAgU3RyaW5nKHByb3BlcnRpZXMuaHJlZiB8fCAnJyksXG4gICAgICAgICAgICBub2RlLmNoaWxkcmVuLFxuICAgICAgICAgICAgdHlwZW9mIHByb3BlcnRpZXMudGl0bGUgPT09ICdzdHJpbmcnID8gcHJvcGVydGllcy50aXRsZSA6IG51bGxcbiAgICAgICAgICApXG4gICAgICAgIDogb3B0aW9ucy5saW5rVGFyZ2V0XG4gIH1cblxuICBpZiAobmFtZSA9PT0gJ2EnICYmIHRyYW5zZm9ybSkge1xuICAgIHByb3BlcnRpZXMuaHJlZiA9IHRyYW5zZm9ybShcbiAgICAgIFN0cmluZyhwcm9wZXJ0aWVzLmhyZWYgfHwgJycpLFxuICAgICAgbm9kZS5jaGlsZHJlbixcbiAgICAgIHR5cGVvZiBwcm9wZXJ0aWVzLnRpdGxlID09PSAnc3RyaW5nJyA/IHByb3BlcnRpZXMudGl0bGUgOiBudWxsXG4gICAgKVxuICB9XG5cbiAgaWYgKFxuICAgICFiYXNpYyAmJlxuICAgIG5hbWUgPT09ICdjb2RlJyAmJlxuICAgIHBhcmVudC50eXBlID09PSAnZWxlbWVudCcgJiZcbiAgICBwYXJlbnQudGFnTmFtZSAhPT0gJ3ByZSdcbiAgKSB7XG4gICAgcHJvcGVydGllcy5pbmxpbmUgPSB0cnVlXG4gIH1cblxuICBpZiAoXG4gICAgIWJhc2ljICYmXG4gICAgKG5hbWUgPT09ICdoMScgfHxcbiAgICAgIG5hbWUgPT09ICdoMicgfHxcbiAgICAgIG5hbWUgPT09ICdoMycgfHxcbiAgICAgIG5hbWUgPT09ICdoNCcgfHxcbiAgICAgIG5hbWUgPT09ICdoNScgfHxcbiAgICAgIG5hbWUgPT09ICdoNicpXG4gICkge1xuICAgIHByb3BlcnRpZXMubGV2ZWwgPSBOdW1iZXIucGFyc2VJbnQobmFtZS5jaGFyQXQoMSksIDEwKVxuICB9XG5cbiAgaWYgKG5hbWUgPT09ICdpbWcnICYmIG9wdGlvbnMudHJhbnNmb3JtSW1hZ2VVcmkpIHtcbiAgICBwcm9wZXJ0aWVzLnNyYyA9IG9wdGlvbnMudHJhbnNmb3JtSW1hZ2VVcmkoXG4gICAgICBTdHJpbmcocHJvcGVydGllcy5zcmMgfHwgJycpLFxuICAgICAgU3RyaW5nKHByb3BlcnRpZXMuYWx0IHx8ICcnKSxcbiAgICAgIHR5cGVvZiBwcm9wZXJ0aWVzLnRpdGxlID09PSAnc3RyaW5nJyA/IHByb3BlcnRpZXMudGl0bGUgOiBudWxsXG4gICAgKVxuICB9XG5cbiAgaWYgKCFiYXNpYyAmJiBuYW1lID09PSAnbGknICYmIHBhcmVudC50eXBlID09PSAnZWxlbWVudCcpIHtcbiAgICBjb25zdCBpbnB1dCA9IGdldElucHV0RWxlbWVudChub2RlKVxuICAgIHByb3BlcnRpZXMuY2hlY2tlZCA9XG4gICAgICBpbnB1dCAmJiBpbnB1dC5wcm9wZXJ0aWVzID8gQm9vbGVhbihpbnB1dC5wcm9wZXJ0aWVzLmNoZWNrZWQpIDogbnVsbFxuICAgIHByb3BlcnRpZXMuaW5kZXggPSBnZXRFbGVtZW50c0JlZm9yZUNvdW50KHBhcmVudCwgbm9kZSlcbiAgICBwcm9wZXJ0aWVzLm9yZGVyZWQgPSBwYXJlbnQudGFnTmFtZSA9PT0gJ29sJ1xuICB9XG5cbiAgaWYgKCFiYXNpYyAmJiAobmFtZSA9PT0gJ29sJyB8fCBuYW1lID09PSAndWwnKSkge1xuICAgIHByb3BlcnRpZXMub3JkZXJlZCA9IG5hbWUgPT09ICdvbCdcbiAgICBwcm9wZXJ0aWVzLmRlcHRoID0gY29udGV4dC5saXN0RGVwdGhcbiAgfVxuXG4gIGlmIChuYW1lID09PSAndGQnIHx8IG5hbWUgPT09ICd0aCcpIHtcbiAgICBpZiAocHJvcGVydGllcy5hbGlnbikge1xuICAgICAgaWYgKCFwcm9wZXJ0aWVzLnN0eWxlKSBwcm9wZXJ0aWVzLnN0eWxlID0ge31cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYXNzdW1lIGBzdHlsZWAgaXMgYW4gb2JqZWN0XG4gICAgICBwcm9wZXJ0aWVzLnN0eWxlLnRleHRBbGlnbiA9IHByb3BlcnRpZXMuYWxpZ25cbiAgICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLmFsaWduXG4gICAgfVxuXG4gICAgaWYgKCFiYXNpYykge1xuICAgICAgcHJvcGVydGllcy5pc0hlYWRlciA9IG5hbWUgPT09ICd0aCdcbiAgICB9XG4gIH1cblxuICBpZiAoIWJhc2ljICYmIG5hbWUgPT09ICd0cicgJiYgcGFyZW50LnR5cGUgPT09ICdlbGVtZW50Jykge1xuICAgIHByb3BlcnRpZXMuaXNIZWFkZXIgPSBCb29sZWFuKHBhcmVudC50YWdOYW1lID09PSAndGhlYWQnKVxuICB9XG5cbiAgLy8gSWYgYHNvdXJjZVBvc2AgaXMgZ2l2ZW4sIHBhc3Mgc291cmNlIGluZm9ybWF0aW9uIChsaW5lL2NvbHVtbiBpbmZvIGZyb20gbWFya2Rvd24gc291cmNlKS5cbiAgaWYgKG9wdGlvbnMuc291cmNlUG9zKSB7XG4gICAgcHJvcGVydGllc1snZGF0YS1zb3VyY2Vwb3MnXSA9IGZsYXR0ZW5Qb3NpdGlvbihwb3NpdGlvbilcbiAgfVxuXG4gIGlmICghYmFzaWMgJiYgb3B0aW9ucy5yYXdTb3VyY2VQb3MpIHtcbiAgICBwcm9wZXJ0aWVzLnNvdXJjZVBvc2l0aW9uID0gbm9kZS5wb3NpdGlvblxuICB9XG5cbiAgLy8gSWYgYGluY2x1ZGVFbGVtZW50SW5kZXhgIGlzIGdpdmVuLCBwYXNzIG5vZGUgaW5kZXggaW5mbyB0byBjb21wb25lbnRzLlxuICBpZiAoIWJhc2ljICYmIG9wdGlvbnMuaW5jbHVkZUVsZW1lbnRJbmRleCkge1xuICAgIHByb3BlcnRpZXMuaW5kZXggPSBnZXRFbGVtZW50c0JlZm9yZUNvdW50KHBhcmVudCwgbm9kZSlcbiAgICBwcm9wZXJ0aWVzLnNpYmxpbmdDb3VudCA9IGdldEVsZW1lbnRzQmVmb3JlQ291bnQocGFyZW50KVxuICB9XG5cbiAgaWYgKCFiYXNpYykge1xuICAgIHByb3BlcnRpZXMubm9kZSA9IG5vZGVcbiAgfVxuXG4gIC8vIEVuc3VyZSBubyBSZWFjdCB3YXJuaW5ncyBhcmUgZW1pdHRlZCBmb3Igdm9pZCBlbGVtZW50cyB3LyBjaGlsZHJlbi5cbiAgcmV0dXJuIGNoaWxkcmVuLmxlbmd0aCA+IDBcbiAgICA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCBwcm9wZXJ0aWVzLCBjaGlsZHJlbilcbiAgICA6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCBwcm9wZXJ0aWVzKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudHxSb290fSBub2RlXG4gKiBAcmV0dXJucyB7RWxlbWVudD99XG4gKi9cbmZ1bmN0aW9uIGdldElucHV0RWxlbWVudChub2RlKSB7XG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpbmRleF1cblxuICAgIGlmIChjaGlsZC50eXBlID09PSAnZWxlbWVudCcgJiYgY2hpbGQudGFnTmFtZSA9PT0gJ2lucHV0Jykge1xuICAgICAgcmV0dXJuIGNoaWxkXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnR8Um9vdH0gcGFyZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR9IFtub2RlXVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0RWxlbWVudHNCZWZvcmVDb3VudChwYXJlbnQsIG5vZGUpIHtcbiAgbGV0IGluZGV4ID0gLTFcbiAgbGV0IGNvdW50ID0gMFxuXG4gIHdoaWxlICgrK2luZGV4IDwgcGFyZW50LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGlmIChwYXJlbnQuY2hpbGRyZW5baW5kZXhdID09PSBub2RlKSBicmVha1xuICAgIGlmIChwYXJlbnQuY2hpbGRyZW5baW5kZXhdLnR5cGUgPT09ICdlbGVtZW50JykgY291bnQrK1xuICB9XG5cbiAgcmV0dXJuIGNvdW50XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlXG4gKiBAcGFyYW0ge0NvbnRleHR9IGN0eFxuICovXG5mdW5jdGlvbiBhZGRQcm9wZXJ0eShwcm9wcywgcHJvcCwgdmFsdWUsIGN0eCkge1xuICBjb25zdCBpbmZvID0gZmluZChjdHguc2NoZW1hLCBwcm9wKVxuICBsZXQgcmVzdWx0ID0gdmFsdWVcblxuICAvLyBJZ25vcmUgbnVsbGlzaCBhbmQgYE5hTmAgdmFsdWVzLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIGlmIChyZXN1bHQgPT09IG51bGwgfHwgcmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0ICE9PSByZXN1bHQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIEFjY2VwdCBgYXJyYXlgLlxuICAvLyBNb3N0IHByb3BzIGFyZSBzcGFjZS1zZXBhcmF0ZWQuXG4gIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICByZXN1bHQgPSBpbmZvLmNvbW1hU2VwYXJhdGVkID8gY29tbWFzKHJlc3VsdCkgOiBzcGFjZXMocmVzdWx0KVxuICB9XG5cbiAgaWYgKGluZm8ucHJvcGVydHkgPT09ICdzdHlsZScgJiYgdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXN1bHQgPSBwYXJzZVN0eWxlKHJlc3VsdClcbiAgfVxuXG4gIGlmIChpbmZvLnNwYWNlICYmIGluZm8ucHJvcGVydHkpIHtcbiAgICBwcm9wc1tcbiAgICAgIG93bi5jYWxsKGhhc3RUb1JlYWN0LCBpbmZvLnByb3BlcnR5KVxuICAgICAgICA/IGhhc3RUb1JlYWN0W2luZm8ucHJvcGVydHldXG4gICAgICAgIDogaW5mby5wcm9wZXJ0eVxuICAgIF0gPSByZXN1bHRcbiAgfSBlbHNlIGlmIChpbmZvLmF0dHJpYnV0ZSkge1xuICAgIHByb3BzW2luZm8uYXR0cmlidXRlXSA9IHJlc3VsdFxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn1cbiAqL1xuZnVuY3Rpb24gcGFyc2VTdHlsZSh2YWx1ZSkge1xuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZz59ICovXG4gIGNvbnN0IHJlc3VsdCA9IHt9XG5cbiAgdHJ5IHtcbiAgICBzdHlsZSh2YWx1ZSwgaXRlcmF0b3IpXG4gIH0gY2F0Y2gge1xuICAgIC8vIFNpbGVudC5cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZcbiAgICovXG4gIGZ1bmN0aW9uIGl0ZXJhdG9yKG5hbWUsIHYpIHtcbiAgICBjb25zdCBrID0gbmFtZS5zbGljZSgwLCA0KSA9PT0gJy1tcy0nID8gYG1zLSR7bmFtZS5zbGljZSg0KX1gIDogbmFtZVxuICAgIHJlc3VsdFtrLnJlcGxhY2UoLy0oW2Etel0pL2csIHN0eWxlUmVwbGFjZXIpXSA9IHZcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dW5rbm93bn0gX1xuICogQHBhcmFtIHtzdHJpbmd9ICQxXG4gKi9cbmZ1bmN0aW9uIHN0eWxlUmVwbGFjZXIoXywgJDEpIHtcbiAgcmV0dXJuICQxLnRvVXBwZXJDYXNlKClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1Bvc2l0aW9ufHtzdGFydDoge2xpbmU6IG51bGwsIGNvbHVtbjogbnVsbCwgb2Zmc2V0OiBudWxsfSwgZW5kOiB7bGluZTogbnVsbCwgY29sdW1uOiBudWxsLCBvZmZzZXQ6IG51bGx9fX0gcG9zXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBmbGF0dGVuUG9zaXRpb24ocG9zKSB7XG4gIHJldHVybiBbXG4gICAgcG9zLnN0YXJ0LmxpbmUsXG4gICAgJzonLFxuICAgIHBvcy5zdGFydC5jb2x1bW4sXG4gICAgJy0nLFxuICAgIHBvcy5lbmQubGluZSxcbiAgICAnOicsXG4gICAgcG9zLmVuZC5jb2x1bW5cbiAgXVxuICAgIC5tYXAoU3RyaW5nKVxuICAgIC5qb2luKCcnKVxufVxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiUmVhY3RJcyIsIndoaXRlc3BhY2UiLCJzdmciLCJmaW5kIiwiaGFzdFRvUmVhY3QiLCJzdHJpbmdpZnkiLCJzcGFjZXMiLCJjb21tYXMiLCJzdHlsZSIsInVyaVRyYW5zZm9ybWVyIiwib3duIiwiaGFzT3duUHJvcGVydHkiLCJ0YWJsZUVsZW1lbnRzIiwiU2V0IiwiY2hpbGRyZW5Ub1JlYWN0IiwiY29udGV4dCIsIm5vZGUiLCJjaGlsZHJlbiIsImNoaWxkSW5kZXgiLCJjaGlsZCIsImxlbmd0aCIsInR5cGUiLCJwdXNoIiwidG9SZWFjdCIsImhhcyIsInRhZ05hbWUiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJza2lwSHRtbCIsImluZGV4IiwicGFyZW50IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtTGlua1VyaSIsInVuZGVmaW5lZCIsInBhcmVudFNjaGVtYSIsInNjaGVtYSIsIm5hbWUiLCJwcm9wZXJ0aWVzIiwicHJvcGVydHkiLCJzcGFjZSIsImNhbGwiLCJhZGRQcm9wZXJ0eSIsImxpc3REZXB0aCIsInBvc2l0aW9uIiwic3RhcnQiLCJsaW5lIiwiY29sdW1uIiwib2Zmc2V0IiwiZW5kIiwiY29tcG9uZW50IiwiY29tcG9uZW50cyIsImJhc2ljIiwiRnJhZ21lbnQiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJUeXBlRXJyb3IiLCJrZXkiLCJsaW5rVGFyZ2V0IiwidGFyZ2V0IiwiU3RyaW5nIiwiaHJlZiIsInRpdGxlIiwiaW5saW5lIiwibGV2ZWwiLCJOdW1iZXIiLCJwYXJzZUludCIsImNoYXJBdCIsInRyYW5zZm9ybUltYWdlVXJpIiwic3JjIiwiYWx0IiwiaW5wdXQiLCJnZXRJbnB1dEVsZW1lbnQiLCJjaGVja2VkIiwiQm9vbGVhbiIsImdldEVsZW1lbnRzQmVmb3JlQ291bnQiLCJvcmRlcmVkIiwiZGVwdGgiLCJhbGlnbiIsInRleHRBbGlnbiIsImlzSGVhZGVyIiwic291cmNlUG9zIiwiZmxhdHRlblBvc2l0aW9uIiwicmF3U291cmNlUG9zIiwic291cmNlUG9zaXRpb24iLCJpbmNsdWRlRWxlbWVudEluZGV4Iiwic2libGluZ0NvdW50IiwiY3JlYXRlRWxlbWVudCIsImNvdW50IiwicHJvcHMiLCJwcm9wIiwiY3R4IiwiaW5mbyIsInJlc3VsdCIsIkFycmF5IiwiaXNBcnJheSIsImNvbW1hU2VwYXJhdGVkIiwicGFyc2VTdHlsZSIsImF0dHJpYnV0ZSIsIml0ZXJhdG9yIiwidiIsImsiLCJzbGljZSIsInJlcGxhY2UiLCJzdHlsZVJlcGxhY2VyIiwiXyIsIiQxIiwidG9VcHBlckNhc2UiLCJwb3MiLCJtYXAiLCJqb2luIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/react-markdown/lib/ast-to-react.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/react-markdown/lib/react-markdown.js":
|
|
/*!***********************************************************!*\
|
|
!*** ./node_modules/react-markdown/lib/react-markdown.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 */ ReactMarkdown: () => (/* binding */ ReactMarkdown)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var vfile__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vfile */ \"(ssr)/./node_modules/vfile/lib/index.js\");\n/* harmony import */ var unified__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! unified */ \"(ssr)/./node_modules/unified/lib/index.js\");\n/* harmony import */ var remark_parse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! remark-parse */ \"(ssr)/./node_modules/remark-parse/index.js\");\n/* harmony import */ var remark_rehype__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! remark-rehype */ \"(ssr)/./node_modules/remark-rehype/lib/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! prop-types */ \"(ssr)/./node_modules/prop-types/index.js\");\n/* harmony import */ var property_information__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! property-information */ \"(ssr)/./node_modules/property-information/index.js\");\n/* harmony import */ var _rehype_filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rehype-filter.js */ \"(ssr)/./node_modules/react-markdown/lib/rehype-filter.js\");\n/* harmony import */ var _ast_to_react_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ast-to-react.js */ \"(ssr)/./node_modules/react-markdown/lib/ast-to-react.js\");\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').Options} FilterOptions\n * @typedef {import('./ast-to-react.js').Options} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n * @property {import('remark-rehype').Options | undefined} [remarkRehypeOptions={}]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n *\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */ \n\n\n\n\n\n\n\n\nconst own = {}.hasOwnProperty;\nconst changelog = \"https://github.com/remarkjs/react-markdown/blob/main/changelog.md\";\n/** @type {Record<string, Deprecation>} */ const deprecated = {\n plugins: {\n to: \"remarkPlugins\",\n id: \"change-plugins-to-remarkplugins\"\n },\n renderers: {\n to: \"components\",\n id: \"change-renderers-to-components\"\n },\n astPlugins: {\n id: \"remove-buggy-html-in-markdown-parser\"\n },\n allowDangerousHtml: {\n id: \"remove-buggy-html-in-markdown-parser\"\n },\n escapeHtml: {\n id: \"remove-buggy-html-in-markdown-parser\"\n },\n source: {\n to: \"children\",\n id: \"change-source-to-children\"\n },\n allowNode: {\n to: \"allowElement\",\n id: \"replace-allownode-allowedtypes-and-disallowedtypes\"\n },\n allowedTypes: {\n to: \"allowedElements\",\n id: \"replace-allownode-allowedtypes-and-disallowedtypes\"\n },\n disallowedTypes: {\n to: \"disallowedElements\",\n id: \"replace-allownode-allowedtypes-and-disallowedtypes\"\n },\n includeNodeIndex: {\n to: \"includeElementIndex\",\n id: \"change-includenodeindex-to-includeelementindex\"\n }\n};\n/**\n * React component to render markdown.\n *\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */ function ReactMarkdown(options) {\n for(const key in deprecated){\n if (own.call(deprecated, key) && own.call(options, key)) {\n const deprecation = deprecated[key];\n console.warn(`[react-markdown] Warning: please ${deprecation.to ? `use \\`${deprecation.to}\\` instead of` : \"remove\"} \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`);\n delete deprecated[key];\n }\n }\n const processor = (0,unified__WEBPACK_IMPORTED_MODULE_1__.unified)().use(remark_parse__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).use(options.remarkPlugins || []).use(remark_rehype__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n ...options.remarkRehypeOptions,\n allowDangerousHtml: true\n }).use(options.rehypePlugins || []).use(_rehype_filter_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], options);\n const file = new vfile__WEBPACK_IMPORTED_MODULE_5__.VFile();\n if (typeof options.children === \"string\") {\n file.value = options.children;\n } else if (options.children !== undefined && options.children !== null) {\n console.warn(`[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`);\n }\n const hastNode = processor.runSync(processor.parse(file), file);\n if (hastNode.type !== \"root\") {\n throw new TypeError(\"Expected a `root` node\");\n }\n /** @type {ReactElement} */ let result = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, {}, (0,_ast_to_react_js__WEBPACK_IMPORTED_MODULE_6__.childrenToReact)({\n options,\n schema: property_information__WEBPACK_IMPORTED_MODULE_7__.html,\n listDepth: 0\n }, hastNode));\n if (options.className) {\n result = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: options.className\n }, result);\n }\n return result;\n}\nReactMarkdown.propTypes = {\n // Core options:\n children: prop_types__WEBPACK_IMPORTED_MODULE_8__.string,\n // Layout options:\n className: prop_types__WEBPACK_IMPORTED_MODULE_8__.string,\n // Filter options:\n allowElement: prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n allowedElements: prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8__.string),\n disallowedElements: prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8__.string),\n unwrapDisallowed: prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n // Plugin options:\n remarkPlugins: prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([\n prop_types__WEBPACK_IMPORTED_MODULE_8__.object,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([\n prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.string,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.object,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(// prettier-ignore\n // type-coverage:ignore-next-line\n prop_types__WEBPACK_IMPORTED_MODULE_8__.any)\n ]))\n ])),\n rehypePlugins: prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([\n prop_types__WEBPACK_IMPORTED_MODULE_8__.object,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([\n prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.string,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.object,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.arrayOf(// prettier-ignore\n // type-coverage:ignore-next-line\n prop_types__WEBPACK_IMPORTED_MODULE_8__.any)\n ]))\n ])),\n // Transform options:\n sourcePos: prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n rawSourcePos: prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n skipHtml: prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n includeElementIndex: prop_types__WEBPACK_IMPORTED_MODULE_8__.bool,\n transformLinkUri: prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([\n prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.bool\n ]),\n linkTarget: prop_types__WEBPACK_IMPORTED_MODULE_8__.oneOfType([\n prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n prop_types__WEBPACK_IMPORTED_MODULE_8__.string\n ]),\n transformImageUri: prop_types__WEBPACK_IMPORTED_MODULE_8__.func,\n components: prop_types__WEBPACK_IMPORTED_MODULE_8__.object\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVhY3QtbWFya2Rvd24vbGliL3JlYWN0LW1hcmtkb3duLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBd0JDLEdBRXdCO0FBQ0U7QUFDSTtBQUNPO0FBQ0U7QUFDTjtBQUNPO0FBQ0k7QUFDSTtBQUVqRCxNQUFNUyxNQUFNLENBQUMsRUFBRUMsY0FBYztBQUM3QixNQUFNQyxZQUNKO0FBRUYsd0NBQXdDLEdBQ3hDLE1BQU1DLGFBQWE7SUFDakJDLFNBQVM7UUFBQ0MsSUFBSTtRQUFpQkMsSUFBSTtJQUFpQztJQUNwRUMsV0FBVztRQUFDRixJQUFJO1FBQWNDLElBQUk7SUFBZ0M7SUFDbEVFLFlBQVk7UUFBQ0YsSUFBSTtJQUFzQztJQUN2REcsb0JBQW9CO1FBQUNILElBQUk7SUFBc0M7SUFDL0RJLFlBQVk7UUFBQ0osSUFBSTtJQUFzQztJQUN2REssUUFBUTtRQUFDTixJQUFJO1FBQVlDLElBQUk7SUFBMkI7SUFDeERNLFdBQVc7UUFDVFAsSUFBSTtRQUNKQyxJQUFJO0lBQ047SUFDQU8sY0FBYztRQUNaUixJQUFJO1FBQ0pDLElBQUk7SUFDTjtJQUNBUSxpQkFBaUI7UUFDZlQsSUFBSTtRQUNKQyxJQUFJO0lBQ047SUFDQVMsa0JBQWtCO1FBQ2hCVixJQUFJO1FBQ0pDLElBQUk7SUFDTjtBQUNGO0FBRUE7Ozs7O0NBS0MsR0FDTSxTQUFTVSxjQUFjQyxPQUFPO0lBQ25DLElBQUssTUFBTUMsT0FBT2YsV0FBWTtRQUM1QixJQUFJSCxJQUFJbUIsSUFBSSxDQUFDaEIsWUFBWWUsUUFBUWxCLElBQUltQixJQUFJLENBQUNGLFNBQVNDLE1BQU07WUFDdkQsTUFBTUUsY0FBY2pCLFVBQVUsQ0FBQ2UsSUFBSTtZQUNuQ0csUUFBUUMsSUFBSSxDQUNWLENBQUMsaUNBQWlDLEVBQ2hDRixZQUFZZixFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUVlLFlBQVlmLEVBQUUsQ0FBQyxh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SUFDdEVnRSxZQUFZaEUsaURBQW1CLENBQUM7UUFBQ0EsNENBQWM7UUFBRUEsOENBQWdCO0tBQUM7SUFDbEVpRSxtQkFBbUJqRSw0Q0FBYztJQUNqQ2tFLFlBQVlsRSw4Q0FBZ0I7QUFDOUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9yZWFjdC1tYXJrZG93bi9saWIvcmVhY3QtbWFya2Rvd24uanM/YmQzZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3JlYWN0JykuUmVhY3ROb2RlfSBSZWFjdE5vZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3JlYWN0JykuUmVhY3RFbGVtZW50PHt9Pn0gUmVhY3RFbGVtZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlmaWVkJykuUGx1Z2dhYmxlTGlzdH0gUGx1Z2dhYmxlTGlzdFxuICogQHR5cGVkZWYge2ltcG9ydCgnaGFzdCcpLlJvb3R9IFJvb3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vcmVoeXBlLWZpbHRlci5qcycpLk9wdGlvbnN9IEZpbHRlck9wdGlvbnNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vYXN0LXRvLXJlYWN0LmpzJykuT3B0aW9uc30gVHJhbnNmb3JtT3B0aW9uc1xuICpcbiAqIEB0eXBlZGVmIENvcmVPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2hpbGRyZW5cbiAqXG4gKiBAdHlwZWRlZiBQbHVnaW5PcHRpb25zXG4gKiBAcHJvcGVydHkge1BsdWdnYWJsZUxpc3R9IFtyZW1hcmtQbHVnaW5zPVtdXVxuICogQHByb3BlcnR5IHtQbHVnZ2FibGVMaXN0fSBbcmVoeXBlUGx1Z2lucz1bXV1cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdyZW1hcmstcmVoeXBlJykuT3B0aW9ucyB8IHVuZGVmaW5lZH0gW3JlbWFya1JlaHlwZU9wdGlvbnM9e31dXG4gKlxuICogQHR5cGVkZWYgTGF5b3V0T3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjbGFzc05hbWVdXG4gKlxuICogQHR5cGVkZWYge0NvcmVPcHRpb25zICYgUGx1Z2luT3B0aW9ucyAmIExheW91dE9wdGlvbnMgJiBGaWx0ZXJPcHRpb25zICYgVHJhbnNmb3JtT3B0aW9uc30gUmVhY3RNYXJrZG93bk9wdGlvbnNcbiAqXG4gKiBAdHlwZWRlZiBEZXByZWNhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IGlkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3RvXVxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7VkZpbGV9IGZyb20gJ3ZmaWxlJ1xuaW1wb3J0IHt1bmlmaWVkfSBmcm9tICd1bmlmaWVkJ1xuaW1wb3J0IHJlbWFya1BhcnNlIGZyb20gJ3JlbWFyay1wYXJzZSdcbmltcG9ydCByZW1hcmtSZWh5cGUgZnJvbSAncmVtYXJrLXJlaHlwZSdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7aHRtbH0gZnJvbSAncHJvcGVydHktaW5mb3JtYXRpb24nXG5pbXBvcnQgcmVoeXBlRmlsdGVyIGZyb20gJy4vcmVoeXBlLWZpbHRlci5qcydcbmltcG9ydCB7Y2hpbGRyZW5Ub1JlYWN0fSBmcm9tICcuL2FzdC10by1yZWFjdC5qcydcblxuY29uc3Qgb3duID0ge30uaGFzT3duUHJvcGVydHlcbmNvbnN0IGNoYW5nZWxvZyA9XG4gICdodHRwczovL2dpdGh1Yi5jb20vcmVtYXJranMvcmVhY3QtbWFya2Rvd24vYmxvYi9tYWluL2NoYW5nZWxvZy5tZCdcblxuLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBEZXByZWNhdGlvbj59ICovXG5jb25zdCBkZXByZWNhdGVkID0ge1xuICBwbHVnaW5zOiB7dG86ICdyZW1hcmtQbHVnaW5zJywgaWQ6ICdjaGFuZ2UtcGx1Z2lucy10by1yZW1hcmtwbHVnaW5zJ30sXG4gIHJlbmRlcmVyczoge3RvOiAnY29tcG9uZW50cycsIGlkOiAnY2hhbmdlLXJlbmRlcmVycy10by1jb21wb25lbnRzJ30sXG4gIGFzdFBsdWdpbnM6IHtpZDogJ3JlbW92ZS1idWdneS1odG1sLWluLW1hcmtkb3duLXBhcnNlcid9LFxuICBhbGxvd0Rhbmdlcm91c0h0bWw6IHtpZDogJ3JlbW92ZS1idWdneS1odG1sLWluLW1hcmtkb3duLXBhcnNlcid9LFxuICBlc2NhcGVIdG1sOiB7aWQ6ICdyZW1vdmUtYnVnZ3ktaHRtbC1pbi1tYXJrZG93bi1wYXJzZXInfSxcbiAgc291cmNlOiB7dG86ICdjaGlsZHJlbicsIGlkOiAnY2hhbmdlLXNvdXJjZS10by1jaGlsZHJlbid9LFxuICBhbGxvd05vZGU6IHtcbiAgICB0bzogJ2FsbG93RWxlbWVudCcsXG4gICAgaWQ6ICdyZXBsYWNlLWFsbG93bm9kZS1hbGxvd2VkdHlwZXMtYW5kLWRpc2FsbG93ZWR0eXBlcydcbiAgfSxcbiAgYWxsb3dlZFR5cGVzOiB7XG4gICAgdG86ICdhbGxvd2VkRWxlbWVudHMnLFxuICAgIGlkOiAncmVwbGFjZS1hbGxvd25vZGUtYWxsb3dlZHR5cGVzLWFuZC1kaXNhbGxvd2VkdHlwZXMnXG4gIH0sXG4gIGRpc2FsbG93ZWRUeXBlczoge1xuICAgIHRvOiAnZGlzYWxsb3dlZEVsZW1lbnRzJyxcbiAgICBpZDogJ3JlcGxhY2UtYWxsb3dub2RlLWFsbG93ZWR0eXBlcy1hbmQtZGlzYWxsb3dlZHR5cGVzJ1xuICB9LFxuICBpbmNsdWRlTm9kZUluZGV4OiB7XG4gICAgdG86ICdpbmNsdWRlRWxlbWVudEluZGV4JyxcbiAgICBpZDogJ2NoYW5nZS1pbmNsdWRlbm9kZWluZGV4LXRvLWluY2x1ZGVlbGVtZW50aW5kZXgnXG4gIH1cbn1cblxuLyoqXG4gKiBSZWFjdCBjb21wb25lbnQgdG8gcmVuZGVyIG1hcmtkb3duLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RNYXJrZG93bk9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtSZWFjdEVsZW1lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdE1hcmtkb3duKG9wdGlvbnMpIHtcbiAgZm9yIChjb25zdCBrZXkgaW4gZGVwcmVjYXRlZCkge1xuICAgIGlmIChvd24uY2FsbChkZXByZWNhdGVkLCBrZXkpICYmIG93bi5jYWxsKG9wdGlvbnMsIGtleSkpIHtcbiAgICAgIGNvbnN0IGRlcHJlY2F0aW9uID0gZGVwcmVjYXRlZFtrZXldXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbcmVhY3QtbWFya2Rvd25dIFdhcm5pbmc6IHBsZWFzZSAke1xuICAgICAgICAgIGRlcHJlY2F0aW9uLnRvID8gYHVzZSBcXGAke2RlcHJlY2F0aW9uLnRvfVxcYCBpbnN0ZWFkIG9mYCA6ICdyZW1vdmUnXG4gICAgICAgIH0gXFxgJHtrZXl9XFxgIChzZWUgPCR7Y2hhbmdlbG9nfSMke2RlcHJlY2F0aW9uLmlkfT4gZm9yIG1vcmUgaW5mbylgXG4gICAgICApXG4gICAgICBkZWxldGUgZGVwcmVjYXRlZFtrZXldXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJvY2Vzc29yID0gdW5pZmllZCgpXG4gICAgLnVzZShyZW1hcmtQYXJzZSlcbiAgICAudXNlKG9wdGlvbnMucmVtYXJrUGx1Z2lucyB8fCBbXSlcbiAgICAudXNlKHJlbWFya1JlaHlwZSwge1xuICAgICAgLi4ub3B0aW9ucy5yZW1hcmtSZWh5cGVPcHRpb25zLFxuICAgICAgYWxsb3dEYW5nZXJvdXNIdG1sOiB0cnVlXG4gICAgfSlcbiAgICAudXNlKG9wdGlvbnMucmVoeXBlUGx1Z2lucyB8fCBbXSlcbiAgICAudXNlKHJlaHlwZUZpbHRlciwgb3B0aW9ucylcblxuICBjb25zdCBmaWxlID0gbmV3IFZGaWxlKClcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuY2hpbGRyZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgZmlsZS52YWx1ZSA9IG9wdGlvbnMuY2hpbGRyZW5cbiAgfSBlbHNlIGlmIChvcHRpb25zLmNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5jaGlsZHJlbiAhPT0gbnVsbCkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGBbcmVhY3QtbWFya2Rvd25dIFdhcm5pbmc6IHBsZWFzZSBwYXNzIGEgc3RyaW5nIGFzIFxcYGNoaWxkcmVuXFxgIChub3Q6IFxcYCR7b3B0aW9ucy5jaGlsZHJlbn1cXGApYFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhc3ROb2RlID0gcHJvY2Vzc29yLnJ1blN5bmMocHJvY2Vzc29yLnBhcnNlKGZpbGUpLCBmaWxlKVxuXG4gIGlmIChoYXN0Tm9kZS50eXBlICE9PSAncm9vdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIGByb290YCBub2RlJylcbiAgfVxuXG4gIC8qKiBAdHlwZSB7UmVhY3RFbGVtZW50fSAqL1xuICBsZXQgcmVzdWx0ID0gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICBSZWFjdC5GcmFnbWVudCxcbiAgICB7fSxcbiAgICBjaGlsZHJlblRvUmVhY3Qoe29wdGlvbnMsIHNjaGVtYTogaHRtbCwgbGlzdERlcHRoOiAwfSwgaGFzdE5vZGUpXG4gIClcblxuICBpZiAob3B0aW9ucy5jbGFzc05hbWUpIHtcbiAgICByZXN1bHQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnLCB7Y2xhc3NOYW1lOiBvcHRpb25zLmNsYXNzTmFtZX0sIHJlc3VsdClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuUmVhY3RNYXJrZG93bi5wcm9wVHlwZXMgPSB7XG4gIC8vIENvcmUgb3B0aW9uczpcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8vIExheW91dCBvcHRpb25zOlxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8vIEZpbHRlciBvcHRpb25zOlxuICBhbGxvd0VsZW1lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICBhbGxvd2VkRWxlbWVudHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICBkaXNhbGxvd2VkRWxlbWVudHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICB1bndyYXBEaXNhbGxvd2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLy8gUGx1Z2luIG9wdGlvbnM6XG4gIHJlbWFya1BsdWdpbnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIFByb3BUeXBlcy5mdW5jLFxuICAgICAgUHJvcFR5cGVzLmFycmF5T2YoXG4gICAgICAgIFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgICAgIFByb3BUeXBlcy5ib29sLFxuICAgICAgICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgICAgUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgICBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgICBQcm9wVHlwZXMuYXJyYXlPZihcbiAgICAgICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgLy8gdHlwZS1jb3ZlcmFnZTppZ25vcmUtbmV4dC1saW5lXG4gICAgICAgICAgICBQcm9wVHlwZXMuYW55XG4gICAgICAgICAgKVxuICAgICAgICBdKVxuICAgICAgKVxuICAgIF0pXG4gICksXG4gIHJlaHlwZVBsdWdpbnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIFByb3BUeXBlcy5mdW5jLFxuICAgICAgUHJvcFR5cGVzLmFycmF5T2YoXG4gICAgICAgIFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgICAgIFByb3BUeXBlcy5ib29sLFxuICAgICAgICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgICAgUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgICBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgICBQcm9wVHlwZXMuYXJyYXlPZihcbiAgICAgICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgLy8gdHlwZS1jb3ZlcmFnZTppZ25vcmUtbmV4dC1saW5lXG4gICAgICAgICAgICBQcm9wVHlwZXMuYW55XG4gICAgICAgICAgKVxuICAgICAgICBdKVxuICAgICAgKVxuICAgIF0pXG4gICksXG4gIC8vIFRyYW5zZm9ybSBvcHRpb25zOlxuICBzb3VyY2VQb3M6IFByb3BUeXBlcy5ib29sLFxuICByYXdTb3VyY2VQb3M6IFByb3BUeXBlcy5ib29sLFxuICBza2lwSHRtbDogUHJvcFR5cGVzLmJvb2wsXG4gIGluY2x1ZGVFbGVtZW50SW5kZXg6IFByb3BUeXBlcy5ib29sLFxuICB0cmFuc2Zvcm1MaW5rVXJpOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLmJvb2xdKSxcbiAgbGlua1RhcmdldDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgdHJhbnNmb3JtSW1hZ2VVcmk6IFByb3BUeXBlcy5mdW5jLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJWRmlsZSIsInVuaWZpZWQiLCJyZW1hcmtQYXJzZSIsInJlbWFya1JlaHlwZSIsIlByb3BUeXBlcyIsImh0bWwiLCJyZWh5cGVGaWx0ZXIiLCJjaGlsZHJlblRvUmVhY3QiLCJvd24iLCJoYXNPd25Qcm9wZXJ0eSIsImNoYW5nZWxvZyIsImRlcHJlY2F0ZWQiLCJwbHVnaW5zIiwidG8iLCJpZCIsInJlbmRlcmVycyIsImFzdFBsdWdpbnMiLCJhbGxvd0Rhbmdlcm91c0h0bWwiLCJlc2NhcGVIdG1sIiwic291cmNlIiwiYWxsb3dOb2RlIiwiYWxsb3dlZFR5cGVzIiwiZGlzYWxsb3dlZFR5cGVzIiwiaW5jbHVkZU5vZGVJbmRleCIsIlJlYWN0TWFya2Rvd24iLCJvcHRpb25zIiwia2V5IiwiY2FsbCIsImRlcHJlY2F0aW9uIiwiY29uc29sZSIsIndhcm4iLCJwcm9jZXNzb3IiLCJ1c2UiLCJyZW1hcmtQbHVnaW5zIiwicmVtYXJrUmVoeXBlT3B0aW9ucyIsInJlaHlwZVBsdWdpbnMiLCJmaWxlIiwiY2hpbGRyZW4iLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImhhc3ROb2RlIiwicnVuU3luYyIsInBhcnNlIiwidHlwZSIsIlR5cGVFcnJvciIsInJlc3VsdCIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsInNjaGVtYSIsImxpc3REZXB0aCIsImNsYXNzTmFtZSIsInByb3BUeXBlcyIsInN0cmluZyIsImFsbG93RWxlbWVudCIsImZ1bmMiLCJhbGxvd2VkRWxlbWVudHMiLCJhcnJheU9mIiwiZGlzYWxsb3dlZEVsZW1lbnRzIiwidW53cmFwRGlzYWxsb3dlZCIsImJvb2wiLCJvbmVPZlR5cGUiLCJvYmplY3QiLCJhbnkiLCJzb3VyY2VQb3MiLCJyYXdTb3VyY2VQb3MiLCJza2lwSHRtbCIsImluY2x1ZGVFbGVtZW50SW5kZXgiLCJ0cmFuc2Zvcm1MaW5rVXJpIiwibGlua1RhcmdldCIsInRyYW5zZm9ybUltYWdlVXJpIiwiY29tcG9uZW50cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/react-markdown/lib/react-markdown.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/react-markdown/lib/rehype-filter.js":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/react-markdown/lib/rehype-filter.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 */ \"default\": () => (/* binding */ rehypeFilter)\n/* harmony export */ });\n/* harmony import */ var unist_util_visit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unist-util-visit */ \"(ssr)/./node_modules/unist-util-visit/lib/index.js\");\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef Options\n * @property {Array<string>} [allowedElements]\n * @property {Array<string>} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */ /**\n * @type {import('unified').Plugin<[Options], Root>}\n */ function rehypeFilter(options) {\n if (options.allowedElements && options.disallowedElements) {\n throw new TypeError(\"Only one of `allowedElements` and `disallowedElements` should be defined\");\n }\n if (options.allowedElements || options.disallowedElements || options.allowElement) {\n return (tree)=>{\n (0,unist_util_visit__WEBPACK_IMPORTED_MODULE_0__.visit)(tree, \"element\", (node, index, parent_)=>{\n const parent = /** @type {Element|Root} */ parent_;\n /** @type {boolean|undefined} */ let remove;\n if (options.allowedElements) {\n remove = !options.allowedElements.includes(node.tagName);\n } else if (options.disallowedElements) {\n remove = options.disallowedElements.includes(node.tagName);\n }\n if (!remove && options.allowElement && typeof index === \"number\") {\n remove = !options.allowElement(node, index, parent);\n }\n if (remove && typeof index === \"number\") {\n if (options.unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children);\n } else {\n parent.children.splice(index, 1);\n }\n return index;\n }\n return undefined;\n });\n };\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVhY3QtbWFya2Rvd24vbGliL3JlaHlwZS1maWx0ZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FFRDs7Q0FFQyxHQUNjLFNBQVNDLGFBQWFDLE9BQU87SUFDMUMsSUFBSUEsUUFBUUMsZUFBZSxJQUFJRCxRQUFRRSxrQkFBa0IsRUFBRTtRQUN6RCxNQUFNLElBQUlDLFVBQ1I7SUFFSjtJQUVBLElBQ0VILFFBQVFDLGVBQWUsSUFDdkJELFFBQVFFLGtCQUFrQixJQUMxQkYsUUFBUUksWUFBWSxFQUNwQjtRQUNBLE9BQU8sQ0FBQ0M7WUFDTlAsdURBQUtBLENBQUNPLE1BQU0sV0FBVyxDQUFDQyxNQUFNQyxPQUFPQztnQkFDbkMsTUFBTUMsU0FBUyx5QkFBeUIsR0FBSUQ7Z0JBQzVDLDhCQUE4QixHQUM5QixJQUFJRTtnQkFFSixJQUFJVixRQUFRQyxlQUFlLEVBQUU7b0JBQzNCUyxTQUFTLENBQUNWLFFBQVFDLGVBQWUsQ0FBQ1UsUUFBUSxDQUFDTCxLQUFLTSxPQUFPO2dCQUN6RCxPQUFPLElBQUlaLFFBQVFFLGtCQUFrQixFQUFFO29CQUNyQ1EsU0FBU1YsUUFBUUUsa0JBQWtCLENBQUNTLFFBQVEsQ0FBQ0wsS0FBS00sT0FBTztnQkFDM0Q7Z0JBRUEsSUFBSSxDQUFDRixVQUFVVixRQUFRSSxZQUFZLElBQUksT0FBT0csVUFBVSxVQUFVO29CQUNoRUcsU0FBUyxDQUFDVixRQUFRSSxZQUFZLENBQUNFLE1BQU1DLE9BQU9FO2dCQUM5QztnQkFFQSxJQUFJQyxVQUFVLE9BQU9ILFVBQVUsVUFBVTtvQkFDdkMsSUFBSVAsUUFBUWEsZ0JBQWdCLElBQUlQLEtBQUtRLFFBQVEsRUFBRTt3QkFDN0NMLE9BQU9LLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDUixPQUFPLE1BQU1ELEtBQUtRLFFBQVE7b0JBQ25ELE9BQU87d0JBQ0xMLE9BQU9LLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDUixPQUFPO29CQUNoQztvQkFFQSxPQUFPQTtnQkFDVDtnQkFFQSxPQUFPUztZQUNUO1FBQ0Y7SUFDRjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvcmVhY3QtbWFya2Rvd24vbGliL3JlaHlwZS1maWx0ZXIuanM/NTVkZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Zpc2l0fSBmcm9tICd1bmlzdC11dGlsLXZpc2l0J1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuTm9kZX0gTm9kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnaGFzdCcpLlJvb3R9IFJvb3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2hhc3QnKS5FbGVtZW50fSBFbGVtZW50XG4gKlxuICogQGNhbGxiYWNrIEFsbG93RWxlbWVudFxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7RWxlbWVudHxSb290fSBwYXJlbnRcbiAqIEByZXR1cm5zIHtib29sZWFufHVuZGVmaW5lZH1cbiAqXG4gKiBAdHlwZWRlZiBPcHRpb25zXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZz59IFthbGxvd2VkRWxlbWVudHNdXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZz59IFtkaXNhbGxvd2VkRWxlbWVudHM9W11dXG4gKiBAcHJvcGVydHkge0FsbG93RWxlbWVudH0gW2FsbG93RWxlbWVudF1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3Vud3JhcERpc2FsbG93ZWQ9ZmFsc2VdXG4gKi9cblxuLyoqXG4gKiBAdHlwZSB7aW1wb3J0KCd1bmlmaWVkJykuUGx1Z2luPFtPcHRpb25zXSwgUm9vdD59XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlaHlwZUZpbHRlcihvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLmFsbG93ZWRFbGVtZW50cyAmJiBvcHRpb25zLmRpc2FsbG93ZWRFbGVtZW50cykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnT25seSBvbmUgb2YgYGFsbG93ZWRFbGVtZW50c2AgYW5kIGBkaXNhbGxvd2VkRWxlbWVudHNgIHNob3VsZCBiZSBkZWZpbmVkJ1xuICAgIClcbiAgfVxuXG4gIGlmIChcbiAgICBvcHRpb25zLmFsbG93ZWRFbGVtZW50cyB8fFxuICAgIG9wdGlvbnMuZGlzYWxsb3dlZEVsZW1lbnRzIHx8XG4gICAgb3B0aW9ucy5hbGxvd0VsZW1lbnRcbiAgKSB7XG4gICAgcmV0dXJuICh0cmVlKSA9PiB7XG4gICAgICB2aXNpdCh0cmVlLCAnZWxlbWVudCcsIChub2RlLCBpbmRleCwgcGFyZW50XykgPT4ge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSAvKiogQHR5cGUge0VsZW1lbnR8Um9vdH0gKi8gKHBhcmVudF8pXG4gICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbnx1bmRlZmluZWR9ICovXG4gICAgICAgIGxldCByZW1vdmVcblxuICAgICAgICBpZiAob3B0aW9ucy5hbGxvd2VkRWxlbWVudHMpIHtcbiAgICAgICAgICByZW1vdmUgPSAhb3B0aW9ucy5hbGxvd2VkRWxlbWVudHMuaW5jbHVkZXMobm9kZS50YWdOYW1lKVxuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGlzYWxsb3dlZEVsZW1lbnRzKSB7XG4gICAgICAgICAgcmVtb3ZlID0gb3B0aW9ucy5kaXNhbGxvd2VkRWxlbWVudHMuaW5jbHVkZXMobm9kZS50YWdOYW1lKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZW1vdmUgJiYgb3B0aW9ucy5hbGxvd0VsZW1lbnQgJiYgdHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJlbW92ZSA9ICFvcHRpb25zLmFsbG93RWxlbWVudChub2RlLCBpbmRleCwgcGFyZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlbW92ZSAmJiB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMudW53cmFwRGlzYWxsb3dlZCAmJiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxLCAuLi5ub2RlLmNoaWxkcmVuKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBpbmRleFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ2aXNpdCIsInJlaHlwZUZpbHRlciIsIm9wdGlvbnMiLCJhbGxvd2VkRWxlbWVudHMiLCJkaXNhbGxvd2VkRWxlbWVudHMiLCJUeXBlRXJyb3IiLCJhbGxvd0VsZW1lbnQiLCJ0cmVlIiwibm9kZSIsImluZGV4IiwicGFyZW50XyIsInBhcmVudCIsInJlbW92ZSIsImluY2x1ZGVzIiwidGFnTmFtZSIsInVud3JhcERpc2FsbG93ZWQiLCJjaGlsZHJlbiIsInNwbGljZSIsInVuZGVmaW5lZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/react-markdown/lib/rehype-filter.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/react-markdown/lib/uri-transformer.js":
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/react-markdown/lib/uri-transformer.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 */ uriTransformer: () => (/* binding */ uriTransformer)\n/* harmony export */ });\nconst protocols = [\n \"http\",\n \"https\",\n \"mailto\",\n \"tel\"\n];\n/**\n * @param {string} uri\n * @returns {string}\n */ function uriTransformer(uri) {\n const url = (uri || \"\").trim();\n const first = url.charAt(0);\n if (first === \"#\" || first === \"/\") {\n return url;\n }\n const colon = url.indexOf(\":\");\n if (colon === -1) {\n return url;\n }\n let index = -1;\n while(++index < protocols.length){\n const protocol = protocols[index];\n if (colon === protocol.length && url.slice(0, protocol.length).toLowerCase() === protocol) {\n return url;\n }\n }\n index = url.indexOf(\"?\");\n if (index !== -1 && colon > index) {\n return url;\n }\n index = url.indexOf(\"#\");\n if (index !== -1 && colon > index) {\n return url;\n }\n // eslint-disable-next-line no-script-url\n return \"javascript:void(0)\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVhY3QtbWFya2Rvd24vbGliL3VyaS10cmFuc2Zvcm1lci5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTUEsWUFBWTtJQUFDO0lBQVE7SUFBUztJQUFVO0NBQU07QUFFcEQ7OztDQUdDLEdBQ00sU0FBU0MsZUFBZUMsR0FBRztJQUNoQyxNQUFNQyxNQUFNLENBQUNELE9BQU8sRUFBQyxFQUFHRSxJQUFJO0lBQzVCLE1BQU1DLFFBQVFGLElBQUlHLE1BQU0sQ0FBQztJQUV6QixJQUFJRCxVQUFVLE9BQU9BLFVBQVUsS0FBSztRQUNsQyxPQUFPRjtJQUNUO0lBRUEsTUFBTUksUUFBUUosSUFBSUssT0FBTyxDQUFDO0lBQzFCLElBQUlELFVBQVUsQ0FBQyxHQUFHO1FBQ2hCLE9BQU9KO0lBQ1Q7SUFFQSxJQUFJTSxRQUFRLENBQUM7SUFFYixNQUFPLEVBQUVBLFFBQVFULFVBQVVVLE1BQU0sQ0FBRTtRQUNqQyxNQUFNQyxXQUFXWCxTQUFTLENBQUNTLE1BQU07UUFFakMsSUFDRUYsVUFBVUksU0FBU0QsTUFBTSxJQUN6QlAsSUFBSVMsS0FBSyxDQUFDLEdBQUdELFNBQVNELE1BQU0sRUFBRUcsV0FBVyxPQUFPRixVQUNoRDtZQUNBLE9BQU9SO1FBQ1Q7SUFDRjtJQUVBTSxRQUFRTixJQUFJSyxPQUFPLENBQUM7SUFDcEIsSUFBSUMsVUFBVSxDQUFDLEtBQUtGLFFBQVFFLE9BQU87UUFDakMsT0FBT047SUFDVDtJQUVBTSxRQUFRTixJQUFJSyxPQUFPLENBQUM7SUFDcEIsSUFBSUMsVUFBVSxDQUFDLEtBQUtGLFFBQVFFLE9BQU87UUFDakMsT0FBT047SUFDVDtJQUVBLHlDQUF5QztJQUN6QyxPQUFPO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9yZWFjdC1tYXJrZG93bi9saWIvdXJpLXRyYW5zZm9ybWVyLmpzP2ZhM2UiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcHJvdG9jb2xzID0gWydodHRwJywgJ2h0dHBzJywgJ21haWx0bycsICd0ZWwnXVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmlcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cmlUcmFuc2Zvcm1lcih1cmkpIHtcbiAgY29uc3QgdXJsID0gKHVyaSB8fCAnJykudHJpbSgpXG4gIGNvbnN0IGZpcnN0ID0gdXJsLmNoYXJBdCgwKVxuXG4gIGlmIChmaXJzdCA9PT0gJyMnIHx8IGZpcnN0ID09PSAnLycpIHtcbiAgICByZXR1cm4gdXJsXG4gIH1cblxuICBjb25zdCBjb2xvbiA9IHVybC5pbmRleE9mKCc6JylcbiAgaWYgKGNvbG9uID09PSAtMSkge1xuICAgIHJldHVybiB1cmxcbiAgfVxuXG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBwcm90b2NvbHMubGVuZ3RoKSB7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBwcm90b2NvbHNbaW5kZXhdXG5cbiAgICBpZiAoXG4gICAgICBjb2xvbiA9PT0gcHJvdG9jb2wubGVuZ3RoICYmXG4gICAgICB1cmwuc2xpY2UoMCwgcHJvdG9jb2wubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBwcm90b2NvbFxuICAgICkge1xuICAgICAgcmV0dXJuIHVybFxuICAgIH1cbiAgfVxuXG4gIGluZGV4ID0gdXJsLmluZGV4T2YoJz8nKVxuICBpZiAoaW5kZXggIT09IC0xICYmIGNvbG9uID4gaW5kZXgpIHtcbiAgICByZXR1cm4gdXJsXG4gIH1cblxuICBpbmRleCA9IHVybC5pbmRleE9mKCcjJylcbiAgaWYgKGluZGV4ICE9PSAtMSAmJiBjb2xvbiA+IGluZGV4KSB7XG4gICAgcmV0dXJuIHVybFxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNjcmlwdC11cmxcbiAgcmV0dXJuICdqYXZhc2NyaXB0OnZvaWQoMCknXG59XG4iXSwibmFtZXMiOlsicHJvdG9jb2xzIiwidXJpVHJhbnNmb3JtZXIiLCJ1cmkiLCJ1cmwiLCJ0cmltIiwiZmlyc3QiLCJjaGFyQXQiLCJjb2xvbiIsImluZGV4T2YiLCJpbmRleCIsImxlbmd0aCIsInByb3RvY29sIiwic2xpY2UiLCJ0b0xvd2VyQ2FzZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/react-markdown/lib/uri-transformer.js\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |