agent-hustle-demo 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +429 -0
- package/dist/HustleChat-BC9wvWVA.d.ts +90 -0
- package/dist/HustleChat-BcrKkkyn.d.cts +90 -0
- package/dist/browser/hustle-react.js +14854 -0
- package/dist/browser/hustle-react.js.map +1 -0
- package/dist/components/index.cjs +3141 -0
- package/dist/components/index.cjs.map +1 -0
- package/dist/components/index.d.cts +20 -0
- package/dist/components/index.d.ts +20 -0
- package/dist/components/index.js +3112 -0
- package/dist/components/index.js.map +1 -0
- package/dist/hooks/index.cjs +845 -0
- package/dist/hooks/index.cjs.map +1 -0
- package/dist/hooks/index.d.cts +6 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.js +838 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hustle-Kj0X8qXC.d.cts +193 -0
- package/dist/hustle-Kj0X8qXC.d.ts +193 -0
- package/dist/index-ChUsRBwL.d.ts +152 -0
- package/dist/index-DE1N7C3W.d.cts +152 -0
- package/dist/index-DuPFrMZy.d.cts +214 -0
- package/dist/index-kFIdHjNw.d.ts +214 -0
- package/dist/index.cjs +3746 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +271 -0
- package/dist/index.d.ts +271 -0
- package/dist/index.js +3697 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/index.cjs +844 -0
- package/dist/providers/index.cjs.map +1 -0
- package/dist/providers/index.d.cts +5 -0
- package/dist/providers/index.d.ts +5 -0
- package/dist/providers/index.js +838 -0
- package/dist/providers/index.js.map +1 -0
- package/package.json +80 -0
- package/src/components/AuthStatus.tsx +352 -0
- package/src/components/ConnectButton.tsx +421 -0
- package/src/components/HustleChat.tsx +1273 -0
- package/src/components/MarkdownContent.tsx +431 -0
- package/src/components/index.ts +15 -0
- package/src/hooks/index.ts +40 -0
- package/src/hooks/useEmblemAuth.ts +27 -0
- package/src/hooks/useHustle.ts +36 -0
- package/src/hooks/usePlugins.ts +135 -0
- package/src/index.ts +142 -0
- package/src/plugins/index.ts +48 -0
- package/src/plugins/migrateFun.ts +211 -0
- package/src/plugins/predictionMarket.ts +411 -0
- package/src/providers/EmblemAuthProvider.tsx +319 -0
- package/src/providers/HustleProvider.tsx +540 -0
- package/src/providers/index.ts +6 -0
- package/src/styles/index.ts +2 -0
- package/src/styles/tokens.ts +447 -0
- package/src/types/auth.ts +85 -0
- package/src/types/hustle.ts +217 -0
- package/src/types/index.ts +49 -0
- package/src/types/plugin.ts +180 -0
- package/src/utils/index.ts +122 -0
- package/src/utils/pluginRegistry.ts +375 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../node_modules/highlight.js/lib/core.js","../../src/providers/EmblemAuthProvider.tsx","../../src/utils/pluginRegistry.ts","../../src/hooks/usePlugins.ts","../../src/providers/HustleProvider.tsx","../../src/styles/tokens.ts","../../src/components/ConnectButton.tsx","../../src/components/AuthStatus.tsx","../../src/plugins/predictionMarket.ts","../../src/plugins/migrateFun.ts","../../src/plugins/index.ts","../../node_modules/marked/src/defaults.ts","../../node_modules/marked/src/rules.ts","../../node_modules/marked/src/helpers.ts","../../node_modules/marked/src/Tokenizer.ts","../../node_modules/marked/src/Lexer.ts","../../node_modules/marked/src/Renderer.ts","../../node_modules/marked/src/TextRenderer.ts","../../node_modules/marked/src/Parser.ts","../../node_modules/marked/src/Hooks.ts","../../node_modules/marked/src/Instance.ts","../../node_modules/marked/src/marked.ts","../../node_modules/highlight.js/es/core.js","../../node_modules/highlight.js/es/languages/javascript.js","../../node_modules/highlight.js/es/languages/typescript.js","../../node_modules/highlight.js/es/languages/python.js","../../node_modules/highlight.js/es/languages/json.js","../../node_modules/highlight.js/es/languages/bash.js","../../node_modules/highlight.js/es/languages/shell.js","../../node_modules/highlight.js/es/languages/css.js","../../node_modules/highlight.js/es/languages/xml.js","../../node_modules/highlight.js/es/languages/markdown.js","../../node_modules/highlight.js/es/languages/sql.js","../../node_modules/highlight.js/es/languages/yaml.js","../../node_modules/highlight.js/es/languages/rust.js","../../node_modules/highlight.js/es/languages/go.js","../../node_modules/highlight.js/es/languages/java.js","../../node_modules/highlight.js/es/languages/cpp.js","../../node_modules/highlight.js/es/languages/csharp.js","../../node_modules/highlight.js/es/languages/php.js","../../node_modules/highlight.js/es/languages/ruby.js","../../node_modules/highlight.js/es/languages/swift.js","../../node_modules/highlight.js/es/languages/kotlin.js","../../src/components/MarkdownContent.tsx","../../src/components/HustleChat.tsx","../../src/utils/index.ts"],"names":["exports","x","source","re","lookahead","concat","stripOptionsFromArgs","either","IDENT_RE","m","MODES","scopeName","version","s","i","m2","highlight","code","result","b","existingSession","useState","useEffect","useCallback","createContext","useRef","value","error","jsx","useContext","copyToClipboard","jsxs","Fragment","w","_getDefaults","_defaults","changeDefaults","newDefaults","noopTest","edit","regex","opt","obj","name","val","valSource","other","supportsLookbehind","bull","indent","newline","blockCode","fences","hr","heading","bullet","lheadingCore","lheading","lheadingGfm","_paragraph","blockText","_blockLabel","def","list","_tag","_comment","html","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","escape","inlineCode","br","inlineText","_punctuation","_punctuationOrSpace","_notPunctuationOrSpace","punctuation","_punctuationGfmStrongEm","_punctuationOrSpaceGfmStrongEm","_notPunctuationOrSpaceGfmStrongEm","blockSkip","emStrongLDelimCore","emStrongLDelim","emStrongLDelimGfm","emStrongRDelimAstCore","emStrongRDelimAst","emStrongRDelimAstGfm","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","tag","_inlineLabel","link","reflink","nolink","reflinkSearch","_caseInsensitiveProtocol","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","block","inline","escapeReplacements","getEscapeReplacement","ch","encode","cleanUrl","href","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","rtrim","c","invert","l","suffLen","currChar","findClosingBracket","level","outputLink","cap","raw","lexer","rules","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","_Tokenizer","options","src","trimmed","lines","tokens","inBlockquote","currentLines","currentRaw","currentText","top","lastToken","oldToken","newText","newToken","isordered","itemRegex","endsWithBlankLine","endEarly","itemContents","line","t","nextLine","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","rawLine","nextLineWithoutTabs","lastItem","item","taskRaw","checkboxToken","spacers","hasMultipleLineBreaks","headers","aligns","rows","align","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","_Lexer","__Lexer","next","lastParagraphClipped","extTokenizer","cutSrc","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","lang","langString","depth","ordered","start","body","j","type","startAttr","checked","header","k","content","cleanHref","out","_TextRenderer","_Parser","__Parser","anyToken","genericToken","ret","renderer","_Hooks","markdown","Marked","args","callback","values","tableToken","listToken","childTokens","extensions","pack","opts","ext","prevRenderer","extLevel","prop","rendererProp","rendererFunc","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooks","hooksProp","hooksFunc","prevHook","arg","walkTokens","packWalktokens","blockType","origOpt","throwError","processedSrc","processedTokens","e","silent","async","msg","markedInstance","marked","HighlightJS","decimalDigits","frac","KEYWORDS","LITERALS","TYPES","ERROR_TYPES","BUILT_IN_GLOBALS","BUILT_IN_VARIABLES","BUILT_INS","javascript","_","ATTRIBUTES","hexDigits","NUMERIC","styles","containerStyle","truncateAddress","generateId"],"mappings":"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","file":"hustle-react.js","sourcesContent":["/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach((name) => {\n const prop = obj[name];\n const type = typeof prop;\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n /** @type Record<string,any> */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n // sub-language\n if (name.startsWith(\"language:\")) {\n return name.replace(\"language:\", \"language-\");\n }\n // tiered scope: comment.line\n if (name.includes(\".\")) {\n const pieces = name.split(\".\");\n return [\n `${prefix}${pieces.shift()}`,\n ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n ].join(\" \");\n }\n // simple scope\n return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n const className = scopeToCSSClass(node.scope,\n { prefix: this.classPrefix });\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += `<span class=\"${className}\">`;\n }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/** */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n /** @type DataNode */\n const result = { children: [] };\n Object.assign(result, opts);\n return result;\n};\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = newNode();\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} scope */\n openNode(scope) {\n /** @type Node */\n const node = newNode({ scope });\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addText(text)\n - __addSublanguage(emitter, subLanguageName)\n - startScope(scope)\n - endScope()\n - finalize()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /** @param {string} scope */\n startScope(scope) {\n this.openNode(scope);\n }\n\n endScope() {\n this.closeNode();\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n __addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n if (name) node.scope = `language:${name}`;\n\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n this.closeAllNodes();\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit$1({\n scope: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n scope: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n scope: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit$1(\n {\n scope: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push({\n scope: 'doctag',\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n const ENGLISH_WORD = either(\n // list of common 1 and 2 letter words in English\n \"I\",\n \"a\",\n \"is\",\n \"so\",\n \"us\",\n \"to\",\n \"at\",\n \"if\",\n \"in\",\n \"it\",\n \"on\",\n // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push(\n {\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n\n begin: concat(\n /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n '(',\n ENGLISH_WORD,\n /[.]?[:]?([.][ ]|[ ])/,\n '){3}') // look for 3 words in a row\n }\n );\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n scope: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n scope: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n scope: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst REGEXP_MODE = {\n scope: \"regexp\",\n begin: /\\/(?=[^/\\n]*\\/)/,\n end: /\\/[gimuy]*/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n};\nconst TITLE_MODE = {\n scope: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n scope: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n APOS_STRING_MODE: APOS_STRING_MODE,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n COMMENT: COMMENT,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n C_NUMBER_RE: C_NUMBER_RE,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n IDENT_RE: IDENT_RE,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n METHOD_GUARD: METHOD_GUARD,\n NUMBER_MODE: NUMBER_MODE,\n NUMBER_RE: NUMBER_RE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n REGEXP_MODE: REGEXP_MODE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, { endsParent: true })\n ]\n };\n mode.relevance = 0;\n\n delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n /** @type {import(\"highlight.js/private\").KeywordDict} */\n const compiledKeywords = Object.create(null);\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array<string>} keywordList\n */\n function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array<RegExp | string>} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n let offset = 0;\n const scopeNames = mode[key];\n /** @type Record<number,boolean> */\n const emit = {};\n /** @type Record<number,string> */\n const positions = {};\n\n for (let i = 1; i <= regexes.length; i++) {\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.end, { key: \"endScope\" });\n mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n scopeSugar(mode);\n\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = { _wrap: mode.beginScope };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = { _wrap: mode.endScope };\n }\n\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm'\n + (language.case_insensitive ? 'i' : '')\n + (language.unicodeRegex ? 'u' : '')\n + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch,\n MultiClass,\n beforeMatchExt\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit$1(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"11.11.1\";\n\nclass HTMLInjectionError extends Error {\n constructor(reason, html) {\n super(reason);\n this.name = \"HTMLInjectionError\";\n this.html = html;\n }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record<string, Language>} */\n const languages = Object.create(null);\n /** @type {Record<string, string>} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n cssSelector: 'pre code',\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n const keywordHits = Object.create(null);\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */\n function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n const data = keywordData(top, word);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.__addSublanguage(result._emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {string} text\n * @param {string} scope\n */\n function emitKeyword(keyword, scope) {\n if (keyword === \"\") return;\n\n emitter.startScope(scope);\n emitter.addText(keyword);\n emitter.endScope();\n }\n\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */\n function emitMultiClass(scope, match) {\n let i = 1;\n const max = match.length - 1;\n while (i <= max) {\n if (!scope._emit[i]) { i++; continue; }\n const klass = language.classNameAliases[scope[i]] || scope[i];\n const text = match[i];\n if (klass) {\n emitKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */\n function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error(`0 width match regex (${languageName})`);\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '<unnamed>') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n modeBuffer += \"\\n\";\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language);\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record<string,CompiledMode> */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n if (!language.__emitTokens) {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n } else {\n language.__emitTokens(codeToHighlight, emitter);\n }\n\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n language: languageName,\n value: result,\n relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array<string>} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.secondBest = secondBest;\n\n return result;\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = (currentLang && aliases[currentLang]) || resultLang;\n\n element.classList.add(\"hljs\");\n element.classList.add(`language-${language}`);\n }\n\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n fire(\"before:highlightElement\",\n { el: element, language });\n\n if (element.dataset.highlighted) {\n console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n return;\n }\n\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n console.warn(\"The element with unescaped HTML:\");\n console.warn(element);\n }\n if (options.throwUnescapedHTML) {\n const err = new HTMLInjectionError(\n \"One of your code blocks includes unescaped HTML.\",\n element.innerHTML\n );\n throw err;\n }\n }\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n element.innerHTML = result.value;\n element.dataset.highlighted = \"yes\";\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n\n fire(\"after:highlightElement\", { el: element, result, text });\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial<HLJSOptions>} userOptions\n */\n function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n highlightAll();\n }\n\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n // make sure the event listener is only added once\n if (!wantsHighlight) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function removePlugin(plugin) {\n const index = plugins.indexOf(plugin);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n autoDetection,\n inherit,\n addPlugin,\n removePlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreeze(MODES[key]);\n }\n }\n\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n\n return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n","'use client';\n\nimport React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useRef,\n} from 'react';\nimport { EmblemAuthSDK } from 'emblem-auth-sdk';\nimport type {\n AuthSession,\n VaultInfo,\n EmblemAuthContextValue,\n EmblemAuthProviderProps,\n} from '../types';\n\n/**\n * Global SDK instance to prevent multiple initializations\n * This is important for React strict mode and hot reloading\n */\nlet globalSDKInstance: EmblemAuthSDK | null = null;\nlet isSDKInitializing = false;\n\n/**\n * Auth context - undefined when not within provider\n */\nconst EmblemAuthContext = createContext<EmblemAuthContextValue | undefined>(undefined);\n\n/**\n * EmblemAuthProvider - Provides authentication state and actions to the app\n *\n * This is a first-class citizen - it has no dependency on Hustle SDK.\n * The Hustle SDK depends on this provider for authentication.\n *\n * @example\n * ```tsx\n * <EmblemAuthProvider\n * appId=\"your-app-id\"\n * apiUrl=\"https://dev-api.emblemvault.ai\"\n * modalUrl=\"https://dev-auth.emblemvault.ai/connect\"\n * >\n * <App />\n * </EmblemAuthProvider>\n * ```\n */\nexport function EmblemAuthProvider({\n children,\n appId,\n apiUrl,\n modalUrl,\n debug = false,\n}: EmblemAuthProviderProps) {\n // State\n const [session, setSession] = useState<AuthSession | null>(null);\n const [isAuthenticated, setIsAuthenticated] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [vaultInfo, setVaultInfo] = useState<VaultInfo | null>(null);\n const [authSDK, setAuthSDK] = useState<EmblemAuthSDK | null>(globalSDKInstance);\n\n // Track if we've initialized\n const initialized = useRef(false);\n\n // Debug logger\n const log = useCallback(\n (message: string, ...args: unknown[]) => {\n if (debug) {\n console.log(`[EmblemAuth] ${message}`, ...args);\n }\n },\n [debug]\n );\n\n /**\n * Fetch vault info after authentication\n */\n const fetchVaultInfo = useCallback(\n async (sdk: EmblemAuthSDK) => {\n try {\n const info = await sdk.getVaultInfo();\n if (info) {\n setVaultInfo(info);\n log('Vault info loaded:', info);\n }\n } catch (err) {\n log('Failed to fetch vault info:', err);\n }\n },\n [log]\n );\n\n /**\n * Handle successful authentication\n */\n const handleAuthSuccess = useCallback(\n (newSession: AuthSession, sdk: EmblemAuthSDK) => {\n log('Auth success - session:', newSession);\n setSession(newSession);\n setIsAuthenticated(true);\n setIsLoading(false);\n setError(null);\n fetchVaultInfo(sdk);\n },\n [log, fetchVaultInfo]\n );\n\n /**\n * Handle authentication error\n */\n const handleAuthError = useCallback(\n (err: Error) => {\n log('Auth error:', err);\n setError(err);\n setIsLoading(false);\n setIsAuthenticated(false);\n setSession(null);\n },\n [log]\n );\n\n /**\n * Handle session expiration\n */\n const handleSessionExpired = useCallback(() => {\n log('Session expired');\n setSession(null);\n setIsAuthenticated(false);\n setVaultInfo(null);\n }, [log]);\n\n /**\n * Initialize the SDK\n */\n useEffect(() => {\n // Prevent double initialization\n if (initialized.current || globalSDKInstance || isSDKInitializing) {\n if (globalSDKInstance && !authSDK) {\n setAuthSDK(globalSDKInstance);\n // Check for existing session\n const existingSession = globalSDKInstance.getSession();\n if (existingSession) {\n handleAuthSuccess(existingSession, globalSDKInstance);\n }\n }\n return;\n }\n\n initialized.current = true;\n isSDKInitializing = true;\n log('Initializing SDK with appId:', appId);\n\n // Create SDK instance\n const sdk = new EmblemAuthSDK({\n appId,\n apiUrl,\n modalUrl,\n onSuccess: (newSession) => {\n handleAuthSuccess(newSession as AuthSession, sdk);\n },\n onError: (err) => {\n handleAuthError(err);\n },\n });\n\n // Store globally and locally\n globalSDKInstance = sdk;\n isSDKInitializing = false;\n setAuthSDK(sdk);\n\n // Check for existing session\n const existingSession = sdk.getSession();\n if (existingSession) {\n log('Found existing session');\n handleAuthSuccess(existingSession as AuthSession, sdk);\n }\n\n // Subscribe to session events\n const handleSessionUpdate = (updatedSession: AuthSession | null) => {\n if (updatedSession) {\n setSession(updatedSession);\n setIsAuthenticated(true);\n } else {\n handleSessionExpired();\n }\n };\n\n sdk.on('session', handleSessionUpdate);\n sdk.on('sessionExpired', handleSessionExpired);\n\n // Cleanup\n return () => {\n sdk.off('session', handleSessionUpdate);\n sdk.off('sessionExpired', handleSessionExpired);\n };\n }, [appId, apiUrl, modalUrl, log, handleAuthSuccess, handleAuthError, handleSessionExpired, authSDK]);\n\n /**\n * Open the auth modal\n */\n const openAuthModal = useCallback(async () => {\n if (!authSDK) {\n setError(new Error('Auth SDK not initialized'));\n return;\n }\n\n log('Opening auth modal');\n setIsLoading(true);\n setError(null);\n\n try {\n await authSDK.openAuthModal();\n // Success is handled by onSuccess callback\n } catch (err) {\n setIsLoading(false);\n setError(err instanceof Error ? err : new Error('Failed to open auth modal'));\n }\n }, [authSDK, log]);\n\n /**\n * Logout and clear session\n */\n const logout = useCallback(() => {\n if (!authSDK) return;\n\n log('Logging out');\n authSDK.logout();\n setSession(null);\n setIsAuthenticated(false);\n setVaultInfo(null);\n setError(null);\n }, [authSDK, log]);\n\n /**\n * Refresh the current session\n */\n const refreshSession = useCallback(async (): Promise<AuthSession | null> => {\n if (!authSDK) return null;\n\n log('Refreshing session');\n try {\n const refreshedSession = await authSDK.refreshSession();\n if (refreshedSession) {\n setSession(refreshedSession as AuthSession);\n setIsAuthenticated(true);\n return refreshedSession as AuthSession;\n }\n return null;\n } catch (err) {\n log('Failed to refresh session:', err);\n setError(err instanceof Error ? err : new Error('Failed to refresh session'));\n return null;\n }\n }, [authSDK, log]);\n\n // Derived values\n const vaultId = session?.user?.vaultId ?? null;\n const walletAddress = session?.user?.evmAddress ?? null;\n\n // Context value\n const value: EmblemAuthContextValue = {\n // State\n session,\n isAuthenticated,\n isLoading,\n error,\n vaultInfo,\n\n // Derived\n vaultId,\n walletAddress,\n\n // Actions\n openAuthModal,\n logout,\n refreshSession,\n\n // For Hustle integration\n authSDK,\n };\n\n return (\n <EmblemAuthContext.Provider value={value}>\n {children}\n </EmblemAuthContext.Provider>\n );\n}\n\n/**\n * Hook to access auth context\n * Must be used within EmblemAuthProvider\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { isAuthenticated, openAuthModal, logout } = useEmblemAuth();\n *\n * return isAuthenticated\n * ? <button onClick={logout}>Logout</button>\n * : <button onClick={openAuthModal}>Connect</button>;\n * }\n * ```\n */\nexport function useEmblemAuth(): EmblemAuthContextValue {\n const context = useContext(EmblemAuthContext);\n if (context === undefined) {\n throw new Error('useEmblemAuth must be used within an EmblemAuthProvider');\n }\n return context;\n}\n\n/**\n * Reset the global SDK instance (useful for testing)\n */\nexport function resetAuthSDK(): void {\n globalSDKInstance = null;\n isSDKInitializing = false;\n}\n","/**\n * Plugin Registry\n *\n * Manages plugin storage and state in localStorage.\n *\n * Storage model:\n * - Installed plugins are GLOBAL (hustle-plugins) - install once, available everywhere\n * - Enabled/disabled state is INSTANCE-SCOPED (hustle-plugin-state-{instanceId})\n *\n * Executor functions are serialized as strings (executorCode) and\n * reconstituted at runtime via new Function().\n *\n * SECURITY TODO: Add signature verification before executing stored code.\n * Plugins should be signed by trusted publishers and verified before\n * any eval/Function execution occurs.\n */\n\nimport type {\n StoredPlugin,\n HustlePlugin,\n HydratedPlugin,\n ToolExecutor,\n PluginHooks,\n SerializedToolDefinition,\n SerializedHooks,\n} from '../types';\n\n/**\n * Storage keys:\n * - PLUGINS_KEY: Global list of installed plugins (not instance-scoped)\n * - getEnabledStateKey: Per-instance enabled/disabled states\n */\nconst PLUGINS_KEY = 'hustle-plugins';\n\nfunction getEnabledStateKey(instanceId: string): string {\n return `hustle-plugin-state-${instanceId}`;\n}\n\ntype PluginChangeCallback = (plugins: StoredPlugin[]) => void;\n\n/** Stored enabled state per instance */\ntype EnabledState = Record<string, boolean>;\n\n/**\n * Serialize a function to a string for storage\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction serializeFunction(fn: (...args: any[]) => any): string {\n return fn.toString();\n}\n\n/**\n * Deserialize a function string back to executable function\n *\n * FIXME: Add signature verification before execution\n * This is a security-sensitive operation that executes stored code.\n */\nfunction deserializeExecutor(code: string): ToolExecutor {\n // Extract function body - handles arrow functions and regular functions\n // The stored code is the full function: \"(args) => { ... }\" or \"async (args) => { ... }\"\n // We wrap it in parentheses and eval to get the function reference\n try {\n // eslint-disable-next-line no-eval\n return eval(`(${code})`) as ToolExecutor;\n } catch (err) {\n console.error('[Hustle] Failed to deserialize executor:', err);\n // Return a no-op executor that reports the error\n return async () => ({ error: 'Failed to deserialize executor', code });\n }\n}\n\n/**\n * Deserialize a hook function string\n *\n * FIXME: Add signature verification before execution\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction deserializeHook<T extends (...args: any[]) => any>(code: string): T {\n try {\n // eslint-disable-next-line no-eval\n return eval(`(${code})`) as T;\n } catch (err) {\n console.error('[Hustle] Failed to deserialize hook:', err);\n return (() => {}) as T;\n }\n}\n\n/**\n * Serialize a plugin's executors to executorCode strings\n */\nfunction serializePluginTools(\n tools: HustlePlugin['tools'],\n executors: HustlePlugin['executors']\n): SerializedToolDefinition[] {\n if (!tools) return [];\n\n return tools.map((tool) => ({\n ...tool,\n executorCode: executors?.[tool.name]\n ? serializeFunction(executors[tool.name])\n : undefined,\n }));\n}\n\n/**\n * Serialize plugin hooks to code strings\n */\nfunction serializeHooks(hooks: PluginHooks | undefined): SerializedHooks | undefined {\n if (!hooks) return undefined;\n\n const serialized: SerializedHooks = {};\n\n if (hooks.onRegister) {\n serialized.onRegisterCode = serializeFunction(hooks.onRegister);\n }\n if (hooks.beforeRequest) {\n serialized.beforeRequestCode = serializeFunction(hooks.beforeRequest);\n }\n if (hooks.afterResponse) {\n serialized.afterResponseCode = serializeFunction(hooks.afterResponse);\n }\n if (hooks.onError) {\n serialized.onErrorCode = serializeFunction(hooks.onError);\n }\n\n return Object.keys(serialized).length > 0 ? serialized : undefined;\n}\n\n/**\n * Hydrate a stored plugin - reconstitute executors from executorCode\n *\n * FIXME: Add signature verification before execution\n */\nexport function hydratePlugin(stored: StoredPlugin): HydratedPlugin {\n // Reconstitute executors from executorCode strings\n const executors: Record<string, ToolExecutor> = {};\n\n if (stored.tools) {\n for (const tool of stored.tools) {\n if (tool.executorCode) {\n executors[tool.name] = deserializeExecutor(tool.executorCode);\n }\n }\n }\n\n // Reconstitute hooks from hooksCode strings\n let hooks: PluginHooks | undefined;\n\n if (stored.hooksCode) {\n hooks = {};\n if (stored.hooksCode.onRegisterCode) {\n hooks.onRegister = deserializeHook(stored.hooksCode.onRegisterCode);\n }\n if (stored.hooksCode.beforeRequestCode) {\n hooks.beforeRequest = deserializeHook(stored.hooksCode.beforeRequestCode);\n }\n if (stored.hooksCode.afterResponseCode) {\n hooks.afterResponse = deserializeHook(stored.hooksCode.afterResponseCode);\n }\n if (stored.hooksCode.onErrorCode) {\n hooks.onError = deserializeHook(stored.hooksCode.onErrorCode);\n }\n }\n\n return {\n ...stored,\n executors: Object.keys(executors).length > 0 ? executors : undefined,\n hooks,\n };\n}\n\n/**\n * Plugin Registry class\n *\n * Manages plugin persistence with:\n * - Global plugin installations (with serialized executorCode)\n * - Instance-scoped enabled/disabled state\n */\nclass PluginRegistry {\n private listeners: Map<string, Set<PluginChangeCallback>> = new Map();\n\n /**\n * Get listeners for a specific instance\n */\n private getListeners(instanceId: string): Set<PluginChangeCallback> {\n if (!this.listeners.has(instanceId)) {\n this.listeners.set(instanceId, new Set());\n }\n return this.listeners.get(instanceId)!;\n }\n\n /**\n * Load installed plugins (global)\n */\n private loadInstalledPlugins(): Omit<StoredPlugin, 'enabled'>[] {\n if (typeof window === 'undefined') return [];\n try {\n const stored = localStorage.getItem(PLUGINS_KEY);\n return stored ? JSON.parse(stored) : [];\n } catch {\n return [];\n }\n }\n\n /**\n * Save installed plugins (global)\n * Serializes executors as executorCode strings\n */\n private saveInstalledPlugins(plugins: Omit<StoredPlugin, 'enabled'>[]): void {\n if (typeof window === 'undefined') return;\n localStorage.setItem(PLUGINS_KEY, JSON.stringify(plugins));\n }\n\n /**\n * Load enabled state for an instance\n */\n private loadEnabledState(instanceId: string): EnabledState {\n if (typeof window === 'undefined') return {};\n try {\n const stored = localStorage.getItem(getEnabledStateKey(instanceId));\n return stored ? JSON.parse(stored) : {};\n } catch {\n return {};\n }\n }\n\n /**\n * Save enabled state for an instance\n */\n private saveEnabledState(state: EnabledState, instanceId: string): void {\n if (typeof window === 'undefined') return;\n localStorage.setItem(getEnabledStateKey(instanceId), JSON.stringify(state));\n }\n\n /**\n * Load plugins with instance-specific enabled state\n * Combines global plugin list with per-instance enabled state\n */\n loadFromStorage(instanceId: string = 'default'): StoredPlugin[] {\n const installed = this.loadInstalledPlugins();\n const enabledState = this.loadEnabledState(instanceId);\n\n return installed.map((plugin) => ({\n ...plugin,\n // Default to enabled if no state exists for this instance\n enabled: enabledState[plugin.name] ?? true,\n }));\n }\n\n /**\n * Register a new plugin (global - available to all instances)\n * Serializes executors as executorCode for persistence\n *\n * @param plugin The plugin to install\n * @param enabled Initial enabled state for this instance (default: true)\n * @param instanceId Instance to set initial enabled state for\n */\n register(plugin: HustlePlugin, enabled = true, instanceId: string = 'default'): void {\n // Add to global installed list with serialized executors\n const installed = this.loadInstalledPlugins();\n const existing = installed.findIndex((p) => p.name === plugin.name);\n\n const storedPlugin: Omit<StoredPlugin, 'enabled'> = {\n name: plugin.name,\n version: plugin.version,\n description: plugin.description,\n tools: serializePluginTools(plugin.tools, plugin.executors),\n hooksCode: serializeHooks(plugin.hooks),\n installedAt: new Date().toISOString(),\n };\n\n if (existing >= 0) {\n installed[existing] = storedPlugin;\n } else {\n installed.push(storedPlugin);\n }\n\n this.saveInstalledPlugins(installed);\n\n // Set initial enabled state for this instance\n const enabledState = this.loadEnabledState(instanceId);\n enabledState[plugin.name] = enabled;\n this.saveEnabledState(enabledState, instanceId);\n\n this.notifyListeners(instanceId);\n }\n\n /**\n * Unregister a plugin (global - removes from all instances)\n */\n unregister(pluginName: string, instanceId: string = 'default'): void {\n // Remove from global list\n const installed = this.loadInstalledPlugins().filter((p) => p.name !== pluginName);\n this.saveInstalledPlugins(installed);\n\n // Clean up enabled state for this instance\n const enabledState = this.loadEnabledState(instanceId);\n delete enabledState[pluginName];\n this.saveEnabledState(enabledState, instanceId);\n\n this.notifyListeners(instanceId);\n }\n\n /**\n * Enable or disable a plugin (instance-scoped)\n */\n setEnabled(pluginName: string, enabled: boolean, instanceId: string = 'default'): void {\n const enabledState = this.loadEnabledState(instanceId);\n enabledState[pluginName] = enabled;\n this.saveEnabledState(enabledState, instanceId);\n this.notifyListeners(instanceId);\n }\n\n /**\n * Check if a plugin is installed (global)\n */\n isRegistered(pluginName: string): boolean {\n return this.loadInstalledPlugins().some((p) => p.name === pluginName);\n }\n\n /**\n * Get a specific plugin with instance-specific enabled state\n */\n getPlugin(pluginName: string, instanceId: string = 'default'): StoredPlugin | undefined {\n return this.loadFromStorage(instanceId).find((p) => p.name === pluginName);\n }\n\n /**\n * Get all enabled plugins for an instance (hydrated with executors)\n */\n getEnabledPlugins(instanceId: string = 'default'): HydratedPlugin[] {\n return this.loadFromStorage(instanceId).filter((p) => p.enabled).map(hydratePlugin);\n }\n\n /**\n * Subscribe to plugin changes for a specific instance\n */\n onChange(callback: PluginChangeCallback, instanceId: string = 'default'): () => void {\n const listeners = this.getListeners(instanceId);\n listeners.add(callback);\n return () => listeners.delete(callback);\n }\n\n /**\n * Notify all listeners for a specific instance\n */\n private notifyListeners(instanceId: string = 'default'): void {\n const plugins = this.loadFromStorage(instanceId);\n const listeners = this.getListeners(instanceId);\n listeners.forEach((cb) => cb(plugins));\n }\n\n /**\n * Clear enabled state for an instance (plugins remain installed globally)\n */\n clear(instanceId: string = 'default'): void {\n if (typeof window === 'undefined') return;\n localStorage.removeItem(getEnabledStateKey(instanceId));\n this.notifyListeners(instanceId);\n }\n\n /**\n * Clear all installed plugins globally\n */\n clearAll(): void {\n if (typeof window === 'undefined') return;\n localStorage.removeItem(PLUGINS_KEY);\n // Note: This doesn't clear instance-specific enabled states\n }\n}\n\n// Singleton instance\nexport const pluginRegistry = new PluginRegistry();\n\nexport default pluginRegistry;\n","'use client';\n\n/**\n * usePlugins Hook\n *\n * Manages plugin state with localStorage persistence and cross-tab sync.\n * Supports instance-scoped storage for multiple HustleProviders.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { pluginRegistry, hydratePlugin } from '../utils/pluginRegistry';\nimport type { StoredPlugin, HustlePlugin, HydratedPlugin } from '../types';\n\n// Re-export hydratePlugin for convenience\nexport { hydratePlugin };\n\n/**\n * Get the storage key for a given instance\n */\nfunction getStorageKey(instanceId: string): string {\n return `hustle-plugins-${instanceId}`;\n}\n\n/**\n * Return type for usePlugins hook\n */\nexport interface UsePluginsReturn {\n /** All registered plugins (with enabled state) */\n plugins: StoredPlugin[];\n /** Only enabled plugins (hydrated with executors) */\n enabledPlugins: HydratedPlugin[];\n /** Register a new plugin */\n registerPlugin: (plugin: HustlePlugin) => void;\n /** Unregister a plugin by name */\n unregisterPlugin: (name: string) => void;\n /** Enable a plugin */\n enablePlugin: (name: string) => void;\n /** Disable a plugin */\n disablePlugin: (name: string) => void;\n /** Check if a plugin is registered */\n isRegistered: (name: string) => boolean;\n /** Check if a plugin is enabled */\n isEnabled: (name: string) => boolean;\n}\n\n/**\n * Hook for managing plugins\n *\n * @param instanceId - Optional instance ID for scoping plugin storage (defaults to 'default')\n *\n * @example\n * ```tsx\n * const { plugins, registerPlugin, enabledPlugins } = usePlugins();\n *\n * // Install a plugin\n * registerPlugin(myPlugin);\n *\n * // Check enabled plugins\n * console.log('Active tools:', enabledPlugins.flatMap(p => p.tools));\n * ```\n */\nexport function usePlugins(instanceId: string = 'default'): UsePluginsReturn {\n const [plugins, setPlugins] = useState<StoredPlugin[]>([]);\n\n // Load initial plugins and subscribe to changes\n useEffect(() => {\n // Load initial state\n setPlugins(pluginRegistry.loadFromStorage(instanceId));\n\n // Subscribe to registry changes for this instance\n const unsubscribe = pluginRegistry.onChange(setPlugins, instanceId);\n\n // Listen to storage events for cross-tab sync\n const storageKey = getStorageKey(instanceId);\n const handleStorage = (e: StorageEvent) => {\n if (e.key === storageKey) {\n setPlugins(pluginRegistry.loadFromStorage(instanceId));\n }\n };\n window.addEventListener('storage', handleStorage);\n\n return () => {\n unsubscribe();\n window.removeEventListener('storage', handleStorage);\n };\n }, [instanceId]);\n\n // Register a new plugin\n const registerPlugin = useCallback((plugin: HustlePlugin) => {\n pluginRegistry.register(plugin, true, instanceId);\n }, [instanceId]);\n\n // Unregister a plugin\n const unregisterPlugin = useCallback((name: string) => {\n pluginRegistry.unregister(name, instanceId);\n }, [instanceId]);\n\n // Enable a plugin\n const enablePlugin = useCallback((name: string) => {\n pluginRegistry.setEnabled(name, true, instanceId);\n }, [instanceId]);\n\n // Disable a plugin\n const disablePlugin = useCallback((name: string) => {\n pluginRegistry.setEnabled(name, false, instanceId);\n }, [instanceId]);\n\n // Check if plugin is registered\n const isRegistered = useCallback(\n (name: string) => plugins.some(p => p.name === name),\n [plugins]\n );\n\n // Check if plugin is enabled\n const isEnabled = useCallback(\n (name: string) => plugins.some(p => p.name === name && p.enabled),\n [plugins]\n );\n\n // Get enabled plugins with hydrated executors\n const enabledPlugins = plugins.filter(p => p.enabled).map(hydratePlugin);\n\n return {\n plugins,\n enabledPlugins,\n registerPlugin,\n unregisterPlugin,\n enablePlugin,\n disablePlugin,\n isRegistered,\n isEnabled,\n };\n}\n\nexport default usePlugins;\n","'use client';\n\nimport React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport { HustleIncognitoClient } from 'hustle-incognito';\nimport { useEmblemAuth } from './EmblemAuthProvider';\nimport { usePlugins } from '../hooks/usePlugins';\nimport type {\n Model,\n ChatOptions,\n StreamOptions,\n StreamChunk,\n ChatResponse,\n Attachment,\n HustleContextValue,\n HustleProviderProps,\n ChatMessage,\n HydratedPlugin,\n} from '../types';\n\n/**\n * Hustle context - undefined when not within provider\n */\nconst HustleContext = createContext<HustleContextValue | undefined>(undefined);\n\n/**\n * Default Hustle API URL\n */\nconst DEFAULT_HUSTLE_API_URL = 'https://agenthustle.ai';\n\n/**\n * Module-level counter for auto-generating instance IDs.\n * Resets on page load, but render order is deterministic.\n */\nlet instanceCounter = 0;\n\n/**\n * Track mounted instances without explicit IDs for dev warnings\n */\nconst mountedAutoInstances = new Set<string>();\n\n/**\n * HustleProvider - Provides Hustle SDK functionality to the app\n *\n * IMPORTANT: This provider depends on EmblemAuthProvider and must be nested within it.\n * It uses the modern pattern of passing the auth SDK instance to HustleIncognitoClient,\n * NOT the deprecated api-key pattern.\n *\n * @example\n * ```tsx\n * <EmblemAuthProvider appId=\"your-app-id\">\n * <HustleProvider hustleApiUrl=\"https://dev.agenthustle.ai\">\n * <App />\n * </HustleProvider>\n * </EmblemAuthProvider>\n * ```\n */\nexport function HustleProvider({\n children,\n hustleApiUrl = DEFAULT_HUSTLE_API_URL,\n debug = false,\n instanceId: explicitInstanceId,\n}: HustleProviderProps) {\n // Generate stable instance ID - explicit or auto-generated based on mount order\n const [resolvedInstanceId] = useState(() => {\n if (explicitInstanceId) {\n return explicitInstanceId;\n }\n // Auto-generate based on mount order\n const autoId = `instance-${++instanceCounter}`;\n mountedAutoInstances.add(autoId);\n return autoId;\n });\n\n // Track if this is an auto-generated instance for cleanup\n const isAutoInstance = !explicitInstanceId;\n\n // Dev warning for multiple auto-generated instances\n useEffect(() => {\n if (isAutoInstance && mountedAutoInstances.size > 1 && process.env.NODE_ENV !== 'production') {\n console.warn(\n `[Hustle] Multiple HustleProviders detected without explicit instanceId. ` +\n `For stable settings persistence, consider adding instanceId prop:\\n` +\n ` <HustleProvider instanceId=\"my-chat-name\">`\n );\n }\n\n // Cleanup on unmount\n return () => {\n if (isAutoInstance) {\n mountedAutoInstances.delete(resolvedInstanceId);\n }\n };\n }, [isAutoInstance, resolvedInstanceId]);\n\n // Get auth context - this provider REQUIRES EmblemAuthProvider\n const { authSDK, isAuthenticated } = useEmblemAuth();\n\n // Get plugins with instance scoping\n const { enabledPlugins } = usePlugins(resolvedInstanceId);\n\n // State\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [models, setModels] = useState<Model[]>([]);\n\n // Track registered plugins to avoid re-registering\n const registeredPluginsRef = useRef<Set<string>>(new Set());\n\n // Settings storage key - scoped to instance\n const SETTINGS_KEY = `hustle-settings-${resolvedInstanceId}`;\n\n // Load initial settings from localStorage\n const loadSettings = () => {\n if (typeof window === 'undefined') return { selectedModel: '', systemPrompt: '', skipServerPrompt: false };\n try {\n const stored = localStorage.getItem(SETTINGS_KEY);\n if (stored) {\n return JSON.parse(stored);\n }\n } catch {\n // Ignore parse errors\n }\n return { selectedModel: '', systemPrompt: '', skipServerPrompt: false };\n };\n\n const initialSettings = loadSettings();\n\n // Settings state (initialized from localStorage)\n const [selectedModel, setSelectedModelState] = useState<string>(initialSettings.selectedModel);\n const [systemPrompt, setSystemPromptState] = useState<string>(initialSettings.systemPrompt);\n const [skipServerPrompt, setSkipServerPromptState] = useState<boolean>(initialSettings.skipServerPrompt);\n\n // Persist settings to localStorage\n const saveSettings = useCallback((settings: { selectedModel: string; systemPrompt: string; skipServerPrompt: boolean }) => {\n if (typeof window === 'undefined') return;\n try {\n localStorage.setItem(SETTINGS_KEY, JSON.stringify(settings));\n } catch {\n // Ignore storage errors\n }\n }, []);\n\n // Wrapped setters that also persist\n const setSelectedModel = useCallback((value: string) => {\n setSelectedModelState(value);\n saveSettings({ selectedModel: value, systemPrompt, skipServerPrompt });\n }, [systemPrompt, skipServerPrompt, saveSettings]);\n\n const setSystemPrompt = useCallback((value: string) => {\n setSystemPromptState(value);\n saveSettings({ selectedModel, systemPrompt: value, skipServerPrompt });\n }, [selectedModel, skipServerPrompt, saveSettings]);\n\n const setSkipServerPrompt = useCallback((value: boolean) => {\n setSkipServerPromptState(value);\n saveSettings({ selectedModel, systemPrompt, skipServerPrompt: value });\n }, [selectedModel, systemPrompt, saveSettings]);\n\n // Debug logger\n const log = useCallback(\n (message: string, ...args: unknown[]) => {\n if (debug) {\n console.log(`[Hustle] ${message}`, ...args);\n }\n },\n [debug]\n );\n\n /**\n * Create the Hustle client with the auth SDK\n * This is the CORRECT pattern - using sdk: authSDK, NOT apiKey\n */\n const client = useMemo(() => {\n if (!authSDK || !isAuthenticated) {\n log('Client not created - auth not ready');\n return null;\n }\n\n log('Creating HustleIncognitoClient with auth SDK');\n\n try {\n const hustleClient = new HustleIncognitoClient({\n sdk: authSDK, // CORRECT: Pass auth SDK instance, NOT apiKey\n hustleApiUrl,\n debug,\n });\n\n // Subscribe to events (use any for SDK event types)\n hustleClient.on('tool_start', (event: unknown) => {\n log('Tool start:', event);\n });\n\n hustleClient.on('tool_end', (event: unknown) => {\n log('Tool end:', event);\n });\n\n hustleClient.on('stream_end', (event: unknown) => {\n log('Stream end:', event);\n });\n\n return hustleClient;\n } catch (err) {\n log('Failed to create client:', err);\n setError(err instanceof Error ? err : new Error('Failed to create Hustle client'));\n return null;\n }\n }, [authSDK, isAuthenticated, hustleApiUrl, debug, log]);\n\n // Is ready when client exists\n const isReady = client !== null;\n\n /**\n * Register enabled plugins with the client\n */\n useEffect(() => {\n if (!client) return;\n\n const registerPlugins = async () => {\n // Get the set of enabled plugin names\n const enabledNames = new Set(enabledPlugins.map(p => p.name));\n\n // Unregister plugins that were disabled\n for (const name of registeredPluginsRef.current) {\n if (!enabledNames.has(name)) {\n log('Unregistering plugin:', name);\n try {\n await client.unuse(name);\n registeredPluginsRef.current.delete(name);\n log('Plugin unregistered:', name);\n } catch (err) {\n log('Failed to unregister plugin:', name, err);\n }\n }\n }\n\n // Register new plugins\n for (const plugin of enabledPlugins) {\n if (!registeredPluginsRef.current.has(plugin.name)) {\n log('Registering plugin:', plugin.name);\n try {\n // The SDK's use() method registers the plugin\n if (plugin.executors || plugin.hooks) {\n // Cast to SDK's expected type (our types are compatible but TS is strict)\n await client.use({\n name: plugin.name,\n version: plugin.version,\n tools: plugin.tools,\n executors: plugin.executors,\n hooks: plugin.hooks,\n } as Parameters<typeof client.use>[0]);\n registeredPluginsRef.current.add(plugin.name);\n log('Plugin registered:', plugin.name);\n } else {\n log('Plugin has no executors/hooks, skipping registration:', plugin.name);\n }\n } catch (err) {\n log('Failed to register plugin:', plugin.name, err);\n }\n }\n }\n };\n\n registerPlugins();\n }, [client, enabledPlugins, log]);\n\n /**\n * Load available models\n */\n const loadModels = useCallback(async (): Promise<Model[]> => {\n if (!client) {\n log('Cannot load models - client not ready');\n return [];\n }\n\n log('Loading models');\n setIsLoading(true);\n\n try {\n const modelList = await client.getModels();\n setModels(modelList as Model[]);\n log('Loaded models:', modelList.length);\n return modelList as Model[];\n } catch (err) {\n log('Failed to load models:', err);\n setError(err instanceof Error ? err : new Error('Failed to load models'));\n return [];\n } finally {\n setIsLoading(false);\n }\n }, [client, log]);\n\n /**\n * Load models when client becomes ready\n */\n useEffect(() => {\n if (client) {\n loadModels();\n }\n }, [client, loadModels]);\n\n /**\n * Send a chat message (non-streaming)\n */\n const chat = useCallback(\n async (options: ChatOptions): Promise<ChatResponse> => {\n if (!client) {\n throw new Error('Hustle client not ready. Please authenticate first.');\n }\n\n log('Chat request:', options.messages.length, 'messages');\n setIsLoading(true);\n setError(null);\n\n try {\n // Build the messages array, prepending system prompt if provided\n const effectiveSystemPrompt = options.systemPrompt || systemPrompt;\n const messagesWithSystem: ChatMessage[] = [];\n\n if (effectiveSystemPrompt) {\n messagesWithSystem.push({ role: 'system', content: effectiveSystemPrompt });\n }\n messagesWithSystem.push(...options.messages);\n\n // Build the options object for the SDK\n const sdkOptions: Record<string, unknown> = {\n messages: messagesWithSystem,\n processChunks: true,\n };\n\n if (options.model || selectedModel) {\n sdkOptions.model = options.model || selectedModel;\n }\n if (options.overrideSystemPrompt ?? skipServerPrompt) {\n sdkOptions.overrideSystemPrompt = true;\n }\n if (options.attachments) {\n sdkOptions.attachments = options.attachments;\n }\n\n // Call the SDK - it accepts an options object\n const response = await (client as unknown as { chat: (opts: Record<string, unknown>) => Promise<unknown> }).chat(sdkOptions);\n log('Chat response received');\n return response as ChatResponse;\n } catch (err) {\n log('Chat error:', err);\n const error = err instanceof Error ? err : new Error('Chat request failed');\n setError(error);\n throw error;\n } finally {\n setIsLoading(false);\n }\n },\n [client, selectedModel, systemPrompt, skipServerPrompt, log]\n );\n\n /**\n * Send a chat message with streaming response\n */\n const chatStreamImpl = useCallback(\n (options: StreamOptions): AsyncIterable<StreamChunk> => {\n if (!client) {\n // Return an async iterable that yields an error\n return {\n [Symbol.asyncIterator]: async function* () {\n yield { type: 'error', value: { message: 'Hustle client not ready. Please authenticate first.' } } as StreamChunk;\n },\n };\n }\n\n log('Chat stream request:', options.messages.length, 'messages');\n setError(null);\n\n // Build the messages array, prepending system prompt if provided\n const effectiveSystemPrompt = options.systemPrompt || systemPrompt;\n const messagesWithSystem: ChatMessage[] = [];\n\n if (effectiveSystemPrompt) {\n messagesWithSystem.push({ role: 'system', content: effectiveSystemPrompt });\n }\n messagesWithSystem.push(...options.messages);\n\n // Build the options object for the SDK\n const sdkOptions: Record<string, unknown> = {\n messages: messagesWithSystem,\n processChunks: options.processChunks ?? true,\n };\n\n if (options.model || selectedModel) {\n sdkOptions.model = options.model || selectedModel;\n }\n if (options.overrideSystemPrompt ?? skipServerPrompt) {\n sdkOptions.overrideSystemPrompt = true;\n }\n if (options.attachments) {\n sdkOptions.attachments = options.attachments;\n }\n\n // Get the stream from the client (cast through unknown for SDK compatibility)\n const stream = client.chatStream(sdkOptions as unknown as Parameters<typeof client.chatStream>[0]);\n\n // Wrap to add logging and type conversion\n return {\n [Symbol.asyncIterator]: async function* () {\n try {\n for await (const chunk of stream) {\n // Type guard for chunk with type property\n const typedChunk = chunk as { type?: string; value?: unknown };\n\n if (typedChunk.type === 'text') {\n const textValue = typedChunk.value as string;\n log('Stream text chunk:', textValue?.substring(0, 50));\n yield { type: 'text', value: textValue } as StreamChunk;\n } else if (typedChunk.type === 'tool_call') {\n log('Stream tool call:', typedChunk.value);\n yield { type: 'tool_call', value: typedChunk.value } as StreamChunk;\n } else if (typedChunk.type === 'tool_result') {\n log('Stream tool result');\n yield { type: 'tool_result', value: typedChunk.value } as StreamChunk;\n } else if (typedChunk.type === 'error') {\n const errorValue = typedChunk.value as { message?: string };\n log('Stream error:', errorValue);\n setError(new Error(errorValue?.message || 'Stream error'));\n yield { type: 'error', value: { message: errorValue?.message || 'Stream error' } } as StreamChunk;\n } else {\n // Pass through unknown chunk types\n yield chunk as StreamChunk;\n }\n }\n } catch (err) {\n log('Stream error:', err);\n const error = err instanceof Error ? err : new Error('Stream failed');\n setError(error);\n yield { type: 'error', value: { message: error.message } } as StreamChunk;\n }\n },\n };\n },\n [client, selectedModel, systemPrompt, skipServerPrompt, log]\n );\n\n /**\n * Upload a file\n */\n const uploadFile = useCallback(\n async (file: File): Promise<Attachment> => {\n if (!client) {\n throw new Error('Hustle client not ready. Please authenticate first.');\n }\n\n log('Uploading file:', file.name);\n setIsLoading(true);\n\n try {\n const attachment = await client.uploadFile(file);\n log('File uploaded:', attachment);\n return attachment as Attachment;\n } catch (err) {\n log('Upload error:', err);\n const error = err instanceof Error ? err : new Error('File upload failed');\n setError(error);\n throw error;\n } finally {\n setIsLoading(false);\n }\n },\n [client, log]\n );\n\n // Context value\n const value: HustleContextValue = {\n // Instance ID for scoped storage\n instanceId: resolvedInstanceId,\n\n // State\n isReady,\n isLoading,\n error,\n models,\n\n // Client (for advanced use)\n client,\n\n // Chat methods\n chat,\n chatStream: chatStreamImpl,\n\n // File upload\n uploadFile,\n\n // Data fetching\n loadModels,\n\n // Settings\n selectedModel,\n setSelectedModel,\n systemPrompt,\n setSystemPrompt,\n skipServerPrompt,\n setSkipServerPrompt,\n };\n\n return (\n <HustleContext.Provider value={value}>\n {children}\n </HustleContext.Provider>\n );\n}\n\n/**\n * Hook to access Hustle context\n * Must be used within HustleProvider (which must be within EmblemAuthProvider)\n *\n * @example\n * ```tsx\n * function ChatComponent() {\n * const { isReady, chat, chatStream } = useHustle();\n *\n * if (!isReady) {\n * return <div>Please connect to start chatting</div>;\n * }\n *\n * // Use chat or chatStream...\n * }\n * ```\n */\nexport function useHustle(): HustleContextValue {\n const context = useContext(HustleContext);\n if (context === undefined) {\n throw new Error('useHustle must be used within a HustleProvider (which requires EmblemAuthProvider)');\n }\n return context;\n}\n","/**\n * Design Tokens for Hustle React Components\n *\n * These tokens use CSS Custom Properties (CSS Variables) for easy theming.\n * Override any variable in your CSS to customize the theme:\n *\n * @example\n * ```css\n * :root {\n * --hustle-color-bg-primary: #ffffff;\n * --hustle-color-text-primary: #1a1a1a;\n * }\n * ```\n */\n\n// ============================================================================\n// Default Token Values\n// ============================================================================\nconst defaults = {\n colors: {\n // Backgrounds\n bgPrimary: '#0b0d10',\n bgSecondary: '#12161b',\n bgTertiary: '#1a1f25',\n bgHover: '#252b33',\n bgOverlay: 'rgba(0, 0, 0, 0.7)',\n\n // Borders\n borderPrimary: '#222b35',\n borderSecondary: '#333',\n borderHover: '#444',\n\n // Text\n textPrimary: '#e6eef8',\n textSecondary: '#8892a4',\n textTertiary: '#6b7280',\n textInverse: '#fff',\n\n // Accent - Primary (blue)\n accentPrimary: '#4c9aff',\n accentPrimaryHover: '#7bb6ff',\n accentPrimaryBg: 'rgba(76, 154, 255, 0.1)',\n\n // Accent - Success (green)\n accentSuccess: '#10b981',\n accentSuccessHover: '#34d399',\n accentSuccessBg: 'rgba(16, 185, 129, 0.1)',\n\n // Accent - Warning (yellow/orange)\n accentWarning: '#f59e0b',\n accentWarningBg: 'rgba(245, 158, 11, 0.1)',\n\n // Accent - Error (red)\n accentError: '#dc2626',\n accentErrorHover: '#ef4444',\n accentErrorBg: 'rgba(239, 68, 68, 0.1)',\n\n // Messages\n msgUser: '#1e3a5f',\n msgAssistant: '#1a2633',\n },\n\n typography: {\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n fontFamilyMono: '\"SF Mono\", Monaco, monospace',\n fontSizeXs: '11px',\n fontSizeSm: '13px',\n fontSizeMd: '14px',\n fontSizeLg: '16px',\n fontSizeXl: '18px',\n fontWeightNormal: '400',\n fontWeightMedium: '500',\n fontWeightSemibold: '600',\n lineHeightTight: '1.3',\n lineHeightNormal: '1.5',\n lineHeightRelaxed: '1.7',\n },\n\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '12px',\n lg: '16px',\n xl: '20px',\n xxl: '24px',\n },\n\n radius: {\n sm: '4px',\n md: '6px',\n lg: '8px',\n xl: '12px',\n pill: '20px',\n full: '50%',\n },\n\n shadows: {\n sm: '0 2px 8px rgba(0,0,0,0.2)',\n md: '0 4px 16px rgba(0,0,0,0.3)',\n lg: '0 8px 32px rgba(0,0,0,0.4)',\n xl: '0 16px 48px rgba(0,0,0,0.5)',\n },\n\n // Glow effects (for enhanced themes)\n glows: {\n primary: 'rgba(76, 154, 255, 0.4)',\n success: 'rgba(16, 185, 129, 0.4)',\n error: 'rgba(239, 68, 68, 0.4)',\n ambient: 'rgba(76, 154, 255, 0.08)',\n },\n\n transitions: {\n fast: '0.15s ease',\n normal: '0.2s ease',\n slow: '0.3s ease',\n },\n\n zIndex: {\n dropdown: '100',\n modal: '1000',\n fullscreen: '1000',\n modalOverFullscreen: '10000',\n },\n};\n\n// ============================================================================\n// CSS Variable Name Generator\n// ============================================================================\nfunction toVarName(category: string, key: string): string {\n // Convert camelCase to kebab-case\n const kebab = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n return `--hustle-${category}-${kebab}`;\n}\n\n// ============================================================================\n// CSS Variables Stylesheet (inject this once in your app)\n// ============================================================================\nfunction generateCSSVariables(): string {\n const lines: string[] = [':root {'];\n\n // Colors\n for (const [key, value] of Object.entries(defaults.colors)) {\n lines.push(` ${toVarName('color', key)}: ${value};`);\n }\n\n // Typography\n for (const [key, value] of Object.entries(defaults.typography)) {\n lines.push(` ${toVarName('font', key)}: ${value};`);\n }\n\n // Spacing\n for (const [key, value] of Object.entries(defaults.spacing)) {\n lines.push(` ${toVarName('space', key)}: ${value};`);\n }\n\n // Radius\n for (const [key, value] of Object.entries(defaults.radius)) {\n lines.push(` ${toVarName('radius', key)}: ${value};`);\n }\n\n // Shadows\n for (const [key, value] of Object.entries(defaults.shadows)) {\n lines.push(` ${toVarName('shadow', key)}: ${value};`);\n }\n\n // Glows\n for (const [key, value] of Object.entries(defaults.glows)) {\n lines.push(` ${toVarName('glow', key)}: ${value};`);\n }\n\n // Transitions\n for (const [key, value] of Object.entries(defaults.transitions)) {\n lines.push(` ${toVarName('transition', key)}: ${value};`);\n }\n\n // Z-Index\n for (const [key, value] of Object.entries(defaults.zIndex)) {\n lines.push(` ${toVarName('z', key)}: ${value};`);\n }\n\n lines.push('}');\n return lines.join('\\n');\n}\n\n/**\n * CSS Variables stylesheet - inject this in your app's <head> or include in your CSS\n * Contains all default token values as CSS custom properties\n */\nexport const cssVariables = generateCSSVariables();\n\n// ============================================================================\n// Token Accessors (use CSS var() with fallback to default)\n// ============================================================================\nfunction createColorTokens() {\n const result: Record<string, string> = {};\n for (const [key, defaultValue] of Object.entries(defaults.colors)) {\n result[key] = `var(${toVarName('color', key)}, ${defaultValue})`;\n }\n return result as typeof defaults.colors;\n}\n\nfunction createTypographyTokens() {\n const result: Record<string, string | number> = {};\n for (const [key, defaultValue] of Object.entries(defaults.typography)) {\n result[key] = `var(${toVarName('font', key)}, ${defaultValue})`;\n }\n return result as unknown as {\n fontFamily: string;\n fontFamilyMono: string;\n fontSizeXs: string;\n fontSizeSm: string;\n fontSizeMd: string;\n fontSizeLg: string;\n fontSizeXl: string;\n fontWeightNormal: number;\n fontWeightMedium: number;\n fontWeightSemibold: number;\n lineHeightTight: number;\n lineHeightNormal: number;\n lineHeightRelaxed: number;\n };\n}\n\nfunction createSpacingTokens() {\n const result: Record<string, string> = {};\n for (const [key, defaultValue] of Object.entries(defaults.spacing)) {\n result[key] = `var(${toVarName('space', key)}, ${defaultValue})`;\n }\n return result as typeof defaults.spacing;\n}\n\nfunction createRadiusTokens() {\n const result: Record<string, string> = {};\n for (const [key, defaultValue] of Object.entries(defaults.radius)) {\n result[key] = `var(${toVarName('radius', key)}, ${defaultValue})`;\n }\n return result as typeof defaults.radius;\n}\n\nfunction createShadowTokens() {\n const result: Record<string, string> = {};\n for (const [key, defaultValue] of Object.entries(defaults.shadows)) {\n result[key] = `var(${toVarName('shadow', key)}, ${defaultValue})`;\n }\n return result as typeof defaults.shadows;\n}\n\nfunction createGlowTokens() {\n const result: Record<string, string> = {};\n for (const [key, defaultValue] of Object.entries(defaults.glows)) {\n result[key] = `var(${toVarName('glow', key)}, ${defaultValue})`;\n }\n return result as typeof defaults.glows;\n}\n\nfunction createTransitionTokens() {\n const result: Record<string, string> = {};\n for (const [key, defaultValue] of Object.entries(defaults.transitions)) {\n result[key] = `var(${toVarName('transition', key)}, ${defaultValue})`;\n }\n return result as typeof defaults.transitions;\n}\n\nfunction createZIndexTokens() {\n const result: Record<string, number> = {};\n for (const [key, defaultValue] of Object.entries(defaults.zIndex)) {\n // z-index needs to be a number for React inline styles\n // We keep the default value as number, CSS var override still works\n result[key] = parseInt(defaultValue, 10);\n }\n return result as { dropdown: number; modal: number; fullscreen: number; modalOverFullscreen: number };\n}\n\n// ============================================================================\n// Exported Tokens (use these in components)\n// ============================================================================\nexport const tokens = {\n colors: createColorTokens(),\n typography: createTypographyTokens(),\n spacing: createSpacingTokens(),\n radius: createRadiusTokens(),\n shadows: createShadowTokens(),\n glows: createGlowTokens(),\n transitions: createTransitionTokens(),\n zIndex: createZIndexTokens(),\n};\n\nexport type Tokens = typeof tokens;\n\n/**\n * Raw default values (without CSS var() wrapper)\n * Use this if you need the actual values, not CSS variable references\n */\nexport const defaultTokens = defaults;\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Get a token value by path (e.g., 'colors.bgPrimary')\n */\nexport function getTokenValue(path: string): string | number | undefined {\n const parts = path.split('.');\n let current: unknown = tokens;\n\n for (const part of parts) {\n if (current && typeof current === 'object' && part in current) {\n current = (current as Record<string, unknown>)[part];\n } else {\n return undefined;\n }\n }\n\n return current as string | number | undefined;\n}\n\n/**\n * Create a themed style object\n */\nexport function createStyle(mapping: Record<string, string>): React.CSSProperties {\n const result: Record<string, unknown> = {};\n\n for (const [cssProp, tokenPath] of Object.entries(mapping)) {\n const value = getTokenValue(tokenPath);\n if (value !== undefined) {\n result[cssProp] = value;\n }\n }\n\n return result as React.CSSProperties;\n}\n\n// ============================================================================\n// Common Style Presets\n// ============================================================================\nexport const presets = {\n base: {\n fontFamily: tokens.typography.fontFamily,\n fontSize: tokens.typography.fontSizeMd,\n lineHeight: tokens.typography.lineHeightNormal,\n color: tokens.colors.textPrimary,\n } as React.CSSProperties,\n\n card: {\n background: tokens.colors.bgSecondary,\n border: `1px solid ${tokens.colors.borderPrimary}`,\n borderRadius: tokens.radius.xl,\n } as React.CSSProperties,\n\n input: {\n background: tokens.colors.bgTertiary,\n border: `1px solid ${tokens.colors.borderSecondary}`,\n borderRadius: tokens.radius.lg,\n color: tokens.colors.textPrimary,\n fontSize: tokens.typography.fontSizeMd,\n padding: `${tokens.spacing.md} ${tokens.spacing.lg}`,\n outline: 'none',\n transition: `border-color ${tokens.transitions.normal}`,\n } as React.CSSProperties,\n\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: tokens.spacing.sm,\n padding: `${tokens.spacing.sm} ${tokens.spacing.lg}`,\n borderRadius: tokens.radius.lg,\n fontSize: tokens.typography.fontSizeMd,\n fontWeight: tokens.typography.fontWeightMedium,\n cursor: 'pointer',\n transition: `all ${tokens.transitions.normal}`,\n border: `1px solid ${tokens.colors.borderSecondary}`,\n outline: 'none',\n } as React.CSSProperties,\n\n buttonPrimary: {\n background: tokens.colors.accentPrimary,\n color: tokens.colors.textInverse,\n borderColor: tokens.colors.accentPrimary,\n } as React.CSSProperties,\n\n buttonSecondary: {\n background: tokens.colors.bgTertiary,\n color: tokens.colors.textPrimary,\n borderColor: tokens.colors.borderSecondary,\n } as React.CSSProperties,\n\n buttonIcon: {\n width: '36px',\n height: '36px',\n padding: 0,\n // background inherited from global button styles\n color: tokens.colors.textSecondary,\n } as React.CSSProperties,\n\n mono: {\n fontFamily: tokens.typography.fontFamilyMono,\n fontSize: tokens.typography.fontSizeSm,\n } as React.CSSProperties,\n\n label: {\n display: 'block',\n fontSize: tokens.typography.fontSizeXs,\n color: tokens.colors.textTertiary,\n marginBottom: tokens.spacing.xs,\n } as React.CSSProperties,\n};\n\n// ============================================================================\n// Animation Keyframes\n// ============================================================================\n\n/**\n * Animation keyframes only (no CSS variable defaults)\n * Use this in components to avoid overriding consumer theme customizations\n */\nexport const animations = `\n@keyframes hustle-spin {\n to { transform: rotate(360deg); }\n}\n@keyframes hustle-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n}\n@keyframes hustle-glow {\n 0%, 100% {\n opacity: 1;\n text-shadow: 0 0 4px ${defaults.colors.accentPrimaryBg};\n }\n 50% {\n opacity: 0.6;\n text-shadow: 0 0 8px ${defaults.colors.accentPrimary};\n }\n}\n`;\n\n/**\n * @deprecated Use `animations` instead. This includes CSS variable defaults\n * which can override consumer theme customizations.\n */\nexport const keyframes = `\n${cssVariables}\n${animations}\n`;\n\nexport default tokens;\n","'use client';\n\nimport React, { useCallback, useState } from 'react';\nimport { useEmblemAuth } from '../providers/EmblemAuthProvider';\nimport { tokens, presets, animations } from '../styles';\n\n/**\n * Props for ConnectButton component\n */\nexport interface ConnectButtonProps {\n /** Additional CSS classes */\n className?: string;\n /** Additional inline styles */\n style?: React.CSSProperties;\n /** Custom content when disconnected */\n connectLabel?: React.ReactNode;\n /** Custom content while loading */\n loadingLabel?: React.ReactNode;\n /** Callback after successful connection */\n onConnect?: () => void;\n /** Callback after disconnection */\n onDisconnect?: () => void;\n /** Show vault info dropdown when connected */\n showVaultInfo?: boolean;\n /** Disable the button */\n disabled?: boolean;\n}\n\n/**\n * Truncate wallet address for display\n */\nfunction truncateAddress(address: string): string {\n if (!address || address.length < 10) return address || '';\n return `${address.slice(0, 6)}...${address.slice(-4)}`;\n}\n\n/**\n * Copy text to clipboard\n */\nasync function copyToClipboard(text: string): Promise<boolean> {\n try {\n await navigator.clipboard.writeText(text);\n return true;\n } catch {\n return false;\n }\n}\n\n// Styles using design tokens\nconst styles = {\n wrapper: {\n position: 'relative' as const,\n display: 'inline-flex',\n alignItems: 'center',\n gap: tokens.spacing.sm,\n },\n\n button: {\n ...presets.button,\n padding: `${tokens.spacing.sm} ${tokens.spacing.xl}`,\n } as React.CSSProperties,\n\n disconnected: {\n background: tokens.colors.bgTertiary,\n color: tokens.colors.textPrimary,\n borderColor: tokens.colors.borderSecondary,\n } as React.CSSProperties,\n\n disconnectedHover: {\n background: tokens.colors.bgHover,\n borderColor: tokens.colors.borderHover,\n } as React.CSSProperties,\n\n connected: {\n background: 'transparent',\n color: tokens.colors.accentSuccess,\n borderColor: tokens.colors.accentSuccess,\n borderRadius: tokens.radius.pill,\n } as React.CSSProperties,\n\n connectedHover: {\n background: tokens.colors.accentSuccessBg,\n } as React.CSSProperties,\n\n loading: {\n background: tokens.colors.borderSecondary,\n color: tokens.colors.textSecondary,\n cursor: 'wait',\n } as React.CSSProperties,\n\n disabled: {\n background: tokens.colors.borderSecondary,\n color: tokens.colors.textTertiary,\n cursor: 'not-allowed',\n opacity: 0.5,\n } as React.CSSProperties,\n\n icon: {\n fontSize: tokens.typography.fontSizeLg,\n } as React.CSSProperties,\n\n spinner: {\n display: 'inline-block',\n width: '14px',\n height: '14px',\n border: '2px solid currentColor',\n borderTopColor: 'transparent',\n borderRadius: tokens.radius.full,\n animation: 'hustle-spin 0.8s linear infinite',\n } as React.CSSProperties,\n\n address: {\n ...presets.mono,\n color: tokens.colors.textPrimary,\n } as React.CSSProperties,\n\n dot: {\n color: tokens.colors.textSecondary,\n } as React.CSSProperties,\n\n check: {\n color: tokens.colors.accentSuccess,\n } as React.CSSProperties,\n\n arrow: {\n fontSize: '10px',\n color: tokens.colors.textSecondary,\n marginLeft: tokens.spacing.xs,\n } as React.CSSProperties,\n\n // Disconnect button\n disconnectBtn: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '36px',\n height: '36px',\n background: 'transparent',\n border: `1px solid ${tokens.colors.borderSecondary}`,\n borderRadius: tokens.radius.lg,\n color: tokens.colors.textSecondary,\n cursor: 'pointer',\n fontSize: '16px',\n transition: `all ${tokens.transitions.normal}`,\n } as React.CSSProperties,\n\n disconnectBtnHover: {\n borderColor: tokens.colors.accentError,\n color: tokens.colors.accentError,\n } as React.CSSProperties,\n\n // Vault info dropdown\n dropdown: {\n position: 'absolute' as const,\n top: '100%',\n left: 0,\n marginTop: tokens.spacing.xs,\n background: tokens.colors.bgPrimary,\n border: `1px solid ${tokens.colors.accentSuccess}`,\n borderRadius: tokens.radius.xl,\n padding: tokens.spacing.lg,\n minWidth: '300px',\n zIndex: tokens.zIndex.dropdown,\n boxShadow: `0 8px 32px rgba(0,0,0,0.4), 0 0 0 1px ${tokens.colors.accentSuccessBg}`,\n },\n\n dropdownHeader: {\n fontSize: tokens.typography.fontSizeXs,\n fontWeight: tokens.typography.fontWeightSemibold,\n color: tokens.colors.textSecondary,\n letterSpacing: '0.5px',\n marginBottom: tokens.spacing.lg,\n textTransform: 'uppercase' as const,\n },\n\n dropdownRow: {\n marginBottom: tokens.spacing.md,\n },\n\n dropdownLabel: {\n display: 'block',\n fontSize: tokens.typography.fontSizeXs,\n color: tokens.colors.textTertiary,\n marginBottom: tokens.spacing.xs,\n },\n\n dropdownValueRow: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: tokens.spacing.sm,\n },\n\n dropdownValue: {\n fontSize: tokens.typography.fontSizeMd,\n color: tokens.colors.textPrimary,\n fontWeight: tokens.typography.fontWeightMedium,\n flex: 1,\n },\n\n dropdownValueMono: {\n ...presets.mono,\n wordBreak: 'break-all' as const,\n },\n\n copyBtn: {\n background: 'transparent',\n border: `1px solid ${tokens.colors.borderSecondary}`,\n color: tokens.colors.textSecondary,\n padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,\n borderRadius: tokens.radius.sm,\n cursor: 'pointer',\n fontSize: tokens.typography.fontSizeXs,\n transition: `all ${tokens.transitions.normal}`,\n whiteSpace: 'nowrap' as const,\n },\n\n copyBtnHover: {\n background: tokens.colors.bgHover,\n borderColor: tokens.colors.accentPrimary,\n color: tokens.colors.accentPrimary,\n },\n\n copyBtnCopied: {\n background: tokens.colors.accentSuccess,\n borderColor: tokens.colors.accentSuccess,\n color: tokens.colors.textInverse,\n },\n};\n\n/**\n * ConnectButton - A button to trigger Emblem Auth connection\n * When connected, shows vault info dropdown and separate disconnect button\n */\nexport function ConnectButton({\n className = '',\n style,\n connectLabel = 'Connect',\n loadingLabel = 'Connecting...',\n onConnect,\n onDisconnect,\n showVaultInfo = true,\n disabled = false,\n}: ConnectButtonProps) {\n const {\n isAuthenticated,\n isLoading,\n walletAddress,\n vaultId,\n openAuthModal,\n logout,\n } = useEmblemAuth();\n\n const [isHovered, setIsHovered] = useState(false);\n const [showDropdown, setShowDropdown] = useState(false);\n const [disconnectHovered, setDisconnectHovered] = useState(false);\n const [copiedField, setCopiedField] = useState<string | null>(null);\n const [copyHovered, setCopyHovered] = useState<string | null>(null);\n\n const handleClick = useCallback(async () => {\n if (disabled) return;\n\n if (!isAuthenticated && !isLoading) {\n await openAuthModal();\n onConnect?.();\n }\n // When connected, clicking toggles dropdown (handled by hover)\n }, [disabled, isAuthenticated, isLoading, openAuthModal, onConnect]);\n\n const handleDisconnect = useCallback(() => {\n logout();\n onDisconnect?.();\n setShowDropdown(false);\n }, [logout, onDisconnect]);\n\n const handleCopy = useCallback(async (field: string, value: string) => {\n const success = await copyToClipboard(value);\n if (success) {\n setCopiedField(field);\n setTimeout(() => setCopiedField(null), 1500);\n }\n }, []);\n\n // Build style based on state\n let buttonStyle: React.CSSProperties = { ...styles.button };\n let content: React.ReactNode = connectLabel;\n\n if (disabled) {\n buttonStyle = { ...buttonStyle, ...styles.disconnected, ...styles.disabled };\n } else if (isLoading) {\n buttonStyle = { ...buttonStyle, ...styles.disconnected, ...styles.loading };\n content = (\n <>\n <span style={styles.spinner} />\n {loadingLabel}\n </>\n );\n } else if (isAuthenticated) {\n buttonStyle = { ...buttonStyle, ...styles.connected };\n if (isHovered || showDropdown) {\n buttonStyle = { ...buttonStyle, ...styles.connectedHover };\n }\n const truncated = truncateAddress(walletAddress || '');\n\n content = (\n <>\n <span style={styles.check}>✓</span>\n <span>Connected</span>\n <span style={styles.dot}>•</span>\n <span style={styles.address}>{truncated}</span>\n <span style={styles.arrow}>▾</span>\n </>\n );\n } else {\n buttonStyle = { ...buttonStyle, ...styles.disconnected };\n if (isHovered) {\n buttonStyle = { ...buttonStyle, ...styles.disconnectedHover };\n }\n content = (\n <>\n <span style={styles.icon}>→</span>\n {connectLabel}\n </>\n );\n }\n\n // Merge with passed style\n if (style) {\n buttonStyle = { ...buttonStyle, ...style };\n }\n\n // Render copy button helper\n const renderCopyBtn = (field: string, value: string) => {\n const isCopied = copiedField === field;\n const isHover = copyHovered === field;\n return (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); handleCopy(field, value); }}\n style={{\n ...styles.copyBtn,\n ...(isCopied ? styles.copyBtnCopied : isHover ? styles.copyBtnHover : {}),\n }}\n onMouseEnter={() => setCopyHovered(field)}\n onMouseLeave={() => setCopyHovered(null)}\n >\n {isCopied ? 'Copied!' : 'Copy'}\n </button>\n );\n };\n\n return (\n <>\n <style>{animations}</style>\n <div\n style={styles.wrapper}\n onMouseEnter={() => isAuthenticated && showVaultInfo && setShowDropdown(true)}\n onMouseLeave={() => setShowDropdown(false)}\n >\n {/* Main button */}\n <button\n type=\"button\"\n onClick={handleClick}\n disabled={disabled || isLoading}\n className={className}\n style={buttonStyle}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {content}\n </button>\n\n {/* Disconnect button (only when authenticated) */}\n {isAuthenticated && (\n <button\n type=\"button\"\n onClick={handleDisconnect}\n style={{\n ...styles.disconnectBtn,\n ...(disconnectHovered ? styles.disconnectBtnHover : {}),\n }}\n onMouseEnter={() => setDisconnectHovered(true)}\n onMouseLeave={() => setDisconnectHovered(false)}\n title=\"Disconnect\"\n >\n ⏻\n </button>\n )}\n\n {/* Vault info dropdown */}\n {isAuthenticated && showVaultInfo && showDropdown && (\n <div style={styles.dropdown}>\n <div style={styles.dropdownHeader}>Vault Information</div>\n\n {/* Vault ID */}\n <div style={styles.dropdownRow}>\n <span style={styles.dropdownLabel}>Vault ID</span>\n <div style={styles.dropdownValueRow}>\n <span style={styles.dropdownValue}>#{vaultId}</span>\n {renderCopyBtn('vaultId', vaultId || '')}\n </div>\n </div>\n\n {/* Connected Wallet */}\n <div style={{ ...styles.dropdownRow, marginBottom: 0 }}>\n <span style={styles.dropdownLabel}>Connected Wallet</span>\n <div style={styles.dropdownValueRow}>\n <span style={{ ...styles.dropdownValue, ...styles.dropdownValueMono }}>\n {walletAddress}\n </span>\n {renderCopyBtn('wallet', walletAddress || '')}\n </div>\n </div>\n </div>\n )}\n </div>\n </>\n );\n}\n\nexport default ConnectButton;\n","'use client';\n\nimport React, { useState, useCallback } from 'react';\nimport { useEmblemAuth } from '../providers/EmblemAuthProvider';\nimport { tokens, presets, animations } from '../styles';\n\n/**\n * Props for AuthStatus component\n */\nexport interface AuthStatusProps {\n /** Additional CSS classes */\n className?: string;\n /** Additional inline styles */\n style?: React.CSSProperties;\n /** Show expandable vault details */\n showVaultInfo?: boolean;\n /** Show logout button */\n showLogout?: boolean;\n}\n\n/**\n * Truncate address for display\n */\nfunction truncateAddress(address: string): string {\n if (!address || address.length < 10) return address || '';\n return `${address.slice(0, 6)}...${address.slice(-4)}`;\n}\n\n/**\n * Copy text to clipboard\n */\nasync function copyToClipboard(text: string): Promise<boolean> {\n try {\n await navigator.clipboard.writeText(text);\n return true;\n } catch {\n return false;\n }\n}\n\n// Styles using design tokens\nconst s = {\n container: {\n position: 'relative' as const,\n display: 'inline-flex',\n alignItems: 'center',\n gap: tokens.spacing.sm,\n fontFamily: tokens.typography.fontFamily,\n },\n disconnected: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: tokens.spacing.sm,\n color: tokens.colors.textSecondary,\n fontSize: tokens.typography.fontSizeMd,\n },\n dot: {\n display: 'inline-block',\n width: '8px',\n height: '8px',\n borderRadius: tokens.radius.full,\n backgroundColor: tokens.colors.textTertiary,\n },\n dotConnected: {\n backgroundColor: tokens.colors.accentSuccess,\n },\n spinner: {\n display: 'inline-block',\n width: '12px',\n height: '12px',\n border: `2px solid ${tokens.colors.textSecondary}`,\n borderTopColor: 'transparent',\n borderRadius: tokens.radius.full,\n animation: 'hustle-spin 0.8s linear infinite',\n },\n logoutBtn: {\n ...presets.buttonIcon,\n border: `1px solid ${tokens.colors.borderSecondary}`,\n borderRadius: tokens.radius.lg,\n transition: `all ${tokens.transitions.normal}`,\n } as React.CSSProperties,\n logoutBtnHover: {\n borderColor: tokens.colors.accentError,\n color: tokens.colors.accentError,\n },\n vaultInfoWrapper: {\n position: 'relative' as const,\n },\n vaultInfo: {\n position: 'absolute' as const,\n top: '100%',\n right: 0,\n marginTop: tokens.spacing.sm,\n background: tokens.colors.bgSecondary,\n border: `1px solid ${tokens.colors.borderPrimary}`,\n borderRadius: tokens.radius.xl,\n padding: tokens.spacing.lg,\n minWidth: '380px',\n zIndex: tokens.zIndex.dropdown,\n boxShadow: tokens.shadows.lg,\n },\n vaultInfoHeader: {\n fontSize: tokens.typography.fontSizeXs,\n fontWeight: tokens.typography.fontWeightSemibold,\n color: tokens.colors.textSecondary,\n letterSpacing: '0.5px',\n marginBottom: tokens.spacing.lg,\n textTransform: 'uppercase' as const,\n },\n vaultInfoRow: {\n marginBottom: tokens.spacing.md,\n },\n vaultLabel: {\n display: 'block',\n fontSize: '12px',\n color: tokens.colors.textTertiary,\n marginBottom: tokens.spacing.xs,\n },\n vaultValueRow: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: tokens.spacing.sm,\n },\n vaultValue: {\n fontSize: tokens.typography.fontSizeMd,\n color: tokens.colors.textPrimary,\n fontWeight: tokens.typography.fontWeightMedium,\n flex: 1,\n },\n vaultValueMono: {\n ...presets.mono,\n wordBreak: 'break-all' as const,\n },\n copyBtn: {\n background: 'transparent',\n border: `1px solid ${tokens.colors.borderSecondary}`,\n color: tokens.colors.textSecondary,\n padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,\n borderRadius: tokens.radius.sm,\n cursor: 'pointer',\n fontSize: tokens.typography.fontSizeXs,\n transition: `all ${tokens.transitions.normal}`,\n whiteSpace: 'nowrap' as const,\n },\n copyBtnHover: {\n background: tokens.colors.bgHover,\n borderColor: tokens.colors.accentPrimary,\n color: tokens.colors.accentPrimary,\n },\n copyBtnCopied: {\n background: tokens.colors.accentSuccess,\n borderColor: tokens.colors.accentSuccess,\n color: tokens.colors.textInverse,\n },\n};\n\n/**\n * AuthStatus - Displays current authentication status and vault info\n */\nexport function AuthStatus({\n className = '',\n style,\n showVaultInfo = false,\n showLogout = false,\n}: AuthStatusProps) {\n const {\n isAuthenticated,\n isLoading,\n walletAddress,\n vaultId,\n vaultInfo,\n logout,\n } = useEmblemAuth();\n\n const [isHovered, setIsHovered] = useState(false);\n const [logoutHovered, setLogoutHovered] = useState(false);\n const [copiedField, setCopiedField] = useState<string | null>(null);\n const [copyHovered, setCopyHovered] = useState<string | null>(null);\n\n const handleCopy = useCallback(async (field: string, value: string) => {\n const success = await copyToClipboard(value);\n if (success) {\n setCopiedField(field);\n setTimeout(() => setCopiedField(null), 1500);\n }\n }, []);\n\n // Not authenticated\n if (!isAuthenticated) {\n if (isLoading) {\n return (\n <>\n <style>{animations}</style>\n <div className={className} style={{ ...s.disconnected, ...style }}>\n <span style={s.spinner} />\n <span>Connecting...</span>\n </div>\n </>\n );\n }\n\n return (\n <div className={className} style={{ ...s.disconnected, ...style }}>\n <span style={s.dot} />\n <span>Not connected</span>\n </div>\n );\n }\n\n // Authenticated\n return (\n <>\n <style>{animations}</style>\n <div className={className} style={{ ...s.container, ...style }}>\n {/* Vault info wrapper for hover effect */}\n <div\n style={s.vaultInfoWrapper}\n onMouseEnter={() => showVaultInfo && setIsHovered(true)}\n onMouseLeave={() => showVaultInfo && setIsHovered(false)}\n >\n {/* Connected indicator - just a dot */}\n <span style={{ ...s.dot, ...s.dotConnected }} title=\"Connected\" />\n\n {/* Vault info dropdown on hover */}\n {showVaultInfo && isHovered && (\n <div style={s.vaultInfo}>\n <div style={s.vaultInfoHeader}>Vault Information</div>\n\n {/* Vault ID */}\n <div style={s.vaultInfoRow}>\n <span style={s.vaultLabel}>Vault ID</span>\n <div style={s.vaultValueRow}>\n <span style={s.vaultValue}>#{vaultId}</span>\n <CopyButton\n field=\"vaultId\"\n value={vaultId || ''}\n copiedField={copiedField}\n copyHovered={copyHovered}\n setCopyHovered={setCopyHovered}\n onCopy={handleCopy}\n />\n </div>\n </div>\n\n {/* Connected Wallet */}\n <div style={s.vaultInfoRow}>\n <span style={s.vaultLabel}>Connected Wallet</span>\n <div style={s.vaultValueRow}>\n <span style={{ ...s.vaultValue, ...s.vaultValueMono }}>{walletAddress}</span>\n <CopyButton\n field=\"wallet\"\n value={walletAddress || ''}\n copiedField={copiedField}\n copyHovered={copyHovered}\n setCopyHovered={setCopyHovered}\n onCopy={handleCopy}\n />\n </div>\n </div>\n\n {/* EVM Address */}\n {vaultInfo?.evmAddress && (\n <div style={s.vaultInfoRow}>\n <span style={s.vaultLabel}>Vault EVM Address</span>\n <div style={s.vaultValueRow}>\n <span style={{ ...s.vaultValue, ...s.vaultValueMono }}>{vaultInfo.evmAddress}</span>\n <CopyButton\n field=\"evmAddress\"\n value={vaultInfo.evmAddress}\n copiedField={copiedField}\n copyHovered={copyHovered}\n setCopyHovered={setCopyHovered}\n onCopy={handleCopy}\n />\n </div>\n </div>\n )}\n\n {/* Solana Address */}\n {vaultInfo?.solanaAddress && (\n <div style={s.vaultInfoRow}>\n <span style={s.vaultLabel}>Vault Solana Address</span>\n <div style={s.vaultValueRow}>\n <span style={{ ...s.vaultValue, ...s.vaultValueMono }}>{vaultInfo.solanaAddress}</span>\n <CopyButton\n field=\"solAddress\"\n value={vaultInfo.solanaAddress}\n copiedField={copiedField}\n copyHovered={copyHovered}\n setCopyHovered={setCopyHovered}\n onCopy={handleCopy}\n />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Logout button */}\n {showLogout && (\n <button\n type=\"button\"\n onClick={logout}\n style={{\n ...s.logoutBtn,\n ...(logoutHovered ? s.logoutBtnHover : {}),\n }}\n onMouseEnter={() => setLogoutHovered(true)}\n onMouseLeave={() => setLogoutHovered(false)}\n title=\"Disconnect\"\n >\n ⏻\n </button>\n )}\n </div>\n </>\n );\n}\n\n// Copy button helper\ninterface CopyButtonProps {\n field: string;\n value: string;\n copiedField: string | null;\n copyHovered: string | null;\n setCopyHovered: (field: string | null) => void;\n onCopy: (field: string, value: string) => void;\n}\n\nfunction CopyButton({ field, value, copiedField, copyHovered, setCopyHovered, onCopy }: CopyButtonProps) {\n const isCopied = copiedField === field;\n const isHovered = copyHovered === field;\n\n return (\n <button\n type=\"button\"\n onClick={() => onCopy(field, value)}\n style={{\n ...s.copyBtn,\n ...(isCopied ? s.copyBtnCopied : isHovered ? s.copyBtnHover : {}),\n }}\n onMouseEnter={() => setCopyHovered(field)}\n onMouseLeave={() => setCopyHovered(null)}\n >\n {isCopied ? 'Copied!' : 'Copy'}\n </button>\n );\n}\n\nexport default AuthStatus;\n","/**\n* Prediction Market Alpha Plugin\n*\n* Provides AI tools for searching and analyzing prediction markets\n* using the Dome API (https://api.domeapi.io)\n*\n* Supported platforms: Polymarket, Kalshi\n* \n* Get specific market details:\n* - \"Get details on the [market-slug] market\"\n* - \"Tell me more about that Bitcoin prediction market\"\n*\n* Get prices/odds:\n* - \"What are the current odds on [market]?\"\n* - \"What's the probability showing for [market]?\"\n*\n* Get trading activity:\n* - \"Show me recent trades on that market\"\n* - \"What's the trading activity like?\"\n* - \"What prediction market platforms are supported?\"\n* - \"Search Kalshi for markets about crypto\"\n* - \"Show me prediction markets on Polymarket about politics\"\n* - \"Get details on [ticker] from Kalshi\" \n */\n\nimport type { HustlePlugin } from '../types';\n\nconst DOME_API_BASE = 'https://api.domeapi.io/v1';\n\n/**\n * Supported prediction market platforms\n */\ntype Platform = 'polymarket' | 'kalshi';\n\n/**\n * Prediction Market Alpha Plugin\n *\n * Tools:\n * - get_supported_platforms: List supported prediction market platforms\n * - search_prediction_markets: Search for markets on Polymarket or Kalshi\n * - get_market_details: Get detailed info about a specific market\n * - get_market_prices: Get current prices/odds for a market\n * - get_market_trades: Get recent trading activity\n */\nexport const predictionMarketPlugin: HustlePlugin = {\n name: 'prediction-market-alpha',\n version: '1.1.0',\n description: 'Search and analyze prediction markets on Polymarket and Kalshi',\n\n tools: [\n {\n name: 'get_supported_platforms',\n description:\n 'Get a list of supported prediction market platforms. Call this first to know which platforms are available for querying.',\n parameters: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'search_prediction_markets',\n description:\n 'Search for prediction markets. Find markets about politics, crypto, sports, and more. Returns market titles, current odds, volume, and status. You MUST provide tags to filter results.',\n parameters: {\n type: 'object',\n properties: {\n platform: {\n type: 'string',\n enum: ['polymarket', 'kalshi'],\n description: 'The prediction market platform to search (default: polymarket)',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'REQUIRED: Single word categories or tags to identify a market segment (e.g., \"politics\", \"crypto\", \"sports\", \"finance\", \"entertainment\", \"ai\")',\n },\n status: {\n type: 'string',\n enum: ['open', 'closed'],\n description: 'Filter by market status',\n },\n limit: {\n type: 'number',\n description: 'Number of results (1-100)',\n default: 10,\n },\n },\n required: ['tags'],\n },\n },\n {\n name: 'get_market_details',\n description:\n 'Get detailed information about a specific prediction market including current prices, trading history, and resolution source.',\n parameters: {\n type: 'object',\n properties: {\n platform: {\n type: 'string',\n enum: ['polymarket', 'kalshi'],\n description: 'The prediction market platform (default: polymarket)',\n },\n market_slug: {\n type: 'string',\n description: 'The market slug/identifier (ticker for Kalshi)',\n },\n },\n required: ['market_slug'],\n },\n },\n {\n name: 'get_market_prices',\n description:\n 'Get current prices/odds for a prediction market. Shows probability for each outcome.',\n parameters: {\n type: 'object',\n properties: {\n platform: {\n type: 'string',\n enum: ['polymarket', 'kalshi'],\n description: 'The prediction market platform (default: polymarket)',\n },\n market_slug: {\n type: 'string',\n description: 'The market slug/identifier (ticker for Kalshi)',\n },\n },\n required: ['market_slug'],\n },\n },\n {\n name: 'get_market_trades',\n description: 'Get recent orders/trading activity for a prediction market.',\n parameters: {\n type: 'object',\n properties: {\n platform: {\n type: 'string',\n enum: ['polymarket', 'kalshi'],\n description: 'The prediction market platform (default: polymarket)',\n },\n market_slug: {\n type: 'string',\n description: 'The market slug/identifier (ticker for Kalshi)',\n },\n limit: {\n type: 'number',\n description: 'Number of orders to return (max 100)',\n default: 20,\n },\n },\n required: ['market_slug'],\n },\n },\n ],\n\n executors: {\n get_supported_platforms: async () => {\n return {\n platforms: [\n {\n id: 'polymarket',\n name: 'Polymarket',\n description: 'Decentralized prediction market on Polygon',\n features: ['tags', 'volume_filtering'],\n },\n {\n id: 'kalshi',\n name: 'Kalshi',\n description: 'CFTC-regulated prediction market exchange',\n features: ['regulated', 'event_based'],\n },\n ],\n };\n },\n\n search_prediction_markets: async (args) => {\n const platform = (args.platform as Platform) || 'polymarket';\n const params = new URLSearchParams();\n\n if (args.limit) params.append('limit', String(args.limit));\n\n if (platform === 'polymarket') {\n if (args.tags) params.append('tags', (args.tags as string[]).join(','));\n if (args.status) params.append('status', args.status as string);\n\n const response = await fetch(`${DOME_API_BASE}/polymarket/markets?${params}`);\n\n if (!response.ok) {\n throw new Error(`Dome API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n\n return {\n platform: 'polymarket',\n markets: data.markets?.map((m: Record<string, unknown>) => ({\n slug: m.market_slug,\n title: m.title,\n status: m.status,\n volume: m.volume_total,\n tags: m.tags,\n outcomes: [\n { label: (m.side_a as Record<string, unknown>)?.label, id: (m.side_a as Record<string, unknown>)?.id },\n { label: (m.side_b as Record<string, unknown>)?.label, id: (m.side_b as Record<string, unknown>)?.id },\n ],\n winner: m.winning_side,\n })) || [],\n total: data.pagination?.total || 0,\n hasMore: data.pagination?.has_more || false,\n };\n } else if (platform === 'kalshi') {\n if (args.status) params.append('status', args.status as string);\n\n const response = await fetch(`${DOME_API_BASE}/kalshi/markets?${params}`);\n\n if (!response.ok) {\n throw new Error(`Dome API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n\n return {\n platform: 'kalshi',\n markets: data.markets?.map((m: Record<string, unknown>) => ({\n ticker: m.ticker,\n title: m.title,\n status: m.status,\n category: m.category,\n subtitle: m.subtitle,\n yesAsk: m.yes_ask,\n yesBid: m.yes_bid,\n volume: m.volume,\n })) || [],\n total: data.pagination?.total || 0,\n hasMore: data.pagination?.has_more || false,\n };\n }\n\n throw new Error(`Unsupported platform: ${platform}`);\n },\n\n get_market_details: async (args) => {\n const platform = (args.platform as Platform) || 'polymarket';\n\n if (platform === 'polymarket') {\n const response = await fetch(\n `${DOME_API_BASE}/polymarket/markets?market_slug=${args.market_slug}`\n );\n\n if (!response.ok) {\n throw new Error(`Dome API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n const market = data.markets?.[0];\n\n if (!market) {\n throw new Error(`Market not found: ${args.market_slug}`);\n }\n\n return {\n platform: 'polymarket',\n slug: market.market_slug,\n title: market.title,\n status: market.status,\n startTime: market.start_time\n ? new Date(market.start_time * 1000).toISOString()\n : null,\n endTime: market.end_time\n ? new Date(market.end_time * 1000).toISOString()\n : null,\n volume: {\n total: market.volume_total,\n week: market.volume_1_week,\n month: market.volume_1_month,\n },\n resolutionSource: market.resolution_source,\n outcomes: [\n { label: market.side_a?.label, id: market.side_a?.id },\n { label: market.side_b?.label, id: market.side_b?.id },\n ],\n winner: market.winning_side,\n tags: market.tags,\n };\n } else if (platform === 'kalshi') {\n const response = await fetch(\n `${DOME_API_BASE}/kalshi/markets?ticker=${args.market_slug}`\n );\n\n if (!response.ok) {\n throw new Error(`Dome API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n const market = data.markets?.[0];\n\n if (!market) {\n throw new Error(`Market not found: ${args.market_slug}`);\n }\n\n return {\n platform: 'kalshi',\n ticker: market.ticker,\n title: market.title,\n subtitle: market.subtitle,\n status: market.status,\n category: market.category,\n yesAsk: market.yes_ask,\n yesBid: market.yes_bid,\n volume: market.volume,\n openInterest: market.open_interest,\n };\n }\n\n throw new Error(`Unsupported platform: ${platform}`);\n },\n\n get_market_prices: async (args) => {\n const platform = (args.platform as Platform) || 'polymarket';\n\n if (platform === 'polymarket') {\n const response = await fetch(\n `${DOME_API_BASE}/polymarket/market-price?market_slug=${args.market_slug}`\n );\n\n if (!response.ok) {\n throw new Error(`Dome API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n return { platform: 'polymarket', ...data };\n } else if (platform === 'kalshi') {\n // Kalshi prices are included in the market details\n const response = await fetch(\n `${DOME_API_BASE}/kalshi/markets?ticker=${args.market_slug}`\n );\n\n if (!response.ok) {\n throw new Error(`Dome API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n const market = data.markets?.[0];\n\n if (!market) {\n throw new Error(`Market not found: ${args.market_slug}`);\n }\n\n return {\n platform: 'kalshi',\n ticker: market.ticker,\n yesAsk: market.yes_ask,\n yesBid: market.yes_bid,\n lastPrice: market.last_price,\n };\n }\n\n throw new Error(`Unsupported platform: ${platform}`);\n },\n\n get_market_trades: async (args) => {\n const platform = (args.platform as Platform) || 'polymarket';\n const limit = String(args.limit || 20);\n\n if (platform === 'polymarket') {\n const params = new URLSearchParams({\n market_slug: args.market_slug as string,\n limit,\n });\n\n const response = await fetch(\n `${DOME_API_BASE}/polymarket/orders?${params}`\n );\n\n if (!response.ok) {\n throw new Error(`Dome API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n return { platform: 'polymarket', ...data };\n } else if (platform === 'kalshi') {\n const params = new URLSearchParams({\n ticker: args.market_slug as string,\n limit,\n });\n\n const response = await fetch(\n `${DOME_API_BASE}/kalshi/trades?${params}`\n );\n\n if (!response.ok) {\n throw new Error(`Dome API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n return { platform: 'kalshi', ...data };\n }\n\n throw new Error(`Unsupported platform: ${platform}`);\n },\n },\n\n hooks: {\n onRegister: () => {\n console.log('[Plugin] Prediction Market Alpha v1.1.0 registered (Polymarket + Kalshi)');\n },\n },\n};\n\nexport default predictionMarketPlugin;\n","/**\n * Migrate.fun Knowledge Base Plugin\n *\n * Provides AI tools for answering questions about token migrations\n * using an embedded knowledge base from real support conversations.\n *\n * Supported topics: Bonk Fun, Pump Fun, Raydium migrations,\n * costs/fees, timelines, post-migration steps, technical details.\n *\n * Example prompts:\n * - \"How does a migration to Pump Fun work?\"\n * - \"What does Migrate Fun cost?\"\n * - \"What steps do I need to do after the migration?\"\n * - \"How long is the migration period?\"\n * - \"What is the claim period for migrations?\"\n * - \"Has Migrate Fun been audited?\"\n * - \"What happens to tokens on exchanges during migration?\"\n * - \"Can I change the total supply when migrating?\"\n *\n * System prompt suggestion (for optimal results):\n * You are a support agent for Migrate.fun, the token migration platform on Solana.\n * You have the `search_migrate_fun_docs` tool - ALWAYS use it when users ask about migrations.\n * Key facts: 3.75% fee, 90-day claim period, supports Bonk Fun/Pump Fun/Raydium, audited by Halborn.\n * For complex questions: direct to https://x.com/MigrateFun\n */\n\nimport type { HustlePlugin } from '../types';\n\n/**\n * Q&A entry structure\n */\ninterface QAEntry {\n id: string;\n question: string;\n answer: string;\n keywords: string[];\n category: string;\n}\n\n/**\n * Embedded knowledge base from real support conversations\n */\nconst QA: QAEntry[] = [\n { id: 'migration-steps-bonk', question: 'What are all the steps for migrations to Bonk?', answer: `Here's how MigrateFun migrates your token to BonkFun:\\n1) The creator/team sets up a migration portal through migratefun - Create new CA for BonkFun (Ticker, name, image, supply) and set timeline period (1-30 days, 14 days average)\\n2) After portal setup, holders commit their tokens to migration - tokens are locked in migration vault until time period ends\\n3) Once migration ends, ALL tokens are market sold in a single candle to retrieve as much SOL as possible from the locked liquidity pool\\n4) The recovered SOL seeds the new LP paired with appropriate amount of tokens. Set market cap at or slightly below current market cap\\n5) Claims open for 90 days - users burn MFTs and receive new tokens`, keywords: ['bonk', 'bonkfun', 'steps', 'process', 'how'], category: 'process' },\n { id: 'migration-steps-pumpfun', question: 'How does a migration work to Pump Fun?', answer: `Here's how the migration to Pump Fun works:\\n1) Set up a new CA for pumpfun using MigrateFun creator dashboard (Ticker, CA, image)\\n2) Users migrate their tokens in the migration portal for a specific time period\\n3) Once migration ends, MigrateFun sells all migrated tokens\\n4) MigrateFun takes all recovered SOL and buys out new token's bonding curve + purchases until it reaches old market cap levels\\n5) Users return to migratefun and claim their new tokens\\n6) 90-day claim period for all users, regardless if they migrated on time or late\\n7) The claim period can also be used to swap tokens with centralized exchanges\\n8) After 90 days, all unclaimed tokens and remaining SOL are returned to the team`, keywords: ['pump', 'pumpfun', 'steps', 'process', 'how'], category: 'process' },\n { id: 'migration-steps-raydium', question: 'How does Migrate Fun migrate tokens to Raydium?', answer: `1) The creator/team sets up a migration portal through migratefun.com - Create new CA (Ticker, name, image, supply) and set timeline period (1-30 days, 14 days average)\\n2) After portal setup, holders commit their tokens to migration and get MFTs in exchange - tokens are locked in migration vault until time period ends\\n3) Once migration ends, ALL old tokens are market sold in a single candle to retrieve as much SOL as possible\\n4) The recovered SOL seeds the new LP paired with appropriate amount of new tokens. Market Cap is set by the user\\n5) Claims open for 90 days - users burn MFTs and receive new tokens. Late migrators can swap at discounted rate\\n6) At the end of the 90 day claim window all remaining tokens can be claimed by the team`, keywords: ['raydium', 'steps', 'process', 'how'], category: 'process' },\n { id: 'post-migration-checklist', question: 'What are the steps I need to do after the migration?', answer: `Admin Checklist - places to register your new CA:\\n\\nPRIMARY:\\n- Coingecko (Free + migration application process)\\n- Dexscreener ($300)\\n- GeckoTerminal (free for 5 days wait)\\n- Holderscan (Listing free, Verify $125)\\n\\nSECONDARY:\\n- Solscan (if metadata updates needed)\\n- CoinMarketCap ($5000 for immediate listing)\\n- Dextools ($300 for verification)\\n- Photon (2 SOL)\\n- Cookie.fun (Free, DM needed) [For AI accounts]\\n- Kaito (DM needed) [For AI accounts]\\n\\nNote: Coingecko and CoinMarketCap will ask for a post from official twitter with migration details and new CA.`, keywords: ['after', 'post', 'checklist', 'listing', 'dexscreener', 'coingecko'], category: 'post-migration' },\n { id: 'post-migration-approval', question: 'Do we need to do anything after the migration ends?', answer: `Yes, the team needs to approve several steps in the migration portal including:\\n1) Selling the migrated tokens into the old LP\\n2) Setting the new market cap\\n3) Opening the claim portal\\n\\nVideo tutorial: https://www.youtube.com/watch?v=SjPN-1DnXtM`, keywords: ['after', 'ends', 'approve', 'portal'], category: 'post-migration' },\n { id: 'market-cap-setting', question: 'What market cap should we set?', answer: `Set at or slightly below the ending market cap at migration. For example, if your ending market cap is $1 million, set it to around $950,000. This accounts for the fact you won't receive 1:1 liquidity from the old pool compared to the new pool, which is determined by migration participation.`, keywords: ['market cap', 'marketcap', 'set', 'recommend'], category: 'settings' },\n { id: 'migrate-fun-cost', question: 'What does Migrate Fun cost?', answer: `Migrate Fun charges a flat 3.75% fee on the total SOL unlocked from the old Liquidity Pool. This fee is taken automatically during the migration process.`, keywords: ['cost', 'fee', 'price', 'charge', '3.75', 'percent'], category: 'fees' },\n { id: 'claim-fees-bonk', question: 'How does the team claim their fees on Bonk Fun?', answer: `Go to https://bonk.fun/creator-rewards to claim your creator fees.`, keywords: ['claim', 'fees', 'bonk', 'creator', 'rewards'], category: 'fees' },\n { id: 'claim-fees-raydium', question: 'How do I claim fees on Raydium?', answer: `You can claim fees from https://raydium.io/portfolio/ with the same wallet that set up the migration.`, keywords: ['claim', 'fees', 'raydium', 'portfolio'], category: 'fees' },\n { id: 'claim-fees-pumpfun', question: 'How do I claim fees on Pump Fun?', answer: `Fees are paid automatically to the wallet used to set up the migration. Once migrated to PumpSwap you will receive creator rewards based on their Ascend Program. Details: https://pump.fun/docs/fees`, keywords: ['claim', 'fees', 'pump', 'pumpfun', 'automatic'], category: 'fees' },\n { id: 'audit-info', question: 'Has Migrate Fun been audited?', answer: `Yes. Migrate Fun was audited by Halborn, the same auditing firm used by the Solana Foundation.\\nAudit: https://www.halborn.com/audits/emblem-vault/migratefun-8ad34b\\nAnnouncement: https://x.com/HalbornSecurity/status/1978869642744811933`, keywords: ['audit', 'audited', 'security', 'halborn', 'safe'], category: 'security' },\n { id: 'user-experience', question: 'What is the process like for the user?', answer: `Super easy - takes less than 20 seconds.\\n1) During migration: users swap old tokens for Migrate Fun Tokens (MFTs)\\n2) Once migration ends: claim period opens for 90 days, users burn MFTs to claim new tokens\\n3) Late migrators: can swap old tokens for new at a discounted rate set by the team\\n\\nVideo guides:\\n- Migration: https://x.com/MigrateFun/status/1971259552856408433\\n- Claims: https://x.com/MigrateFun/status/1976376597906325767`, keywords: ['user', 'experience', 'process', 'simple', 'easy'], category: 'user-experience' },\n { id: 'what-is-migrate-fun', question: 'What is Migrate Fun?', answer: `Migrate Fun is the category-defining platform that created the migration meta. It allows users to migrate locked liquidity from one launchpad to another.\\n\\nAs of October 2025: 15 migrations completed, $5+ million in liquidity moved, largest migration was $35M market cap project. Supports migrations to Bonk Fun, Raydium, and Pump Fun.\\n\\nLinks:\\n- Website: https://migrate.fun/\\n- X: https://x.com/MigrateFun\\n- Docs: https://github.com/EmblemCompany/Migrate-fun-docs/\\n- Audit: https://www.halborn.com/audits/emblem-vault/migratefun-8ad34b\\n- Calculator: https://migrate.fun/migration-calculator`, keywords: ['what', 'migrate fun', 'about', 'general', 'overview'], category: 'general' },\n { id: 'sol-recovery-estimate', question: 'How can I see how much SOL we can get from the old LP?', answer: `Use the migration calculator to estimate SOL recovery based on participation percentages: https://migrate.fun/migration-calculator`, keywords: ['sol', 'recovery', 'estimate', 'calculator', 'liquidity', 'how much'], category: 'tools' },\n { id: 'documentation', question: 'Do you have documentation?', answer: `Yes, documentation is available at: https://github.com/EmblemCompany/Migrate-fun-docs/`, keywords: ['documentation', 'docs', 'guide', 'help'], category: 'general' },\n { id: 'rebrand', question: 'What if I want to rebrand?', answer: `The migration enables a full rebrand - reset metadata, image, logo, name, everything. Or keep it all the same if you prefer.`, keywords: ['rebrand', 'change', 'name', 'logo', 'image', 'metadata'], category: 'features' },\n { id: 'sniper-protection', question: 'How do you prevent snipers when migrating to Pump Fun?', answer: `On Solana you can stack transactions. When deploying the bonding curve, you are first to purchase so you can buyout the bonding curve and more in the first transaction, preventing snipers.`, keywords: ['sniper', 'snipers', 'protection', 'front-run', 'mev'], category: 'security' },\n { id: 'claim-period-flexibility', question: 'Is there flexibility on the 90 day claim period?', answer: `The 90-day claim period is mandatory. Reasons:\\n- All users need time to claim tokens after migration\\n- Those who missed migration need a window\\n- Users don't get tokens until after migration completes\\n- Allowing team to withdraw during claims would be risky (potential rug)`, keywords: ['90 day', 'claim', 'period', 'flexibility', 'change'], category: 'settings' },\n { id: 'migration-duration', question: 'How long is the migration?', answer: `You can set the migration window for as long as you'd like. Average is 14 days. Some teams choose 7 days (works great), some go up to 30 days.\\n\\nNote: Majority of participation happens in the first and last 24 hours. Example: 76% participation with 50%+ migrating in first 24 hours and additional 10% on the last day.`, keywords: ['how long', 'duration', 'time', 'days', 'period', 'window'], category: 'settings' },\n { id: 'migration-performance', question: 'Can you give examples of token performance after migration?', answer: `Migration squeeze: When large percentage of old tokens migrate, sell pressure reduces, often causing market cap spike near migration end.\\n\\nExample charts:\\n- ZERA Old: https://dexscreener.com/solana/95at5r4i85gfqeew2yr6byfg8rlry1d9ztps7qrskdvc\\n New: https://dexscreener.com/solana/nn9vmhjtqgg9l9f8sp3geufwc5zvuhradcwehh7n7di\\n- HUSTLE Old: https://dexscreener.com/solana/gjckb2eesjk65nuvpaw4tn2rabnr8wmfcwcwpagk5dzs\\n New: https://dexscreener.com/solana/hxo1wrcrdewek8l2j6rxswnolumej2mweh38gajxtw7y\\n\\nThread: https://x.com/jakegallen_/status/1973051293213028468`, keywords: ['performance', 'charts', 'example', 'before', 'after', 'squeeze'], category: 'examples' },\n { id: 'why-migrate', question: 'Why would teams want to migrate?', answer: `Top reasons:\\n- Access to creator rewards\\n- Rebrand opportunity\\n- Fresh chart\\n- Reclaim part of the token supply\\n- Reinvigorated community on the other side`, keywords: ['why', 'reasons', 'benefits', 'advantages', 'should'], category: 'general' },\n { id: 'migration-recommendation-steps', question: 'What steps do you recommend when considering a migration?', answer: `1) Discuss with Migrate Fun team: process details, where to move LP (Raydium, Bonk Fun, or Pump Fun)\\n2) Discuss benefits with your community, especially whale holders - get buy-in\\n3) Announce on all social channels - maximize awareness for maximum participation`, keywords: ['recommend', 'steps', 'considering', 'planning', 'prepare'], category: 'process' },\n { id: 'multiple-wallets', question: 'Do holders with multiple wallets need to consolidate?', answer: `No. Migration is linear - users can migrate all tokens together or separately. Makes no difference.`, keywords: ['multiple', 'wallets', 'consolidate', 'separate'], category: 'user-experience' },\n { id: 'mft-value', question: 'Do MFTs show value in wallets?', answer: `MFTs (Migrate Fun Tokens) are just placeholder tokens for the migration. They are valueless.`, keywords: ['mft', 'migrate fun tokens', 'value', 'placeholder'], category: 'user-experience' },\n { id: 'announcement-examples', question: 'Can you give me sample migration announcements?', answer: `Here are announcements made by teams:\\n- https://x.com/radrdotfun/status/1952127168101949620\\n- https://x.com/project_89/status/1951345024656089368\\n- https://x.com/HKittyOnSol/status/1948925330032349210\\n- https://x.com/ModernStoicAI/status/1948129627362218483\\n- https://x.com/pokithehamster/status/1950238636928327927\\n- https://x.com/IQ6900_/status/1953002036599173499\\n- https://x.com/TheBongoCat/status/1965538945132843333`, keywords: ['announcement', 'sample', 'example', 'post', 'twitter'], category: 'examples' },\n { id: 'graphics', question: 'Does Migrate Fun provide graphics for announcements?', answer: `No. For your own migration announcement you create the graphic. Migrate Fun's designer creates group migration announcements only.`, keywords: ['graphics', 'images', 'design', 'announcement'], category: 'general' },\n { id: 'developer-required', question: 'Do I need to be a developer to migrate?', answer: `No development required. The entire process is a few clicks for both pre-migration and post-migration.`, keywords: ['developer', 'technical', 'coding', 'code'], category: 'general' },\n { id: 'exchange-tokens', question: 'What happens to tokens on exchanges or locked in Streamflow?', answer: `They will miss the migration as those tokens are considered circulating supply onchain. Options:\\n1) Join as late migrator during 90-day claim window\\n2) After 90-day period, team takes possession of unclaimed tokens and can reimburse directly`, keywords: ['exchange', 'streamflow', 'locked', 'vested', 'cex'], category: 'edge-cases' },\n { id: 'unclaimed-tokens', question: 'Can we get unclaimed tokens?', answer: `After the 90-day claim period ends, all unclaimed tokens are returned to whichever wallet set up the migration (the team).`, keywords: ['unclaimed', 'supply', 'remaining', 'tokens', 'team'], category: 'post-migration' },\n { id: 'participation-rate', question: 'What is typical participation percentage?', answer: `Nearly all projects have had over 50% migration participation. View all stats at https://migrate.fun/projects`, keywords: ['participation', 'percentage', 'rate', 'typical', 'average'], category: 'statistics' },\n { id: 'late-penalty', question: 'What penalty can teams set for late migrators?', answer: `Teams can set 0-100% penalty for late migrators who swap during the 90-day claim window. 25% seems to be a good balance - encourages participation without being overly punishing.`, keywords: ['penalty', 'late', 'discount', 'punish', 'percent'], category: 'settings' },\n { id: 'new-ca', question: 'Will we get a new CA or just change the pair?', answer: `A new CA. If migrating to Bonk Fun your CA will end with \"bonk\". If migrating to Pump Fun it will end with \"pump\".`, keywords: ['ca', 'contract', 'address', 'new', 'pair'], category: 'process' },\n { id: 'vanity-ca', question: 'Can we create a vanity CA?', answer: `Yes, but if migrating to Bonk Fun it needs to end with \"bonk\", or for Pump Fun it needs to end with \"pump\".`, keywords: ['vanity', 'ca', 'custom', 'address', 'contract'], category: 'features' },\n { id: 'vested-tokens', question: 'What about team tokens locked with Streamflow?', answer: `Those tokens can't be migrated. They won't be lost - you'll recapture that supply post-migration. Any unmigrated tokens return to team at full or discounted rate depending on your late migrator penalty setting.`, keywords: ['vested', 'streamflow', 'locked', 'team'], category: 'edge-cases' },\n { id: 'wallet-tracking', question: 'Can I track wallet addresses post-migration?', answer: `At the end of migration, there's a snapshot tool that lets you download a CSV of all wallets holding the old token.`, keywords: ['wallet', 'track', 'snapshot', 'csv', 'addresses'], category: 'tools' },\n { id: 'old-listings', question: 'What happens to old token listings?', answer: `You will need to apply to new directories. Migrate Fun provides a list once you begin the migration process.`, keywords: ['listings', 'directories', 'old', 'new', 'update'], category: 'post-migration' },\n { id: 'lp-locking', question: 'Does the new LP get locked?', answer: `If migrating to Bonk Fun or Pump Fun: LP is locked (their rules). If migrating to Raydium: LP is unlocked and you control it.`, keywords: ['lp', 'locked', 'liquidity', 'pool', 'control'], category: 'process' },\n { id: 'sol-pairs', question: 'Are Bonk migrations confined to SOL pairs?', answer: `As of October 2025, they are SOL migrations. Check with the team to see if USD1 pairs are possible.`, keywords: ['sol', 'pair', 'usd1', 'usdc', 'bonk'], category: 'settings' },\n { id: 'change-penalty', question: 'Can I change the penalty after setup?', answer: `No. The penalty must be set during migration creation and cannot be changed after.`, keywords: ['change', 'penalty', 'modify', 'update', 'after'], category: 'settings' },\n { id: 'unhappy-holders', question: 'What if someone is unhappy about the migration?', answer: `They can sell their tokens and not participate. Migrations are a fresh start - holders who migrate are voting with their tokens that they support the team and believe in the project's future.`, keywords: ['unhappy', 'disagree', 'against', 'sell'], category: 'user-experience' },\n { id: 'sample-announcement', question: 'What is a good announcement template?', answer: `Sample for Bonk Fun migration:\\n\\n\"We're excited to announce that we're migrating with @MigrateFun and officially joining the @bonk_inu ecosystem next month!\\n\\nWith our 1-year anniversary less than a month away, this migration to @bonk_fun marks the beginning of our next chapter.\\n\\nWhy Bonk Fun?\\n🧰 Purpose-built tools for community projects\\n💸 Transaction fee rev share\\n🔁 Seamless LP migration\\n🤝 Strategic alignment with top meme coin teams\\n\\nOur migration timeline + holder instructions drop soon.\"`, keywords: ['announcement', 'template', 'sample', 'post'], category: 'examples' },\n { id: 'share-link', question: 'Do you have a link to share explaining Migrate Fun?', answer: `Overview thread: https://x.com/migratefun/status/1957492884355314035\\nDeep dive docs: https://github.com/EmblemCompany/Migrate-fun-docs/`, keywords: ['link', 'share', 'explain', 'overview'], category: 'general' },\n { id: 'exchange-rate', question: 'Is the exchange rate always 1:1?', answer: `Yes, 1 old token = 1 new token for users who participate in migration. Users who miss can swap during the 90-day claim window at a discounted rate set by the team.`, keywords: ['exchange', 'rate', '1:1', 'ratio', 'same'], category: 'process' },\n { id: 'change-supply', question: 'Can I change the total supply?', answer: `Generally yes, with some constraints depending on destination platform. Reach out to Migrate Fun team to discuss specifics.`, keywords: ['supply', 'change', 'total', 'amount'], category: 'features' },\n { id: 'contact', question: 'How can I get in touch with the Migrate Fun team?', answer: `Send a direct message to the Migrate Fun X account: https://x.com/MigrateFun`, keywords: ['contact', 'reach', 'touch', 'dm', 'message', 'talk'], category: 'general' },\n { id: 'ready-to-migrate', question: 'I am ready to migrate, what is next?', answer: `Send a direct message to the Migrate Fun X account: https://x.com/MigrateFun`, keywords: ['ready', 'start', 'begin', 'next'], category: 'general' },\n { id: 'risks', question: 'What are the risks of migrating?', answer: `Main risk: Failed migration where not enough tokens migrate to fund the new LP. In that case, migrated tokens are sold into the old LP and SOL is returned to community members who participated.`, keywords: ['risk', 'danger', 'fail', 'problem', 'issue'], category: 'security' },\n { id: 'how-detect-non-migrators', question: 'How does Migrate Fun know who did not migrate?', answer: `Migrate Fun has a snapshot and claim tool that puts onchain all wallets holding old tokens at migration end. This enables late migrators to swap old tokens for new during the 90-day claim window at the team-set discount.`, keywords: ['snapshot', 'detect', 'know', 'non-migrators'], category: 'tools' },\n { id: 'no-penalty', question: 'What if I do not want to penalize non-migrators?', answer: `Set the late claim penalty to zero. Holders who didn't migrate can then swap old tokens for new at a 1:1 rate during the 90-day claim window.`, keywords: ['no penalty', 'zero', 'fair'], category: 'settings' },\n { id: 'missed-claim-window', question: 'What happens if holders miss both migration and claim window?', answer: `They won't have access to new tokens through Migrate Fun platform. All remaining tokens go to the team after 90-day window closes. The team has a snapshot of all old token holders and can handle at their discretion.`, keywords: ['missed', 'both', 'claim', 'window', 'late'], category: 'edge-cases' },\n { id: 'exchange-options', question: 'What options do exchanges have to swap tokens?', answer: `Two options:\\n\\nOption 1: Participate onchain through the migration portal (same as retail). Load tokens into Phantom wallet, migrate, then claim. ~10 seconds each step.\\n\\nOption 2: Admin withdraw function during 90-day claim period. Migration admin can withdraw new tokens from claims vault and manually swap with exchange.\\n- 90-day window for exchange procedures\\n- Exchange can observe migration complete before acting\\n- Can receive new tokens before sending old\\n- Can pause trading during process`, keywords: ['exchange', 'cex', 'swap', 'options', 'centralized'], category: 'edge-cases' },\n { id: 'buy-prevent-dump', question: 'Can we buy supply before migration to prevent dumping?', answer: `I would recommend buying now. There is no arb opportunity as you set the market cap of the new token.\\n\\nTo regain control of non-migrated tokens, you can penalize non-migrators. Example: If 60% migrate, 40% didn't. With a 50% penalty on non-migrators, you'd recoup 20% of total supply if everyone claimed.`, keywords: ['buy', 'dump', 'supply', 'control', 'arb'], category: 'strategy' },\n];\n\n/**\n * Search result structure\n */\ninterface SearchResult {\n rank: number;\n relevance: number;\n question: string;\n answer: string;\n category: string;\n}\n\n/**\n * Migrate.fun Knowledge Base Plugin\n *\n * Tools:\n * - search_migrate_fun_docs: Search the knowledge base for migration Q&A\n */\nexport const migrateFunPlugin: HustlePlugin = {\n name: 'migrate-fun-knowledge',\n version: '1.0.0',\n description: 'Search Migrate.fun knowledge base for token migration answers',\n\n tools: [\n {\n name: 'search_migrate_fun_docs',\n description:\n 'Search the Migrate.fun knowledge base for answers about token migrations. Use this tool when users ask about: how migrations work (Bonk Fun, Pump Fun, Raydium), costs/fees/timelines, post-migration steps, user experience, technical details (LP, CA, penalties), or examples. Returns ranked Q&A pairs from real support conversations.',\n parameters: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'The search query - user question or key terms about token migrations',\n },\n topK: {\n type: 'number',\n description: 'Number of results to return (default: 5, max: 10)',\n },\n },\n required: ['query'],\n },\n },\n ],\n\n executors: {\n search_migrate_fun_docs: async (args) => {\n const query = args.query as string;\n const topK = Math.min(Math.max(1, (args.topK as number) || 5), 10);\n\n const queryLower = query.toLowerCase();\n const queryWords = queryLower.split(/\\s+/).filter(w => w.length > 2);\n\n // Score each Q&A entry\n const scored = QA.map(qa => {\n let score = 0;\n const questionLower = qa.question.toLowerCase();\n const answerLower = qa.answer.toLowerCase();\n const keywordsStr = qa.keywords.join(' ').toLowerCase();\n const fullText = `${questionLower} ${answerLower} ${keywordsStr}`;\n\n // Exact phrase match in question (highest weight)\n if (questionLower.includes(queryLower)) score += 15;\n\n // Exact phrase match anywhere\n if (fullText.includes(queryLower)) score += 8;\n\n // Individual word matches\n for (const word of queryWords) {\n // Keyword match (high weight)\n if (qa.keywords.some(kw => kw.toLowerCase().includes(word) || word.includes(kw.toLowerCase()))) {\n score += 4;\n }\n // Question match (medium weight)\n if (questionLower.includes(word)) score += 3;\n // Answer match (low weight)\n if (answerLower.includes(word)) score += 1;\n }\n\n return { ...qa, score };\n });\n\n // Filter, sort, and format results\n const results: SearchResult[] = scored\n .filter(qa => qa.score > 0)\n .sort((a, b) => b.score - a.score)\n .slice(0, topK)\n .map((qa, i) => ({\n rank: i + 1,\n relevance: Math.round((qa.score / 30) * 100) / 100,\n question: qa.question,\n answer: qa.answer,\n category: qa.category,\n }));\n\n return {\n success: true,\n query,\n resultCount: results.length,\n results,\n hint: results.length === 0\n ? 'No matches found. Suggest contacting @MigrateFun on X: https://x.com/MigrateFun'\n : 'Use these Q&A pairs to answer. Include relevant links from the answers.',\n };\n },\n },\n\n hooks: {\n onRegister: () => {\n console.log('[Plugin] Migrate.fun Knowledge Base v1.0.0 registered');\n },\n },\n};\n\nexport default migrateFunPlugin;\n","/**\n * Plugin Registry\n *\n * Available plugins that can be installed by users.\n * This is a hardcoded registry for the PoC - in the future\n * this could be fetched from a remote plugin marketplace.\n *\n * NOTE: Plugins no longer need to be pre-registered. Executor code\n * is now serialized to localStorage as executorCode strings and\n * reconstituted at runtime via eval().\n */\n\nimport { predictionMarketPlugin } from './predictionMarket';\nimport { migrateFunPlugin } from './migrateFun';\nimport type { HustlePlugin } from '../types';\n\n/**\n * Available plugin with display metadata\n */\nexport interface AvailablePlugin extends HustlePlugin {\n /** Short description for UI display */\n description: string;\n}\n\n/**\n * All available plugins that can be installed\n */\nexport const availablePlugins: AvailablePlugin[] = [\n {\n ...predictionMarketPlugin,\n description: 'Search and analyze Polymarket and Kalshi prediction markets',\n },\n {\n ...migrateFunPlugin,\n description: 'Search Migrate.fun knowledge base for token migration answers',\n },\n];\n\n/**\n * Get an available plugin by name\n */\nexport function getAvailablePlugin(name: string): AvailablePlugin | undefined {\n return availablePlugins.find(p => p.name === name);\n}\n\n// Re-export individual plugins\nexport { predictionMarketPlugin };\nexport { migrateFunPlugin };\n","import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults<ParserOutput = string, RendererOutput = string>(): MarkedOptions<ParserOutput, RendererOutput> {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport let _defaults: MarkedOptions<any, any> = _getDefaults();\n\nexport function changeDefaults<ParserOutput = string, RendererOutput = string>(newDefaults: MarkedOptions<ParserOutput, RendererOutput>) {\n _defaults = newDefaults;\n}\n","const noopTest = { exec: () => null } as unknown as RegExp;\n\nfunction edit(regex: string | RegExp, opt = '') {\n let source = typeof regex === 'string' ? regex : regex.source;\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(other.caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\n\nconst supportsLookbehind = (() => {\ntry {\n // eslint-disable-next-line prefer-regex-literals\n return !!new RegExp('(?<=1)(?<!1)');\n} catch {\n // See browser support here:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion\n return false;\n}\n})();\n\nexport const other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceTabs: /^\\t+/,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] +\\S/,\n listReplaceTask: /^\\[[ xX]\\] +/,\n listTaskCheckbox: /\\[[ xX]\\]/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^<a /i,\n endATag: /^<\\/a>/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^</,\n endAngleBracket: />$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull: string) => new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`),\n hrRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n fencesBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n headingBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n htmlBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i'),\n};\n\n/**\n * Block-Level Grammar\n */\n\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nconst lheading = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/\\|table/g, '') // table not in commonmark\n .getRegex();\nconst lheadingGfm = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/) // table can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\n\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\n\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit(\n '^ {0,3}(?:' // optional indentation\n+ '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n+ '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n+ '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n+ '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n+ '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n+ '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n+ '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n+ '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n+ ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n\ntype BlockKeys = keyof typeof blockNormal;\n\n/**\n * GFM Block Grammar\n */\n\nconst gfmTable = edit(\n '^ *([^\\\\n ].*)\\\\n' // Header\n+ ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n+ '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockGfm: Record<BlockKeys, RegExp> = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nconst blockPedantic: Record<BlockKeys, RegExp> = {\n ...blockNormal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n\n/**\n * Inline-Level Grammar\n */\n\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = /[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nconst punctuation = edit(/^((?![*_])punctSpace)/, 'u')\n .replace(/punctSpace/g, _punctuationOrSpace).getRegex();\n\n// GFM allows ~ inside strong and em for strikethrough\nconst _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\n\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = edit(/link|precode-code|html/, 'g')\n .replace('link', /\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/)\n .replace('precode-', supportsLookbehind ? '(?<!`)()' : '(^^|[^`])')\n .replace('code', /(?<b>`+)[^`]+\\k<b>(?!`)/)\n .replace('html', /<(?! )[^<>]*?>/)\n .getRegex();\n\nconst emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\n\nconst emStrongLDelim = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongLDelimGfm = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\nconst emStrongRDelimAstCore =\n '^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n+ '|[^*]+(?=[^*])' // Consume to delim\n+ '|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)' // (2) a***#, a*** can only be a Right Delimiter\n+ '|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)' // (3) #***a, ***a can only be Left Delimiter\n+ '|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)' // (4) ***# can only be Left Delimiter\n+ '|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)' // (5) #***# can be either Left or Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?=notPunctSpace)'; // (6) a***a can be either Left or Right Delimiter\n\nconst emStrongRDelimAst = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm)\n .replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm)\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit(\n '^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n+ '|[^_]+(?=[^_])' // Consume to delim\n+ '|(?!_)punct(_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n+ '|notPunctSpace(_+)(?!_)(?=punctSpace|$)' // (2) a___#, a___ can only be a Right Delimiter\n+ '|(?!_)punctSpace(_+)(?=notPunctSpace)' // (3) #___a, ___a can only be Left Delimiter\n+ '|[\\\\s](_+)(?!_)(?=punct)' // (4) ___# can only be Left Delimiter\n+ '|(?!_)punct(_+)(?!_)(?=punct)', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst anyPunctuation = edit(/\\\\(punct)/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\n\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit(\n '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst _inlineLabel = /(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/;\n\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\n\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n\nconst _caseInsensitiveProtocol = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;\n\n/**\n * Normal Inline Grammar\n */\n\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n\ntype InlineKeys = keyof typeof inlineNormal;\n\n/**\n * Pedantic Inline Grammar\n */\n\nconst inlinePedantic: Record<InlineKeys, RegExp> = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n\n/**\n * GFM Inline Grammar\n */\n\nconst inlineGfm: Record<InlineKeys, RegExp> = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n url: edit(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/)\n .replace('protocol', _caseInsensitiveProtocol)\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: edit(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/)\n .replace('protocol', _caseInsensitiveProtocol)\n .getRegex(),\n};\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\nconst inlineBreaks: Record<InlineKeys, RegExp> = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex(),\n};\n\n/**\n * exports\n */\n\nexport const block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic,\n};\n\nexport const inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic,\n};\n\nexport interface Rules {\n other: typeof other\n block: Record<BlockKeys, RegExp>\n inline: Record<InlineKeys, RegExp>\n}\n","import { other } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeReplacements: { [index: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (other.escapeTest.test(html)) {\n return html.replace(other.escapeReplace, getEscapeReplacement);\n }\n } else {\n if (other.escapeTestNoEncode.test(html)) {\n return html.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(other.unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nexport function cleanUrl(href: string) {\n try {\n href = encodeURI(href).replace(other.percentDecode, '%');\n } catch {\n return null;\n }\n return href;\n}\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(other.splitPipe);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(other.slashPipe, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n findClosingBracket,\n} from './helpers.ts';\nimport type { Rules } from './rules.ts';\nimport type { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens, Token } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick<Tokens.Link, 'href' | 'title'>, raw: string, lexer: _Lexer, rules: Rules): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, '$1');\n\n lexer.state.inLink = true;\n const token: Tokens.Link | Tokens.Image = {\n type: cap[0].charAt(0) === '!' ? 'image' : 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n}\n\nfunction indentCodeCompensation(raw: string, text: string, rules: Rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n rules!: Rules; // set by the lexer\n lexer!: _Lexer<ParserOutput, RendererOutput>; // set by the lexer\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(this.rules.other.codeRemoveIndent, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '', this.rules);\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens: Token[] = [];\n\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n } else if (!inBlockquote) {\n currentLines.push(lines[i]);\n } else {\n break;\n }\n }\n lines = lines.slice(i);\n\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(this.rules.other.blockquoteSetextReplace, '\\n $1')\n .replace(this.rules.other.blockquoteSetextReplace2, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n\n const lastToken = tokens.at(-1);\n\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n } else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken as Tokens.Blockquote;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n } else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken as Tokens.List;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1)!.raw.length).split('\\n');\n continue;\n }\n }\n\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n let line = cap[2].split('\\n', 1)[0].replace(this.rules.other.listReplaceTabs, (t: string) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else if (blankLine) {\n indent = cap[1].length + 1;\n } else {\n indent = cap[2].search(this.rules.other.nonSpaceChar); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n if (blankLine && this.rules.other.blankLine.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, ' ');\n nextLineWithoutTabs = nextLine;\n } else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.replace(this.rules.other.tabCharGlobal, ' ').search(this.rules.other.nonSpaceChar) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!this.options.gfm && this.rules.other.listIsTask.test(itemContents),\n loose: false,\n text: itemContents,\n tokens: [],\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n const lastItem = list.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n } else {\n // not a list since there were no items\n return;\n }\n list.raw = list.raw.trimEnd();\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (const item of list.items) {\n this.lexer.state.top = false;\n item.tokens = this.lexer.blockTokens(item.text, []);\n if (item.task) {\n // Remove checkbox markdown from item tokens\n item.text = item.text.replace(this.rules.other.listReplaceTask, '');\n if (item.tokens[0]?.type === 'text' || item.tokens[0]?.type === 'paragraph') {\n item.tokens[0].raw = item.tokens[0].raw.replace(this.rules.other.listReplaceTask, '');\n item.tokens[0].text = item.tokens[0].text.replace(this.rules.other.listReplaceTask, '');\n for (let i = this.lexer.inlineQueue.length - 1; i >= 0; i--) {\n if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[i].src)) {\n this.lexer.inlineQueue[i].src = this.lexer.inlineQueue[i].src.replace(this.rules.other.listReplaceTask, '');\n break;\n }\n }\n }\n\n const taskRaw = this.rules.other.listTaskCheckbox.exec(item.raw);\n if (taskRaw) {\n const checkboxToken: Tokens.Checkbox = {\n type: 'checkbox',\n raw: taskRaw[0] + ' ',\n checked: taskRaw[0] !== '[ ]',\n };\n item.checked = checkboxToken.checked;\n if (list.loose) {\n if (item.tokens[0] && ['paragraph', 'text'].includes(item.tokens[0].type) && 'tokens' in item.tokens[0] && item.tokens[0].tokens) {\n item.tokens[0].raw = checkboxToken.raw + item.tokens[0].raw;\n item.tokens[0].text = checkboxToken.raw + item.tokens[0].text;\n item.tokens[0].tokens.unshift(checkboxToken);\n } else {\n item.tokens.unshift({\n type: 'paragraph',\n raw: checkboxToken.raw,\n text: checkboxToken.raw,\n tokens: [checkboxToken],\n });\n }\n } else {\n item.tokens.unshift(checkboxToken);\n }\n }\n }\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = item.tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => this.rules.other.anyLine.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (const item of list.items) {\n item.loose = true;\n for (const token of item.tokens) {\n if (token.type === 'text') {\n token.type = 'paragraph';\n }\n }\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, ' ');\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, '').split('|');\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, '').split('\\n') : [];\n\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push('right');\n } else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push('center');\n } else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push('left');\n } else {\n item.align.push(null);\n }\n }\n\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n\n return item;\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: cap[1],\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex === -2) {\n // more open parens than closed\n return;\n }\n\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = this.rules.other.pedanticHrefTitle.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer, this.rules);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer, this.rules);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = [...rDelim].length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, ' ');\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n\n autolink(src: string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[1];\n href = 'mailto:' + text;\n } else {\n text = cap[1];\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n url(src: string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[0];\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n inlineText(src: string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n escaped,\n };\n }\n }\n}\n","import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { other, block, inline } from './rules.ts';\nimport type { Token, TokensList, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Block Lexer\n */\nexport class _Lexer<ParserOutput = string, RendererOutput = string> {\n tokens: TokensList;\n options: MarkedOptions<ParserOutput, RendererOutput>;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n public inlineQueue: { src: string, tokens: Token[] }[];\n\n private tokenizer: _Tokenizer<ParserOutput, RendererOutput>;\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n // TokenList cannot be created in one go\n this.tokens = [] as unknown as TokensList;\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer<ParserOutput, RendererOutput>();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true,\n };\n\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal,\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline,\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex<ParserOutput = string, RendererOutput = string>(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const lexer = new _Lexer<ParserOutput, RendererOutput>(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline<ParserOutput = string, RendererOutput = string>(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const lexer = new _Lexer<ParserOutput, RendererOutput>(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src.replace(other.carriageReturn, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[];\n blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList;\n blockTokens(src: string, tokens: Token[] = [], lastParagraphClipped = false) {\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, ' ').replace(other.spaceLine, '');\n }\n\n while (src) {\n let token: Tokens.Generic | undefined;\n\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== undefined) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n lastToken.raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n tokens.push(token);\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match: RegExpExecArray | null = null;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index)\n + '[' + 'a'.repeat(match[0].length - 2) + ']'\n + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n // Mask out other blocks\n let offset;\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n offset = match[2] ? match[2].length : 0;\n maskedSrc = maskedSrc.slice(0, match.index + offset) + '[' + 'a'.repeat(match[0].length - offset - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out blocks from extensions\n maskedSrc = this.options.hooks?.emStrongMask?.call({ lexer: this }, maskedSrc) ?? maskedSrc;\n\n let keepPrevChar = false;\n let prevChar = '';\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n let token: Tokens.Generic | undefined;\n\n // extensions\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === 'text' && lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape,\n} from './helpers.ts';\nimport { other } from './rules.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Tokens } from './Tokens.ts';\nimport type { _Parser } from './Parser.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n parser!: _Parser<ParserOutput, RendererOutput>; // set by the parser\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n space(token: Tokens.Space): RendererOutput {\n return '' as RendererOutput;\n }\n\n code({ text, lang, escaped }: Tokens.Code): RendererOutput {\n const langString = (lang || '').match(other.notSpaceStart)?.[0];\n\n const code = text.replace(other.endingNewline, '') + '\\n';\n\n if (!langString) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n' as RendererOutput;\n }\n\n return '<pre><code class=\"language-'\n + escape(langString)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n' as RendererOutput;\n }\n\n blockquote({ tokens }: Tokens.Blockquote): RendererOutput {\n const body = this.parser.parse(tokens);\n return `<blockquote>\\n${body}</blockquote>\\n` as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n def(token: Tokens.Def): RendererOutput {\n return '' as RendererOutput;\n }\n\n heading({ tokens, depth }: Tokens.Heading): RendererOutput {\n return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\\n` as RendererOutput;\n }\n\n hr(token: Tokens.Hr): RendererOutput {\n return '<hr>\\n' as RendererOutput;\n }\n\n list(token: Tokens.List): RendererOutput {\n const ordered = token.ordered;\n const start = token.start;\n\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '</' + type + '>\\n' as RendererOutput;\n }\n\n listitem(item: Tokens.ListItem): RendererOutput {\n return `<li>${this.parser.parse(item.tokens)}</li>\\n` as RendererOutput;\n }\n\n checkbox({ checked }: Tokens.Checkbox): RendererOutput {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"> ' as RendererOutput;\n }\n\n paragraph({ tokens }: Tokens.Paragraph): RendererOutput {\n return `<p>${this.parser.parseInline(tokens)}</p>\\n` as RendererOutput;\n }\n\n table(token: Tokens.Table): RendererOutput {\n let header = '';\n\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell as ParserOutput });\n\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n\n body += this.tablerow({ text: cell as ParserOutput });\n }\n if (body) body = `<tbody>${body}</tbody>`;\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n' as RendererOutput;\n }\n\n tablerow({ text }: Tokens.TableRow<ParserOutput>): RendererOutput {\n return `<tr>\\n${text}</tr>\\n` as RendererOutput;\n }\n\n tablecell(token: Tokens.TableCell): RendererOutput {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n` as RendererOutput;\n }\n\n /**\n * span level renderer\n */\n strong({ tokens }: Tokens.Strong): RendererOutput {\n return `<strong>${this.parser.parseInline(tokens)}</strong>` as RendererOutput;\n }\n\n em({ tokens }: Tokens.Em): RendererOutput {\n return `<em>${this.parser.parseInline(tokens)}</em>` as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return `<code>${escape(text, true)}</code>` as RendererOutput;\n }\n\n br(token: Tokens.Br): RendererOutput {\n return '<br>' as RendererOutput;\n }\n\n del({ tokens }: Tokens.Del): RendererOutput {\n return `<del>${this.parser.parseInline(tokens)}</del>` as RendererOutput;\n }\n\n link({ href, title, tokens }: Tokens.Link): RendererOutput {\n const text = this.parser.parseInline(tokens) as string;\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text as RendererOutput;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + (escape(title)) + '\"';\n }\n out += '>' + text + '</a>';\n return out as RendererOutput;\n }\n\n image({ href, title, text, tokens }: Tokens.Image): RendererOutput {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer) as string;\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escape(text) as RendererOutput;\n }\n href = cleanHref;\n\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${escape(title)}\"`;\n }\n out += '>';\n return out as RendererOutput;\n }\n\n text(token: Tokens.Text | Tokens.Escape): RendererOutput {\n return 'tokens' in token && token.tokens\n ? this.parser.parseInline(token.tokens) as unknown as RendererOutput\n : ('escaped' in token && token.escaped ? token.text as RendererOutput : escape(token.text) as RendererOutput);\n }\n}\n","import type { Tokens } from './Tokens.ts';\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer<RendererOutput = string> {\n // no need for block level renderers\n strong({ text }: Tokens.Strong): RendererOutput {\n return text as RendererOutput;\n }\n\n em({ text }: Tokens.Em): RendererOutput {\n return text as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return text as RendererOutput;\n }\n\n del({ text }: Tokens.Del): RendererOutput {\n return text as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n link({ text }: Tokens.Link): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n image({ text }: Tokens.Image): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n br(): RendererOutput {\n return '' as RendererOutput;\n }\n\n checkbox({ raw }: Tokens.Checkbox): RendererOutput {\n return raw as RendererOutput;\n }\n}\n","import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\nimport type { MarkedToken, Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n renderer: _Renderer<ParserOutput, RendererOutput>;\n textRenderer: _TextRenderer<RendererOutput>;\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer<ParserOutput, RendererOutput>();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer<RendererOutput>();\n }\n\n /**\n * Static Parse Method\n */\n static parse<ParserOutput = string, RendererOutput = string>(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const parser = new _Parser<ParserOutput, RendererOutput>(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline<ParserOutput = string, RendererOutput = string>(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const parser = new _Parser<ParserOutput, RendererOutput>(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[]): ParserOutput {\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken as Tokens.Generic;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'def', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'space': {\n out += this.renderer.space(token);\n break;\n }\n case 'hr': {\n out += this.renderer.hr(token);\n break;\n }\n case 'heading': {\n out += this.renderer.heading(token);\n break;\n }\n case 'code': {\n out += this.renderer.code(token);\n break;\n }\n case 'table': {\n out += this.renderer.table(token);\n break;\n }\n case 'blockquote': {\n out += this.renderer.blockquote(token);\n break;\n }\n case 'list': {\n out += this.renderer.list(token);\n break;\n }\n case 'checkbox': {\n out += this.renderer.checkbox(token);\n break;\n }\n case 'html': {\n out += this.renderer.html(token);\n break;\n }\n case 'def': {\n out += this.renderer.def(token);\n break;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(token);\n break;\n }\n case 'text': {\n out += this.renderer.text(token);\n break;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out as ParserOutput;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer: _Renderer<ParserOutput, RendererOutput> | _TextRenderer<RendererOutput> = this.renderer): ParserOutput {\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token);\n break;\n }\n case 'html': {\n out += renderer.html(token);\n break;\n }\n case 'link': {\n out += renderer.link(token);\n break;\n }\n case 'image': {\n out += renderer.image(token);\n break;\n }\n case 'checkbox': {\n out += renderer.checkbox(token);\n break;\n }\n case 'strong': {\n out += renderer.strong(token);\n break;\n }\n case 'em': {\n out += renderer.em(token);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token);\n break;\n }\n case 'br': {\n out += renderer.br(token);\n break;\n }\n case 'del': {\n out += renderer.del(token);\n break;\n }\n case 'text': {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out as ParserOutput;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport class _Hooks<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n block?: boolean;\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n 'emStrongMask',\n ]);\n\n static passThroughHooksRespectAsync = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: ParserOutput) {\n return html;\n }\n\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens: Token[] | TokensList) {\n return tokens;\n }\n\n /**\n * Mask contents that should not be interpreted as em/strong delimiters\n */\n emStrongMask(src: string) {\n return src;\n }\n\n /**\n * Provide function to tokenize markdown\n */\n provideLexer() {\n return this.block ? _Lexer.lex : _Lexer.lexInline;\n }\n\n /**\n * Provide function to parse tokens\n */\n provideParser() {\n return this.block ? _Parser.parse<ParserOutput, RendererOutput> : _Parser.parseInline<ParserOutput, RendererOutput>;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, Tokens, TokensList } from './Tokens.ts';\n\nexport type MaybePromise = void | Promise<void>;\n\ntype UnknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked<ParserOutput = string, RendererOutput = string> {\n defaults = _getDefaults<ParserOutput, RendererOutput>();\n options = this.setOptions;\n\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n\n Parser = _Parser<ParserOutput, RendererOutput>;\n Renderer = _Renderer<ParserOutput, RendererOutput>;\n TextRenderer = _TextRenderer<RendererOutput>;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer<ParserOutput, RendererOutput>;\n Hooks = _Hooks<ParserOutput, RendererOutput>;\n\n constructor(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n let values: MaybePromise[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token as Tokens.Table;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token as Tokens.List;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token as Tokens.Generic;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity) as Token[] | TokensList;\n values = values.concat(this.walkTokens(tokens, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {\n const extensions: MarkedOptions<ParserOutput, RendererOutput>['extensions'] = this.defaults.extensions || { renderers: {}, childTokens: {} };\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions<ParserOutput, RendererOutput>;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer<ParserOutput, RendererOutput>(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop as Exclude<keyof _Renderer<ParserOutput, RendererOutput>, 'options' | 'parser'>;\n const rendererFunc = pack.renderer[rendererProp] as GenericRendererFunction;\n const prevRenderer = renderer[rendererProp] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return (ret || '') as RendererOutput;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer<ParserOutput, RendererOutput>(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop as Exclude<keyof _Tokenizer<ParserOutput, RendererOutput>, 'options' | 'rules' | 'lexer'>;\n const tokenizerFunc = pack.tokenizer[tokenizerProp] as UnknownFunction;\n const prevTokenizer = tokenizer[tokenizerProp] as UnknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks<ParserOutput, RendererOutput>();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop as Exclude<keyof _Hooks<ParserOutput, RendererOutput>, 'options' | 'block'>;\n const hooksFunc = pack.hooks[hooksProp] as UnknownFunction;\n const prevHook = hooks[hooksProp] as UnknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg: unknown) => {\n if (this.defaults.async && _Hooks.passThroughHooksRespectAsync.has(prop)) {\n return (async() => {\n const ret = await hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n })();\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args: unknown[]) => {\n if (this.defaults.async) {\n return (async() => {\n let ret = await hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = await prevHook.apply(hooks, args);\n }\n return ret;\n })();\n }\n\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function(token) {\n let values: MaybePromise[] = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions<ParserOutput, RendererOutput>) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n lexer(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n\n parser(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n return _Parser.parse<ParserOutput, RendererOutput>(tokens, options ?? this.defaults);\n }\n\n private parseMarkdown(blockType: boolean) {\n type overloadedParse = {\n (src: string, options: MarkedOptions<ParserOutput, RendererOutput> & { async: true }): Promise<ParserOutput>;\n (src: string, options: MarkedOptions<ParserOutput, RendererOutput> & { async: false }): ParserOutput;\n (src: string, options?: MarkedOptions<ParserOutput, RendererOutput> | null): ParserOutput | Promise<ParserOutput>;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse: overloadedParse = (src: string, options?: MarkedOptions<ParserOutput, RendererOutput> | null): any => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n\n const throwError = this.onError(!!opt.silent, !!opt.async);\n\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n\n if (opt.async) {\n return (async() => {\n const processedSrc = opt.hooks ? await opt.hooks.preprocess(src) : src;\n const lexer = opt.hooks ? await opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const tokens = await lexer(processedSrc, opt);\n const processedTokens = opt.hooks ? await opt.hooks.processAllTokens(tokens) : tokens;\n if (opt.walkTokens) {\n await Promise.all(this.walkTokens(processedTokens, opt.walkTokens));\n }\n const parser = opt.hooks ? await opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n const html = await parser(processedTokens, opt);\n return opt.hooks ? await opt.hooks.postprocess(html) : html;\n })().catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch(e) {\n return throwError(e as Error);\n }\n };\n\n return parse;\n }\n\n private onError(silent: boolean, async: boolean) {\n return (e: Error): string | Promise<string> => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults,\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\nimport type { MaybePromise } from './Instance.ts';\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise<string>;\n\n/**\n * Compiles markdown to HTML.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions.\n */\nexport function marked(src: string, options: MarkedOptions & { async: false }): string;\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise<string>;\nexport function marked(src: string, options?: MarkedOptions | null): string | Promise<string>;\nexport function marked(src: string, opt?: MarkedOptions | null): string | Promise<string> {\n return markedInstance.parse(src, opt);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './Tokens.ts';\n","// https://nodejs.org/api/packages.html#packages_writing_dual_packages_while_avoiding_or_minimizing_hazards\nimport HighlightJS from '../lib/core.js';\nexport { HighlightJS };\nexport default HighlightJS;\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `<Array<Array<number>>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // `<T, A extends keyof T, V>`\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // `<something>`\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `<blah />` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // <T = any>(key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // `<From extends string>`\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\nexport { javascript as default };\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `<Array<Array<number>>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // `<T, A extends keyof T, V>`\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // `<something>`\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `<blah />` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // <T = any>(key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // `<From extends string>`\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\n/*\nLanguage: TypeScript\nAuthor: Panu Horsmalahti <panu.horsmalahti@iki.fi>\nContributors: Ike Ku <dempfi@yahoo.com>\nDescription: TypeScript is a strict superset of JavaScript\nWebsite: https://www.typescriptlang.org\nCategory: common, scripting\n*/\n\n\n/** @type LanguageFn */\nfunction typescript(hljs) {\n const regex = hljs.regex;\n const tsLanguage = javascript(hljs);\n\n const IDENT_RE$1 = IDENT_RE;\n const TYPES = [\n \"any\",\n \"void\",\n \"number\",\n \"boolean\",\n \"string\",\n \"object\",\n \"never\",\n \"symbol\",\n \"bigint\",\n \"unknown\"\n ];\n const NAMESPACE = {\n begin: [\n /namespace/,\n /\\s+/,\n hljs.IDENT_RE\n ],\n beginScope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n };\n const INTERFACE = {\n beginKeywords: 'interface',\n end: /\\{/,\n excludeEnd: true,\n keywords: {\n keyword: 'interface extends',\n built_in: TYPES\n },\n contains: [ tsLanguage.exports.CLASS_REFERENCE ]\n };\n const USE_STRICT = {\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use strict['\"]/\n };\n const TS_SPECIFIC_KEYWORDS = [\n \"type\",\n // \"namespace\",\n \"interface\",\n \"public\",\n \"private\",\n \"protected\",\n \"implements\",\n \"declare\",\n \"abstract\",\n \"readonly\",\n \"enum\",\n \"override\",\n \"satisfies\"\n ];\n /*\n namespace is a TS keyword but it's fine to use it as a variable name too.\n const message = 'foo';\n const namespace = 'bar';\n */\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS),\n literal: LITERALS,\n built_in: BUILT_INS.concat(TYPES),\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n const DECORATOR = {\n className: 'meta',\n begin: '@' + IDENT_RE$1,\n };\n\n const swapMode = (mode, label, replacement) => {\n const indx = mode.contains.findIndex(m => m.label === label);\n if (indx === -1) { throw new Error(\"can not find mode to replace\"); }\n\n mode.contains.splice(indx, 1, replacement);\n };\n\n\n // this should update anywhere keywords is used since\n // it will be the same actual JS object\n Object.assign(tsLanguage.keywords, KEYWORDS$1);\n\n tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR);\n\n // highlight the function params\n const ATTRIBUTE_HIGHLIGHT = tsLanguage.contains.find(c => c.scope === \"attr\");\n\n // take default attr rule and extend it to support optionals\n const OPTIONAL_KEY_OR_ARGUMENT = Object.assign({},\n ATTRIBUTE_HIGHLIGHT,\n { match: regex.concat(IDENT_RE$1, regex.lookahead(/\\s*\\?:/)) }\n );\n tsLanguage.exports.PARAMS_CONTAINS.push([\n tsLanguage.exports.CLASS_REFERENCE, // class reference for highlighting the params types\n ATTRIBUTE_HIGHLIGHT, // highlight the params key\n OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting\n ]);\n\n // Add the optional property assignment highlighting for objects or classes\n tsLanguage.contains = tsLanguage.contains.concat([\n DECORATOR,\n NAMESPACE,\n INTERFACE,\n OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting\n ]);\n\n // TS gets a simpler shebang rule than JS\n swapMode(tsLanguage, \"shebang\", hljs.SHEBANG());\n // JS use strict rule purposely excludes `asm` which makes no sense\n swapMode(tsLanguage, \"use_strict\", USE_STRICT);\n\n const functionDeclaration = tsLanguage.contains.find(m => m.label === \"func.def\");\n functionDeclaration.relevance = 0; // () => {} is more typical in TypeScript\n\n Object.assign(tsLanguage, {\n name: 'TypeScript',\n aliases: [\n 'ts',\n 'tsx',\n 'mts',\n 'cts'\n ]\n });\n\n return tsLanguage;\n}\n\nexport { typescript as default };\n","/*\nLanguage: Python\nDescription: Python is an interpreted, object-oriented, high-level programming language with dynamic semantics.\nWebsite: https://www.python.org\nCategory: common\n*/\n\nfunction python(hljs) {\n const regex = hljs.regex;\n const IDENT_RE = /[\\p{XID_Start}_]\\p{XID_Continue}*/u;\n const RESERVED_WORDS = [\n 'and',\n 'as',\n 'assert',\n 'async',\n 'await',\n 'break',\n 'case',\n 'class',\n 'continue',\n 'def',\n 'del',\n 'elif',\n 'else',\n 'except',\n 'finally',\n 'for',\n 'from',\n 'global',\n 'if',\n 'import',\n 'in',\n 'is',\n 'lambda',\n 'match',\n 'nonlocal|10',\n 'not',\n 'or',\n 'pass',\n 'raise',\n 'return',\n 'try',\n 'while',\n 'with',\n 'yield'\n ];\n\n const BUILT_INS = [\n '__import__',\n 'abs',\n 'all',\n 'any',\n 'ascii',\n 'bin',\n 'bool',\n 'breakpoint',\n 'bytearray',\n 'bytes',\n 'callable',\n 'chr',\n 'classmethod',\n 'compile',\n 'complex',\n 'delattr',\n 'dict',\n 'dir',\n 'divmod',\n 'enumerate',\n 'eval',\n 'exec',\n 'filter',\n 'float',\n 'format',\n 'frozenset',\n 'getattr',\n 'globals',\n 'hasattr',\n 'hash',\n 'help',\n 'hex',\n 'id',\n 'input',\n 'int',\n 'isinstance',\n 'issubclass',\n 'iter',\n 'len',\n 'list',\n 'locals',\n 'map',\n 'max',\n 'memoryview',\n 'min',\n 'next',\n 'object',\n 'oct',\n 'open',\n 'ord',\n 'pow',\n 'print',\n 'property',\n 'range',\n 'repr',\n 'reversed',\n 'round',\n 'set',\n 'setattr',\n 'slice',\n 'sorted',\n 'staticmethod',\n 'str',\n 'sum',\n 'super',\n 'tuple',\n 'type',\n 'vars',\n 'zip'\n ];\n\n const LITERALS = [\n '__debug__',\n 'Ellipsis',\n 'False',\n 'None',\n 'NotImplemented',\n 'True'\n ];\n\n // https://docs.python.org/3/library/typing.html\n // TODO: Could these be supplemented by a CamelCase matcher in certain\n // contexts, leaving these remaining only for relevance hinting?\n const TYPES = [\n \"Any\",\n \"Callable\",\n \"Coroutine\",\n \"Dict\",\n \"List\",\n \"Literal\",\n \"Generic\",\n \"Optional\",\n \"Sequence\",\n \"Set\",\n \"Tuple\",\n \"Type\",\n \"Union\"\n ];\n\n const KEYWORDS = {\n $pattern: /[A-Za-z]\\w+|__\\w+__/,\n keyword: RESERVED_WORDS,\n built_in: BUILT_INS,\n literal: LITERALS,\n type: TYPES\n };\n\n const PROMPT = {\n className: 'meta',\n begin: /^(>>>|\\.\\.\\.) /\n };\n\n const SUBST = {\n className: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS,\n illegal: /#/\n };\n\n const LITERAL_BRACKET = {\n begin: /\\{\\{/,\n relevance: 0\n };\n\n const STRING = {\n className: 'string',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([uU]|[rR])'/,\n end: /'/,\n relevance: 10\n },\n {\n begin: /([uU]|[rR])\"/,\n end: /\"/,\n relevance: 10\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])'/,\n end: /'/\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])\"/,\n end: /\"/\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'/,\n end: /'/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n // https://docs.python.org/3.9/reference/lexical_analysis.html#numeric-literals\n const digitpart = '[0-9](_?[0-9])*';\n const pointfloat = `(\\\\b(${digitpart}))?\\\\.(${digitpart})|\\\\b(${digitpart})\\\\.`;\n // Whitespace after a number (or any lexical token) is needed only if its absence\n // would change the tokenization\n // https://docs.python.org/3.9/reference/lexical_analysis.html#whitespace-between-tokens\n // We deviate slightly, requiring a word boundary or a keyword\n // to avoid accidentally recognizing *prefixes* (e.g., `0` in `0x41` or `08` or `0__1`)\n const lookahead = `\\\\b|${RESERVED_WORDS.join('|')}`;\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // exponentfloat, pointfloat\n // https://docs.python.org/3.9/reference/lexical_analysis.html#floating-point-literals\n // optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n // Note: no leading \\b because floats can start with a decimal point\n // and we don't want to mishandle e.g. `fn(.5)`,\n // no trailing \\b for pointfloat because it can end with a decimal point\n // and we don't want to mishandle e.g. `0..hex()`; this should be safe\n // because both MUST contain a decimal point and so cannot be confused with\n // the interior part of an identifier\n {\n begin: `(\\\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?(?=${lookahead})`\n },\n {\n begin: `(${pointfloat})[jJ]?`\n },\n\n // decinteger, bininteger, octinteger, hexinteger\n // https://docs.python.org/3.9/reference/lexical_analysis.html#integer-literals\n // optionally \"long\" in Python 2\n // https://docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals\n // decinteger is optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[bB](_?[01])+[lL]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[oO](_?[0-7])+[lL]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${lookahead})`\n },\n\n // imagnumber (digitpart-based)\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b(${digitpart})[jJ](?=${lookahead})`\n }\n ]\n };\n const COMMENT_TYPE = {\n className: \"comment\",\n begin: regex.lookahead(/# type:/),\n end: /$/,\n keywords: KEYWORDS,\n contains: [\n { // prevent keywords from coloring `type`\n begin: /# type:/\n },\n // comment within a datatype comment includes no keywords\n {\n begin: /#/,\n end: /\\b\\B/,\n endsWithParent: true\n }\n ]\n };\n const PARAMS = {\n className: 'params',\n variants: [\n // Exclude params in functions without params\n {\n className: \"\",\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE\n ]\n }\n ]\n };\n SUBST.contains = [\n STRING,\n NUMBER,\n PROMPT\n ];\n\n return {\n name: 'Python',\n aliases: [\n 'py',\n 'gyp',\n 'ipython'\n ],\n unicodeRegex: true,\n keywords: KEYWORDS,\n illegal: /(<\\/|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n {\n // very common convention\n scope: 'variable.language',\n match: /\\bself\\b/\n },\n {\n // eat \"if\" prior to string so that it won't accidentally be\n // labeled as an f-string\n beginKeywords: \"if\",\n relevance: 0\n },\n { match: /\\bor\\b/, scope: \"keyword\" },\n STRING,\n COMMENT_TYPE,\n hljs.HASH_COMMENT_MODE,\n {\n match: [\n /\\bdef/, /\\s+/,\n IDENT_RE,\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [ PARAMS ]\n },\n {\n variants: [\n {\n match: [\n /\\bclass/, /\\s+/,\n IDENT_RE, /\\s*/,\n /\\(\\s*/, IDENT_RE,/\\s*\\)/\n ],\n },\n {\n match: [\n /\\bclass/, /\\s+/,\n IDENT_RE\n ],\n }\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 6: \"title.class.inherited\",\n }\n },\n {\n className: 'meta',\n begin: /^[\\t ]*@/,\n end: /(?=#)|$/,\n contains: [\n NUMBER,\n PARAMS,\n STRING\n ]\n }\n ]\n };\n}\n\nexport { python as default };\n","/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: http://www.json.org\nCategory: common, protocols, web\n*/\n\nfunction json(hljs) {\n const ATTRIBUTE = {\n className: 'attr',\n begin: /\"(\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n relevance: 1.01\n };\n const PUNCTUATION = {\n match: /[{}[\\],:]/,\n className: \"punctuation\",\n relevance: 0\n };\n const LITERALS = [\n \"true\",\n \"false\",\n \"null\"\n ];\n // NOTE: normally we would rely on `keywords` for this but using a mode here allows us\n // - to use the very tight `illegal: \\S` rule later to flag any other character\n // - as illegal indicating that despite looking like JSON we do not truly have\n // - JSON and thus improve false-positively greatly since JSON will try and claim\n // - all sorts of JSON looking stuff\n const LITERALS_MODE = {\n scope: \"literal\",\n beginKeywords: LITERALS.join(\" \"),\n };\n\n return {\n name: 'JSON',\n aliases: ['jsonc'],\n keywords:{\n literal: LITERALS,\n },\n contains: [\n ATTRIBUTE,\n PUNCTUATION,\n hljs.QUOTE_STRING_MODE,\n LITERALS_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: '\\\\S'\n };\n}\n\nexport { json as default };\n","/*\nLanguage: Bash\nAuthor: vah <vahtenberg@gmail.com>\nContributrors: Benjamin Pannell <contact@sierrasoftworks.com>\nWebsite: https://www.gnu.org/software/bash/\nCategory: common, scripting\n*/\n\n/** @type LanguageFn */\nfunction bash(hljs) {\n const regex = hljs.regex;\n const VAR = {};\n const BRACED_VAR = {\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [\n \"self\",\n {\n begin: /:-/,\n contains: [ VAR ]\n } // default values\n ]\n };\n Object.assign(VAR, {\n className: 'variable',\n variants: [\n { begin: regex.concat(/\\$[\\w\\d#@][\\w\\d_]*/,\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![\\\\w\\\\d])(?![$])`) },\n BRACED_VAR\n ]\n });\n\n const SUBST = {\n className: 'subst',\n begin: /\\$\\(/,\n end: /\\)/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n };\n const COMMENT = hljs.inherit(\n hljs.COMMENT(),\n {\n match: [\n /(^|\\s)/,\n /#.*$/\n ],\n scope: {\n 2: 'comment'\n }\n }\n );\n const HERE_DOC = {\n begin: /<<-?\\s*(?=\\w+)/,\n starts: { contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n className: 'string'\n })\n ] }\n };\n const QUOTE_STRING = {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n SUBST\n ]\n };\n SUBST.contains.push(QUOTE_STRING);\n const ESCAPED_QUOTE = {\n match: /\\\\\"/\n };\n const APOS_STRING = {\n className: 'string',\n begin: /'/,\n end: /'/\n };\n const ESCAPED_APOS = {\n match: /\\\\'/\n };\n const ARITHMETIC = {\n begin: /\\$?\\(\\(/,\n end: /\\)\\)/,\n contains: [\n {\n begin: /\\d+#[0-9a-f]+/,\n className: \"number\"\n },\n hljs.NUMBER_MODE,\n VAR\n ]\n };\n const SH_LIKE_SHELLS = [\n \"fish\",\n \"bash\",\n \"zsh\",\n \"sh\",\n \"csh\",\n \"ksh\",\n \"tcsh\",\n \"dash\",\n \"scsh\",\n ];\n const KNOWN_SHEBANG = hljs.SHEBANG({\n binary: `(${SH_LIKE_SHELLS.join(\"|\")})`,\n relevance: 10\n });\n const FUNCTION = {\n className: 'function',\n begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n returnBegin: true,\n contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: /\\w[\\w\\d_]*/ }) ],\n relevance: 0\n };\n\n const KEYWORDS = [\n \"if\",\n \"then\",\n \"else\",\n \"elif\",\n \"fi\",\n \"time\",\n \"for\",\n \"while\",\n \"until\",\n \"in\",\n \"do\",\n \"done\",\n \"case\",\n \"esac\",\n \"coproc\",\n \"function\",\n \"select\"\n ];\n\n const LITERALS = [\n \"true\",\n \"false\"\n ];\n\n // to consume paths to prevent keyword matches inside them\n const PATH_MODE = { match: /(\\/[a-z._-]+)+/ };\n\n // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n const SHELL_BUILT_INS = [\n \"break\",\n \"cd\",\n \"continue\",\n \"eval\",\n \"exec\",\n \"exit\",\n \"export\",\n \"getopts\",\n \"hash\",\n \"pwd\",\n \"readonly\",\n \"return\",\n \"shift\",\n \"test\",\n \"times\",\n \"trap\",\n \"umask\",\n \"unset\"\n ];\n\n const BASH_BUILT_INS = [\n \"alias\",\n \"bind\",\n \"builtin\",\n \"caller\",\n \"command\",\n \"declare\",\n \"echo\",\n \"enable\",\n \"help\",\n \"let\",\n \"local\",\n \"logout\",\n \"mapfile\",\n \"printf\",\n \"read\",\n \"readarray\",\n \"source\",\n \"sudo\",\n \"type\",\n \"typeset\",\n \"ulimit\",\n \"unalias\"\n ];\n\n const ZSH_BUILT_INS = [\n \"autoload\",\n \"bg\",\n \"bindkey\",\n \"bye\",\n \"cap\",\n \"chdir\",\n \"clone\",\n \"comparguments\",\n \"compcall\",\n \"compctl\",\n \"compdescribe\",\n \"compfiles\",\n \"compgroups\",\n \"compquote\",\n \"comptags\",\n \"comptry\",\n \"compvalues\",\n \"dirs\",\n \"disable\",\n \"disown\",\n \"echotc\",\n \"echoti\",\n \"emulate\",\n \"fc\",\n \"fg\",\n \"float\",\n \"functions\",\n \"getcap\",\n \"getln\",\n \"history\",\n \"integer\",\n \"jobs\",\n \"kill\",\n \"limit\",\n \"log\",\n \"noglob\",\n \"popd\",\n \"print\",\n \"pushd\",\n \"pushln\",\n \"rehash\",\n \"sched\",\n \"setcap\",\n \"setopt\",\n \"stat\",\n \"suspend\",\n \"ttyctl\",\n \"unfunction\",\n \"unhash\",\n \"unlimit\",\n \"unsetopt\",\n \"vared\",\n \"wait\",\n \"whence\",\n \"where\",\n \"which\",\n \"zcompile\",\n \"zformat\",\n \"zftp\",\n \"zle\",\n \"zmodload\",\n \"zparseopts\",\n \"zprof\",\n \"zpty\",\n \"zregexparse\",\n \"zsocket\",\n \"zstyle\",\n \"ztcp\"\n ];\n\n const GNU_CORE_UTILS = [\n \"chcon\",\n \"chgrp\",\n \"chown\",\n \"chmod\",\n \"cp\",\n \"dd\",\n \"df\",\n \"dir\",\n \"dircolors\",\n \"ln\",\n \"ls\",\n \"mkdir\",\n \"mkfifo\",\n \"mknod\",\n \"mktemp\",\n \"mv\",\n \"realpath\",\n \"rm\",\n \"rmdir\",\n \"shred\",\n \"sync\",\n \"touch\",\n \"truncate\",\n \"vdir\",\n \"b2sum\",\n \"base32\",\n \"base64\",\n \"cat\",\n \"cksum\",\n \"comm\",\n \"csplit\",\n \"cut\",\n \"expand\",\n \"fmt\",\n \"fold\",\n \"head\",\n \"join\",\n \"md5sum\",\n \"nl\",\n \"numfmt\",\n \"od\",\n \"paste\",\n \"ptx\",\n \"pr\",\n \"sha1sum\",\n \"sha224sum\",\n \"sha256sum\",\n \"sha384sum\",\n \"sha512sum\",\n \"shuf\",\n \"sort\",\n \"split\",\n \"sum\",\n \"tac\",\n \"tail\",\n \"tr\",\n \"tsort\",\n \"unexpand\",\n \"uniq\",\n \"wc\",\n \"arch\",\n \"basename\",\n \"chroot\",\n \"date\",\n \"dirname\",\n \"du\",\n \"echo\",\n \"env\",\n \"expr\",\n \"factor\",\n // \"false\", // keyword literal already\n \"groups\",\n \"hostid\",\n \"id\",\n \"link\",\n \"logname\",\n \"nice\",\n \"nohup\",\n \"nproc\",\n \"pathchk\",\n \"pinky\",\n \"printenv\",\n \"printf\",\n \"pwd\",\n \"readlink\",\n \"runcon\",\n \"seq\",\n \"sleep\",\n \"stat\",\n \"stdbuf\",\n \"stty\",\n \"tee\",\n \"test\",\n \"timeout\",\n // \"true\", // keyword literal already\n \"tty\",\n \"uname\",\n \"unlink\",\n \"uptime\",\n \"users\",\n \"who\",\n \"whoami\",\n \"yes\"\n ];\n\n return {\n name: 'Bash',\n aliases: [\n 'sh',\n 'zsh'\n ],\n keywords: {\n $pattern: /\\b[a-z][a-z0-9._-]+\\b/,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: [\n ...SHELL_BUILT_INS,\n ...BASH_BUILT_INS,\n // Shell modifiers\n \"set\",\n \"shopt\",\n ...ZSH_BUILT_INS,\n ...GNU_CORE_UTILS\n ]\n },\n contains: [\n KNOWN_SHEBANG, // to catch known shells and boost relevancy\n hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang\n FUNCTION,\n ARITHMETIC,\n COMMENT,\n HERE_DOC,\n PATH_MODE,\n QUOTE_STRING,\n ESCAPED_QUOTE,\n APOS_STRING,\n ESCAPED_APOS,\n VAR\n ]\n };\n}\n\nexport { bash as default };\n","/*\nLanguage: Shell Session\nRequires: bash.js\nAuthor: TSUYUSATO Kitsune <make.just.on@gmail.com>\nCategory: common\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction shell(hljs) {\n return {\n name: 'Shell Session',\n aliases: [\n 'console',\n 'shellsession'\n ],\n contains: [\n {\n className: 'meta.prompt',\n // We cannot add \\s (spaces) in the regular expression otherwise it will be too broad and produce unexpected result.\n // For instance, in the following example, it would match \"echo /path/to/home >\" as a prompt:\n // echo /path/to/home > t.exe\n begin: /^\\s{0,3}[/~\\w\\d[\\]()@-]*[>%$#][ ]?/,\n starts: {\n end: /[^\\\\](?=\\s*$)/,\n subLanguage: 'bash'\n }\n }\n ]\n };\n}\n\nexport { shell as default };\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z_][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst HTML_TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'picture',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'select',\n 'source',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst SVG_TAGS = [\n 'defs',\n 'g',\n 'marker',\n 'mask',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'textPath',\n 'tspan',\n 'foreignObject',\n 'clipPath'\n];\n\nconst TAGS = [\n ...HTML_TAGS,\n ...SVG_TAGS,\n];\n\n// Sorting, then reversing makes sure longer attributes/elements like\n// `font-weight` are matched fully instead of getting false positives on say `font`\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n].sort().reverse();\n\nconst ATTRIBUTES = [\n 'accent-color',\n 'align-content',\n 'align-items',\n 'align-self',\n 'alignment-baseline',\n 'all',\n 'anchor-name',\n 'animation',\n 'animation-composition',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-range',\n 'animation-range-end',\n 'animation-range-start',\n 'animation-timeline',\n 'animation-timing-function',\n 'appearance',\n 'aspect-ratio',\n 'backdrop-filter',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-position-x',\n 'background-position-y',\n 'background-repeat',\n 'background-size',\n 'baseline-shift',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-align',\n 'box-decoration-break',\n 'box-direction',\n 'box-flex',\n 'box-flex-group',\n 'box-lines',\n 'box-ordinal-group',\n 'box-orient',\n 'box-pack',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'color-scheme',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'contain-intrinsic-block-size',\n 'contain-intrinsic-height',\n 'contain-intrinsic-inline-size',\n 'contain-intrinsic-size',\n 'contain-intrinsic-width',\n 'container',\n 'container-name',\n 'container-type',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'counter-set',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'cx',\n 'cy',\n 'direction',\n 'display',\n 'dominant-baseline',\n 'empty-cells',\n 'enable-background',\n 'field-sizing',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flood-color',\n 'flood-opacity',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-optical-sizing',\n 'font-palette',\n 'font-size',\n 'font-size-adjust',\n 'font-smooth',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-synthesis-position',\n 'font-synthesis-small-caps',\n 'font-synthesis-style',\n 'font-synthesis-weight',\n 'font-variant',\n 'font-variant-alternates',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-emoji',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'forced-color-adjust',\n 'gap',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphenate-character',\n 'hyphenate-limit-chars',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'initial-letter',\n 'initial-letter-align',\n 'inline-size',\n 'inset',\n 'inset-area',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'isolation',\n 'justify-content',\n 'justify-items',\n 'justify-self',\n 'kerning',\n 'left',\n 'letter-spacing',\n 'lighting-color',\n 'line-break',\n 'line-height',\n 'line-height-step',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin-trim',\n 'marker',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'masonry-auto-flow',\n 'math-depth',\n 'math-shift',\n 'math-style',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-anchor',\n 'overflow-block',\n 'overflow-clip-margin',\n 'overflow-inline',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'overlay',\n 'overscroll-behavior',\n 'overscroll-behavior-block',\n 'overscroll-behavior-inline',\n 'overscroll-behavior-x',\n 'overscroll-behavior-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'paint-order',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'place-content',\n 'place-items',\n 'place-self',\n 'pointer-events',\n 'position',\n 'position-anchor',\n 'position-visibility',\n 'print-color-adjust',\n 'quotes',\n 'r',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'rotate',\n 'row-gap',\n 'ruby-align',\n 'ruby-position',\n 'scale',\n 'scroll-behavior',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scroll-timeline',\n 'scroll-timeline-axis',\n 'scroll-timeline-name',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'shape-rendering',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'stop-color',\n 'stop-opacity',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-anchor',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-skip',\n 'text-decoration-skip-ink',\n 'text-decoration-style',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-size-adjust',\n 'text-transform',\n 'text-underline-offset',\n 'text-underline-position',\n 'text-wrap',\n 'text-wrap-mode',\n 'text-wrap-style',\n 'timeline-scope',\n 'top',\n 'touch-action',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-behavior',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'translate',\n 'unicode-bidi',\n 'user-modify',\n 'user-select',\n 'vector-effect',\n 'vertical-align',\n 'view-timeline',\n 'view-timeline-axis',\n 'view-timeline-inset',\n 'view-timeline-name',\n 'view-transition-name',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'white-space-collapse',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'x',\n 'y',\n 'z-index',\n 'zoom'\n].sort().reverse();\n\n/*\nLanguage: CSS\nCategory: common, css, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/CSS\n*/\n\n\n/** @type LanguageFn */\nfunction css(hljs) {\n const regex = hljs.regex;\n const modes = MODES(hljs);\n const VENDOR_PREFIX = { begin: /-(webkit|moz|ms|o)-(?=[a-z])/ };\n const AT_MODIFIERS = \"and or not only\";\n const AT_PROPERTY_RE = /@-?\\w[\\w]*(-\\w+)*/; // @-webkit-keyframes\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const STRINGS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ];\n\n return {\n name: 'CSS',\n case_insensitive: true,\n illegal: /[=|'\\$]/,\n keywords: { keyframePosition: \"from to\" },\n classNameAliases: {\n // for visual continuity with `tag {}` and because we\n // don't have a great class for this?\n keyframePosition: \"selector-tag\" },\n contains: [\n modes.BLOCK_COMMENT,\n VENDOR_PREFIX,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: 'selector-id',\n begin: /#[A-Za-z0-9_-]+/,\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.' + IDENT_RE,\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-pseudo',\n variants: [\n { begin: ':(' + PSEUDO_CLASSES.join('|') + ')' },\n { begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' }\n ]\n },\n // we may actually need this (12/2020)\n // { // pseudo-selector params\n // begin: /\\(/,\n // end: /\\)/,\n // contains: [ hljs.CSS_NUMBER_MODE ]\n // },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n // attribute values\n {\n begin: /:/,\n end: /[;}{]/,\n contains: [\n modes.BLOCK_COMMENT,\n modes.HEXCOLOR,\n modes.IMPORTANT,\n modes.CSS_NUMBER_MODE,\n ...STRINGS,\n // needed to highlight these as strings and to avoid issues with\n // illegal characters that might be inside urls that would tigger the\n // languages illegal stack\n {\n begin: /(url|data-uri)\\(/,\n end: /\\)/,\n relevance: 0, // from keywords\n keywords: { built_in: \"url data-uri\" },\n contains: [\n ...STRINGS,\n {\n className: \"string\",\n // any character other than `)` as in `url()` will be the start\n // of a string, which ends with `)` (from the parent mode)\n begin: /[^)]/,\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n },\n {\n begin: regex.lookahead(/@/),\n end: '[{;]',\n relevance: 0,\n illegal: /:/, // break on Less variables @var: ...\n contains: [\n {\n className: 'keyword',\n begin: AT_PROPERTY_RE\n },\n {\n begin: /\\s/,\n endsWithParent: true,\n excludeEnd: true,\n relevance: 0,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n ...STRINGS,\n modes.CSS_NUMBER_MODE\n ]\n }\n ]\n },\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b'\n }\n ]\n };\n}\n\nexport { css as default };\n","/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common, web\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction xml(hljs) {\n const regex = hljs.regex;\n // XML names can have the following additional letters: https://www.w3.org/TR/xml/#NT-NameChar\n // OTHER_NAME_CHARS = /[:\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/;\n // Element names start with NAME_START_CHAR followed by optional other Unicode letters, ASCII digits, hyphens, underscores, and periods\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);;\n // const XML_IDENT_RE = /[A-Z_a-z:\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]+/;\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);\n // however, to cater for performance and more Unicode support rely simply on the Unicode letter class\n const TAG_NAME_RE = regex.concat(/[\\p{L}_]/u, regex.optional(/[\\p{L}0-9_.-]*:/u), /[\\p{L}0-9_.-]*/u);\n const XML_IDENT_RE = /[\\p{L}0-9._:-]+/u;\n const XML_ENTITIES = {\n className: 'symbol',\n begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/\n };\n const XML_META_KEYWORDS = {\n begin: /\\s/,\n contains: [\n {\n className: 'keyword',\n begin: /#?[a-z_][a-z1-9_-]+/,\n illegal: /\\n/\n }\n ]\n };\n const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n begin: /\\(/,\n end: /\\)/\n });\n const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, { className: 'string' });\n const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' });\n const TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /</,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: XML_IDENT_RE,\n relevance: 0\n },\n {\n begin: /=\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'string',\n endsParent: true,\n variants: [\n {\n begin: /\"/,\n end: /\"/,\n contains: [ XML_ENTITIES ]\n },\n {\n begin: /'/,\n end: /'/,\n contains: [ XML_ENTITIES ]\n },\n { begin: /[^\\s\"'=<>`]+/ }\n ]\n }\n ]\n }\n ]\n };\n return {\n name: 'HTML, XML',\n aliases: [\n 'html',\n 'xhtml',\n 'rss',\n 'atom',\n 'xjb',\n 'xsd',\n 'xsl',\n 'plist',\n 'wsf',\n 'svg'\n ],\n case_insensitive: true,\n unicodeRegex: true,\n contains: [\n {\n className: 'meta',\n begin: /<![a-z]/,\n end: />/,\n relevance: 10,\n contains: [\n XML_META_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE,\n XML_META_PAR_KEYWORDS,\n {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n {\n className: 'meta',\n begin: /<![a-z]/,\n end: />/,\n contains: [\n XML_META_KEYWORDS,\n XML_META_PAR_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE\n ]\n }\n ]\n }\n ]\n },\n hljs.COMMENT(\n /<!--/,\n /-->/,\n { relevance: 10 }\n ),\n {\n begin: /<!\\[CDATA\\[/,\n end: /\\]\\]>/,\n relevance: 10\n },\n XML_ENTITIES,\n // xml processing instructions\n {\n className: 'meta',\n end: /\\?>/,\n variants: [\n {\n begin: /<\\?xml/,\n relevance: 10,\n contains: [\n QUOTE_META_STRING_MODE\n ]\n },\n {\n begin: /<\\?[a-z][a-z0-9]+/,\n }\n ]\n\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n '<style' as a single word, followed by a whitespace or an\n ending bracket.\n */\n begin: /<style(?=\\s|>)/,\n end: />/,\n keywords: { name: 'style' },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/style>/,\n returnEnd: true,\n subLanguage: [\n 'css',\n 'xml'\n ]\n }\n },\n {\n className: 'tag',\n // See the comment in the <style tag about the lookahead pattern\n begin: /<script(?=\\s|>)/,\n end: />/,\n keywords: { name: 'script' },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/script>/,\n returnEnd: true,\n subLanguage: [\n 'javascript',\n 'handlebars',\n 'xml'\n ]\n }\n },\n // we need this for now for jSX\n {\n className: 'tag',\n begin: /<>|<\\/>/\n },\n // open tag\n {\n className: 'tag',\n begin: regex.concat(\n /</,\n regex.lookahead(regex.concat(\n TAG_NAME_RE,\n // <tag/>\n // <tag>\n // <tag ...\n regex.either(/\\/>/, />/, /\\s/)\n ))\n ),\n end: /\\/?>/,\n contains: [\n {\n className: 'name',\n begin: TAG_NAME_RE,\n relevance: 0,\n starts: TAG_INTERNALS\n }\n ]\n },\n // close tag\n {\n className: 'tag',\n begin: regex.concat(\n /<\\//,\n regex.lookahead(regex.concat(\n TAG_NAME_RE, />/\n ))\n ),\n contains: [\n {\n className: 'name',\n begin: TAG_NAME_RE,\n relevance: 0\n },\n {\n begin: />/,\n relevance: 0,\n endsParent: true\n }\n ]\n }\n ]\n };\n}\n\nexport { xml as default };\n","/*\nLanguage: Markdown\nRequires: xml.js\nAuthor: John Crepezzi <john.crepezzi@gmail.com>\nWebsite: https://daringfireball.net/projects/markdown/\nCategory: common, markup\n*/\n\nfunction markdown(hljs) {\n const regex = hljs.regex;\n const INLINE_HTML = {\n begin: /<\\/?[A-Za-z_]/,\n end: '>',\n subLanguage: 'xml',\n relevance: 0\n };\n const HORIZONTAL_RULE = {\n begin: '^[-\\\\*]{3,}',\n end: '$'\n };\n const CODE = {\n className: 'code',\n variants: [\n // TODO: fix to allow these to work with sublanguage also\n { begin: '(`{3,})[^`](.|\\\\n)*?\\\\1`*[ ]*' },\n { begin: '(~{3,})[^~](.|\\\\n)*?\\\\1~*[ ]*' },\n // needed to allow markdown as a sublanguage to work\n {\n begin: '```',\n end: '```+[ ]*$'\n },\n {\n begin: '~~~',\n end: '~~~+[ ]*$'\n },\n { begin: '`.+?`' },\n {\n begin: '(?=^( {4}|\\\\t))',\n // use contains to gobble up multiple lines to allow the block to be whatever size\n // but only have a single open/close tag vs one per line\n contains: [\n {\n begin: '^( {4}|\\\\t)',\n end: '(\\\\n)$'\n }\n ],\n relevance: 0\n }\n ]\n };\n const LIST = {\n className: 'bullet',\n begin: '^[ \\t]*([*+-]|(\\\\d+\\\\.))(?=\\\\s+)',\n end: '\\\\s+',\n excludeEnd: true\n };\n const LINK_REFERENCE = {\n begin: /^\\[[^\\n]+\\]:/,\n returnBegin: true,\n contains: [\n {\n className: 'symbol',\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'link',\n begin: /:\\s*/,\n end: /$/,\n excludeBegin: true\n }\n ]\n };\n const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/;\n const LINK = {\n variants: [\n // too much like nested array access in so many languages\n // to have any real relevance\n {\n begin: /\\[.+?\\]\\[.*?\\]/,\n relevance: 0\n },\n // popular internet URLs\n {\n begin: /\\[.+?\\]\\(((data|javascript|mailto):|(?:http|ftp)s?:\\/\\/).*?\\)/,\n relevance: 2\n },\n {\n begin: regex.concat(/\\[.+?\\]\\(/, URL_SCHEME, /:\\/\\/.*?\\)/),\n relevance: 2\n },\n // relative urls\n {\n begin: /\\[.+?\\]\\([./?&#].*?\\)/,\n relevance: 1\n },\n // whatever else, lower relevance (might not be a link at all)\n {\n begin: /\\[.*?\\]\\(.*?\\)/,\n relevance: 0\n }\n ],\n returnBegin: true,\n contains: [\n {\n // empty strings for alt or link text\n match: /\\[(?=\\])/ },\n {\n className: 'string',\n relevance: 0,\n begin: '\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n returnEnd: true\n },\n {\n className: 'link',\n relevance: 0,\n begin: '\\\\]\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'symbol',\n relevance: 0,\n begin: '\\\\]\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n const BOLD = {\n className: 'strong',\n contains: [], // defined later\n variants: [\n {\n begin: /_{2}(?!\\s)/,\n end: /_{2}/\n },\n {\n begin: /\\*{2}(?!\\s)/,\n end: /\\*{2}/\n }\n ]\n };\n const ITALIC = {\n className: 'emphasis',\n contains: [], // defined later\n variants: [\n {\n begin: /\\*(?![*\\s])/,\n end: /\\*/\n },\n {\n begin: /_(?![_\\s])/,\n end: /_/,\n relevance: 0\n }\n ]\n };\n\n // 3 level deep nesting is not allowed because it would create confusion\n // in cases like `***testing***` because where we don't know if the last\n // `***` is starting a new bold/italic or finishing the last one\n const BOLD_WITHOUT_ITALIC = hljs.inherit(BOLD, { contains: [] });\n const ITALIC_WITHOUT_BOLD = hljs.inherit(ITALIC, { contains: [] });\n BOLD.contains.push(ITALIC_WITHOUT_BOLD);\n ITALIC.contains.push(BOLD_WITHOUT_ITALIC);\n\n let CONTAINABLE = [\n INLINE_HTML,\n LINK\n ];\n\n [\n BOLD,\n ITALIC,\n BOLD_WITHOUT_ITALIC,\n ITALIC_WITHOUT_BOLD\n ].forEach(m => {\n m.contains = m.contains.concat(CONTAINABLE);\n });\n\n CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC);\n\n const HEADER = {\n className: 'section',\n variants: [\n {\n begin: '^#{1,6}',\n end: '$',\n contains: CONTAINABLE\n },\n {\n begin: '(?=^.+?\\\\n[=-]{2,}$)',\n contains: [\n { begin: '^[=-]*$' },\n {\n begin: '^',\n end: \"\\\\n\",\n contains: CONTAINABLE\n }\n ]\n }\n ]\n };\n\n const BLOCKQUOTE = {\n className: 'quote',\n begin: '^>\\\\s+',\n contains: CONTAINABLE,\n end: '$'\n };\n\n const ENTITY = {\n //https://spec.commonmark.org/0.31.2/#entity-references\n scope: 'literal',\n match: /&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/\n };\n\n return {\n name: 'Markdown',\n aliases: [\n 'md',\n 'mkdown',\n 'mkd'\n ],\n contains: [\n HEADER,\n INLINE_HTML,\n LIST,\n BOLD,\n ITALIC,\n BLOCKQUOTE,\n CODE,\n HORIZONTAL_RULE,\n LINK,\n LINK_REFERENCE,\n ENTITY\n ]\n };\n}\n\nexport { markdown as default };\n","/*\n Language: SQL\n Website: https://en.wikipedia.org/wiki/SQL\n Category: common, database\n */\n\n/*\n\nGoals:\n\nSQL is intended to highlight basic/common SQL keywords and expressions\n\n- If pretty much every single SQL server includes supports, then it's a canidate.\n- It is NOT intended to include tons of vendor specific keywords (Oracle, MySQL,\n PostgreSQL) although the list of data types is purposely a bit more expansive.\n- For more specific SQL grammars please see:\n - PostgreSQL and PL/pgSQL - core\n - T-SQL - https://github.com/highlightjs/highlightjs-tsql\n - sql_more (core)\n\n */\n\nfunction sql(hljs) {\n const regex = hljs.regex;\n const COMMENT_MODE = hljs.COMMENT('--', '$');\n const STRING = {\n scope: 'string',\n variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [ { match: /''/ } ]\n }\n ]\n };\n const QUOTED_IDENTIFIER = {\n begin: /\"/,\n end: /\"/,\n contains: [ { match: /\"\"/ } ]\n };\n\n const LITERALS = [\n \"true\",\n \"false\",\n // Not sure it's correct to call NULL literal, and clauses like IS [NOT] NULL look strange that way.\n // \"null\",\n \"unknown\"\n ];\n\n const MULTI_WORD_TYPES = [\n \"double precision\",\n \"large object\",\n \"with timezone\",\n \"without timezone\"\n ];\n\n const TYPES = [\n 'bigint',\n 'binary',\n 'blob',\n 'boolean',\n 'char',\n 'character',\n 'clob',\n 'date',\n 'dec',\n 'decfloat',\n 'decimal',\n 'float',\n 'int',\n 'integer',\n 'interval',\n 'nchar',\n 'nclob',\n 'national',\n 'numeric',\n 'real',\n 'row',\n 'smallint',\n 'time',\n 'timestamp',\n 'varchar',\n 'varying', // modifier (character varying)\n 'varbinary'\n ];\n\n const NON_RESERVED_WORDS = [\n \"add\",\n \"asc\",\n \"collation\",\n \"desc\",\n \"final\",\n \"first\",\n \"last\",\n \"view\"\n ];\n\n // https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#reserved-word\n const RESERVED_WORDS = [\n \"abs\",\n \"acos\",\n \"all\",\n \"allocate\",\n \"alter\",\n \"and\",\n \"any\",\n \"are\",\n \"array\",\n \"array_agg\",\n \"array_max_cardinality\",\n \"as\",\n \"asensitive\",\n \"asin\",\n \"asymmetric\",\n \"at\",\n \"atan\",\n \"atomic\",\n \"authorization\",\n \"avg\",\n \"begin\",\n \"begin_frame\",\n \"begin_partition\",\n \"between\",\n \"bigint\",\n \"binary\",\n \"blob\",\n \"boolean\",\n \"both\",\n \"by\",\n \"call\",\n \"called\",\n \"cardinality\",\n \"cascaded\",\n \"case\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"char\",\n \"char_length\",\n \"character\",\n \"character_length\",\n \"check\",\n \"classifier\",\n \"clob\",\n \"close\",\n \"coalesce\",\n \"collate\",\n \"collect\",\n \"column\",\n \"commit\",\n \"condition\",\n \"connect\",\n \"constraint\",\n \"contains\",\n \"convert\",\n \"copy\",\n \"corr\",\n \"corresponding\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"create\",\n \"cross\",\n \"cube\",\n \"cume_dist\",\n \"current\",\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_row\",\n \"current_schema\",\n \"current_time\",\n \"current_timestamp\",\n \"current_path\",\n \"current_role\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"cursor\",\n \"cycle\",\n \"date\",\n \"day\",\n \"deallocate\",\n \"dec\",\n \"decimal\",\n \"decfloat\",\n \"declare\",\n \"default\",\n \"define\",\n \"delete\",\n \"dense_rank\",\n \"deref\",\n \"describe\",\n \"deterministic\",\n \"disconnect\",\n \"distinct\",\n \"double\",\n \"drop\",\n \"dynamic\",\n \"each\",\n \"element\",\n \"else\",\n \"empty\",\n \"end\",\n \"end_frame\",\n \"end_partition\",\n \"end-exec\",\n \"equals\",\n \"escape\",\n \"every\",\n \"except\",\n \"exec\",\n \"execute\",\n \"exists\",\n \"exp\",\n \"external\",\n \"extract\",\n \"false\",\n \"fetch\",\n \"filter\",\n \"first_value\",\n \"float\",\n \"floor\",\n \"for\",\n \"foreign\",\n \"frame_row\",\n \"free\",\n \"from\",\n \"full\",\n \"function\",\n \"fusion\",\n \"get\",\n \"global\",\n \"grant\",\n \"group\",\n \"grouping\",\n \"groups\",\n \"having\",\n \"hold\",\n \"hour\",\n \"identity\",\n \"in\",\n \"indicator\",\n \"initial\",\n \"inner\",\n \"inout\",\n \"insensitive\",\n \"insert\",\n \"int\",\n \"integer\",\n \"intersect\",\n \"intersection\",\n \"interval\",\n \"into\",\n \"is\",\n \"join\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"language\",\n \"large\",\n \"last_value\",\n \"lateral\",\n \"lead\",\n \"leading\",\n \"left\",\n \"like\",\n \"like_regex\",\n \"listagg\",\n \"ln\",\n \"local\",\n \"localtime\",\n \"localtimestamp\",\n \"log\",\n \"log10\",\n \"lower\",\n \"match\",\n \"match_number\",\n \"match_recognize\",\n \"matches\",\n \"max\",\n \"member\",\n \"merge\",\n \"method\",\n \"min\",\n \"minute\",\n \"mod\",\n \"modifies\",\n \"module\",\n \"month\",\n \"multiset\",\n \"national\",\n \"natural\",\n \"nchar\",\n \"nclob\",\n \"new\",\n \"no\",\n \"none\",\n \"normalize\",\n \"not\",\n \"nth_value\",\n \"ntile\",\n \"null\",\n \"nullif\",\n \"numeric\",\n \"octet_length\",\n \"occurrences_regex\",\n \"of\",\n \"offset\",\n \"old\",\n \"omit\",\n \"on\",\n \"one\",\n \"only\",\n \"open\",\n \"or\",\n \"order\",\n \"out\",\n \"outer\",\n \"over\",\n \"overlaps\",\n \"overlay\",\n \"parameter\",\n \"partition\",\n \"pattern\",\n \"per\",\n \"percent\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"period\",\n \"portion\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"precedes\",\n \"precision\",\n \"prepare\",\n \"primary\",\n \"procedure\",\n \"ptf\",\n \"range\",\n \"rank\",\n \"reads\",\n \"real\",\n \"recursive\",\n \"ref\",\n \"references\",\n \"referencing\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"release\",\n \"result\",\n \"return\",\n \"returns\",\n \"revoke\",\n \"right\",\n \"rollback\",\n \"rollup\",\n \"row\",\n \"row_number\",\n \"rows\",\n \"running\",\n \"savepoint\",\n \"scope\",\n \"scroll\",\n \"search\",\n \"second\",\n \"seek\",\n \"select\",\n \"sensitive\",\n \"session_user\",\n \"set\",\n \"show\",\n \"similar\",\n \"sin\",\n \"sinh\",\n \"skip\",\n \"smallint\",\n \"some\",\n \"specific\",\n \"specifictype\",\n \"sql\",\n \"sqlexception\",\n \"sqlstate\",\n \"sqlwarning\",\n \"sqrt\",\n \"start\",\n \"static\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"submultiset\",\n \"subset\",\n \"substring\",\n \"substring_regex\",\n \"succeeds\",\n \"sum\",\n \"symmetric\",\n \"system\",\n \"system_time\",\n \"system_user\",\n \"table\",\n \"tablesample\",\n \"tan\",\n \"tanh\",\n \"then\",\n \"time\",\n \"timestamp\",\n \"timezone_hour\",\n \"timezone_minute\",\n \"to\",\n \"trailing\",\n \"translate\",\n \"translate_regex\",\n \"translation\",\n \"treat\",\n \"trigger\",\n \"trim\",\n \"trim_array\",\n \"true\",\n \"truncate\",\n \"uescape\",\n \"union\",\n \"unique\",\n \"unknown\",\n \"unnest\",\n \"update\",\n \"upper\",\n \"user\",\n \"using\",\n \"value\",\n \"values\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"varbinary\",\n \"varchar\",\n \"varying\",\n \"versioning\",\n \"when\",\n \"whenever\",\n \"where\",\n \"width_bucket\",\n \"window\",\n \"with\",\n \"within\",\n \"without\",\n \"year\",\n ];\n\n // these are reserved words we have identified to be functions\n // and should only be highlighted in a dispatch-like context\n // ie, array_agg(...), etc.\n const RESERVED_FUNCTIONS = [\n \"abs\",\n \"acos\",\n \"array_agg\",\n \"asin\",\n \"atan\",\n \"avg\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"coalesce\",\n \"corr\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"cume_dist\",\n \"dense_rank\",\n \"deref\",\n \"element\",\n \"exp\",\n \"extract\",\n \"first_value\",\n \"floor\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"last_value\",\n \"lead\",\n \"listagg\",\n \"ln\",\n \"log\",\n \"log10\",\n \"lower\",\n \"max\",\n \"min\",\n \"mod\",\n \"nth_value\",\n \"ntile\",\n \"nullif\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"rank\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"row_number\",\n \"sin\",\n \"sinh\",\n \"sqrt\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"substring\",\n \"substring_regex\",\n \"sum\",\n \"tan\",\n \"tanh\",\n \"translate\",\n \"translate_regex\",\n \"treat\",\n \"trim\",\n \"trim_array\",\n \"unnest\",\n \"upper\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"width_bucket\",\n ];\n\n // these functions can\n const POSSIBLE_WITHOUT_PARENS = [\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_schema\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"session_user\",\n \"system_time\",\n \"system_user\",\n \"current_time\",\n \"localtime\",\n \"current_timestamp\",\n \"localtimestamp\"\n ];\n\n // those exist to boost relevance making these very\n // \"SQL like\" keyword combos worth +1 extra relevance\n const COMBOS = [\n \"create table\",\n \"insert into\",\n \"primary key\",\n \"foreign key\",\n \"not null\",\n \"alter table\",\n \"add constraint\",\n \"grouping sets\",\n \"on overflow\",\n \"character set\",\n \"respect nulls\",\n \"ignore nulls\",\n \"nulls first\",\n \"nulls last\",\n \"depth first\",\n \"breadth first\"\n ];\n\n const FUNCTIONS = RESERVED_FUNCTIONS;\n\n const KEYWORDS = [\n ...RESERVED_WORDS,\n ...NON_RESERVED_WORDS\n ].filter((keyword) => {\n return !RESERVED_FUNCTIONS.includes(keyword);\n });\n\n const VARIABLE = {\n scope: \"variable\",\n match: /@[a-z0-9][a-z0-9_]*/,\n };\n\n const OPERATOR = {\n scope: \"operator\",\n match: /[-+*/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,\n relevance: 0,\n };\n\n const FUNCTION_CALL = {\n match: regex.concat(/\\b/, regex.either(...FUNCTIONS), /\\s*\\(/),\n relevance: 0,\n keywords: { built_in: FUNCTIONS }\n };\n\n // turns a multi-word keyword combo into a regex that doesn't\n // care about extra whitespace etc.\n // input: \"START QUERY\"\n // output: /\\bSTART\\s+QUERY\\b/\n function kws_to_regex(list) {\n return regex.concat(\n /\\b/,\n regex.either(...list.map((kw) => {\n return kw.replace(/\\s+/, \"\\\\s+\")\n })),\n /\\b/\n )\n }\n\n const MULTI_WORD_KEYWORDS = {\n scope: \"keyword\",\n match: kws_to_regex(COMBOS),\n relevance: 0,\n };\n\n // keywords with less than 3 letters are reduced in relevancy\n function reduceRelevancy(list, {\n exceptions, when\n } = {}) {\n const qualifyFn = when;\n exceptions = exceptions || [];\n return list.map((item) => {\n if (item.match(/\\|\\d+$/) || exceptions.includes(item)) {\n return item;\n } else if (qualifyFn(item)) {\n return `${item}|0`;\n } else {\n return item;\n }\n });\n }\n\n return {\n name: 'SQL',\n case_insensitive: true,\n // does not include {} or HTML tags `</`\n illegal: /[{}]|<\\//,\n keywords: {\n $pattern: /\\b[\\w\\.]+/,\n keyword:\n reduceRelevancy(KEYWORDS, { when: (x) => x.length < 3 }),\n literal: LITERALS,\n type: TYPES,\n built_in: POSSIBLE_WITHOUT_PARENS\n },\n contains: [\n {\n scope: \"type\",\n match: kws_to_regex(MULTI_WORD_TYPES)\n },\n MULTI_WORD_KEYWORDS,\n FUNCTION_CALL,\n VARIABLE,\n STRING,\n QUOTED_IDENTIFIER,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n OPERATOR\n ]\n };\n}\n\nexport { sql as default };\n","/*\nLanguage: YAML\nDescription: Yet Another Markdown Language\nAuthor: Stefan Wienert <stwienert@gmail.com>\nContributors: Carl Baxter <carl@cbax.tech>\nRequires: ruby.js\nWebsite: https://yaml.org\nCategory: common, config\n*/\nfunction yaml(hljs) {\n const LITERALS = 'true false yes no null';\n\n // YAML spec allows non-reserved URI characters in tags.\n const URI_CHARACTERS = '[\\\\w#;/?:@&=+$,.~*\\'()[\\\\]]+';\n\n // Define keys as starting with a word character\n // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods\n // ...and ending with a colon followed immediately by a space, tab or newline.\n // The YAML spec allows for much more than this, but this covers most use-cases.\n const KEY = {\n className: 'attr',\n variants: [\n // added brackets support and special char support\n { begin: /[\\w*@][\\w*@ :()\\./-]*:(?=[ \\t]|$)/ },\n { // double quoted keys - with brackets and special char support\n begin: /\"[\\w*@][\\w*@ :()\\./-]*\":(?=[ \\t]|$)/ },\n { // single quoted keys - with brackets and special char support\n begin: /'[\\w*@][\\w*@ :()\\./-]*':(?=[ \\t]|$)/ },\n ]\n };\n \n const TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { // jinja templates Ansible\n begin: /\\{\\{/,\n end: /\\}\\}/\n },\n { // Ruby i18n\n begin: /%\\{/,\n end: /\\}/\n }\n ]\n };\n\n const SINGLE_QUOTE_STRING = {\n className: 'string',\n relevance: 0,\n begin: /'/,\n end: /'/,\n contains: [\n {\n match: /''/,\n scope: 'char.escape',\n relevance: 0\n }\n ]\n };\n\n const STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n {\n begin: /\"/,\n end: /\"/\n },\n { begin: /\\S+/ }\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n // Strings inside of value containers (objects) can't contain braces,\n // brackets, or commas\n const CONTAINER_STRING = hljs.inherit(STRING, { variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [\n {\n begin: /''/,\n relevance: 0\n }\n ]\n },\n {\n begin: /\"/,\n end: /\"/\n },\n { begin: /[^\\s,{}[\\]]+/ }\n ] });\n\n const DATE_RE = '[0-9]{4}(-[0-9][0-9]){0,2}';\n const TIME_RE = '([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?';\n const FRACTION_RE = '(\\\\.[0-9]*)?';\n const ZONE_RE = '([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?';\n const TIMESTAMP = {\n className: 'number',\n begin: '\\\\b' + DATE_RE + TIME_RE + FRACTION_RE + ZONE_RE + '\\\\b'\n };\n\n const VALUE_CONTAINER = {\n end: ',',\n endsWithParent: true,\n excludeEnd: true,\n keywords: LITERALS,\n relevance: 0\n };\n const OBJECT = {\n begin: /\\{/,\n end: /\\}/,\n contains: [ VALUE_CONTAINER ],\n illegal: '\\\\n',\n relevance: 0\n };\n const ARRAY = {\n begin: '\\\\[',\n end: '\\\\]',\n contains: [ VALUE_CONTAINER ],\n illegal: '\\\\n',\n relevance: 0\n };\n\n const MODES = [\n KEY,\n {\n className: 'meta',\n begin: '^---\\\\s*$',\n relevance: 10\n },\n { // multi line string\n // Blocks start with a | or > followed by a newline\n //\n // Indentation of subsequent lines must be the same to\n // be considered part of the block\n className: 'string',\n begin: '[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*'\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?',\n end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // named tags\n className: 'type',\n begin: '!\\\\w+!' + URI_CHARACTERS\n },\n // https://yaml.org/spec/1.2/spec.html#id2784064\n { // verbatim tags\n className: 'type',\n begin: '!<' + URI_CHARACTERS + \">\"\n },\n { // primary tags\n className: 'type',\n begin: '!' + URI_CHARACTERS\n },\n { // secondary tags\n className: 'type',\n begin: '!!' + URI_CHARACTERS\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n // TODO: remove |$ hack when we have proper look-ahead support\n begin: '-(?=[ ]|$)',\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: { literal: LITERALS }\n },\n TIMESTAMP,\n // numbers are any valid C-style number that\n // sit isolated from other words\n {\n className: 'number',\n begin: hljs.C_NUMBER_RE + '\\\\b',\n relevance: 0\n },\n OBJECT,\n ARRAY,\n SINGLE_QUOTE_STRING,\n STRING\n ];\n\n const VALUE_MODES = [ ...MODES ];\n VALUE_MODES.pop();\n VALUE_MODES.push(CONTAINER_STRING);\n VALUE_CONTAINER.contains = VALUE_MODES;\n\n return {\n name: 'YAML',\n case_insensitive: true,\n aliases: [ 'yml' ],\n contains: MODES\n };\n}\n\nexport { yaml as default };\n","/*\nLanguage: Rust\nAuthor: Andrey Vlasovskikh <andrey.vlasovskikh@gmail.com>\nContributors: Roman Shmatov <romanshmatov@gmail.com>, Kasper Andersen <kma_untrusted@protonmail.com>\nWebsite: https://www.rust-lang.org\nCategory: common, system\n*/\n\n/** @type LanguageFn */\n\nfunction rust(hljs) {\n const regex = hljs.regex;\n // ============================================\n // Added to support the r# keyword, which is a raw identifier in Rust.\n const RAW_IDENTIFIER = /(r#)?/;\n const UNDERSCORE_IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.UNDERSCORE_IDENT_RE);\n const IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.IDENT_RE);\n // ============================================\n const FUNCTION_INVOKE = {\n className: \"title.function.invoke\",\n relevance: 0,\n begin: regex.concat(\n /\\b/,\n /(?!let|for|while|if|else|match\\b)/,\n IDENT_RE,\n regex.lookahead(/\\s*\\(/))\n };\n const NUMBER_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\\?';\n const KEYWORDS = [\n \"abstract\",\n \"as\",\n \"async\",\n \"await\",\n \"become\",\n \"box\",\n \"break\",\n \"const\",\n \"continue\",\n \"crate\",\n \"do\",\n \"dyn\",\n \"else\",\n \"enum\",\n \"extern\",\n \"false\",\n \"final\",\n \"fn\",\n \"for\",\n \"if\",\n \"impl\",\n \"in\",\n \"let\",\n \"loop\",\n \"macro\",\n \"match\",\n \"mod\",\n \"move\",\n \"mut\",\n \"override\",\n \"priv\",\n \"pub\",\n \"ref\",\n \"return\",\n \"self\",\n \"Self\",\n \"static\",\n \"struct\",\n \"super\",\n \"trait\",\n \"true\",\n \"try\",\n \"type\",\n \"typeof\",\n \"union\",\n \"unsafe\",\n \"unsized\",\n \"use\",\n \"virtual\",\n \"where\",\n \"while\",\n \"yield\"\n ];\n const LITERALS = [\n \"true\",\n \"false\",\n \"Some\",\n \"None\",\n \"Ok\",\n \"Err\"\n ];\n const BUILTINS = [\n // functions\n 'drop ',\n // traits\n \"Copy\",\n \"Send\",\n \"Sized\",\n \"Sync\",\n \"Drop\",\n \"Fn\",\n \"FnMut\",\n \"FnOnce\",\n \"ToOwned\",\n \"Clone\",\n \"Debug\",\n \"PartialEq\",\n \"PartialOrd\",\n \"Eq\",\n \"Ord\",\n \"AsRef\",\n \"AsMut\",\n \"Into\",\n \"From\",\n \"Default\",\n \"Iterator\",\n \"Extend\",\n \"IntoIterator\",\n \"DoubleEndedIterator\",\n \"ExactSizeIterator\",\n \"SliceConcatExt\",\n \"ToString\",\n // macros\n \"assert!\",\n \"assert_eq!\",\n \"bitflags!\",\n \"bytes!\",\n \"cfg!\",\n \"col!\",\n \"concat!\",\n \"concat_idents!\",\n \"debug_assert!\",\n \"debug_assert_eq!\",\n \"env!\",\n \"eprintln!\",\n \"panic!\",\n \"file!\",\n \"format!\",\n \"format_args!\",\n \"include_bytes!\",\n \"include_str!\",\n \"line!\",\n \"local_data_key!\",\n \"module_path!\",\n \"option_env!\",\n \"print!\",\n \"println!\",\n \"select!\",\n \"stringify!\",\n \"try!\",\n \"unimplemented!\",\n \"unreachable!\",\n \"vec!\",\n \"write!\",\n \"writeln!\",\n \"macro_rules!\",\n \"assert_ne!\",\n \"debug_assert_ne!\"\n ];\n const TYPES = [\n \"i8\",\n \"i16\",\n \"i32\",\n \"i64\",\n \"i128\",\n \"isize\",\n \"u8\",\n \"u16\",\n \"u32\",\n \"u64\",\n \"u128\",\n \"usize\",\n \"f32\",\n \"f64\",\n \"str\",\n \"char\",\n \"bool\",\n \"Box\",\n \"Option\",\n \"Result\",\n \"String\",\n \"Vec\"\n ];\n return {\n name: 'Rust',\n aliases: [ 'rs' ],\n keywords: {\n $pattern: hljs.IDENT_RE + '!?',\n type: TYPES,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILTINS\n },\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', { contains: [ 'self' ] }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n begin: /b?\"/,\n illegal: null\n }),\n {\n className: 'symbol',\n // negative lookahead to avoid matching `'`\n begin: /'[a-zA-Z_][a-zA-Z0-9_]*(?!')/\n },\n {\n scope: 'string',\n variants: [\n { begin: /b?r(#*)\"(.|\\n)*?\"\\1(?!#)/ },\n {\n begin: /b?'/,\n end: /'/,\n contains: [\n {\n scope: \"char.escape\",\n match: /\\\\('|\\w|x\\w{2}|u\\w{4}|U\\w{8})/\n }\n ]\n }\n ]\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]+)' + NUMBER_SUFFIX },\n { begin: '\\\\b0o([0-7_]+)' + NUMBER_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUMBER_SUFFIX },\n { begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)'\n + NUMBER_SUFFIX }\n ],\n relevance: 0\n },\n {\n begin: [\n /fn/,\n /\\s+/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n }\n },\n {\n className: 'meta',\n begin: '#!?\\\\[',\n end: '\\\\]',\n contains: [\n {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n }\n ]\n },\n {\n begin: [\n /let/,\n /\\s+/,\n /(?:mut\\s+)?/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"keyword\",\n 4: \"variable\"\n }\n },\n // must come before impl/for rule later\n {\n begin: [\n /for/,\n /\\s+/,\n UNDERSCORE_IDENT_RE,\n /\\s+/,\n /in/\n ],\n className: {\n 1: \"keyword\",\n 3: \"variable\",\n 5: \"keyword\"\n }\n },\n {\n begin: [\n /type/,\n /\\s+/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n begin: [\n /(?:trait|enum|struct|union|impl|for)/,\n /\\s+/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: {\n keyword: \"Self\",\n built_in: BUILTINS,\n type: TYPES\n }\n },\n {\n className: \"punctuation\",\n begin: '->'\n },\n FUNCTION_INVOKE\n ]\n };\n}\n\nexport { rust as default };\n","/*\nLanguage: Go\nAuthor: Stephan Kountso aka StepLg <steplg@gmail.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>\nDescription: Google go language (golang). For info about language\nWebsite: http://golang.org/\nCategory: common, system\n*/\n\nfunction go(hljs) {\n const LITERALS = [\n \"true\",\n \"false\",\n \"iota\",\n \"nil\"\n ];\n const BUILT_INS = [\n \"append\",\n \"cap\",\n \"close\",\n \"complex\",\n \"copy\",\n \"imag\",\n \"len\",\n \"make\",\n \"new\",\n \"panic\",\n \"print\",\n \"println\",\n \"real\",\n \"recover\",\n \"delete\"\n ];\n const TYPES = [\n \"bool\",\n \"byte\",\n \"complex64\",\n \"complex128\",\n \"error\",\n \"float32\",\n \"float64\",\n \"int8\",\n \"int16\",\n \"int32\",\n \"int64\",\n \"string\",\n \"uint8\",\n \"uint16\",\n \"uint32\",\n \"uint64\",\n \"int\",\n \"uint\",\n \"uintptr\",\n \"rune\"\n ];\n const KWS = [\n \"break\",\n \"case\",\n \"chan\",\n \"const\",\n \"continue\",\n \"default\",\n \"defer\",\n \"else\",\n \"fallthrough\",\n \"for\",\n \"func\",\n \"go\",\n \"goto\",\n \"if\",\n \"import\",\n \"interface\",\n \"map\",\n \"package\",\n \"range\",\n \"return\",\n \"select\",\n \"struct\",\n \"switch\",\n \"type\",\n \"var\",\n ];\n const KEYWORDS = {\n keyword: KWS,\n type: TYPES,\n literal: LITERALS,\n built_in: BUILT_INS\n };\n return {\n name: 'Go',\n aliases: [ 'golang' ],\n keywords: KEYWORDS,\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n variants: [\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n begin: '`',\n end: '`'\n }\n ]\n },\n {\n className: 'number',\n variants: [\n {\n match: /-?\\b0[xX]\\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\\d(_?\\d)*i?/, // hex without a present digit before . (making a digit afterwards required)\n relevance: 0\n },\n {\n match: /-?\\b0[xX](_?[a-fA-F0-9])+((\\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\\d(_?\\d)*)?i?/, // hex with a present digit before . (making a digit afterwards optional)\n relevance: 0\n },\n {\n match: /-?\\b0[oO](_?[0-7])*i?/, // leading 0o octal\n relevance: 0\n },\n {\n match: /-?\\.\\d(_?\\d)*([eE][+-]?\\d(_?\\d)*)?i?/, // decimal without a present digit before . (making a digit afterwards required)\n relevance: 0\n },\n {\n match: /-?\\b\\d(_?\\d)*(\\.(\\d(_?\\d)*)?)?([eE][+-]?\\d(_?\\d)*)?i?/, // decimal with a present digit before . (making a digit afterwards optional)\n relevance: 0\n }\n ]\n },\n { begin: /:=/ // relevance booster\n },\n {\n className: 'function',\n beginKeywords: 'func',\n end: '\\\\s*(\\\\{|$)',\n excludeEnd: true,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n illegal: /[\"']/\n }\n ]\n }\n ]\n };\n}\n\nexport { go as default };\n","// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = '[0-9](_*[0-9])*';\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';\nvar NUMERIC = {\n className: 'number',\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n { begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n // excluding ExponentPart\n { begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)` },\n { begin: `(${frac})[fFdD]?\\\\b` },\n { begin: `\\\\b(${decimalDigits})[fFdD]\\\\b` },\n\n // HexadecimalFloatingPointLiteral\n { begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` +\n `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n\n // DecimalIntegerLiteral\n { begin: '\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b' },\n\n // HexIntegerLiteral\n { begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b` },\n\n // OctalIntegerLiteral\n { begin: '\\\\b0(_*[0-7])*[lL]?\\\\b' },\n\n // BinaryIntegerLiteral\n { begin: '\\\\b0[bB][01](_*[01])*[lL]?\\\\b' },\n ],\n relevance: 0\n};\n\n/*\nLanguage: Java\nAuthor: Vsevolod Solovyov <vsevolod.solovyov@gmail.com>\nCategory: common, enterprise\nWebsite: https://www.java.com/\n*/\n\n\n/**\n * Allows recursive regex expressions to a given depth\n *\n * ie: recurRegex(\"(abc~~~)\", /~~~/g, 2) becomes:\n * (abc(abc(abc)))\n *\n * @param {string} re\n * @param {RegExp} substitution (should be a g mode regex)\n * @param {number} depth\n * @returns {string}``\n */\nfunction recurRegex(re, substitution, depth) {\n if (depth === -1) return \"\";\n\n return re.replace(substitution, _ => {\n return recurRegex(re, substitution, depth - 1);\n });\n}\n\n/** @type LanguageFn */\nfunction java(hljs) {\n const regex = hljs.regex;\n const JAVA_IDENT_RE = '[\\u00C0-\\u02B8a-zA-Z_$][\\u00C0-\\u02B8a-zA-Z_$0-9]*';\n const GENERIC_IDENT_RE = JAVA_IDENT_RE\n + recurRegex('(?:<' + JAVA_IDENT_RE + '~~~(?:\\\\s*,\\\\s*' + JAVA_IDENT_RE + '~~~)*>)?', /~~~/g, 2);\n const MAIN_KEYWORDS = [\n 'synchronized',\n 'abstract',\n 'private',\n 'var',\n 'static',\n 'if',\n 'const ',\n 'for',\n 'while',\n 'strictfp',\n 'finally',\n 'protected',\n 'import',\n 'native',\n 'final',\n 'void',\n 'enum',\n 'else',\n 'break',\n 'transient',\n 'catch',\n 'instanceof',\n 'volatile',\n 'case',\n 'assert',\n 'package',\n 'default',\n 'public',\n 'try',\n 'switch',\n 'continue',\n 'throws',\n 'protected',\n 'public',\n 'private',\n 'module',\n 'requires',\n 'exports',\n 'do',\n 'sealed',\n 'yield',\n 'permits',\n 'goto',\n 'when'\n ];\n\n const BUILT_INS = [\n 'super',\n 'this'\n ];\n\n const LITERALS = [\n 'false',\n 'true',\n 'null'\n ];\n\n const TYPES = [\n 'char',\n 'boolean',\n 'long',\n 'float',\n 'int',\n 'byte',\n 'short',\n 'double'\n ];\n\n const KEYWORDS = {\n keyword: MAIN_KEYWORDS,\n literal: LITERALS,\n type: TYPES,\n built_in: BUILT_INS\n };\n\n const ANNOTATION = {\n className: 'meta',\n begin: '@' + JAVA_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [ \"self\" ] // allow nested () inside our annotation\n }\n ]\n };\n const PARAMS = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [ hljs.C_BLOCK_COMMENT_MODE ],\n endsParent: true\n };\n\n return {\n name: 'Java',\n aliases: [ 'jsp' ],\n keywords: KEYWORDS,\n illegal: /<\\/|#/,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/,\n relevance: 0\n },\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n // relevance boost\n {\n begin: /import java\\.[a-z]+\\./,\n keywords: \"import\",\n relevance: 2\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n begin: /\"\"\"/,\n end: /\"\"\"/,\n className: \"string\",\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n match: [\n /\\b(?:class|interface|enum|extends|implements|new)/,\n /\\s+/,\n JAVA_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n // Exceptions for hyphenated keywords\n match: /non-sealed/,\n scope: \"keyword\"\n },\n {\n begin: [\n regex.concat(/(?!else)/, JAVA_IDENT_RE),\n /\\s+/,\n JAVA_IDENT_RE,\n /\\s+/,\n /=(?!=)/\n ],\n className: {\n 1: \"type\",\n 3: \"variable\",\n 5: \"operator\"\n }\n },\n {\n begin: [\n /record/,\n /\\s+/,\n JAVA_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n },\n contains: [\n PARAMS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new throw return else',\n relevance: 0\n },\n {\n begin: [\n '(?:' + GENERIC_IDENT_RE + '\\\\s+)',\n hljs.UNDERSCORE_IDENT_RE,\n /\\s*(?=\\()/\n ],\n className: { 2: \"title.function\" },\n keywords: KEYWORDS,\n contains: [\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n ANNOTATION,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMERIC,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n NUMERIC,\n ANNOTATION\n ]\n };\n}\n\nexport { java as default };\n","/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/\n\n/** @type LanguageFn */\nfunction cpp(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '(?!struct)('\n + DECLTYPE_AUTO_RE + '|'\n + regex.optional(NAMESPACE_RE)\n + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n + ')';\n\n const CPP_PRIMITIVE_TYPES = {\n className: 'type',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + '|.)',\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n // Floating-point literal.\n { begin:\n \"[+-]?(?:\" // Leading sign.\n // Decimal.\n + \"(?:\"\n +\"[0-9](?:'?[0-9])*\\\\.(?:[0-9](?:'?[0-9])*)?\"\n + \"|\\\\.[0-9](?:'?[0-9])*\"\n + \")(?:[Ee][+-]?[0-9](?:'?[0-9])*)?\"\n + \"|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*\"\n // Hexadecimal.\n + \"|0[Xx](?:\"\n +\"[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?\"\n + \"|\\\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*\"\n + \")[Pp][+-]?[0-9](?:'?[0-9])*\"\n + \")(?:\" // Literal suffixes.\n + \"[Ff](?:16|32|64|128)?\"\n + \"|(BF|bf)16\"\n + \"|[Ll]\"\n + \"|\" // Literal suffix is optional.\n + \")\"\n },\n // Integer literal.\n { begin:\n \"[+-]?\\\\b(?:\" // Leading sign.\n + \"0[Bb][01](?:'?[01])*\" // Binary.\n + \"|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*\" // Hexadecimal.\n + \"|0(?:'?[0-7])*\" // Octal or just a lone zero.\n + \"|[1-9](?:'?[0-9])*\" // Decimal.\n + \")(?:\" // Literal suffixes.\n + \"[Uu](?:LL?|ll?)\"\n + \"|[Uu][Zz]?\"\n + \"|(?:LL?|ll?)[Uu]?\"\n + \"|[Zz][Uu]\"\n + \"|\" // Literal suffix is optional.\n + \")\"\n // Note: there are user-defined literal suffixes too, but perhaps having the custom suffix not part of the\n // literal highlight actually makes it stand out more.\n }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma _Pragma ifdef ifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_KEYWORDS = [\n 'alignas',\n 'alignof',\n 'and',\n 'and_eq',\n 'asm',\n 'atomic_cancel',\n 'atomic_commit',\n 'atomic_noexcept',\n 'auto',\n 'bitand',\n 'bitor',\n 'break',\n 'case',\n 'catch',\n 'class',\n 'co_await',\n 'co_return',\n 'co_yield',\n 'compl',\n 'concept',\n 'const_cast|10',\n 'consteval',\n 'constexpr',\n 'constinit',\n 'continue',\n 'decltype',\n 'default',\n 'delete',\n 'do',\n 'dynamic_cast|10',\n 'else',\n 'enum',\n 'explicit',\n 'export',\n 'extern',\n 'false',\n 'final',\n 'for',\n 'friend',\n 'goto',\n 'if',\n 'import',\n 'inline',\n 'module',\n 'mutable',\n 'namespace',\n 'new',\n 'noexcept',\n 'not',\n 'not_eq',\n 'nullptr',\n 'operator',\n 'or',\n 'or_eq',\n 'override',\n 'private',\n 'protected',\n 'public',\n 'reflexpr',\n 'register',\n 'reinterpret_cast|10',\n 'requires',\n 'return',\n 'sizeof',\n 'static_assert',\n 'static_cast|10',\n 'struct',\n 'switch',\n 'synchronized',\n 'template',\n 'this',\n 'thread_local',\n 'throw',\n 'transaction_safe',\n 'transaction_safe_dynamic',\n 'true',\n 'try',\n 'typedef',\n 'typeid',\n 'typename',\n 'union',\n 'using',\n 'virtual',\n 'volatile',\n 'while',\n 'xor',\n 'xor_eq'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_TYPES = [\n 'bool',\n 'char',\n 'char16_t',\n 'char32_t',\n 'char8_t',\n 'double',\n 'float',\n 'int',\n 'long',\n 'short',\n 'void',\n 'wchar_t',\n 'unsigned',\n 'signed',\n 'const',\n 'static'\n ];\n\n const TYPE_HINTS = [\n 'any',\n 'auto_ptr',\n 'barrier',\n 'binary_semaphore',\n 'bitset',\n 'complex',\n 'condition_variable',\n 'condition_variable_any',\n 'counting_semaphore',\n 'deque',\n 'false_type',\n 'flat_map',\n 'flat_set',\n 'future',\n 'imaginary',\n 'initializer_list',\n 'istringstream',\n 'jthread',\n 'latch',\n 'lock_guard',\n 'multimap',\n 'multiset',\n 'mutex',\n 'optional',\n 'ostringstream',\n 'packaged_task',\n 'pair',\n 'promise',\n 'priority_queue',\n 'queue',\n 'recursive_mutex',\n 'recursive_timed_mutex',\n 'scoped_lock',\n 'set',\n 'shared_future',\n 'shared_lock',\n 'shared_mutex',\n 'shared_timed_mutex',\n 'shared_ptr',\n 'stack',\n 'string_view',\n 'stringstream',\n 'timed_mutex',\n 'thread',\n 'true_type',\n 'tuple',\n 'unique_lock',\n 'unique_ptr',\n 'unordered_map',\n 'unordered_multimap',\n 'unordered_multiset',\n 'unordered_set',\n 'variant',\n 'vector',\n 'weak_ptr',\n 'wstring',\n 'wstring_view'\n ];\n\n const FUNCTION_HINTS = [\n 'abort',\n 'abs',\n 'acos',\n 'apply',\n 'as_const',\n 'asin',\n 'atan',\n 'atan2',\n 'calloc',\n 'ceil',\n 'cerr',\n 'cin',\n 'clog',\n 'cos',\n 'cosh',\n 'cout',\n 'declval',\n 'endl',\n 'exchange',\n 'exit',\n 'exp',\n 'fabs',\n 'floor',\n 'fmod',\n 'forward',\n 'fprintf',\n 'fputs',\n 'free',\n 'frexp',\n 'fscanf',\n 'future',\n 'invoke',\n 'isalnum',\n 'isalpha',\n 'iscntrl',\n 'isdigit',\n 'isgraph',\n 'islower',\n 'isprint',\n 'ispunct',\n 'isspace',\n 'isupper',\n 'isxdigit',\n 'labs',\n 'launder',\n 'ldexp',\n 'log',\n 'log10',\n 'make_pair',\n 'make_shared',\n 'make_shared_for_overwrite',\n 'make_tuple',\n 'make_unique',\n 'malloc',\n 'memchr',\n 'memcmp',\n 'memcpy',\n 'memset',\n 'modf',\n 'move',\n 'pow',\n 'printf',\n 'putchar',\n 'puts',\n 'realloc',\n 'scanf',\n 'sin',\n 'sinh',\n 'snprintf',\n 'sprintf',\n 'sqrt',\n 'sscanf',\n 'std',\n 'stderr',\n 'stdin',\n 'stdout',\n 'strcat',\n 'strchr',\n 'strcmp',\n 'strcpy',\n 'strcspn',\n 'strlen',\n 'strncat',\n 'strncmp',\n 'strncpy',\n 'strpbrk',\n 'strrchr',\n 'strspn',\n 'strstr',\n 'swap',\n 'tan',\n 'tanh',\n 'terminate',\n 'to_underlying',\n 'tolower',\n 'toupper',\n 'vfprintf',\n 'visit',\n 'vprintf',\n 'vsprintf'\n ];\n\n const LITERALS = [\n 'NULL',\n 'false',\n 'nullopt',\n 'nullptr',\n 'true'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const BUILT_IN = [ '_Pragma' ];\n\n const CPP_KEYWORDS = {\n type: RESERVED_TYPES,\n keyword: RESERVED_KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_IN,\n _type_hints: TYPE_HINTS\n };\n\n const FUNCTION_DISPATCH = {\n className: 'function.dispatch',\n relevance: 0,\n keywords: {\n // Only for relevance, not highlighting.\n _hint: FUNCTION_HINTS },\n begin: regex.concat(\n /\\b/,\n /(?!decltype)/,\n /(?!if)/,\n /(?!for)/,\n /(?!switch)/,\n /(?!while)/,\n hljs.IDENT_RE,\n regex.lookahead(/(<[^<>]+>|)\\s*\\(/))\n };\n\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n className: 'function',\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ TITLE_MODE ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: 'C++',\n aliases: [\n 'cc',\n 'c++',\n 'h++',\n 'hpp',\n 'hh',\n 'hxx',\n 'cxx'\n ],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n classNameAliases: { 'function.dispatch': 'built_in' },\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n FUNCTION_DISPATCH,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n { // containers: ie, `vector <int> rooms (9);`\n begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\\\s*<(?!<)',\n end: '>',\n keywords: CPP_KEYWORDS,\n contains: [\n 'self',\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n match: [\n // extra complexity to deal with `enum class` and `enum struct`\n /\\b(?:enum(?:\\s+(?:class|struct))?|class|struct|union)/,\n /\\s+/,\n /\\w+/\n ],\n className: {\n 1: 'keyword',\n 3: 'title.class'\n }\n }\n ])\n };\n}\n\nexport { cpp as default };\n","/*\nLanguage: C#\nAuthor: Jason Diamond <jason@diamond.name>\nContributor: Nicolas LLOBERA <nllobera@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, David Pine <david.pine@microsoft.com>\nWebsite: https://docs.microsoft.com/dotnet/csharp/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction csharp(hljs) {\n const BUILT_IN_KEYWORDS = [\n 'bool',\n 'byte',\n 'char',\n 'decimal',\n 'delegate',\n 'double',\n 'dynamic',\n 'enum',\n 'float',\n 'int',\n 'long',\n 'nint',\n 'nuint',\n 'object',\n 'sbyte',\n 'short',\n 'string',\n 'ulong',\n 'uint',\n 'ushort'\n ];\n const FUNCTION_MODIFIERS = [\n 'public',\n 'private',\n 'protected',\n 'static',\n 'internal',\n 'protected',\n 'abstract',\n 'async',\n 'extern',\n 'override',\n 'unsafe',\n 'virtual',\n 'new',\n 'sealed',\n 'partial'\n ];\n const LITERAL_KEYWORDS = [\n 'default',\n 'false',\n 'null',\n 'true'\n ];\n const NORMAL_KEYWORDS = [\n 'abstract',\n 'as',\n 'base',\n 'break',\n 'case',\n 'catch',\n 'class',\n 'const',\n 'continue',\n 'do',\n 'else',\n 'event',\n 'explicit',\n 'extern',\n 'finally',\n 'fixed',\n 'for',\n 'foreach',\n 'goto',\n 'if',\n 'implicit',\n 'in',\n 'interface',\n 'internal',\n 'is',\n 'lock',\n 'namespace',\n 'new',\n 'operator',\n 'out',\n 'override',\n 'params',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'record',\n 'ref',\n 'return',\n 'scoped',\n 'sealed',\n 'sizeof',\n 'stackalloc',\n 'static',\n 'struct',\n 'switch',\n 'this',\n 'throw',\n 'try',\n 'typeof',\n 'unchecked',\n 'unsafe',\n 'using',\n 'virtual',\n 'void',\n 'volatile',\n 'while'\n ];\n const CONTEXTUAL_KEYWORDS = [\n 'add',\n 'alias',\n 'and',\n 'ascending',\n 'args',\n 'async',\n 'await',\n 'by',\n 'descending',\n 'dynamic',\n 'equals',\n 'file',\n 'from',\n 'get',\n 'global',\n 'group',\n 'init',\n 'into',\n 'join',\n 'let',\n 'nameof',\n 'not',\n 'notnull',\n 'on',\n 'or',\n 'orderby',\n 'partial',\n 'record',\n 'remove',\n 'required',\n 'scoped',\n 'select',\n 'set',\n 'unmanaged',\n 'value|0',\n 'var',\n 'when',\n 'where',\n 'with',\n 'yield'\n ];\n\n const KEYWORDS = {\n keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS),\n built_in: BUILT_IN_KEYWORDS,\n literal: LITERAL_KEYWORDS\n };\n const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, { begin: '[a-zA-Z](\\\\.?\\\\w)*' });\n const NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n const RAW_STRING = {\n className: 'string',\n begin: /\"\"\"(\"*)(?!\")(.|\\n)*?\"\"\"\\1/,\n relevance: 1\n };\n const VERBATIM_STRING = {\n className: 'string',\n begin: '@\"',\n end: '\"',\n contains: [ { begin: '\"\"' } ]\n };\n const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, { illegal: /\\n/ });\n const SUBST = {\n className: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS\n };\n const SUBST_NO_LF = hljs.inherit(SUBST, { illegal: /\\n/ });\n const INTERPOLATED_STRING = {\n className: 'string',\n begin: /\\$\"/,\n end: '\"',\n illegal: /\\n/,\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n hljs.BACKSLASH_ESCAPE,\n SUBST_NO_LF\n ]\n };\n const INTERPOLATED_VERBATIM_STRING = {\n className: 'string',\n begin: /\\$@\"/,\n end: '\"',\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n { begin: '\"\"' },\n SUBST\n ]\n };\n const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n illegal: /\\n/,\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n { begin: '\"\"' },\n SUBST_NO_LF\n ]\n });\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n SUBST_NO_LF.contains = [\n INTERPOLATED_VERBATIM_STRING_NO_LF,\n INTERPOLATED_STRING,\n VERBATIM_STRING_NO_LF,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, { illegal: /\\n/ })\n ];\n const STRING = { variants: [\n RAW_STRING,\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ] };\n\n const GENERIC_MODIFIER = {\n begin: \"<\",\n end: \">\",\n contains: [\n { beginKeywords: \"in out\" },\n TITLE_MODE\n ]\n };\n const TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\\\s*,\\\\s*' + hljs.IDENT_RE + ')*>)?(\\\\[\\\\])?';\n const AT_IDENTIFIER = {\n // prevents expressions like `@class` from incorrect flagging\n // `class` as a keyword\n begin: \"@\" + hljs.IDENT_RE,\n relevance: 0\n };\n\n return {\n name: 'C#',\n aliases: [\n 'cs',\n 'c#'\n ],\n keywords: KEYWORDS,\n illegal: /::/,\n contains: [\n hljs.COMMENT(\n '///',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n variants: [\n {\n begin: '///',\n relevance: 0\n },\n { begin: '<!--|-->' },\n {\n begin: '</?',\n end: '>'\n }\n ]\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: { keyword: 'if else elif endif define undef warning error line region endregion pragma checksum' }\n },\n STRING,\n NUMBERS,\n {\n beginKeywords: 'class interface',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:,]/,\n contains: [\n { beginKeywords: \"where class\" },\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'record',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // [Attributes(\"\")]\n className: 'meta',\n begin: '^\\\\s*\\\\[(?=[\\\\w])',\n excludeBegin: true,\n end: '\\\\]',\n excludeEnd: true,\n contains: [\n {\n className: 'string',\n begin: /\"/,\n end: /\"/\n }\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new return throw await else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*(<[^=]+>\\\\s*)?\\\\(',\n returnBegin: true,\n end: /\\s*[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n // prevents these from being highlighted `title`\n {\n beginKeywords: FUNCTION_MODIFIERS.join(\" \"),\n relevance: 0\n },\n {\n begin: hljs.IDENT_RE + '\\\\s*(<[^=]+>\\\\s*)?\\\\(',\n returnBegin: true,\n contains: [\n hljs.TITLE_MODE,\n GENERIC_MODIFIER\n ],\n relevance: 0\n },\n { match: /\\(\\)/ },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n AT_IDENTIFIER\n ]\n };\n}\n\nexport { csharp as default };\n","/*\nLanguage: PHP\nAuthor: Victor Karamzin <Victor.Karamzin@enterra-inc.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>, Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: https://www.php.net\nCategory: common\n*/\n\n/**\n * @param {HLJSApi} hljs\n * @returns {LanguageDetail}\n * */\nfunction php(hljs) {\n const regex = hljs.regex;\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n const NOT_PERL_ETC = /(?![A-Za-z0-9])(?![$])/;\n const IDENT_RE = regex.concat(\n /[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/,\n NOT_PERL_ETC);\n // Will not detect camelCase classes\n const PASCAL_CASE_CLASS_NAME_RE = regex.concat(\n /(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}/,\n NOT_PERL_ETC);\n const UPCASE_NAME_RE = regex.concat(\n /[A-Z]+/,\n NOT_PERL_ETC);\n const VARIABLE = {\n scope: 'variable',\n match: '\\\\$+' + IDENT_RE,\n };\n const PREPROCESSOR = {\n scope: \"meta\",\n variants: [\n { begin: /<\\?php/, relevance: 10 }, // boost for obvious PHP\n { begin: /<\\?=/ },\n // less relevant per PSR-1 which says not to use short-tags\n { begin: /<\\?/, relevance: 0.1 },\n { begin: /\\?>/ } // end php tag\n ]\n };\n const SUBST = {\n scope: 'subst',\n variants: [\n { begin: /\\$\\w+/ },\n {\n begin: /\\{\\$/,\n end: /\\}/\n }\n ]\n };\n const SINGLE_QUOTED = hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null, });\n const DOUBLE_QUOTED = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n });\n\n const HEREDOC = {\n begin: /<<<[ \\t]*(?:(\\w+)|\"(\\w+)\")\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1] || m[2]; },\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); },\n };\n\n const NOWDOC = hljs.END_SAME_AS_BEGIN({\n begin: /<<<[ \\t]*'(\\w+)'\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n });\n // list of valid whitespaces because non-breaking space might be part of a IDENT_RE\n const WHITESPACE = '[ \\t\\n]';\n const STRING = {\n scope: 'string',\n variants: [\n DOUBLE_QUOTED,\n SINGLE_QUOTED,\n HEREDOC,\n NOWDOC\n ]\n };\n const NUMBER = {\n scope: 'number',\n variants: [\n { begin: `\\\\b0[bB][01]+(?:_[01]+)*\\\\b` }, // Binary w/ underscore support\n { begin: `\\\\b0[oO][0-7]+(?:_[0-7]+)*\\\\b` }, // Octals w/ underscore support\n { begin: `\\\\b0[xX][\\\\da-fA-F]+(?:_[\\\\da-fA-F]+)*\\\\b` }, // Hex w/ underscore support\n // Decimals w/ underscore support, with optional fragments and scientific exponent (e) suffix.\n { begin: `(?:\\\\b\\\\d+(?:_\\\\d+)*(\\\\.(?:\\\\d+(?:_\\\\d+)*))?|\\\\B\\\\.\\\\d+)(?:[eE][+-]?\\\\d+)?` }\n ],\n relevance: 0\n };\n const LITERALS = [\n \"false\",\n \"null\",\n \"true\"\n ];\n const KWS = [\n // Magic constants:\n // <https://www.php.net/manual/en/language.constants.predefined.php>\n \"__CLASS__\",\n \"__DIR__\",\n \"__FILE__\",\n \"__FUNCTION__\",\n \"__COMPILER_HALT_OFFSET__\",\n \"__LINE__\",\n \"__METHOD__\",\n \"__NAMESPACE__\",\n \"__TRAIT__\",\n // Function that look like language construct or language construct that look like function:\n // List of keywords that may not require parenthesis\n \"die\",\n \"echo\",\n \"exit\",\n \"include\",\n \"include_once\",\n \"print\",\n \"require\",\n \"require_once\",\n // These are not language construct (function) but operate on the currently-executing function and can access the current symbol table\n // 'compact extract func_get_arg func_get_args func_num_args get_called_class get_parent_class ' +\n // Other keywords:\n // <https://www.php.net/manual/en/reserved.php>\n // <https://www.php.net/manual/en/language.types.type-juggling.php>\n \"array\",\n \"abstract\",\n \"and\",\n \"as\",\n \"binary\",\n \"bool\",\n \"boolean\",\n \"break\",\n \"callable\",\n \"case\",\n \"catch\",\n \"class\",\n \"clone\",\n \"const\",\n \"continue\",\n \"declare\",\n \"default\",\n \"do\",\n \"double\",\n \"else\",\n \"elseif\",\n \"empty\",\n \"enddeclare\",\n \"endfor\",\n \"endforeach\",\n \"endif\",\n \"endswitch\",\n \"endwhile\",\n \"enum\",\n \"eval\",\n \"extends\",\n \"final\",\n \"finally\",\n \"float\",\n \"for\",\n \"foreach\",\n \"from\",\n \"global\",\n \"goto\",\n \"if\",\n \"implements\",\n \"instanceof\",\n \"insteadof\",\n \"int\",\n \"integer\",\n \"interface\",\n \"isset\",\n \"iterable\",\n \"list\",\n \"match|0\",\n \"mixed\",\n \"new\",\n \"never\",\n \"object\",\n \"or\",\n \"private\",\n \"protected\",\n \"public\",\n \"readonly\",\n \"real\",\n \"return\",\n \"string\",\n \"switch\",\n \"throw\",\n \"trait\",\n \"try\",\n \"unset\",\n \"use\",\n \"var\",\n \"void\",\n \"while\",\n \"xor\",\n \"yield\"\n ];\n\n const BUILT_INS = [\n // Standard PHP library:\n // <https://www.php.net/manual/en/book.spl.php>\n \"Error|0\",\n \"AppendIterator\",\n \"ArgumentCountError\",\n \"ArithmeticError\",\n \"ArrayIterator\",\n \"ArrayObject\",\n \"AssertionError\",\n \"BadFunctionCallException\",\n \"BadMethodCallException\",\n \"CachingIterator\",\n \"CallbackFilterIterator\",\n \"CompileError\",\n \"Countable\",\n \"DirectoryIterator\",\n \"DivisionByZeroError\",\n \"DomainException\",\n \"EmptyIterator\",\n \"ErrorException\",\n \"Exception\",\n \"FilesystemIterator\",\n \"FilterIterator\",\n \"GlobIterator\",\n \"InfiniteIterator\",\n \"InvalidArgumentException\",\n \"IteratorIterator\",\n \"LengthException\",\n \"LimitIterator\",\n \"LogicException\",\n \"MultipleIterator\",\n \"NoRewindIterator\",\n \"OutOfBoundsException\",\n \"OutOfRangeException\",\n \"OuterIterator\",\n \"OverflowException\",\n \"ParentIterator\",\n \"ParseError\",\n \"RangeException\",\n \"RecursiveArrayIterator\",\n \"RecursiveCachingIterator\",\n \"RecursiveCallbackFilterIterator\",\n \"RecursiveDirectoryIterator\",\n \"RecursiveFilterIterator\",\n \"RecursiveIterator\",\n \"RecursiveIteratorIterator\",\n \"RecursiveRegexIterator\",\n \"RecursiveTreeIterator\",\n \"RegexIterator\",\n \"RuntimeException\",\n \"SeekableIterator\",\n \"SplDoublyLinkedList\",\n \"SplFileInfo\",\n \"SplFileObject\",\n \"SplFixedArray\",\n \"SplHeap\",\n \"SplMaxHeap\",\n \"SplMinHeap\",\n \"SplObjectStorage\",\n \"SplObserver\",\n \"SplPriorityQueue\",\n \"SplQueue\",\n \"SplStack\",\n \"SplSubject\",\n \"SplTempFileObject\",\n \"TypeError\",\n \"UnderflowException\",\n \"UnexpectedValueException\",\n \"UnhandledMatchError\",\n // Reserved interfaces:\n // <https://www.php.net/manual/en/reserved.interfaces.php>\n \"ArrayAccess\",\n \"BackedEnum\",\n \"Closure\",\n \"Fiber\",\n \"Generator\",\n \"Iterator\",\n \"IteratorAggregate\",\n \"Serializable\",\n \"Stringable\",\n \"Throwable\",\n \"Traversable\",\n \"UnitEnum\",\n \"WeakReference\",\n \"WeakMap\",\n // Reserved classes:\n // <https://www.php.net/manual/en/reserved.classes.php>\n \"Directory\",\n \"__PHP_Incomplete_Class\",\n \"parent\",\n \"php_user_filter\",\n \"self\",\n \"static\",\n \"stdClass\"\n ];\n\n /** Dual-case keywords\n *\n * [\"then\",\"FILE\"] =>\n * [\"then\", \"THEN\", \"FILE\", \"file\"]\n *\n * @param {string[]} items */\n const dualCase = (items) => {\n /** @type string[] */\n const result = [];\n items.forEach(item => {\n result.push(item);\n if (item.toLowerCase() === item) {\n result.push(item.toUpperCase());\n } else {\n result.push(item.toLowerCase());\n }\n });\n return result;\n };\n\n const KEYWORDS = {\n keyword: KWS,\n literal: dualCase(LITERALS),\n built_in: BUILT_INS,\n };\n\n /**\n * @param {string[]} items */\n const normalizeKeywords = (items) => {\n return items.map(item => {\n return item.replace(/\\|\\d+$/, \"\");\n });\n };\n\n const CONSTRUCTOR_CALL = { variants: [\n {\n match: [\n /new/,\n regex.concat(WHITESPACE, \"+\"),\n // to prevent built ins from being confused as the class constructor call\n regex.concat(\"(?!\", normalizeKeywords(BUILT_INS).join(\"\\\\b|\"), \"\\\\b)\"),\n PASCAL_CASE_CLASS_NAME_RE,\n ],\n scope: {\n 1: \"keyword\",\n 4: \"title.class\",\n },\n }\n ] };\n\n const CONSTANT_REFERENCE = regex.concat(IDENT_RE, \"\\\\b(?!\\\\()\");\n\n const LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON = { variants: [\n {\n match: [\n regex.concat(\n /::/,\n regex.lookahead(/(?!class\\b)/)\n ),\n CONSTANT_REFERENCE,\n ],\n scope: { 2: \"variable.constant\", },\n },\n {\n match: [\n /::/,\n /class/,\n ],\n scope: { 2: \"variable.language\", },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(\n /::/,\n regex.lookahead(/(?!class\\b)/)\n ),\n CONSTANT_REFERENCE,\n ],\n scope: {\n 1: \"title.class\",\n 3: \"variable.constant\",\n },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(\n \"::\",\n regex.lookahead(/(?!class\\b)/)\n ),\n ],\n scope: { 1: \"title.class\", },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n /::/,\n /class/,\n ],\n scope: {\n 1: \"title.class\",\n 3: \"variable.language\",\n },\n }\n ] };\n\n const NAMED_ARGUMENT = {\n scope: 'attr',\n match: regex.concat(IDENT_RE, regex.lookahead(':'), regex.lookahead(/(?!::)/)),\n };\n const PARAMS_MODE = {\n relevance: 0,\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n NAMED_ARGUMENT,\n VARIABLE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER,\n CONSTRUCTOR_CALL,\n ],\n };\n const FUNCTION_INVOKE = {\n relevance: 0,\n match: [\n /\\b/,\n // to prevent keywords from being confused as the function title\n regex.concat(\"(?!fn\\\\b|function\\\\b|\", normalizeKeywords(KWS).join(\"\\\\b|\"), \"|\", normalizeKeywords(BUILT_INS).join(\"\\\\b|\"), \"\\\\b)\"),\n IDENT_RE,\n regex.concat(WHITESPACE, \"*\"),\n regex.lookahead(/(?=\\()/)\n ],\n scope: { 3: \"title.function.invoke\", },\n contains: [ PARAMS_MODE ]\n };\n PARAMS_MODE.contains.push(FUNCTION_INVOKE);\n\n const ATTRIBUTE_CONTAINS = [\n NAMED_ARGUMENT,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER,\n CONSTRUCTOR_CALL,\n ];\n\n const ATTRIBUTES = {\n begin: regex.concat(/#\\[\\s*\\\\?/,\n regex.either(\n PASCAL_CASE_CLASS_NAME_RE,\n UPCASE_NAME_RE\n )\n ),\n beginScope: \"meta\",\n end: /]/,\n endScope: \"meta\",\n keywords: {\n literal: LITERALS,\n keyword: [\n 'new',\n 'array',\n ]\n },\n contains: [\n {\n begin: /\\[/,\n end: /]/,\n keywords: {\n literal: LITERALS,\n keyword: [\n 'new',\n 'array',\n ]\n },\n contains: [\n 'self',\n ...ATTRIBUTE_CONTAINS,\n ]\n },\n ...ATTRIBUTE_CONTAINS,\n {\n scope: 'meta',\n variants: [\n { match: PASCAL_CASE_CLASS_NAME_RE },\n { match: UPCASE_NAME_RE }\n ]\n }\n ]\n };\n\n return {\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n ATTRIBUTES,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('//', '$'),\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n { contains: [\n {\n scope: 'doctag',\n match: '@[A-Za-z]+'\n }\n ] }\n ),\n {\n match: /__halt_compiler\\(\\);/,\n keywords: '__halt_compiler',\n starts: {\n scope: \"comment\",\n end: hljs.MATCH_NOTHING_RE,\n contains: [\n {\n match: /\\?>/,\n scope: \"meta\",\n endsParent: true\n }\n ]\n }\n },\n PREPROCESSOR,\n {\n scope: 'variable.language',\n match: /\\$this\\b/\n },\n VARIABLE,\n FUNCTION_INVOKE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n {\n match: [\n /const/,\n /\\s/,\n IDENT_RE,\n ],\n scope: {\n 1: \"keyword\",\n 3: \"variable.constant\",\n },\n },\n CONSTRUCTOR_CALL,\n {\n scope: 'function',\n relevance: 0,\n beginKeywords: 'fn function',\n end: /[;{]/,\n excludeEnd: true,\n illegal: '[$%\\\\[]',\n contains: [\n { beginKeywords: 'use', },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin: '=>', // No markup, just a relevance booster\n endsParent: true\n },\n {\n scope: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n ATTRIBUTES,\n VARIABLE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n },\n ]\n },\n {\n scope: 'class',\n variants: [\n {\n beginKeywords: \"enum\",\n illegal: /[($\"]/\n },\n {\n beginKeywords: \"class interface trait\",\n illegal: /[:($\"]/\n }\n ],\n relevance: 0,\n end: /\\{/,\n excludeEnd: true,\n contains: [\n { beginKeywords: 'extends implements' },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n // both use and namespace still use \"old style\" rules (vs multi-match)\n // because the namespace name can include `\\` and we still want each\n // element to be treated as its own *individual* title\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: ';',\n illegal: /[.']/,\n contains: [ hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, { scope: \"title.class\" }) ]\n },\n {\n beginKeywords: 'use',\n relevance: 0,\n end: ';',\n contains: [\n // TODO: title.function vs title.class\n {\n match: /\\b(as|const|function)\\b/,\n scope: \"keyword\"\n },\n // TODO: could be title.class or title.function\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n STRING,\n NUMBER,\n ]\n };\n}\n\nexport { php as default };\n","/*\nLanguage: Ruby\nDescription: Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.\nWebsite: https://www.ruby-lang.org/\nAuthor: Anton Kovalyov <anton@kovalyov.net>\nContributors: Peter Leonov <gojpeg@yandex.ru>, Vasily Polovnyov <vast@whiteants.net>, Loren Segal <lsegal@soen.ca>, Pascal Hurni <phi@ruby-reactive.org>, Cedric Sohrauer <sohrauer@googlemail.com>\nCategory: common, scripting\n*/\n\nfunction ruby(hljs) {\n const regex = hljs.regex;\n const RUBY_METHOD_RE = '([a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?)';\n // TODO: move concepts like CAMEL_CASE into `modes.js`\n const CLASS_NAME_RE = regex.either(\n /\\b([A-Z]+[a-z0-9]+)+/,\n // ends in caps\n /\\b([A-Z]+[a-z0-9]+)+[A-Z]+/,\n )\n ;\n const CLASS_NAME_WITH_NAMESPACE_RE = regex.concat(CLASS_NAME_RE, /(::\\w+)*/);\n // very popular ruby built-ins that one might even assume\n // are actual keywords (despite that not being the case)\n const PSEUDO_KWS = [\n \"include\",\n \"extend\",\n \"prepend\",\n \"public\",\n \"private\",\n \"protected\",\n \"raise\",\n \"throw\"\n ];\n const RUBY_KEYWORDS = {\n \"variable.constant\": [\n \"__FILE__\",\n \"__LINE__\",\n \"__ENCODING__\"\n ],\n \"variable.language\": [\n \"self\",\n \"super\",\n ],\n keyword: [\n \"alias\",\n \"and\",\n \"begin\",\n \"BEGIN\",\n \"break\",\n \"case\",\n \"class\",\n \"defined\",\n \"do\",\n \"else\",\n \"elsif\",\n \"end\",\n \"END\",\n \"ensure\",\n \"for\",\n \"if\",\n \"in\",\n \"module\",\n \"next\",\n \"not\",\n \"or\",\n \"redo\",\n \"require\",\n \"rescue\",\n \"retry\",\n \"return\",\n \"then\",\n \"undef\",\n \"unless\",\n \"until\",\n \"when\",\n \"while\",\n \"yield\",\n ...PSEUDO_KWS\n ],\n built_in: [\n \"proc\",\n \"lambda\",\n \"attr_accessor\",\n \"attr_reader\",\n \"attr_writer\",\n \"define_method\",\n \"private_constant\",\n \"module_function\"\n ],\n literal: [\n \"true\",\n \"false\",\n \"nil\"\n ]\n };\n const YARDOCTAG = {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n };\n const IRB_OBJECT = {\n begin: '#<',\n end: '>'\n };\n const COMMENT_MODES = [\n hljs.COMMENT(\n '#',\n '$',\n { contains: [ YARDOCTAG ] }\n ),\n hljs.COMMENT(\n '^=begin',\n '^=end',\n {\n contains: [ YARDOCTAG ],\n relevance: 10\n }\n ),\n hljs.COMMENT('^__END__', hljs.MATCH_NOTHING_RE)\n ];\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: RUBY_KEYWORDS\n };\n const STRING = {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /`/,\n end: /`/\n },\n {\n begin: /%[qQwWx]?\\(/,\n end: /\\)/\n },\n {\n begin: /%[qQwWx]?\\[/,\n end: /\\]/\n },\n {\n begin: /%[qQwWx]?\\{/,\n end: /\\}/\n },\n {\n begin: /%[qQwWx]?</,\n end: />/\n },\n {\n begin: /%[qQwWx]?\\//,\n end: /\\//\n },\n {\n begin: /%[qQwWx]?%/,\n end: /%/\n },\n {\n begin: /%[qQwWx]?-/,\n end: /-/\n },\n {\n begin: /%[qQwWx]?\\|/,\n end: /\\|/\n },\n // in the following expressions, \\B in the beginning suppresses recognition of ?-sequences\n // where ? is the last character of a preceding identifier, as in: `func?4`\n { begin: /\\B\\?(\\\\\\d{1,3})/ },\n { begin: /\\B\\?(\\\\x[A-Fa-f0-9]{1,2})/ },\n { begin: /\\B\\?(\\\\u\\{?[A-Fa-f0-9]{1,6}\\}?)/ },\n { begin: /\\B\\?(\\\\M-\\\\C-|\\\\M-\\\\c|\\\\c\\\\M-|\\\\M-|\\\\C-\\\\M-)[\\x20-\\x7e]/ },\n { begin: /\\B\\?\\\\(c|C-)[\\x20-\\x7e]/ },\n { begin: /\\B\\?\\\\?\\S/ },\n // heredocs\n {\n // this guard makes sure that we have an entire heredoc and not a false\n // positive (auto-detect, etc.)\n begin: regex.concat(\n /<<[-~]?'?/,\n regex.lookahead(/(\\w+)(?=\\W)[^\\n]*\\n(?:[^\\n]*\\n)*?\\s*\\1\\b/)\n ),\n contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n })\n ]\n }\n ]\n };\n\n // Ruby syntax is underdocumented, but this grammar seems to be accurate\n // as of version 2.7.2 (confirmed with (irb and `Ripper.sexp(...)`)\n // https://docs.ruby-lang.org/en/2.7.0/doc/syntax/literals_rdoc.html#label-Numbers\n const decimal = '[1-9](_?[0-9])*|0';\n const digits = '[0-9](_?[0-9])*';\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal integer/float, optionally exponential or rational, optionally imaginary\n { begin: `\\\\b(${decimal})(\\\\.(${digits}))?([eE][+-]?(${digits})|r)?i?\\\\b` },\n\n // explicit decimal/binary/octal/hexadecimal integer,\n // optionally rational and/or imaginary\n { begin: \"\\\\b0[dD][0-9](_?[0-9])*r?i?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*r?i?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*r?i?\\\\b\" },\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\\\b\" },\n\n // 0-prefixed implicit octal integer, optionally rational and/or imaginary\n { begin: \"\\\\b0(_?[0-7])+r?i?\\\\b\" }\n ]\n };\n\n const PARAMS = {\n variants: [\n {\n match: /\\(\\)/,\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /(?=\\))/,\n excludeBegin: true,\n endsParent: true,\n keywords: RUBY_KEYWORDS,\n }\n ]\n };\n\n const INCLUDE_EXTEND = {\n match: [\n /(include|extend)\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ],\n scope: {\n 2: \"title.class\"\n },\n keywords: RUBY_KEYWORDS\n };\n\n const CLASS_DEFINITION = {\n variants: [\n {\n match: [\n /class\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE,\n /\\s+<\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ]\n },\n {\n match: [\n /\\b(class|module)\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ]\n }\n ],\n scope: {\n 2: \"title.class\",\n 4: \"title.class.inherited\"\n },\n keywords: RUBY_KEYWORDS\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n const METHOD_DEFINITION = {\n match: [\n /def/, /\\s+/,\n RUBY_METHOD_RE\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n const OBJECT_CREATION = {\n relevance: 0,\n match: [\n CLASS_NAME_WITH_NAMESPACE_RE,\n /\\.new[. (]/\n ],\n scope: {\n 1: \"title.class\"\n }\n };\n\n // CamelCase\n const CLASS_REFERENCE = {\n relevance: 0,\n match: CLASS_NAME_RE,\n scope: \"title.class\"\n };\n\n const RUBY_DEFAULT_CONTAINS = [\n STRING,\n CLASS_DEFINITION,\n INCLUDE_EXTEND,\n OBJECT_CREATION,\n UPPER_CASE_CONSTANT,\n CLASS_REFERENCE,\n METHOD_DEFINITION,\n {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + '::' },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':(?!\\\\s)',\n contains: [\n STRING,\n { begin: RUBY_METHOD_RE }\n ],\n relevance: 0\n },\n NUMBER,\n {\n // negative-look forward attempts to prevent false matches like:\n // @ident@ or $ident$ that might indicate this is not ruby at all\n className: \"variable\",\n begin: '(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])`\n },\n {\n className: 'params',\n begin: /\\|(?!=)/,\n end: /\\|/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0, // this could be a lot of things (in other languages) other than params\n keywords: RUBY_KEYWORDS\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\n keywords: 'unless',\n contains: [\n {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n illegal: /\\n/,\n variants: [\n {\n begin: '/',\n end: '/[a-z]*'\n },\n {\n begin: /%r\\{/,\n end: /\\}[a-z]*/\n },\n {\n begin: '%r\\\\(',\n end: '\\\\)[a-z]*'\n },\n {\n begin: '%r!',\n end: '![a-z]*'\n },\n {\n begin: '%r\\\\[',\n end: '\\\\][a-z]*'\n }\n ]\n }\n ].concat(IRB_OBJECT, COMMENT_MODES),\n relevance: 0\n }\n ].concat(IRB_OBJECT, COMMENT_MODES);\n\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n // >>\n // ?>\n const SIMPLE_PROMPT = \"[>?]>\";\n // irb(main):001:0>\n const DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+[>*]\";\n const RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d+(p\\\\d+)?[^\\\\d][^>]+>\";\n\n const IRB_DEFAULT = [\n {\n begin: /^\\s*=>/,\n starts: {\n end: '$',\n contains: RUBY_DEFAULT_CONTAINS\n }\n },\n {\n className: 'meta.prompt',\n begin: '^(' + SIMPLE_PROMPT + \"|\" + DEFAULT_PROMPT + '|' + RVM_PROMPT + ')(?=[ ])',\n starts: {\n end: '$',\n keywords: RUBY_KEYWORDS,\n contains: RUBY_DEFAULT_CONTAINS\n }\n }\n ];\n\n COMMENT_MODES.unshift(IRB_OBJECT);\n\n return {\n name: 'Ruby',\n aliases: [\n 'rb',\n 'gemspec',\n 'podspec',\n 'thor',\n 'irb'\n ],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [ hljs.SHEBANG({ binary: \"ruby\" }) ]\n .concat(IRB_DEFAULT)\n .concat(COMMENT_MODES)\n .concat(RUBY_DEFAULT_CONTAINS)\n };\n}\n\nexport { ruby as default };\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\nconst keywordWrapper = keyword => concat(\n /\\b/,\n keyword,\n /\\w$/.test(keyword) ? /\\b/ : /\\B/\n);\n\n// Keywords that require a leading dot.\nconst dotKeywords = [\n 'Protocol', // contextual\n 'Type' // contextual\n].map(keywordWrapper);\n\n// Keywords that may have a leading dot.\nconst optionalDotKeywords = [\n 'init',\n 'self'\n].map(keywordWrapper);\n\n// should register as keyword, not type\nconst keywordTypes = [\n 'Any',\n 'Self'\n];\n\n// Regular keywords and literals.\nconst keywords = [\n // strings below will be fed into the regular `keywords` engine while regex\n // will result in additional modes being created to scan for those keywords to\n // avoid conflicts with other rules\n 'actor',\n 'any', // contextual\n 'associatedtype',\n 'async',\n 'await',\n /as\\?/, // operator\n /as!/, // operator\n 'as', // operator\n 'borrowing', // contextual\n 'break',\n 'case',\n 'catch',\n 'class',\n 'consume', // contextual\n 'consuming', // contextual\n 'continue',\n 'convenience', // contextual\n 'copy', // contextual\n 'default',\n 'defer',\n 'deinit',\n 'didSet', // contextual\n 'distributed',\n 'do',\n 'dynamic', // contextual\n 'each',\n 'else',\n 'enum',\n 'extension',\n 'fallthrough',\n /fileprivate\\(set\\)/,\n 'fileprivate',\n 'final', // contextual\n 'for',\n 'func',\n 'get', // contextual\n 'guard',\n 'if',\n 'import',\n 'indirect', // contextual\n 'infix', // contextual\n /init\\?/,\n /init!/,\n 'inout',\n /internal\\(set\\)/,\n 'internal',\n 'in',\n 'is', // operator\n 'isolated', // contextual\n 'nonisolated', // contextual\n 'lazy', // contextual\n 'let',\n 'macro',\n 'mutating', // contextual\n 'nonmutating', // contextual\n /open\\(set\\)/, // contextual\n 'open', // contextual\n 'operator',\n 'optional', // contextual\n 'override', // contextual\n 'package',\n 'postfix', // contextual\n 'precedencegroup',\n 'prefix', // contextual\n /private\\(set\\)/,\n 'private',\n 'protocol',\n /public\\(set\\)/,\n 'public',\n 'repeat',\n 'required', // contextual\n 'rethrows',\n 'return',\n 'set', // contextual\n 'some', // contextual\n 'static',\n 'struct',\n 'subscript',\n 'super',\n 'switch',\n 'throws',\n 'throw',\n /try\\?/, // operator\n /try!/, // operator\n 'try', // operator\n 'typealias',\n /unowned\\(safe\\)/, // contextual\n /unowned\\(unsafe\\)/, // contextual\n 'unowned', // contextual\n 'var',\n 'weak', // contextual\n 'where',\n 'while',\n 'willSet' // contextual\n];\n\n// NOTE: Contextual keywords are reserved only in specific contexts.\n// Ideally, these should be matched using modes to avoid false positives.\n\n// Literals.\nconst literals = [\n 'false',\n 'nil',\n 'true'\n];\n\n// Keywords used in precedence groups.\nconst precedencegroupKeywords = [\n 'assignment',\n 'associativity',\n 'higherThan',\n 'left',\n 'lowerThan',\n 'none',\n 'right'\n];\n\n// Keywords that start with a number sign (#).\n// #(un)available is handled separately.\nconst numberSignKeywords = [\n '#colorLiteral',\n '#column',\n '#dsohandle',\n '#else',\n '#elseif',\n '#endif',\n '#error',\n '#file',\n '#fileID',\n '#fileLiteral',\n '#filePath',\n '#function',\n '#if',\n '#imageLiteral',\n '#keyPath',\n '#line',\n '#selector',\n '#sourceLocation',\n '#warning'\n];\n\n// Global functions in the Standard Library.\nconst builtIns = [\n 'abs',\n 'all',\n 'any',\n 'assert',\n 'assertionFailure',\n 'debugPrint',\n 'dump',\n 'fatalError',\n 'getVaList',\n 'isKnownUniquelyReferenced',\n 'max',\n 'min',\n 'numericCast',\n 'pointwiseMax',\n 'pointwiseMin',\n 'precondition',\n 'preconditionFailure',\n 'print',\n 'readLine',\n 'repeatElement',\n 'sequence',\n 'stride',\n 'swap',\n 'swift_unboxFromSwiftValueWithType',\n 'transcode',\n 'type',\n 'unsafeBitCast',\n 'unsafeDowncast',\n 'withExtendedLifetime',\n 'withUnsafeMutablePointer',\n 'withUnsafePointer',\n 'withVaList',\n 'withoutActuallyEscaping',\n 'zip'\n];\n\n// Valid first characters for operators.\nconst operatorHead = either(\n /[/=\\-+!*%<>&|^~?]/,\n /[\\u00A1-\\u00A7]/,\n /[\\u00A9\\u00AB]/,\n /[\\u00AC\\u00AE]/,\n /[\\u00B0\\u00B1]/,\n /[\\u00B6\\u00BB\\u00BF\\u00D7\\u00F7]/,\n /[\\u2016-\\u2017]/,\n /[\\u2020-\\u2027]/,\n /[\\u2030-\\u203E]/,\n /[\\u2041-\\u2053]/,\n /[\\u2055-\\u205E]/,\n /[\\u2190-\\u23FF]/,\n /[\\u2500-\\u2775]/,\n /[\\u2794-\\u2BFF]/,\n /[\\u2E00-\\u2E7F]/,\n /[\\u3001-\\u3003]/,\n /[\\u3008-\\u3020]/,\n /[\\u3030]/\n);\n\n// Valid characters for operators.\nconst operatorCharacter = either(\n operatorHead,\n /[\\u0300-\\u036F]/,\n /[\\u1DC0-\\u1DFF]/,\n /[\\u20D0-\\u20FF]/,\n /[\\uFE00-\\uFE0F]/,\n /[\\uFE20-\\uFE2F]/\n // TODO: The following characters are also allowed, but the regex isn't supported yet.\n // /[\\u{E0100}-\\u{E01EF}]/u\n);\n\n// Valid operator.\nconst operator = concat(operatorHead, operatorCharacter, '*');\n\n// Valid first characters for identifiers.\nconst identifierHead = either(\n /[a-zA-Z_]/,\n /[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]/,\n /[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]/,\n /[\\u0100-\\u02FF\\u0370-\\u167F\\u1681-\\u180D\\u180F-\\u1DBF]/,\n /[\\u1E00-\\u1FFF]/,\n /[\\u200B-\\u200D\\u202A-\\u202E\\u203F-\\u2040\\u2054\\u2060-\\u206F]/,\n /[\\u2070-\\u20CF\\u2100-\\u218F\\u2460-\\u24FF\\u2776-\\u2793]/,\n /[\\u2C00-\\u2DFF\\u2E80-\\u2FFF]/,\n /[\\u3004-\\u3007\\u3021-\\u302F\\u3031-\\u303F\\u3040-\\uD7FF]/,\n /[\\uF900-\\uFD3D\\uFD40-\\uFDCF\\uFDF0-\\uFE1F\\uFE30-\\uFE44]/,\n /[\\uFE47-\\uFEFE\\uFF00-\\uFFFD]/ // Should be /[\\uFE47-\\uFFFD]/, but we have to exclude FEFF.\n // The following characters are also allowed, but the regexes aren't supported yet.\n // /[\\u{10000}-\\u{1FFFD}\\u{20000-\\u{2FFFD}\\u{30000}-\\u{3FFFD}\\u{40000}-\\u{4FFFD}]/u,\n // /[\\u{50000}-\\u{5FFFD}\\u{60000-\\u{6FFFD}\\u{70000}-\\u{7FFFD}\\u{80000}-\\u{8FFFD}]/u,\n // /[\\u{90000}-\\u{9FFFD}\\u{A0000-\\u{AFFFD}\\u{B0000}-\\u{BFFFD}\\u{C0000}-\\u{CFFFD}]/u,\n // /[\\u{D0000}-\\u{DFFFD}\\u{E0000-\\u{EFFFD}]/u\n);\n\n// Valid characters for identifiers.\nconst identifierCharacter = either(\n identifierHead,\n /\\d/,\n /[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]/\n);\n\n// Valid identifier.\nconst identifier = concat(identifierHead, identifierCharacter, '*');\n\n// Valid type identifier.\nconst typeIdentifier = concat(/[A-Z]/, identifierCharacter, '*');\n\n// Built-in attributes, which are highlighted as keywords.\n// @available is handled separately.\n// https://docs.swift.org/swift-book/documentation/the-swift-programming-language/attributes\nconst keywordAttributes = [\n 'attached',\n 'autoclosure',\n concat(/convention\\(/, either('swift', 'block', 'c'), /\\)/),\n 'discardableResult',\n 'dynamicCallable',\n 'dynamicMemberLookup',\n 'escaping',\n 'freestanding',\n 'frozen',\n 'GKInspectable',\n 'IBAction',\n 'IBDesignable',\n 'IBInspectable',\n 'IBOutlet',\n 'IBSegueAction',\n 'inlinable',\n 'main',\n 'nonobjc',\n 'NSApplicationMain',\n 'NSCopying',\n 'NSManaged',\n concat(/objc\\(/, identifier, /\\)/),\n 'objc',\n 'objcMembers',\n 'propertyWrapper',\n 'requires_stored_property_inits',\n 'resultBuilder',\n 'Sendable',\n 'testable',\n 'UIApplicationMain',\n 'unchecked',\n 'unknown',\n 'usableFromInline',\n 'warn_unqualified_access'\n];\n\n// Contextual keywords used in @available and #(un)available.\nconst availabilityKeywords = [\n 'iOS',\n 'iOSApplicationExtension',\n 'macOS',\n 'macOSApplicationExtension',\n 'macCatalyst',\n 'macCatalystApplicationExtension',\n 'watchOS',\n 'watchOSApplicationExtension',\n 'tvOS',\n 'tvOSApplicationExtension',\n 'swift'\n];\n\n/*\nLanguage: Swift\nDescription: Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.\nAuthor: Steven Van Impe <steven.vanimpe@icloud.com>\nContributors: Chris Eidhof <chris@eidhof.nl>, Nate Cook <natecook@gmail.com>, Alexander Lichter <manniL@gmx.net>, Richard Gibson <gibson042@github>\nWebsite: https://swift.org\nCategory: common, system\n*/\n\n\n/** @type LanguageFn */\nfunction swift(hljs) {\n const WHITESPACE = {\n match: /\\s+/,\n relevance: 0\n };\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID411\n const BLOCK_COMMENT = hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n { contains: [ 'self' ] }\n );\n const COMMENTS = [\n hljs.C_LINE_COMMENT_MODE,\n BLOCK_COMMENT\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID413\n // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html\n const DOT_KEYWORD = {\n match: [\n /\\./,\n either(...dotKeywords, ...optionalDotKeywords)\n ],\n className: { 2: \"keyword\" }\n };\n const KEYWORD_GUARD = {\n // Consume .keyword to prevent highlighting properties and methods as keywords.\n match: concat(/\\./, either(...keywords)),\n relevance: 0\n };\n const PLAIN_KEYWORDS = keywords\n .filter(kw => typeof kw === 'string')\n .concat([ \"_|0\" ]); // seems common, so 0 relevance\n const REGEX_KEYWORDS = keywords\n .filter(kw => typeof kw !== 'string') // find regex\n .concat(keywordTypes)\n .map(keywordWrapper);\n const KEYWORD = { variants: [\n {\n className: 'keyword',\n match: either(...REGEX_KEYWORDS, ...optionalDotKeywords)\n }\n ] };\n // find all the regular keywords\n const KEYWORDS = {\n $pattern: either(\n /\\b\\w+/, // regular keywords\n /#\\w+/ // number keywords\n ),\n keyword: PLAIN_KEYWORDS\n .concat(numberSignKeywords),\n literal: literals\n };\n const KEYWORD_MODES = [\n DOT_KEYWORD,\n KEYWORD_GUARD,\n KEYWORD\n ];\n\n // https://github.com/apple/swift/tree/main/stdlib/public/core\n const BUILT_IN_GUARD = {\n // Consume .built_in to prevent highlighting properties and methods.\n match: concat(/\\./, either(...builtIns)),\n relevance: 0\n };\n const BUILT_IN = {\n className: 'built_in',\n match: concat(/\\b/, either(...builtIns), /(?=\\()/)\n };\n const BUILT_INS = [\n BUILT_IN_GUARD,\n BUILT_IN\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418\n const OPERATOR_GUARD = {\n // Prevent -> from being highlighting as an operator.\n match: /->/,\n relevance: 0\n };\n const OPERATOR = {\n className: 'operator',\n relevance: 0,\n variants: [\n { match: operator },\n {\n // dot-operator: only operators that start with a dot are allowed to use dots as\n // characters (..., ...<, .*, etc). So there rule here is: a dot followed by one or more\n // characters that may also include dots.\n match: `\\\\.(\\\\.|${operatorCharacter})+` }\n ]\n };\n const OPERATORS = [\n OPERATOR_GUARD,\n OPERATOR\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_numeric-literal\n // TODO: Update for leading `-` after lookbehind is supported everywhere\n const decimalDigits = '([0-9]_*)+';\n const hexDigits = '([0-9a-fA-F]_*)+';\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal floating-point-literal (subsumes decimal-literal)\n { match: `\\\\b(${decimalDigits})(\\\\.(${decimalDigits}))?` + `([eE][+-]?(${decimalDigits}))?\\\\b` },\n // hexadecimal floating-point-literal (subsumes hexadecimal-literal)\n { match: `\\\\b0x(${hexDigits})(\\\\.(${hexDigits}))?` + `([pP][+-]?(${decimalDigits}))?\\\\b` },\n // octal-literal\n { match: /\\b0o([0-7]_*)+\\b/ },\n // binary-literal\n { match: /\\b0b([01]_*)+\\b/ }\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_string-literal\n const ESCAPED_CHARACTER = (rawDelimiter = \"\") => ({\n className: 'subst',\n variants: [\n { match: concat(/\\\\/, rawDelimiter, /[0\\\\tnr\"']/) },\n { match: concat(/\\\\/, rawDelimiter, /u\\{[0-9a-fA-F]{1,8}\\}/) }\n ]\n });\n const ESCAPED_NEWLINE = (rawDelimiter = \"\") => ({\n className: 'subst',\n match: concat(/\\\\/, rawDelimiter, /[\\t ]*(?:[\\r\\n]|\\r\\n)/)\n });\n const INTERPOLATION = (rawDelimiter = \"\") => ({\n className: 'subst',\n label: \"interpol\",\n begin: concat(/\\\\/, rawDelimiter, /\\(/),\n end: /\\)/\n });\n const MULTILINE_STRING = (rawDelimiter = \"\") => ({\n begin: concat(rawDelimiter, /\"\"\"/),\n end: concat(/\"\"\"/, rawDelimiter),\n contains: [\n ESCAPED_CHARACTER(rawDelimiter),\n ESCAPED_NEWLINE(rawDelimiter),\n INTERPOLATION(rawDelimiter)\n ]\n });\n const SINGLE_LINE_STRING = (rawDelimiter = \"\") => ({\n begin: concat(rawDelimiter, /\"/),\n end: concat(/\"/, rawDelimiter),\n contains: [\n ESCAPED_CHARACTER(rawDelimiter),\n INTERPOLATION(rawDelimiter)\n ]\n });\n const STRING = {\n className: 'string',\n variants: [\n MULTILINE_STRING(),\n MULTILINE_STRING(\"#\"),\n MULTILINE_STRING(\"##\"),\n MULTILINE_STRING(\"###\"),\n SINGLE_LINE_STRING(),\n SINGLE_LINE_STRING(\"#\"),\n SINGLE_LINE_STRING(\"##\"),\n SINGLE_LINE_STRING(\"###\")\n ]\n };\n\n const REGEXP_CONTENTS = [\n hljs.BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n }\n ];\n\n const BARE_REGEXP_LITERAL = {\n begin: /\\/[^\\s](?=[^/\\n]*\\/)/,\n end: /\\//,\n contains: REGEXP_CONTENTS\n };\n\n const EXTENDED_REGEXP_LITERAL = (rawDelimiter) => {\n const begin = concat(rawDelimiter, /\\//);\n const end = concat(/\\//, rawDelimiter);\n return {\n begin,\n end,\n contains: [\n ...REGEXP_CONTENTS,\n {\n scope: \"comment\",\n begin: `#(?!.*${end})`,\n end: /$/,\n },\n ],\n };\n };\n\n // https://docs.swift.org/swift-book/documentation/the-swift-programming-language/lexicalstructure/#Regular-Expression-Literals\n const REGEXP = {\n scope: \"regexp\",\n variants: [\n EXTENDED_REGEXP_LITERAL('###'),\n EXTENDED_REGEXP_LITERAL('##'),\n EXTENDED_REGEXP_LITERAL('#'),\n BARE_REGEXP_LITERAL\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID412\n const QUOTED_IDENTIFIER = { match: concat(/`/, identifier, /`/) };\n const IMPLICIT_PARAMETER = {\n className: 'variable',\n match: /\\$\\d+/\n };\n const PROPERTY_WRAPPER_PROJECTION = {\n className: 'variable',\n match: `\\\\$${identifierCharacter}+`\n };\n const IDENTIFIERS = [\n QUOTED_IDENTIFIER,\n IMPLICIT_PARAMETER,\n PROPERTY_WRAPPER_PROJECTION\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/Attributes.html\n const AVAILABLE_ATTRIBUTE = {\n match: /(@|#(un)?)available/,\n scope: 'keyword',\n starts: { contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: availabilityKeywords,\n contains: [\n ...OPERATORS,\n NUMBER,\n STRING\n ]\n }\n ] }\n };\n\n const KEYWORD_ATTRIBUTE = {\n scope: 'keyword',\n match: concat(/@/, either(...keywordAttributes), lookahead(either(/\\(/, /\\s+/))),\n };\n\n const USER_DEFINED_ATTRIBUTE = {\n scope: 'meta',\n match: concat(/@/, identifier)\n };\n\n const ATTRIBUTES = [\n AVAILABLE_ATTRIBUTE,\n KEYWORD_ATTRIBUTE,\n USER_DEFINED_ATTRIBUTE\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/Types.html\n const TYPE = {\n match: lookahead(/\\b[A-Z]/),\n relevance: 0,\n contains: [\n { // Common Apple frameworks, for relevance boost\n className: 'type',\n match: concat(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/, identifierCharacter, '+')\n },\n { // Type identifier\n className: 'type',\n match: typeIdentifier,\n relevance: 0\n },\n { // Optional type\n match: /[?!]+/,\n relevance: 0\n },\n { // Variadic parameter\n match: /\\.\\.\\./,\n relevance: 0\n },\n { // Protocol composition\n match: concat(/\\s+&\\s+/, lookahead(typeIdentifier)),\n relevance: 0\n }\n ]\n };\n const GENERIC_ARGUMENTS = {\n begin: /</,\n end: />/,\n keywords: KEYWORDS,\n contains: [\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...ATTRIBUTES,\n OPERATOR_GUARD,\n TYPE\n ]\n };\n TYPE.contains.push(GENERIC_ARGUMENTS);\n\n // https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID552\n // Prevents element names from being highlighted as keywords.\n const TUPLE_ELEMENT_NAME = {\n match: concat(identifier, /\\s*:/),\n keywords: \"_|0\",\n relevance: 0\n };\n // Matches tuples as well as the parameter list of a function type.\n const TUPLE = {\n begin: /\\(/,\n end: /\\)/,\n relevance: 0,\n keywords: KEYWORDS,\n contains: [\n 'self',\n TUPLE_ELEMENT_NAME,\n ...COMMENTS,\n REGEXP,\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS,\n ...ATTRIBUTES,\n TYPE\n ]\n };\n\n const GENERIC_PARAMETERS = {\n begin: /</,\n end: />/,\n keywords: 'repeat each',\n contains: [\n ...COMMENTS,\n TYPE\n ]\n };\n const FUNCTION_PARAMETER_NAME = {\n begin: either(\n lookahead(concat(identifier, /\\s*:/)),\n lookahead(concat(identifier, /\\s+/, identifier, /\\s*:/))\n ),\n end: /:/,\n relevance: 0,\n contains: [\n {\n className: 'keyword',\n match: /\\b_\\b/\n },\n {\n className: 'params',\n match: identifier\n }\n ]\n };\n const FUNCTION_PARAMETERS = {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n FUNCTION_PARAMETER_NAME,\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...ATTRIBUTES,\n TYPE,\n TUPLE\n ],\n endsParent: true,\n illegal: /[\"']/\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362\n // https://docs.swift.org/swift-book/documentation/the-swift-programming-language/declarations/#Macro-Declaration\n const FUNCTION_OR_MACRO = {\n match: [\n /(func|macro)/,\n /\\s+/,\n either(QUOTED_IDENTIFIER.match, identifier, operator)\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n GENERIC_PARAMETERS,\n FUNCTION_PARAMETERS,\n WHITESPACE\n ],\n illegal: [\n /\\[/,\n /%/\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID375\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID379\n const INIT_SUBSCRIPT = {\n match: [\n /\\b(?:subscript|init[?!]?)/,\n /\\s*(?=[<(])/,\n ],\n className: { 1: \"keyword\" },\n contains: [\n GENERIC_PARAMETERS,\n FUNCTION_PARAMETERS,\n WHITESPACE\n ],\n illegal: /\\[|%/\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380\n const OPERATOR_DECLARATION = {\n match: [\n /operator/,\n /\\s+/,\n operator\n ],\n className: {\n 1: \"keyword\",\n 3: \"title\"\n }\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID550\n const PRECEDENCEGROUP = {\n begin: [\n /precedencegroup/,\n /\\s+/,\n typeIdentifier\n ],\n className: {\n 1: \"keyword\",\n 3: \"title\"\n },\n contains: [ TYPE ],\n keywords: [\n ...precedencegroupKeywords,\n ...literals\n ],\n end: /}/\n };\n\n const CLASS_FUNC_DECLARATION = {\n match: [\n /class\\b/, \n /\\s+/,\n /func\\b/,\n /\\s+/,\n /\\b[A-Za-z_][A-Za-z0-9_]*\\b/ \n ],\n scope: {\n 1: \"keyword\",\n 3: \"keyword\",\n 5: \"title.function\"\n }\n };\n\n const CLASS_VAR_DECLARATION = {\n match: [\n /class\\b/,\n /\\s+/, \n /var\\b/, \n ],\n scope: {\n 1: \"keyword\",\n 3: \"keyword\"\n }\n };\n\n const TYPE_DECLARATION = {\n begin: [\n /(struct|protocol|class|extension|enum|actor)/,\n /\\s+/,\n identifier,\n /\\s*/,\n ],\n beginScope: {\n 1: \"keyword\",\n 3: \"title.class\"\n },\n keywords: KEYWORDS,\n contains: [\n GENERIC_PARAMETERS,\n ...KEYWORD_MODES,\n {\n begin: /:/,\n end: /\\{/,\n keywords: KEYWORDS,\n contains: [\n {\n scope: \"title.class.inherited\",\n match: typeIdentifier,\n },\n ...KEYWORD_MODES,\n ],\n relevance: 0,\n },\n ]\n };\n\n // Add supported submodes to string interpolation.\n for (const variant of STRING.variants) {\n const interpolation = variant.contains.find(mode => mode.label === \"interpol\");\n // TODO: Interpolation can contain any expression, so there's room for improvement here.\n interpolation.keywords = KEYWORDS;\n const submodes = [\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS\n ];\n interpolation.contains = [\n ...submodes,\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n 'self',\n ...submodes\n ]\n }\n ];\n }\n\n return {\n name: 'Swift',\n keywords: KEYWORDS,\n contains: [\n ...COMMENTS,\n FUNCTION_OR_MACRO,\n INIT_SUBSCRIPT,\n CLASS_FUNC_DECLARATION,\n CLASS_VAR_DECLARATION,\n TYPE_DECLARATION,\n OPERATOR_DECLARATION,\n PRECEDENCEGROUP,\n {\n beginKeywords: 'import',\n end: /$/,\n contains: [ ...COMMENTS ],\n relevance: 0\n },\n REGEXP,\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS,\n ...ATTRIBUTES,\n TYPE,\n TUPLE\n ]\n };\n}\n\nexport { swift as default };\n","// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = '[0-9](_*[0-9])*';\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';\nvar NUMERIC = {\n className: 'number',\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n { begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n // excluding ExponentPart\n { begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)` },\n { begin: `(${frac})[fFdD]?\\\\b` },\n { begin: `\\\\b(${decimalDigits})[fFdD]\\\\b` },\n\n // HexadecimalFloatingPointLiteral\n { begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` +\n `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n\n // DecimalIntegerLiteral\n { begin: '\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b' },\n\n // HexIntegerLiteral\n { begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b` },\n\n // OctalIntegerLiteral\n { begin: '\\\\b0(_*[0-7])*[lL]?\\\\b' },\n\n // BinaryIntegerLiteral\n { begin: '\\\\b0[bB][01](_*[01])*[lL]?\\\\b' },\n ],\n relevance: 0\n};\n\n/*\n Language: Kotlin\n Description: Kotlin is an OSS statically typed programming language that targets the JVM, Android, JavaScript and Native.\n Author: Sergey Mashkov <cy6erGn0m@gmail.com>\n Website: https://kotlinlang.org\n Category: common\n */\n\n\nfunction kotlin(hljs) {\n const KEYWORDS = {\n keyword:\n 'abstract as val var vararg get set class object open private protected public noinline '\n + 'crossinline dynamic final enum if else do while for when throw try catch finally '\n + 'import package is in fun override companion reified inline lateinit init '\n + 'interface annotation data sealed internal infix operator out by constructor super '\n + 'tailrec where const inner suspend typealias external expect actual',\n built_in:\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n literal:\n 'true false null'\n };\n const KEYWORDS_WITH_LABEL = {\n className: 'keyword',\n begin: /\\b(break|continue|return|this)\\b/,\n starts: { contains: [\n {\n className: 'symbol',\n begin: /@\\w+/\n }\n ] }\n };\n const LABEL = {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '@'\n };\n\n // for string templates\n const SUBST = {\n className: 'subst',\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [ hljs.C_NUMBER_MODE ]\n };\n const VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE\n };\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"',\n end: '\"\"\"(?=[^\"])',\n contains: [\n VARIABLE,\n SUBST\n ]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: '\\'',\n end: '\\'',\n illegal: /\\n/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '\"',\n end: '\"',\n illegal: /\\n/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE,\n SUBST\n ]\n }\n ]\n };\n SUBST.contains.push(STRING);\n\n const ANNOTATION_USE_SITE = {\n className: 'meta',\n begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n };\n const ANNOTATION = {\n className: 'meta',\n begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n hljs.inherit(STRING, { className: 'string' }),\n \"self\"\n ]\n }\n ]\n };\n\n // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals\n // According to the doc above, the number mode of kotlin is the same as java 8,\n // so the code below is copied from java.js\n const KOTLIN_NUMBER_MODE = NUMERIC;\n const KOTLIN_NESTED_COMMENT = hljs.COMMENT(\n '/\\\\*', '\\\\*/',\n { contains: [ hljs.C_BLOCK_COMMENT_MODE ] }\n );\n const KOTLIN_PAREN_TYPE = { variants: [\n {\n className: 'type',\n begin: hljs.UNDERSCORE_IDENT_RE\n },\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [] // defined later\n }\n ] };\n const KOTLIN_PAREN_TYPE2 = KOTLIN_PAREN_TYPE;\n KOTLIN_PAREN_TYPE2.variants[1].contains = [ KOTLIN_PAREN_TYPE ];\n KOTLIN_PAREN_TYPE.variants[1].contains = [ KOTLIN_PAREN_TYPE2 ];\n\n return {\n name: 'Kotlin',\n aliases: [\n 'kt',\n 'kts'\n ],\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: 'function',\n beginKeywords: 'fun',\n end: '[(]|$',\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin: true,\n relevance: 0,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n className: 'type',\n begin: /</,\n end: />/,\n keywords: 'reified',\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/,\n end: /[=,\\/]/,\n endsWithParent: true,\n contains: [\n KOTLIN_PAREN_TYPE,\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n KOTLIN_NESTED_COMMENT\n ]\n },\n {\n begin: [\n /class|interface|trait/,\n /\\s+/,\n hljs.UNDERSCORE_IDENT_RE\n ],\n beginScope: {\n 3: \"title.class\"\n },\n keywords: 'class interface trait',\n end: /[:\\{(]|$/,\n excludeEnd: true,\n illegal: 'extends implements',\n contains: [\n { beginKeywords: 'public protected internal private constructor' },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'type',\n begin: /</,\n end: />/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type',\n begin: /[,:]\\s*/,\n end: /[<\\(,){\\s]|$/,\n excludeBegin: true,\n returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\",\n end: '$',\n illegal: '\\n'\n },\n KOTLIN_NUMBER_MODE\n ]\n };\n}\n\nexport { kotlin as default };\n","'use client';\n\nimport React, { useEffect, useState, useCallback, useRef } from 'react';\nimport { marked } from 'marked';\nimport hljs from 'highlight.js/lib/core';\n// Import only common languages for AI chat\nimport javascript from 'highlight.js/lib/languages/javascript';\nimport typescript from 'highlight.js/lib/languages/typescript';\nimport python from 'highlight.js/lib/languages/python';\nimport json from 'highlight.js/lib/languages/json';\nimport bash from 'highlight.js/lib/languages/bash';\nimport shell from 'highlight.js/lib/languages/shell';\nimport css from 'highlight.js/lib/languages/css';\nimport xml from 'highlight.js/lib/languages/xml';\nimport markdown from 'highlight.js/lib/languages/markdown';\nimport sql from 'highlight.js/lib/languages/sql';\nimport yaml from 'highlight.js/lib/languages/yaml';\nimport rust from 'highlight.js/lib/languages/rust';\nimport go from 'highlight.js/lib/languages/go';\nimport java from 'highlight.js/lib/languages/java';\nimport cpp from 'highlight.js/lib/languages/cpp';\nimport csharp from 'highlight.js/lib/languages/csharp';\nimport php from 'highlight.js/lib/languages/php';\nimport ruby from 'highlight.js/lib/languages/ruby';\nimport swift from 'highlight.js/lib/languages/swift';\nimport kotlin from 'highlight.js/lib/languages/kotlin';\nimport { tokens } from '../styles';\n\n// Register languages\nhljs.registerLanguage('javascript', javascript);\nhljs.registerLanguage('js', javascript);\nhljs.registerLanguage('typescript', typescript);\nhljs.registerLanguage('ts', typescript);\nhljs.registerLanguage('python', python);\nhljs.registerLanguage('py', python);\nhljs.registerLanguage('json', json);\nhljs.registerLanguage('bash', bash);\nhljs.registerLanguage('sh', bash);\nhljs.registerLanguage('shell', shell);\nhljs.registerLanguage('css', css);\nhljs.registerLanguage('xml', xml);\nhljs.registerLanguage('html', xml);\nhljs.registerLanguage('markdown', markdown);\nhljs.registerLanguage('md', markdown);\nhljs.registerLanguage('sql', sql);\nhljs.registerLanguage('yaml', yaml);\nhljs.registerLanguage('yml', yaml);\nhljs.registerLanguage('rust', rust);\nhljs.registerLanguage('go', go);\nhljs.registerLanguage('java', java);\nhljs.registerLanguage('cpp', cpp);\nhljs.registerLanguage('c', cpp);\nhljs.registerLanguage('csharp', csharp);\nhljs.registerLanguage('cs', csharp);\nhljs.registerLanguage('php', php);\nhljs.registerLanguage('ruby', ruby);\nhljs.registerLanguage('rb', ruby);\nhljs.registerLanguage('swift', swift);\nhljs.registerLanguage('kotlin', kotlin);\nhljs.registerLanguage('kt', kotlin);\n\n/**\n * MarkdownContent - Renders markdown using marked + highlight.js\n *\n * Uses marked for markdown parsing (lightweight, reliable)\n * Uses highlight.js for code block syntax highlighting\n * Adds copy and \"Open in Emblem AI\" buttons to code blocks\n */\nexport interface MarkdownContentProps {\n content: string;\n className?: string;\n}\n\n/**\n * Container styles\n */\nconst containerStyle: React.CSSProperties = {\n fontFamily: tokens.typography.fontFamily,\n fontSize: tokens.typography.fontSizeMd,\n lineHeight: 1.5,\n color: 'inherit',\n wordBreak: 'break-word',\n};\n\n/**\n * Scoped CSS for markdown content + highlight.js dark theme\n */\nconst scopedStyles = `\n.hljs-md p {\n margin: 0 0 0.5em 0;\n}\n.hljs-md p:last-child {\n margin-bottom: 0;\n}\n.hljs-md ul,\n.hljs-md ol {\n margin: 0.25em 0 0.5em 0;\n padding-left: 1.5em;\n}\n.hljs-md li {\n margin: 0.1em 0;\n line-height: 1.4;\n}\n.hljs-md li > p {\n margin: 0;\n display: inline;\n}\n.hljs-md li > ul,\n.hljs-md li > ol {\n margin: 0.1em 0;\n}\n.hljs-md .code-block-wrapper {\n position: relative;\n margin: 0.5em 0;\n}\n.hljs-md .code-block-wrapper pre {\n position: relative;\n margin: 0;\n padding: 0.75em 1em;\n border-radius: 6px;\n background: #1e1e1e;\n overflow-x: auto;\n}\n.hljs-md .code-block-toolbar {\n position: absolute;\n top: 6px;\n right: 6px;\n display: flex;\n gap: 4px;\n z-index: 10;\n}\n.hljs-md .code-block-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n padding: 0;\n background: #2d2d2d;\n border: 1px solid #404040;\n border-radius: 4px;\n color: #888;\n cursor: pointer;\n transition: all 0.15s ease;\n opacity: 0.7;\n}\n.hljs-md .code-block-wrapper:hover .code-block-btn {\n opacity: 1;\n}\n.hljs-md .code-block-btn:hover {\n background: #3d3d3d;\n border-color: #555;\n color: #ccc;\n}\n.hljs-md .code-block-btn.copied {\n color: ${tokens.colors.accentSuccess};\n}\n.hljs-md code {\n font-family: ${tokens.typography.fontFamilyMono};\n font-size: 0.9em;\n}\n.hljs-md :not(pre) > code {\n padding: 0.15em 0.4em;\n border-radius: 4px;\n background: rgba(255, 255, 255, 0.1);\n}\n.hljs-md pre code {\n padding: 0;\n background: transparent;\n font-size: 0.875em;\n line-height: 1.5;\n}\n.hljs-md h1, .hljs-md h2, .hljs-md h3, .hljs-md h4 {\n margin: 0.5em 0 0.25em 0;\n font-weight: 600;\n line-height: 1.3;\n}\n.hljs-md h1:first-child, .hljs-md h2:first-child, .hljs-md h3:first-child {\n margin-top: 0;\n}\n.hljs-md h1 { font-size: 1.5em; }\n.hljs-md h2 { font-size: 1.25em; }\n.hljs-md h3 { font-size: 1.1em; }\n.hljs-md h4 { font-size: 1em; }\n.hljs-md blockquote {\n margin: 0.5em 0;\n padding: 0.5em 0 0.5em 1em;\n border-left: 3px solid ${tokens.colors.borderSecondary};\n color: ${tokens.colors.textSecondary};\n}\n.hljs-md a {\n color: ${tokens.colors.accentPrimary};\n text-decoration: underline;\n}\n.hljs-md hr {\n margin: 1em 0;\n border: none;\n border-top: 1px solid ${tokens.colors.borderSecondary};\n}\n.hljs-md table {\n width: 100%;\n margin: 0.5em 0;\n border-collapse: collapse;\n}\n.hljs-md th, .hljs-md td {\n padding: 0.5em;\n border: 1px solid ${tokens.colors.borderPrimary};\n text-align: left;\n}\n.hljs-md th {\n font-weight: 600;\n background: rgba(255, 255, 255, 0.05);\n}\n\n/* highlight.js dark theme (VS Code Dark+ inspired) */\n.hljs {\n color: #d4d4d4;\n background: #1e1e1e;\n}\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-title,\n.hljs-section,\n.hljs-doctag,\n.hljs-name,\n.hljs-strong {\n color: #569cd6;\n font-weight: normal;\n}\n.hljs-built_in,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link {\n color: #4ec9b0;\n}\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n color: #ce9178;\n}\n.hljs-number {\n color: #b5cea8;\n}\n.hljs-comment,\n.hljs-quote,\n.hljs-deletion {\n color: #6a9955;\n}\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attr {\n color: #9cdcfe;\n}\n.hljs-regexp,\n.hljs-selector-id,\n.hljs-selector-class {\n color: #d7ba7d;\n}\n.hljs-emphasis {\n font-style: italic;\n}\n`;\n\n// Configure marked with highlight.js\nmarked.use({\n gfm: true,\n breaks: false,\n});\n\n/**\n * Highlight code using highlight.js\n */\nfunction highlightCode(code: string, lang: string): string {\n if (lang && hljs.getLanguage(lang)) {\n try {\n return hljs.highlight(code, { language: lang }).value;\n } catch {\n // Fall through to auto-detect\n }\n }\n\n // Auto-detect language\n try {\n return hljs.highlightAuto(code).value;\n } catch {\n // Fallback to escaped plain text\n return code\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n}\n\n/**\n * Generate unique ID for code blocks\n */\nlet codeBlockCounter = 0;\nfunction generateCodeBlockId(): string {\n return `code-block-${++codeBlockCounter}`;\n}\n\n/**\n * Process markdown and highlight code blocks\n * Returns HTML with data attributes for code block content\n */\nfunction renderMarkdown(content: string): string {\n // Parse markdown to HTML\n const html = marked.parse(content, { async: false }) as string;\n\n // Find and highlight code blocks with language\n const codeBlockRegex = /<pre><code class=\"language-(\\w+)\">([\\s\\S]*?)<\\/code><\\/pre>/g;\n let result = html.replace(codeBlockRegex, (_, lang, code) => {\n const decoded = code\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&')\n .replace(/"/g, '\"');\n const highlighted = highlightCode(decoded, lang);\n const id = generateCodeBlockId();\n const encodedCode = encodeURIComponent(decoded);\n return `<div class=\"code-block-wrapper\" data-code-id=\"${id}\" data-code=\"${encodedCode}\"><pre><code class=\"hljs language-${lang}\">${highlighted}</code></pre><div class=\"code-block-toolbar\"><button class=\"code-block-btn\" data-action=\"copy\" data-code-id=\"${id}\" title=\"Copy code\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg></button><button class=\"code-block-btn\" data-action=\"emblem\" data-code-id=\"${id}\" title=\"Open in Emblem AI\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"16 18 22 12 16 6\"></polyline><polyline points=\"8 6 2 12 8 18\"></polyline></svg></button></div></div>`;\n });\n\n // Also handle code blocks without language\n const plainCodeRegex = /<pre><code>([\\s\\S]*?)<\\/code><\\/pre>/g;\n result = result.replace(plainCodeRegex, (_, code) => {\n const decoded = code\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&')\n .replace(/"/g, '\"');\n const highlighted = highlightCode(decoded, '');\n const id = generateCodeBlockId();\n const encodedCode = encodeURIComponent(decoded);\n return `<div class=\"code-block-wrapper\" data-code-id=\"${id}\" data-code=\"${encodedCode}\"><pre><code class=\"hljs\">${highlighted}</code></pre><div class=\"code-block-toolbar\"><button class=\"code-block-btn\" data-action=\"copy\" data-code-id=\"${id}\" title=\"Copy code\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg></button><button class=\"code-block-btn\" data-action=\"emblem\" data-code-id=\"${id}\" title=\"Open in Emblem AI\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"16 18 22 12 16 6\"></polyline><polyline points=\"8 6 2 12 8 18\"></polyline></svg></button></div></div>`;\n });\n\n return result;\n}\n\nexport function MarkdownContent({ content, className }: MarkdownContentProps) {\n const [rendered, setRendered] = useState<string>('');\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n try {\n const html = renderMarkdown(content);\n setRendered(html);\n } catch (err) {\n console.error('[MarkdownContent] Render error:', err);\n // Fallback to escaped plain text\n setRendered(\n content\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\\n/g, '<br>')\n );\n }\n }, [content]);\n\n // Attach event handlers after render\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleClick = async (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n const button = target.closest('[data-action]') as HTMLElement;\n if (!button) return;\n\n const action = button.dataset.action;\n const codeId = button.dataset.codeId;\n if (!codeId) return;\n\n const wrapper = container.querySelector(`[data-code-id=\"${codeId}\"]`) as HTMLElement;\n if (!wrapper) return;\n\n const encodedCode = wrapper.dataset.code;\n if (!encodedCode) return;\n\n const code = decodeURIComponent(encodedCode);\n\n if (action === 'copy') {\n e.preventDefault();\n try {\n await navigator.clipboard.writeText(code);\n button.classList.add('copied');\n // Change icon to checkmark temporarily\n button.innerHTML = `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>`;\n setTimeout(() => {\n button.classList.remove('copied');\n button.innerHTML = `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\n </svg>`;\n }, 2000);\n } catch (err) {\n console.error('Failed to copy:', err);\n }\n } else if (action === 'emblem') {\n e.preventDefault();\n // Open Emblem AI with code in URL (no auto-submit)\n const url = `https://build.emblemvault.ai/?q=${encodeURIComponent(code)}`;\n window.open(url, '_blank', 'noopener,noreferrer');\n }\n };\n\n container.addEventListener('click', handleClick);\n return () => container.removeEventListener('click', handleClick);\n }, [rendered]);\n\n return (\n <>\n <style>{scopedStyles}</style>\n <div\n ref={containerRef}\n style={containerStyle}\n className={`hljs-md ${className || ''}`}\n dangerouslySetInnerHTML={{ __html: rendered }}\n />\n </>\n );\n}\n\nexport default MarkdownContent;\n","'use client';\n\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport { useHustle } from '../providers/HustleProvider';\nimport { useEmblemAuth } from '../providers/EmblemAuthProvider';\nimport { usePlugins } from '../hooks/usePlugins';\nimport { availablePlugins } from '../plugins';\nimport { tokens, presets, animations } from '../styles';\nimport { MarkdownContent } from './MarkdownContent';\nimport type { ChatMessage, StreamChunk, ToolCall, Attachment } from '../types';\n\n// ============================================================================\n// Styles using design tokens\n// ============================================================================\nconst styles = {\n // Container\n container: {\n display: 'flex',\n flexDirection: 'column' as const,\n height: '100%',\n background: tokens.colors.bgSecondary,\n borderRadius: tokens.radius.xl,\n border: `1px solid ${tokens.colors.borderPrimary}`,\n fontFamily: tokens.typography.fontFamily,\n color: tokens.colors.textPrimary,\n },\n\n // Not ready / auth required states\n placeholder: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: tokens.spacing.xxl,\n background: tokens.colors.bgSecondary,\n borderRadius: tokens.radius.xl,\n border: `1px solid ${tokens.colors.borderPrimary}`,\n },\n placeholderContent: {\n textAlign: 'center' as const,\n color: tokens.colors.textSecondary,\n },\n placeholderTitle: {\n fontSize: tokens.typography.fontSizeLg,\n fontWeight: tokens.typography.fontWeightMedium,\n marginBottom: tokens.spacing.xs,\n },\n placeholderText: {\n fontSize: tokens.typography.fontSizeSm,\n color: tokens.colors.textTertiary,\n },\n loadingSpinner: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n border: `2px solid ${tokens.colors.textTertiary}`,\n borderTopColor: 'transparent',\n borderRadius: tokens.radius.full,\n animation: 'hustle-spin 0.8s linear infinite',\n marginBottom: tokens.spacing.sm,\n },\n\n // Header - darker shade\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: `${tokens.spacing.md} ${tokens.spacing.lg}`,\n background: tokens.colors.bgPrimary,\n borderBottom: `1px solid ${tokens.colors.borderPrimary}`,\n borderRadius: `${tokens.radius.xl} ${tokens.radius.xl} 0 0`,\n },\n headerTitle: {\n fontWeight: tokens.typography.fontWeightSemibold,\n color: tokens.colors.textPrimary,\n fontSize: tokens.typography.fontSizeMd,\n },\n headerActions: {\n display: 'flex',\n alignItems: 'center',\n gap: tokens.spacing.sm,\n },\n\n // Model selector\n select: {\n fontSize: tokens.typography.fontSizeSm,\n padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,\n border: `1px solid ${tokens.colors.borderSecondary}`,\n borderRadius: tokens.radius.md,\n background: tokens.colors.bgTertiary,\n color: tokens.colors.textPrimary,\n outline: 'none',\n },\n\n // Settings button\n settingsBtn: {\n ...presets.buttonIcon,\n borderRadius: tokens.radius.md,\n } as React.CSSProperties,\n settingsBtnActive: {\n background: tokens.colors.accentPrimaryBg,\n color: tokens.colors.accentPrimary,\n },\n settingsBtnInactive: {\n color: tokens.colors.textSecondary,\n },\n\n // Settings Modal\n modalOverlay: {\n position: 'fixed' as const,\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: tokens.colors.bgOverlay,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: tokens.zIndex.modal,\n },\n modal: {\n background: tokens.colors.bgSecondary,\n borderRadius: tokens.radius.xl,\n border: `1px solid ${tokens.colors.borderPrimary}`,\n width: '100%',\n maxWidth: '440px',\n maxHeight: '90vh',\n overflow: 'auto',\n boxShadow: tokens.shadows.xl,\n },\n modalHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: `${tokens.spacing.lg} ${tokens.spacing.xl}`,\n borderBottom: `1px solid ${tokens.colors.borderPrimary}`,\n },\n modalTitle: {\n fontSize: tokens.typography.fontSizeLg,\n fontWeight: tokens.typography.fontWeightSemibold,\n color: tokens.colors.textPrimary,\n },\n modalClose: {\n background: 'transparent',\n border: 'none',\n color: tokens.colors.textTertiary,\n fontSize: '20px',\n cursor: 'pointer',\n padding: tokens.spacing.xs,\n lineHeight: 1,\n transition: `color ${tokens.transitions.fast}`,\n },\n modalBody: {\n padding: tokens.spacing.xl,\n },\n\n // Settings sections\n settingGroup: {\n marginBottom: tokens.spacing.xl,\n },\n settingLabel: {\n display: 'block',\n fontSize: tokens.typography.fontSizeMd,\n fontWeight: tokens.typography.fontWeightMedium,\n color: tokens.colors.textPrimary,\n marginBottom: tokens.spacing.xs,\n },\n settingDescription: {\n fontSize: tokens.typography.fontSizeSm,\n color: tokens.colors.textTertiary,\n marginBottom: tokens.spacing.md,\n },\n settingSelect: {\n width: '100%',\n padding: `${tokens.spacing.md} ${tokens.spacing.lg}`,\n fontSize: tokens.typography.fontSizeMd,\n background: tokens.colors.bgTertiary,\n border: `1px solid ${tokens.colors.borderSecondary}`,\n borderRadius: tokens.radius.lg,\n color: tokens.colors.textPrimary,\n outline: 'none',\n cursor: 'pointer',\n appearance: 'none' as const,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238892a4' d='M6 8L1 3h10z'/%3E%3C/svg%3E\")`,\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'right 12px center',\n paddingRight: '36px',\n },\n modelInfo: {\n fontSize: tokens.typography.fontSizeXs,\n color: tokens.colors.textTertiary,\n marginTop: tokens.spacing.sm,\n },\n\n // Toggle switch row\n toggleRow: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: `${tokens.spacing.md} ${tokens.spacing.lg}`,\n background: tokens.colors.bgTertiary,\n borderRadius: tokens.radius.lg,\n marginBottom: tokens.spacing.sm,\n },\n toggleLabel: {\n fontSize: tokens.typography.fontSizeMd,\n color: tokens.colors.textPrimary,\n },\n toggleSwitch: {\n position: 'relative' as const,\n width: '44px',\n height: '24px',\n background: tokens.colors.borderSecondary,\n borderRadius: '12px',\n cursor: 'pointer',\n transition: `background ${tokens.transitions.fast}`,\n },\n toggleSwitchActive: {\n background: tokens.colors.accentPrimary,\n },\n toggleKnob: {\n position: 'absolute' as const,\n top: '2px',\n left: '2px',\n width: '20px',\n height: '20px',\n background: tokens.colors.textPrimary,\n borderRadius: tokens.radius.full,\n transition: `transform ${tokens.transitions.fast}`,\n },\n toggleKnobActive: {\n transform: 'translateX(20px)',\n },\n\n // Settings textarea\n settingTextarea: {\n width: '100%',\n minHeight: '100px',\n padding: tokens.spacing.lg,\n fontSize: tokens.typography.fontSizeMd,\n background: tokens.colors.bgTertiary,\n border: `1px solid ${tokens.colors.borderSecondary}`,\n borderRadius: tokens.radius.lg,\n color: tokens.colors.textPrimary,\n outline: 'none',\n resize: 'vertical' as const,\n fontFamily: tokens.typography.fontFamily,\n },\n\n // Messages area\n messagesArea: {\n flex: 1,\n overflowY: 'auto' as const,\n padding: tokens.spacing.lg,\n background: tokens.colors.bgSecondary,\n },\n messagesEmpty: {\n textAlign: 'center' as const,\n color: tokens.colors.textTertiary,\n padding: tokens.spacing.xxl,\n },\n messagesContainer: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: tokens.spacing.lg,\n },\n\n // Tool calls indicator\n toolCallsIndicator: {\n display: 'flex',\n flexWrap: 'wrap' as const,\n gap: tokens.spacing.sm,\n padding: `0 ${tokens.spacing.lg}`,\n },\n toolCallBadge: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: tokens.spacing.xs,\n padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,\n fontSize: tokens.typography.fontSizeXs,\n background: tokens.colors.accentWarningBg,\n color: tokens.colors.accentWarning,\n borderRadius: tokens.radius.pill,\n },\n toolCallDot: {\n width: '8px',\n height: '8px',\n background: tokens.colors.accentWarning,\n borderRadius: tokens.radius.full,\n animation: 'hustle-pulse 1s ease-in-out infinite',\n },\n\n // Attachments preview\n attachmentsPreview: {\n padding: `${tokens.spacing.sm} ${tokens.spacing.lg}`,\n borderTop: `1px solid ${tokens.colors.borderPrimary}`,\n display: 'flex',\n flexWrap: 'wrap' as const,\n gap: tokens.spacing.sm,\n },\n attachmentItem: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: tokens.spacing.xs,\n padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,\n background: tokens.colors.bgTertiary,\n borderRadius: tokens.radius.md,\n fontSize: tokens.typography.fontSizeSm,\n },\n attachmentName: {\n maxWidth: '100px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap' as const,\n },\n attachmentRemove: {\n background: 'none',\n border: 'none',\n color: tokens.colors.textTertiary,\n cursor: 'pointer',\n fontSize: '14px',\n padding: 0,\n lineHeight: 1,\n },\n\n // Input area - slightly darker than messages\n inputArea: {\n padding: tokens.spacing.lg,\n background: tokens.colors.bgPrimary,\n borderTop: `1px solid ${tokens.colors.borderPrimary}`,\n borderRadius: `0 0 ${tokens.radius.xl} ${tokens.radius.xl}`,\n },\n inputRow: {\n display: 'flex',\n alignItems: 'center',\n gap: tokens.spacing.sm,\n },\n inputContainer: {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n background: tokens.colors.bgTertiary,\n border: `1px solid ${tokens.colors.borderSecondary}`,\n borderRadius: tokens.radius.lg,\n overflow: 'hidden',\n },\n attachBtn: {\n width: '40px',\n height: '40px',\n padding: 0,\n background: 'transparent',\n border: 'none',\n borderRadius: 0,\n color: tokens.colors.textTertiary,\n flexShrink: 0,\n } as React.CSSProperties,\n inputWrapper: {\n flex: 1,\n },\n input: {\n width: '100%',\n padding: `${tokens.spacing.md} ${tokens.spacing.sm}`,\n background: 'transparent',\n border: 'none',\n color: tokens.colors.textPrimary,\n fontSize: tokens.typography.fontSizeMd,\n outline: 'none',\n resize: 'none' as const,\n } as React.CSSProperties,\n inputDisabled: {\n background: tokens.colors.bgTertiary,\n cursor: 'not-allowed',\n },\n sendBtn: {\n // Inherits global button styles from CSS\n height: '40px',\n padding: `0 ${tokens.spacing.lg}`,\n fontWeight: tokens.typography.fontWeightMedium,\n } as React.CSSProperties,\n sendBtnDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n sendSpinner: {\n display: 'inline-block',\n width: '16px',\n height: '16px',\n border: '2px solid currentColor',\n borderTopColor: 'transparent',\n borderRadius: tokens.radius.full,\n animation: 'hustle-spin 0.8s linear infinite',\n },\n\n // Error display\n errorBox: {\n marginTop: tokens.spacing.sm,\n padding: `${tokens.spacing.sm} ${tokens.spacing.md}`,\n background: tokens.colors.accentErrorBg,\n color: tokens.colors.accentError,\n fontSize: tokens.typography.fontSizeSm,\n borderRadius: tokens.radius.md,\n },\n\n // Message bubbles\n messageBubbleContainer: {\n display: 'flex',\n },\n messageBubbleUser: {\n justifyContent: 'flex-end',\n },\n messageBubbleAssistant: {\n justifyContent: 'flex-start',\n },\n messageBubble: {\n maxWidth: '80%',\n padding: `${tokens.spacing.sm} ${tokens.spacing.lg}`,\n borderRadius: tokens.radius.lg,\n },\n messageBubbleUserStyle: {\n background: tokens.colors.msgUser,\n color: tokens.colors.textPrimary,\n },\n messageBubbleAssistantStyle: {\n background: tokens.colors.msgAssistant,\n color: tokens.colors.textPrimary,\n },\n messageBubbleSystemStyle: {\n background: tokens.colors.bgTertiary,\n color: tokens.colors.textSecondary,\n fontSize: tokens.typography.fontSizeSm,\n fontStyle: 'italic' as const,\n },\n messageContent: {\n whiteSpace: 'pre-wrap' as const,\n wordBreak: 'break-word' as const,\n lineHeight: tokens.typography.lineHeightRelaxed,\n },\n streamingCursor: {\n display: 'inline-block',\n width: '2px',\n height: '16px',\n marginLeft: tokens.spacing.xs,\n background: 'currentColor',\n animation: 'hustle-pulse 0.8s ease-in-out infinite',\n },\n\n // Tool calls debug\n toolCallsDebug: {\n marginTop: tokens.spacing.sm,\n paddingTop: tokens.spacing.sm,\n borderTop: `1px solid ${tokens.colors.borderSecondary}`,\n fontSize: tokens.typography.fontSizeXs,\n },\n toolCallsDebugTitle: {\n fontWeight: tokens.typography.fontWeightMedium,\n color: tokens.colors.textSecondary,\n marginBottom: tokens.spacing.xs,\n },\n toolCallDebugItem: {\n background: 'rgba(255,255,255,0.05)',\n borderRadius: tokens.radius.sm,\n padding: tokens.spacing.xs,\n marginTop: tokens.spacing.xs,\n },\n toolCallDebugName: {\n ...presets.mono,\n } as React.CSSProperties,\n toolCallDebugArgs: {\n ...presets.mono,\n marginTop: tokens.spacing.xs,\n fontSize: '10px',\n overflow: 'auto',\n } as React.CSSProperties,\n\n // Plugin management styles\n settingDivider: {\n height: '1px',\n background: tokens.colors.borderPrimary,\n margin: `${tokens.spacing.xl} 0`,\n },\n\n pluginList: {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: tokens.spacing.sm,\n },\n\n pluginRow: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: `${tokens.spacing.md} ${tokens.spacing.lg}`,\n background: tokens.colors.bgTertiary,\n borderRadius: tokens.radius.lg,\n },\n\n pluginInfo: {\n display: 'flex',\n alignItems: 'center',\n gap: tokens.spacing.md,\n flex: 1,\n minWidth: 0,\n },\n\n pluginIcon: {\n fontSize: '20px',\n flexShrink: 0,\n },\n\n pluginDetails: {\n flex: 1,\n minWidth: 0,\n },\n\n pluginName: {\n display: 'block',\n fontWeight: tokens.typography.fontWeightMedium,\n color: tokens.colors.textPrimary,\n whiteSpace: 'nowrap' as const,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n\n pluginMeta: {\n display: 'block',\n fontSize: tokens.typography.fontSizeXs,\n color: tokens.colors.textTertiary,\n },\n\n pluginEmpty: {\n padding: tokens.spacing.lg,\n textAlign: 'center' as const,\n color: tokens.colors.textTertiary,\n fontSize: tokens.typography.fontSizeSm,\n },\n\n availablePluginsHeader: {\n fontSize: tokens.typography.fontSizeXs,\n fontWeight: tokens.typography.fontWeightSemibold,\n color: tokens.colors.textSecondary,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.5px',\n marginTop: tokens.spacing.lg,\n marginBottom: tokens.spacing.sm,\n },\n\n installBtn: {\n padding: `${tokens.spacing.xs} ${tokens.spacing.md}`,\n fontSize: tokens.typography.fontSizeSm,\n background: 'transparent',\n border: `1px solid ${tokens.colors.accentPrimary}`,\n borderRadius: tokens.radius.md,\n color: tokens.colors.accentPrimary,\n cursor: 'pointer',\n transition: `all ${tokens.transitions.fast}`,\n whiteSpace: 'nowrap' as const,\n } as React.CSSProperties,\n\n uninstallBtn: {\n padding: `${tokens.spacing.xs} ${tokens.spacing.md}`,\n fontSize: tokens.typography.fontSizeSm,\n background: 'transparent',\n border: `1px solid ${tokens.colors.accentError}`,\n borderRadius: tokens.radius.md,\n color: tokens.colors.accentError,\n cursor: 'pointer',\n transition: `all ${tokens.transitions.fast}`,\n whiteSpace: 'nowrap' as const,\n } as React.CSSProperties,\n};\n\n/**\n * Props for HustleChat component\n */\nexport interface HustleChatProps {\n /** Additional CSS classes */\n className?: string;\n /** Placeholder text for input */\n placeholder?: string;\n /** Show settings button (opens modal with model selector, prompts, etc.) */\n showSettings?: boolean;\n /** Show debug info */\n showDebug?: boolean;\n /** Initial system prompt */\n initialSystemPrompt?: string;\n /** Callback when message is sent */\n onMessage?: (message: ChatMessage) => void;\n /** Callback when tool is called */\n onToolCall?: (toolCall: ToolCall) => void;\n /** Callback when response is received */\n onResponse?: (content: string) => void;\n}\n\n/**\n * Internal message type for display\n */\ninterface DisplayMessage extends ChatMessage {\n id: string;\n isStreaming?: boolean;\n toolCalls?: ToolCall[];\n}\n\n/**\n * Generate unique ID\n */\nfunction generateId(): string {\n return `msg-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\n/**\n * HustleChat - Complete streaming chat interface\n *\n * @example Basic usage\n * ```tsx\n * <HustleChat />\n * ```\n *\n * @example With settings modal\n * ```tsx\n * <HustleChat\n * showSettings\n * placeholder=\"Ask me anything...\"\n * onMessage={(msg) => console.log('Sent:', msg)}\n * />\n * ```\n */\nexport function HustleChat({\n className = '',\n placeholder = 'Type a message...',\n showSettings = false,\n showDebug = false,\n initialSystemPrompt = '',\n onMessage,\n onToolCall,\n onResponse,\n}: HustleChatProps) {\n const { isAuthenticated } = useEmblemAuth();\n const {\n instanceId,\n isReady,\n isLoading,\n error,\n models,\n chatStream,\n uploadFile,\n selectedModel,\n setSelectedModel,\n systemPrompt,\n setSystemPrompt,\n skipServerPrompt,\n setSkipServerPrompt,\n } = useHustle();\n const {\n plugins,\n registerPlugin,\n unregisterPlugin,\n enablePlugin,\n disablePlugin,\n } = usePlugins(instanceId);\n\n // Local state\n const [messages, setMessages] = useState<DisplayMessage[]>([]);\n const [inputValue, setInputValue] = useState('');\n const [isStreaming, setIsStreaming] = useState(false);\n const [attachments, setAttachments] = useState<Attachment[]>([]);\n const [currentToolCalls, setCurrentToolCalls] = useState<ToolCall[]>([]);\n const [showSettingsPanel, setShowSettingsPanel] = useState(false);\n\n // Refs\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // Set initial system prompt\n useEffect(() => {\n if (initialSystemPrompt && !systemPrompt) {\n setSystemPrompt(initialSystemPrompt);\n }\n }, [initialSystemPrompt, systemPrompt, setSystemPrompt]);\n\n // Scroll to bottom when messages change\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });\n }, [messages]);\n\n /**\n * Handle file upload\n */\n const handleFileSelect = useCallback(\n async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (!files || files.length === 0) return;\n\n for (const file of Array.from(files)) {\n try {\n const attachment = await uploadFile(file);\n setAttachments(prev => [...prev, attachment]);\n } catch (err) {\n console.error('Upload failed:', err);\n }\n }\n\n // Reset file input\n if (fileInputRef.current) {\n fileInputRef.current.value = '';\n }\n },\n [uploadFile]\n );\n\n /**\n * Remove an attachment\n */\n const removeAttachment = useCallback((index: number) => {\n setAttachments(prev => prev.filter((_, i) => i !== index));\n }, []);\n\n /**\n * Send a message\n */\n const sendMessage = useCallback(async () => {\n const content = inputValue.trim();\n if (!content || isStreaming || !isReady) return;\n\n // Create user message\n const userMessage: DisplayMessage = {\n id: generateId(),\n role: 'user',\n content,\n };\n\n // Add user message to display\n setMessages(prev => [...prev, userMessage]);\n setInputValue('');\n onMessage?.(userMessage);\n\n // Create assistant message placeholder\n const assistantMessage: DisplayMessage = {\n id: generateId(),\n role: 'assistant',\n content: '',\n isStreaming: true,\n toolCalls: [],\n };\n\n setMessages(prev => [...prev, assistantMessage]);\n setIsStreaming(true);\n setCurrentToolCalls([]);\n\n try {\n // Build messages array\n const chatMessages: ChatMessage[] = messages\n .filter(m => !m.isStreaming)\n .map(m => ({ role: m.role, content: m.content }));\n\n // Add current user message\n chatMessages.push({ role: 'user', content });\n\n // Stream the response\n const stream = chatStream({\n messages: chatMessages,\n attachments: attachments.length > 0 ? attachments : undefined,\n processChunks: true,\n });\n\n // Clear attachments after sending\n setAttachments([]);\n\n let fullContent = '';\n const toolCallsAccumulated: ToolCall[] = [];\n\n for await (const chunk of stream) {\n if (chunk.type === 'text') {\n fullContent += chunk.value;\n setMessages(prev =>\n prev.map(m =>\n m.id === assistantMessage.id\n ? { ...m, content: fullContent }\n : m\n )\n );\n } else if (chunk.type === 'tool_call') {\n const toolCall = chunk.value;\n toolCallsAccumulated.push(toolCall);\n setCurrentToolCalls([...toolCallsAccumulated]);\n setMessages(prev =>\n prev.map(m =>\n m.id === assistantMessage.id\n ? { ...m, toolCalls: [...toolCallsAccumulated] }\n : m\n )\n );\n onToolCall?.(toolCall);\n } else if (chunk.type === 'error') {\n console.error('Stream error:', chunk.value);\n }\n }\n\n // Finalize the message\n setMessages(prev =>\n prev.map(m =>\n m.id === assistantMessage.id\n ? { ...m, isStreaming: false, content: fullContent || '(No response)' }\n : m\n )\n );\n\n onResponse?.(fullContent);\n } catch (err) {\n console.error('Chat error:', err);\n setMessages(prev =>\n prev.map(m =>\n m.id === assistantMessage.id\n ? { ...m, isStreaming: false, content: `Error: ${err instanceof Error ? err.message : 'Unknown error'}` }\n : m\n )\n );\n } finally {\n setIsStreaming(false);\n setCurrentToolCalls([]);\n }\n }, [inputValue, isStreaming, isReady, messages, chatStream, attachments, onMessage, onToolCall, onResponse]);\n\n /**\n * Handle key press\n */\n const handleKeyPress = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n sendMessage();\n }\n },\n [sendMessage]\n );\n\n // Determine placeholder message for messages area\n const getPlaceholderMessage = () => {\n if (!isAuthenticated) {\n return 'Connect to start chatting...';\n }\n if (!isReady) {\n return 'Initializing...';\n }\n return 'Start a conversation...';\n };\n\n // Can interact with chat?\n const canChat = isAuthenticated && isReady;\n\n return (\n <>\n <style>{animations}</style>\n <div className={className} style={styles.container}>\n {/* Header */}\n <div style={styles.header}>\n <h2 style={styles.headerTitle}>Chat</h2>\n <div style={styles.headerActions}>\n {/* Selected model label */}\n {selectedModel && (\n <span style={{ fontSize: tokens.typography.fontSizeSm, color: tokens.colors.textSecondary }}>\n {selectedModel.split('/').pop()}\n </span>\n )}\n\n {/* Settings toggle */}\n {showSettings && (\n <button\n type=\"button\"\n onClick={() => setShowSettingsPanel(!showSettingsPanel)}\n style={{\n ...styles.settingsBtn,\n ...(showSettingsPanel ? styles.settingsBtnActive : styles.settingsBtnInactive),\n }}\n title=\"Settings\"\n >\n <SettingsIcon />\n </button>\n )}\n </div>\n </div>\n\n {/* Settings Modal */}\n {showSettings && showSettingsPanel && (\n <div style={styles.modalOverlay} onClick={() => setShowSettingsPanel(false)}>\n <div style={styles.modal} onClick={e => e.stopPropagation()}>\n {/* Modal Header */}\n <div style={styles.modalHeader}>\n <span style={styles.modalTitle}>Settings</span>\n <button\n type=\"button\"\n style={styles.modalClose}\n onClick={() => setShowSettingsPanel(false)}\n >\n ×\n </button>\n </div>\n\n {/* Modal Body */}\n <div style={styles.modalBody}>\n {/* Model Selection */}\n <div style={styles.settingGroup}>\n <label style={styles.settingLabel}>Model</label>\n <p style={styles.settingDescription}>Select the AI model to use for chat responses</p>\n <select\n value={selectedModel}\n onChange={e => setSelectedModel(e.target.value)}\n style={styles.settingSelect}\n >\n <option value=\"\">Default (server decides)</option>\n {(() => {\n // Group models by provider\n const grouped: Record<string, typeof models> = {};\n models.forEach(model => {\n const [provider] = model.id.split('/');\n if (!grouped[provider]) grouped[provider] = [];\n grouped[provider].push(model);\n });\n return Object.entries(grouped).map(([provider, providerModels]) => (\n <optgroup key={provider} label={provider.charAt(0).toUpperCase() + provider.slice(1)}>\n {providerModels.map(model => (\n <option key={model.id} value={model.id}>\n {model.name}\n </option>\n ))}\n </optgroup>\n ));\n })()}\n </select>\n {selectedModel && (() => {\n const model = models.find(m => m.id === selectedModel);\n if (!model) return null;\n const contextK = Math.round(model.context_length / 1000);\n const promptCost = parseFloat(model.pricing?.prompt || '0') * 1000000;\n const completionCost = parseFloat(model.pricing?.completion || '0') * 1000000;\n return (\n <div style={styles.modelInfo}>\n Context: {contextK}K tokens | Cost: ${promptCost.toFixed(2)}/${completionCost.toFixed(2)} per 1M tokens\n </div>\n );\n })()}\n </div>\n\n {/* Server System Prompt */}\n <div style={styles.settingGroup}>\n <label style={styles.settingLabel}>Server System Prompt</label>\n <div\n style={styles.toggleRow}\n onClick={() => setSkipServerPrompt(!skipServerPrompt)}\n >\n <span style={styles.toggleLabel}>Skip server-provided system prompt</span>\n <div style={{\n ...styles.toggleSwitch,\n ...(skipServerPrompt ? styles.toggleSwitchActive : {}),\n }}>\n <div style={{\n ...styles.toggleKnob,\n ...(skipServerPrompt ? styles.toggleKnobActive : {}),\n }} />\n </div>\n </div>\n <p style={styles.settingDescription}>\n When enabled, the server's default system prompt will not be used\n </p>\n </div>\n\n {/* Custom System Prompt */}\n <div style={styles.settingGroup}>\n <label style={styles.settingLabel}>Custom System Prompt</label>\n <p style={styles.settingDescription}>Provide instructions for how the AI should behave</p>\n <textarea\n value={systemPrompt}\n onChange={e => setSystemPrompt(e.target.value)}\n placeholder=\"You are a helpful assistant...\"\n style={styles.settingTextarea}\n />\n </div>\n\n {/* Divider */}\n <div style={styles.settingDivider} />\n\n {/* Plugins Section */}\n <div style={{ ...styles.settingGroup, marginBottom: 0 }}>\n <label style={styles.settingLabel}>Plugins</label>\n <p style={styles.settingDescription}>Extend the AI with custom tools</p>\n\n {/* Installed plugins */}\n {plugins.length > 0 ? (\n <div style={styles.pluginList}>\n {plugins.map(plugin => (\n <div key={plugin.name} style={styles.pluginRow}>\n <div style={styles.pluginInfo}>\n <span style={styles.pluginIcon}>{plugin.enabled ? '🔌' : '⚪'}</span>\n <div style={styles.pluginDetails}>\n <span style={styles.pluginName}>{plugin.name}</span>\n <span style={styles.pluginMeta}>\n v{plugin.version} • {plugin.tools?.length || 0} tools\n </span>\n </div>\n </div>\n <div style={{ display: 'flex', gap: tokens.spacing.sm }}>\n <div\n style={{\n ...styles.toggleSwitch,\n ...(plugin.enabled ? styles.toggleSwitchActive : {}),\n }}\n onClick={() => plugin.enabled\n ? disablePlugin(plugin.name)\n : enablePlugin(plugin.name)\n }\n >\n <div style={{\n ...styles.toggleKnob,\n ...(plugin.enabled ? styles.toggleKnobActive : {}),\n }} />\n </div>\n <button\n type=\"button\"\n style={styles.uninstallBtn}\n onClick={() => unregisterPlugin(plugin.name)}\n >\n Remove\n </button>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div style={styles.pluginEmpty}>\n No plugins installed\n </div>\n )}\n\n {/* Available plugins */}\n {availablePlugins.filter(p => !plugins.some(installed => installed.name === p.name)).length > 0 && (\n <>\n <div style={styles.availablePluginsHeader}>Available</div>\n <div style={styles.pluginList}>\n {availablePlugins\n .filter(p => !plugins.some(installed => installed.name === p.name))\n .map(plugin => (\n <div key={plugin.name} style={styles.pluginRow}>\n <div style={styles.pluginInfo}>\n <span style={styles.pluginIcon}>📦</span>\n <div style={styles.pluginDetails}>\n <span style={styles.pluginName}>{plugin.name}</span>\n <span style={styles.pluginMeta}>{plugin.description}</span>\n </div>\n </div>\n <button\n type=\"button\"\n style={styles.installBtn}\n onClick={() => registerPlugin(plugin)}\n >\n + Install\n </button>\n </div>\n ))}\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Messages area */}\n <div style={styles.messagesArea}>\n {messages.length === 0 && (\n <div style={styles.messagesEmpty}>\n <p>{getPlaceholderMessage()}</p>\n </div>\n )}\n\n <div style={styles.messagesContainer}>\n {messages.map(message => (\n <MessageBubble\n key={message.id}\n message={message}\n showDebug={showDebug}\n />\n ))}\n </div>\n\n {/* Current tool calls indicator */}\n {currentToolCalls.length > 0 && (\n <div style={styles.toolCallsIndicator}>\n {currentToolCalls.map(tool => (\n <span key={tool.toolCallId} style={styles.toolCallBadge}>\n <span style={styles.toolCallDot} />\n {tool.toolName}\n </span>\n ))}\n </div>\n )}\n\n <div ref={messagesEndRef} />\n </div>\n\n {/* Attachments preview */}\n {attachments.length > 0 && (\n <div style={styles.attachmentsPreview}>\n {attachments.map((att, index) => (\n <div key={index} style={styles.attachmentItem}>\n <span style={styles.attachmentName}>{att.name}</span>\n <button\n type=\"button\"\n onClick={() => removeAttachment(index)}\n style={styles.attachmentRemove}\n >\n ×\n </button>\n </div>\n ))}\n </div>\n )}\n\n {/* Input area */}\n <div style={styles.inputArea}>\n <div style={styles.inputRow}>\n {/* Input container with attached file button */}\n <div style={styles.inputContainer}>\n <button\n type=\"button\"\n onClick={() => fileInputRef.current?.click()}\n style={styles.attachBtn}\n title=\"Attach file\"\n >\n <AttachIcon />\n </button>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n multiple\n onChange={handleFileSelect}\n style={{ display: 'none' }}\n />\n <div style={styles.inputWrapper}>\n <textarea\n value={inputValue}\n onChange={e => setInputValue(e.target.value)}\n onKeyPress={handleKeyPress}\n placeholder={placeholder}\n disabled={!canChat || isStreaming || isLoading}\n rows={1}\n style={{\n ...styles.input,\n ...(!canChat || isStreaming || isLoading ? styles.inputDisabled : {}),\n }}\n />\n </div>\n </div>\n\n {/* Send button */}\n <button\n type=\"button\"\n onClick={sendMessage}\n disabled={!canChat || !inputValue.trim() || isStreaming || isLoading}\n style={{\n ...styles.sendBtn,\n ...(!canChat || !inputValue.trim() || isStreaming || isLoading\n ? styles.sendBtnDisabled\n : {}),\n }}\n >\n {isStreaming ? (\n <span style={styles.sendSpinner} />\n ) : (\n 'Send'\n )}\n </button>\n </div>\n\n {/* Error display */}\n {error && (\n <div style={styles.errorBox}>\n {error.message}\n </div>\n )}\n </div>\n </div>\n </>\n );\n}\n\n/**\n * Message bubble component\n */\ninterface MessageBubbleProps {\n message: DisplayMessage;\n showDebug?: boolean;\n}\n\nfunction MessageBubble({ message, showDebug }: MessageBubbleProps) {\n const isUser = message.role === 'user';\n const isSystem = message.role === 'system';\n\n const containerStyle = {\n ...styles.messageBubbleContainer,\n ...(isUser ? styles.messageBubbleUser : styles.messageBubbleAssistant),\n };\n\n const bubbleStyle = {\n ...styles.messageBubble,\n ...(isUser\n ? styles.messageBubbleUserStyle\n : isSystem\n ? styles.messageBubbleSystemStyle\n : styles.messageBubbleAssistantStyle),\n };\n\n return (\n <div style={containerStyle}>\n <div style={bubbleStyle}>\n {/* Message content */}\n <div style={styles.messageContent}>\n {isUser || isSystem ? (\n // User and system messages: plain text\n message.content\n ) : (\n // Assistant messages: render markdown\n <MarkdownContent content={message.content} />\n )}\n {message.isStreaming && (\n <span style={styles.streamingCursor} />\n )}\n </div>\n\n {/* Tool calls (debug mode) */}\n {showDebug && message.toolCalls && message.toolCalls.length > 0 && (\n <div style={styles.toolCallsDebug}>\n <div style={styles.toolCallsDebugTitle}>Tool calls:</div>\n {message.toolCalls.map(tool => (\n <div key={tool.toolCallId} style={styles.toolCallDebugItem}>\n <span style={styles.toolCallDebugName}>{tool.toolName}</span>\n {tool.args && (\n <pre style={styles.toolCallDebugArgs}>\n {JSON.stringify(tool.args, null, 2)}\n </pre>\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n\n/**\n * Settings icon\n */\nfunction SettingsIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n );\n}\n\n/**\n * Attach icon\n */\nfunction AttachIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\" />\n </svg>\n );\n}\n\nexport default HustleChat;\n","/**\n * Utility functions for Emblem Auth + Hustle SDK integration\n */\n\n/**\n * Truncate a wallet address for display\n * @example truncateAddress('0x1234567890abcdef1234567890abcdef12345678') => '0x1234...5678'\n */\nexport function truncateAddress(address: string, startChars = 6, endChars = 4): string {\n if (!address) return '';\n if (address.length <= startChars + endChars) return address;\n return `${address.slice(0, startChars)}...${address.slice(-endChars)}`;\n}\n\n/**\n * Copy text to clipboard\n * @returns true if successful, false otherwise\n */\nexport async function copyToClipboard(text: string): Promise<boolean> {\n try {\n await navigator.clipboard.writeText(text);\n return true;\n } catch {\n // Fallback for older browsers\n try {\n const textarea = document.createElement('textarea');\n textarea.value = text;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n const success = document.execCommand('copy');\n document.body.removeChild(textarea);\n return success;\n } catch {\n return false;\n }\n }\n}\n\n/**\n * Generate a unique ID\n */\nexport function generateId(prefix = 'id'): string {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\n/**\n * Decode JWT payload (without verification)\n * @returns Decoded payload object or null if invalid\n */\nexport function decodeJwtPayload(token: string): Record<string, unknown> | null {\n try {\n const parts = token.split('.');\n if (parts.length !== 3) return null;\n const payload = JSON.parse(atob(parts[1]));\n return payload;\n } catch {\n return null;\n }\n}\n\n/**\n * Check if a JWT is expired\n * @returns true if expired or invalid, false if valid\n */\nexport function isJwtExpired(token: string): boolean {\n const payload = decodeJwtPayload(token);\n if (!payload || typeof payload.exp !== 'number') return true;\n return Date.now() >= payload.exp * 1000;\n}\n\n/**\n * Format file size for display\n * @example formatFileSize(1024) => '1 KB'\n */\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;\n}\n\n/**\n * Create a debounced function\n */\nexport function debounce<T extends (...args: unknown[]) => unknown>(\n fn: T,\n delay: number\n): (...args: Parameters<T>) => void {\n let timeoutId: ReturnType<typeof setTimeout>;\n return (...args: Parameters<T>) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n}\n\n/**\n * Storage keys for persistence\n */\nexport const STORAGE_KEYS = {\n AUTH_SESSION: 'emblem_auth_session',\n HUSTLE_SETTINGS: 'hustle_settings',\n CHAT_HISTORY: 'hustle_chat_history',\n PLUGINS: 'hustle-plugins',\n} as const;\n\n/**\n * Default configuration values\n */\nexport const DEFAULTS = {\n HUSTLE_API_URL: 'https://agenthustle.ai',\n EMBLEM_API_URL: 'https://api.emblemvault.ai',\n EMBLEM_MODAL_URL: 'https://emblemvault.ai/connect',\n} as const;\n\n// Plugin registry\nexport {\n pluginRegistry,\n hydratePlugin,\n} from './pluginRegistry';\n"]}
|