highlight.min.js 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927
  1. /*!
  2. Highlight.js v11.11.1 (git: 08cb242e7d)
  3. (c) 2006-2025 Josh Goebel <hello@joshgoebel.com> and other contributors
  4. License: BSD-3-Clause
  5. */
  6. var hljs = function () {
  7. "use strict"; function e (t) {
  8. return t instanceof Map ? t.clear = t.delete = t.set = () => {
  9. throw Error("map is read-only")
  10. } : t instanceof Set && (t.add = t.clear = t.delete = () => {
  11. throw Error("set is read-only")
  12. }), Object.freeze(t), Object.getOwnPropertyNames(t).forEach((n => {
  13. const i = t[n], s = typeof i; "object" !== s && "function" !== s || Object.isFrozen(i) || e(i)
  14. })), t
  15. } class t {
  16. constructor(e) {
  17. void 0 === e.data && (e.data = {}), this.data = e.data, this.isMatchIgnored = !1
  18. }
  19. ignoreMatch () { this.isMatchIgnored = !0 }
  20. } function n (e) {
  21. return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#x27;")
  22. } function i (e, ...t) {
  23. const n = Object.create(null); for (const t in e) n[t] = e[t]
  24. ; return t.forEach((e => { for (const t in e) n[t] = e[t] })), n
  25. } const s = e => !!e.scope
  26. ; class r {
  27. constructor(e, t) {
  28. this.buffer = "", this.classPrefix = t.classPrefix, e.walk(this)
  29. } addText (e) {
  30. this.buffer += n(e)
  31. } openNode (e) {
  32. if (!s(e)) return; const t = ((e, { prefix: t }) => {
  33. if (e.startsWith("language:")) return e.replace("language:", "language-")
  34. ; if (e.includes(".")) {
  35. const n = e.split(".")
  36. ; return [`${t}${n.shift()}`, ...n.map(((e, t) => `${e}${"_".repeat(t + 1)}`))].join(" ")
  37. } return `${t}${e}`
  38. })(e.scope, { prefix: this.classPrefix }); this.span(t)
  39. }
  40. closeNode (e) { s(e) && (this.buffer += "</span>") } value () { return this.buffer } span (e) {
  41. this.buffer += `<span class="${e}">`
  42. }
  43. } const o = (e = {}) => {
  44. const t = { children: [] }
  45. ; return Object.assign(t, e), t
  46. }; class a {
  47. constructor() {
  48. this.rootNode = o(), this.stack = [this.rootNode]
  49. } get top () {
  50. return this.stack[this.stack.length - 1]
  51. } get root () { return this.rootNode } add (e) {
  52. this.top.children.push(e)
  53. } openNode (e) {
  54. const t = o({ scope: e })
  55. ; this.add(t), this.stack.push(t)
  56. } closeNode () {
  57. if (this.stack.length > 1) return this.stack.pop()
  58. } closeAllNodes () {
  59. for (; this.closeNode(););
  60. } toJSON () { return JSON.stringify(this.rootNode, null, 4) }
  61. walk (e) { return this.constructor._walk(e, this.rootNode) } static _walk (e, t) {
  62. return "string" == typeof t ? e.addText(t) : t.children && (e.openNode(t),
  63. t.children.forEach((t => this._walk(e, t))), e.closeNode(t)), e
  64. } static _collapse (e) {
  65. "string" != typeof e && e.children && (e.children.every((e => "string" == typeof e)) ? e.children = [e.children.join("")] : e.children.forEach((e => {
  66. a._collapse(e)
  67. })))
  68. }
  69. } class c extends a {
  70. constructor(e) { super(), this.options = e }
  71. addText (e) { "" !== e && this.add(e) } startScope (e) { this.openNode(e) } endScope () {
  72. this.closeNode()
  73. } __addSublanguage (e, t) {
  74. const n = e.root
  75. ; t && (n.scope = "language:" + t), this.add(n)
  76. } toHTML () {
  77. return new r(this, this.options).value()
  78. } finalize () {
  79. return this.closeAllNodes(), !0
  80. }
  81. } function l (e) {
  82. return e ? "string" == typeof e ? e : e.source : null
  83. } function g (e) { return h("(?=", e, ")") }
  84. function u (e) { return h("(?:", e, ")*") } function d (e) { return h("(?:", e, ")?") }
  85. function h (...e) { return e.map((e => l(e))).join("") } function f (...e) {
  86. const t = (e => {
  87. const t = e[e.length - 1]
  88. ; return "object" == typeof t && t.constructor === Object ? (e.splice(e.length - 1, 1), t) : {}
  89. })(e); return "(" + (t.capture ? "" : "?:") + e.map((e => l(e))).join("|") + ")"
  90. }
  91. function p (e) { return RegExp(e.toString() + "|").exec("").length - 1 }
  92. const b = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
  93. ; function m (e, { joinWith: t }) {
  94. let n = 0; return e.map((e => {
  95. n += 1; const t = n
  96. ; let i = l(e), s = ""; for (; i.length > 0;) {
  97. const e = b.exec(i); if (!e) { s += i; break }
  98. s += i.substring(0, e.index),
  99. i = i.substring(e.index + e[0].length), "\\" === e[0][0] && e[1] ? s += "\\" + (Number(e[1]) + t) : (s += e[0],
  100. "(" === e[0] && n++)
  101. } return s
  102. })).map((e => `(${e})`)).join(t)
  103. }
  104. const E = "[a-zA-Z]\\w*", x = "[a-zA-Z_]\\w*", y = "\\b\\d+(\\.\\d+)?", _ = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", w = "\\b(0b[01]+)", O = {
  105. begin: "\\\\[\\s\\S]", relevance: 0
  106. }, v = {
  107. scope: "string", begin: "'", end: "'",
  108. illegal: "\\n", contains: [O]
  109. }, k = {
  110. scope: "string", begin: '"', end: '"', illegal: "\\n",
  111. contains: [O]
  112. }, N = (e, t, n = {}) => {
  113. const s = i({
  114. scope: "comment", begin: e, end: t,
  115. contains: []
  116. }, n); s.contains.push({
  117. scope: "doctag",
  118. begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
  119. end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/, excludeBegin: !0, relevance: 0
  120. })
  121. ; const r = f("I", "a", "is", "so", "us", "to", "at", "if", "in", "it", "on", /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, /[A-Za-z]+[-][a-z]+/, /[A-Za-z][a-z]{2,}/)
  122. ; return s.contains.push({ begin: h(/[ ]+/, "(", r, /[.]?[:]?([.][ ]|[ ])/, "){3}") }), s
  123. }, S = N("//", "$"), M = N("/\\*", "\\*/"), R = N("#", "$"); var j = Object.freeze({
  124. __proto__: null, APOS_STRING_MODE: v, BACKSLASH_ESCAPE: O, BINARY_NUMBER_MODE: {
  125. scope: "number", begin: w, relevance: 0
  126. }, BINARY_NUMBER_RE: w, COMMENT: N,
  127. C_BLOCK_COMMENT_MODE: M, C_LINE_COMMENT_MODE: S, C_NUMBER_MODE: {
  128. scope: "number",
  129. begin: _, relevance: 0
  130. }, C_NUMBER_RE: _, END_SAME_AS_BEGIN: e => Object.assign(e, {
  131. "on:begin": (e, t) => { t.data._beginMatch = e[1] }, "on:end": (e, t) => {
  132. t.data._beginMatch !== e[1] && t.ignoreMatch()
  133. }
  134. }), HASH_COMMENT_MODE: R, IDENT_RE: E,
  135. MATCH_NOTHING_RE: /\b\B/, METHOD_GUARD: { begin: "\\.\\s*" + x, relevance: 0 },
  136. NUMBER_MODE: { scope: "number", begin: y, relevance: 0 }, NUMBER_RE: y,
  137. PHRASAL_WORDS_MODE: {
  138. 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/
  139. }, QUOTE_STRING_MODE: k, REGEXP_MODE: {
  140. scope: "regexp", begin: /\/(?=[^/\n]*\/)/,
  141. end: /\/[gimuy]*/, contains: [O, { begin: /\[/, end: /\]/, relevance: 0, contains: [O] }]
  142. },
  143. RE_STARTERS_RE: "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
  144. SHEBANG: (e = {}) => {
  145. const t = /^#![ ]*\//
  146. ; return e.binary && (e.begin = h(t, /.*\b/, e.binary, /\b.*/)), i({
  147. scope: "meta", begin: t,
  148. end: /$/, relevance: 0, "on:begin": (e, t) => { 0 !== e.index && t.ignoreMatch() }
  149. }, e)
  150. },
  151. TITLE_MODE: { scope: "title", begin: E, relevance: 0 }, UNDERSCORE_IDENT_RE: x,
  152. UNDERSCORE_TITLE_MODE: { scope: "title", begin: x, relevance: 0 }
  153. }); function A (e, t) {
  154. "." === e.input[e.index - 1] && t.ignoreMatch()
  155. } function I (e, t) {
  156. void 0 !== e.className && (e.scope = e.className, delete e.className)
  157. } function T (e, t) {
  158. t && e.beginKeywords && (e.begin = "\\b(" + e.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)",
  159. e.__beforeBegin = A, e.keywords = e.keywords || e.beginKeywords, delete e.beginKeywords,
  160. void 0 === e.relevance && (e.relevance = 0))
  161. } function L (e, t) {
  162. Array.isArray(e.illegal) && (e.illegal = f(...e.illegal))
  163. } function B (e, t) {
  164. if (e.match) {
  165. if (e.begin || e.end) throw Error("begin & end are not supported with match")
  166. ; e.begin = e.match, delete e.match
  167. }
  168. } function P (e, t) {
  169. void 0 === e.relevance && (e.relevance = 1)
  170. } const D = (e, t) => {
  171. if (!e.beforeMatch) return
  172. ; if (e.starts) throw Error("beforeMatch cannot be used with starts")
  173. ; const n = Object.assign({}, e); Object.keys(e).forEach((t => {
  174. delete e[t]
  175. })), e.keywords = n.keywords, e.begin = h(n.beforeMatch, g(n.begin)), e.starts = {
  176. relevance: 0, contains: [Object.assign(n, { endsParent: !0 })]
  177. }, e.relevance = 0, delete n.beforeMatch
  178. }, H = ["of", "and", "for", "in", "not", "or", "if", "then", "parent", "list", "value"]
  179. ; function C (e, t, n = "keyword") {
  180. const i = Object.create(null)
  181. ; return "string" == typeof e ? s(n, e.split(" ")) : Array.isArray(e) ? s(n, e) : Object.keys(e).forEach((n => {
  182. Object.assign(i, C(e[n], t, n))
  183. })), i; function s (e, n) {
  184. t && (n = n.map((e => e.toLowerCase()))), n.forEach((t => {
  185. const n = t.split("|")
  186. ; i[n[0]] = [e, $(n[0], n[1])]
  187. }))
  188. }
  189. } function $ (e, t) {
  190. return t ? Number(t) : (e => H.includes(e.toLowerCase()))(e) ? 0 : 1
  191. } const U = {}, z = e => {
  192. console.error(e)
  193. }, W = (e, ...t) => { console.log("WARN: " + e, ...t) }, X = (e, t) => {
  194. U[`${e}/${t}`] || (console.log(`Deprecated as of ${e}. ${t}`), U[`${e}/${t}`] = !0)
  195. }, G = Error(); function K (e, t, { key: n }) {
  196. let i = 0; const s = e[n], r = {}, o = {}
  197. ; for (let e = 1; e <= t.length; e++)o[e + i] = s[e], r[e + i] = !0, i += p(t[e - 1])
  198. ; e[n] = o, e[n]._emit = r, e[n]._multi = !0
  199. } function F (e) {
  200. (e => {
  201. e.scope && "object" == typeof e.scope && null !== e.scope && (e.beginScope = e.scope,
  202. delete e.scope)
  203. })(e), "string" == typeof e.beginScope && (e.beginScope = {
  204. _wrap: e.beginScope
  205. }), "string" == typeof e.endScope && (e.endScope = {
  206. _wrap: e.endScope
  207. }), (e => {
  208. if (Array.isArray(e.begin)) {
  209. if (e.skip || e.excludeBegin || e.returnBegin) throw z("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
  210. G
  211. ; if ("object" != typeof e.beginScope || null === e.beginScope) throw z("beginScope must be object"),
  212. G; K(e, e.begin, { key: "beginScope" }), e.begin = m(e.begin, { joinWith: "" })
  213. }
  214. })(e), (e => {
  215. if (Array.isArray(e.end)) {
  216. if (e.skip || e.excludeEnd || e.returnEnd) throw z("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
  217. G
  218. ; if ("object" != typeof e.endScope || null === e.endScope) throw z("endScope must be object"),
  219. G; K(e, e.end, { key: "endScope" }), e.end = m(e.end, { joinWith: "" })
  220. }
  221. })(e)
  222. } function Z (e) {
  223. function t (t, n) {
  224. return RegExp(l(t), "m" + (e.case_insensitive ? "i" : "") + (e.unicodeRegex ? "u" : "") + (n ? "g" : ""))
  225. } class n {
  226. constructor() {
  227. this.matchIndexes = {}, this.regexes = [], this.matchAt = 1, this.position = 0
  228. }
  229. addRule (e, t) {
  230. t.position = this.position++, this.matchIndexes[this.matchAt] = t, this.regexes.push([t, e]),
  231. this.matchAt += p(e) + 1
  232. } compile () {
  233. 0 === this.regexes.length && (this.exec = () => null)
  234. ; const e = this.regexes.map((e => e[1])); this.matcherRe = t(m(e, {
  235. joinWith: "|"
  236. }), !0), this.lastIndex = 0
  237. } exec (e) {
  238. this.matcherRe.lastIndex = this.lastIndex
  239. ; const t = this.matcherRe.exec(e); if (!t) return null
  240. ; const n = t.findIndex(((e, t) => t > 0 && void 0 !== e)), i = this.matchIndexes[n]
  241. ; return t.splice(0, n), Object.assign(t, i)
  242. }
  243. } class s {
  244. constructor() {
  245. this.rules = [], this.multiRegexes = [],
  246. this.count = 0, this.lastIndex = 0, this.regexIndex = 0
  247. } getMatcher (e) {
  248. if (this.multiRegexes[e]) return this.multiRegexes[e]; const t = new n
  249. ; return this.rules.slice(e).forEach((([e, n]) => t.addRule(e, n))),
  250. t.compile(), this.multiRegexes[e] = t, t
  251. } resumingScanAtSamePosition () {
  252. return 0 !== this.regexIndex
  253. } considerAll () { this.regexIndex = 0 } addRule (e, t) {
  254. this.rules.push([e, t]), "begin" === t.type && this.count++
  255. } exec (e) {
  256. const t = this.getMatcher(this.regexIndex); t.lastIndex = this.lastIndex
  257. ; let n = t.exec(e)
  258. ; if (this.resumingScanAtSamePosition()) if (n && n.index === this.lastIndex); else {
  259. const t = this.getMatcher(0); t.lastIndex = this.lastIndex + 1, n = t.exec(e)
  260. }
  261. return n && (this.regexIndex += n.position + 1,
  262. this.regexIndex === this.count && this.considerAll()), n
  263. }
  264. }
  265. if (e.compilerExtensions || (e.compilerExtensions = []),
  266. e.contains && e.contains.includes("self")) throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.")
  267. ; return e.classNameAliases = i(e.classNameAliases || {}), function n (r, o) {
  268. const a = r
  269. ; if (r.isCompiled) return a
  270. ;[I, B, F, D].forEach((e => e(r, o))), e.compilerExtensions.forEach((e => e(r, o))),
  271. r.__beforeBegin = null, [T, L, P].forEach((e => e(r, o))), r.isCompiled = !0; let c = null
  272. ; return "object" == typeof r.keywords && r.keywords.$pattern && (r.keywords = Object.assign({}, r.keywords),
  273. c = r.keywords.$pattern,
  274. delete r.keywords.$pattern), c = c || /\w+/, r.keywords && (r.keywords = C(r.keywords, e.case_insensitive)),
  275. a.keywordPatternRe = t(c, !0),
  276. o && (r.begin || (r.begin = /\B|\b/), a.beginRe = t(a.begin), r.end || r.endsWithParent || (r.end = /\B|\b/),
  277. r.end && (a.endRe = t(a.end)),
  278. a.terminatorEnd = l(a.end) || "", r.endsWithParent && o.terminatorEnd && (a.terminatorEnd += (r.end ? "|" : "") + o.terminatorEnd)),
  279. r.illegal && (a.illegalRe = t(r.illegal)),
  280. r.contains || (r.contains = []), r.contains = [].concat(...r.contains.map((e => (e => (e.variants && !e.cachedVariants && (e.cachedVariants = e.variants.map((t => i(e, {
  281. variants: null
  282. }, t)))), e.cachedVariants ? e.cachedVariants : V(e) ? i(e, {
  283. starts: e.starts ? i(e.starts) : null
  284. }) : Object.isFrozen(e) ? i(e) : e))("self" === e ? r : e)))), r.contains.forEach((e => {
  285. n(e, a)
  286. })), r.starts && n(r.starts, o), a.matcher = (e => {
  287. const t = new s
  288. ; return e.contains.forEach((e => t.addRule(e.begin, {
  289. rule: e, type: "begin"
  290. }))), e.terminatorEnd && t.addRule(e.terminatorEnd, {
  291. type: "end"
  292. }), e.illegal && t.addRule(e.illegal, { type: "illegal" }), t
  293. })(a), a
  294. }(e)
  295. } function V (e) {
  296. return !!e && (e.endsWithParent || V(e.starts))
  297. } class q extends Error {
  298. constructor(e, t) { super(e), this.name = "HTMLInjectionError", this.html = t }
  299. }
  300. const J = n, Y = i, Q = Symbol("nomatch"), ee = n => {
  301. const i = Object.create(null), s = Object.create(null), r = []; let o = !0
  302. ; const a = "Could not find the language '{}', did you forget to load/include a language module?", l = {
  303. disableAutodetect: !0, name: "Plain text", contains: []
  304. }; let p = {
  305. ignoreUnescapedHTML: !1, throwUnescapedHTML: !1, noHighlightRe: /^(no-?highlight)$/i,
  306. languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i, classPrefix: "hljs-",
  307. cssSelector: "pre code", languages: null, __emitter: c
  308. }; function b (e) {
  309. return p.noHighlightRe.test(e)
  310. } function m (e, t, n) {
  311. let i = "", s = ""
  312. ; "object" == typeof t ? (i = e,
  313. n = t.ignoreIllegals, s = t.language) : (X("10.7.0", "highlight(lang, code, ...args) has been deprecated."),
  314. X("10.7.0", "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
  315. s = e, i = t), void 0 === n && (n = !0); const r = { code: i, language: s }; N("before:highlight", r)
  316. ; const o = r.result ? r.result : E(r.language, r.code, n)
  317. ; return o.code = r.code, N("after:highlight", o), o
  318. } function E (e, n, s, r) {
  319. const c = Object.create(null); function l () {
  320. if (!N.keywords) return void M.addText(R)
  321. ; let e = 0; N.keywordPatternRe.lastIndex = 0; let t = N.keywordPatternRe.exec(R), n = ""
  322. ; for (; t;) {
  323. n += R.substring(e, t.index)
  324. ; const s = w.case_insensitive ? t[0].toLowerCase() : t[0], r = (i = s, N.keywords[i]); if (r) {
  325. const [e, i] = r
  326. ; if (M.addText(n), n = "", c[s] = (c[s] || 0) + 1, c[s] <= 7 && (j += i), e.startsWith("_")) n += t[0]; else {
  327. const n = w.classNameAliases[e] || e; u(t[0], n)
  328. }
  329. } else n += t[0]
  330. ; e = N.keywordPatternRe.lastIndex, t = N.keywordPatternRe.exec(R)
  331. } var i
  332. ; n += R.substring(e), M.addText(n)
  333. } function g () {
  334. null != N.subLanguage ? (() => {
  335. if ("" === R) return; let e = null; if ("string" == typeof N.subLanguage) {
  336. if (!i[N.subLanguage]) return void M.addText(R)
  337. ; e = E(N.subLanguage, R, !0, S[N.subLanguage]), S[N.subLanguage] = e._top
  338. } else e = x(R, N.subLanguage.length ? N.subLanguage : null)
  339. ; N.relevance > 0 && (j += e.relevance), M.__addSublanguage(e._emitter, e.language)
  340. })() : l(), R = ""
  341. } function u (e, t) {
  342. "" !== e && (M.startScope(t), M.addText(e), M.endScope())
  343. } function d (e, t) {
  344. let n = 1
  345. ; const i = t.length - 1; for (; n <= i;) {
  346. if (!e._emit[n]) { n++; continue }
  347. const i = w.classNameAliases[e[n]] || e[n], s = t[n]; i ? u(s, i) : (R = s, l(), R = ""), n++
  348. }
  349. }
  350. function h (e, t) {
  351. return e.scope && "string" == typeof e.scope && M.openNode(w.classNameAliases[e.scope] || e.scope),
  352. e.beginScope && (e.beginScope._wrap ? (u(R, w.classNameAliases[e.beginScope._wrap] || e.beginScope._wrap),
  353. R = "") : e.beginScope._multi && (d(e.beginScope, t), R = "")), N = Object.create(e, {
  354. parent: {
  355. value: N
  356. }
  357. }), N
  358. } function f (e, n, i) {
  359. let s = ((e, t) => {
  360. const n = e && e.exec(t)
  361. ; return n && 0 === n.index
  362. })(e.endRe, i); if (s) {
  363. if (e["on:end"]) {
  364. const i = new t(e)
  365. ; e["on:end"](n, i), i.isMatchIgnored && (s = !1)
  366. } if (s) {
  367. for (; e.endsParent && e.parent;)e = e.parent; return e
  368. }
  369. }
  370. if (e.endsWithParent) return f(e.parent, n, i)
  371. } function b (e) {
  372. return 0 === N.matcher.regexIndex ? (R += e[0], 1) : (T = !0, 0)
  373. } function m (e) {
  374. const t = e[0], i = n.substring(e.index), s = f(N, e, i); if (!s) return Q; const r = N
  375. ; N.endScope && N.endScope._wrap ? (g(),
  376. u(t, N.endScope._wrap)) : N.endScope && N.endScope._multi ? (g(),
  377. d(N.endScope, e)) : r.skip ? R += t : (r.returnEnd || r.excludeEnd || (R += t),
  378. g(), r.excludeEnd && (R = t)); do {
  379. N.scope && M.closeNode(), N.skip || N.subLanguage || (j += N.relevance), N = N.parent
  380. } while (N !== s.parent); return s.starts && h(s.starts, e), r.returnEnd ? 0 : t.length
  381. }
  382. let y = {}; function _ (i, r) {
  383. const a = r && r[0]; if (R += i, null == a) return g(), 0
  384. ; if ("begin" === y.type && "end" === r.type && y.index === r.index && "" === a) {
  385. if (R += n.slice(r.index, r.index + 1), !o) {
  386. const t = Error(`0 width match regex (${e})`)
  387. ; throw t.languageName = e, t.badRule = y.rule, t
  388. } return 1
  389. }
  390. if (y = r, "begin" === r.type) return (e => {
  391. const n = e[0], i = e.rule, s = new t(i), r = [i.__beforeBegin, i["on:begin"]]
  392. ; for (const t of r) if (t && (t(e, s), s.isMatchIgnored)) return b(n)
  393. ; return i.skip ? R += n : (i.excludeBegin && (R += n),
  394. g(), i.returnBegin || i.excludeBegin || (R = n)), h(i, e), i.returnBegin ? 0 : n.length
  395. })(r)
  396. ; if ("illegal" === r.type && !s) {
  397. const e = Error('Illegal lexeme "' + a + '" for mode "' + (N.scope || "<unnamed>") + '"')
  398. ; throw e.mode = N, e
  399. } if ("end" === r.type) { const e = m(r); if (e !== Q) return e }
  400. if ("illegal" === r.type && "" === a) return R += "\n", 1
  401. ; if (I > 1e5 && I > 3 * r.index) throw Error("potential infinite loop, way more iterations than matches")
  402. ; return R += a, a.length
  403. } const w = O(e)
  404. ; if (!w) throw z(a.replace("{}", e)), Error('Unknown language: "' + e + '"')
  405. ; const v = Z(w); let k = "", N = r || v; const S = {}, M = new p.__emitter(p); (() => {
  406. const e = []
  407. ; for (let t = N; t !== w; t = t.parent)t.scope && e.unshift(t.scope)
  408. ; e.forEach((e => M.openNode(e)))
  409. })(); let R = "", j = 0, A = 0, I = 0, T = !1; try {
  410. if (w.__emitTokens) w.__emitTokens(n, M); else {
  411. for (N.matcher.considerAll(); ;) {
  412. I++, T ? T = !1 : N.matcher.considerAll(), N.matcher.lastIndex = A
  413. ; const e = N.matcher.exec(n); if (!e) break; const t = _(n.substring(A, e.index), e)
  414. ; A = e.index + t
  415. } _(n.substring(A))
  416. } return M.finalize(), k = M.toHTML(), {
  417. language: e,
  418. value: k, relevance: j, illegal: !1, _emitter: M, _top: N
  419. }
  420. } catch (t) {
  421. if (t.message && t.message.includes("Illegal")) return {
  422. language: e, value: J(n),
  423. illegal: !0, relevance: 0, _illegalBy: {
  424. message: t.message, index: A,
  425. context: n.slice(A - 100, A + 100), mode: t.mode, resultSoFar: k
  426. }, _emitter: M
  427. }; if (o) return {
  428. language: e, value: J(n), illegal: !1, relevance: 0, errorRaised: t, _emitter: M, _top: N
  429. }
  430. ; throw t
  431. }
  432. } function x (e, t) {
  433. t = t || p.languages || Object.keys(i); const n = (e => {
  434. const t = { value: J(e), illegal: !1, relevance: 0, _top: l, _emitter: new p.__emitter(p) }
  435. ; return t._emitter.addText(e), t
  436. })(e), s = t.filter(O).filter(k).map((t => E(t, e, !1)))
  437. ; s.unshift(n); const r = s.sort(((e, t) => {
  438. if (e.relevance !== t.relevance) return t.relevance - e.relevance
  439. ; if (e.language && t.language) {
  440. if (O(e.language).supersetOf === t.language) return 1
  441. ; if (O(t.language).supersetOf === e.language) return -1
  442. } return 0
  443. })), [o, a] = r, c = o
  444. ; return c.secondBest = a, c
  445. } function y (e) {
  446. let t = null; const n = (e => {
  447. let t = e.className + " "; t += e.parentNode ? e.parentNode.className : ""
  448. ; const n = p.languageDetectRe.exec(t); if (n) {
  449. const t = O(n[1])
  450. ; return t || (W(a.replace("{}", n[1])),
  451. W("Falling back to no-highlight mode for this block.", e)), t ? n[1] : "no-highlight"
  452. }
  453. return t.split(/\s+/).find((e => b(e) || O(e)))
  454. })(e); if (b(n)) return
  455. ; if (N("before:highlightElement", {
  456. el: e, language: n
  457. }), e.dataset.highlighted) return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.", e)
  458. ; if (e.children.length > 0 && (p.ignoreUnescapedHTML || (console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
  459. console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),
  460. console.warn("The element with unescaped HTML:"),
  461. console.warn(e)), p.throwUnescapedHTML)) throw new q("One of your code blocks includes unescaped HTML.", e.innerHTML)
  462. ; t = e; const i = t.textContent, r = n ? m(i, { language: n, ignoreIllegals: !0 }) : x(i)
  463. ; e.innerHTML = r.value, e.dataset.highlighted = "yes", ((e, t, n) => {
  464. const i = t && s[t] || n
  465. ; e.classList.add("hljs"), e.classList.add("language-" + i)
  466. })(e, n, r.language), e.result = {
  467. language: r.language, re: r.relevance,
  468. relevance: r.relevance
  469. }, r.secondBest && (e.secondBest = {
  470. language: r.secondBest.language, relevance: r.secondBest.relevance
  471. }), N("after:highlightElement", { el: e, result: r, text: i })
  472. } let _ = !1; function w () {
  473. if ("loading" === document.readyState) return _ || window.addEventListener("DOMContentLoaded", (() => {
  474. w()
  475. }), !1), void (_ = !0); document.querySelectorAll(p.cssSelector).forEach(y)
  476. }
  477. function O (e) { return e = (e || "").toLowerCase(), i[e] || i[s[e]] }
  478. function v (e, { languageName: t }) {
  479. "string" == typeof e && (e = [e]), e.forEach((e => {
  480. s[e.toLowerCase()] = t
  481. }))
  482. } function k (e) {
  483. const t = O(e)
  484. ; return t && !t.disableAutodetect
  485. } function N (e, t) {
  486. const n = e; r.forEach((e => {
  487. e[n] && e[n](t)
  488. }))
  489. } Object.assign(n, {
  490. highlight: m, highlightAuto: x, highlightAll: w,
  491. highlightElement: y,
  492. highlightBlock: e => (X("10.7.0", "highlightBlock will be removed entirely in v12.0"),
  493. X("10.7.0", "Please use highlightElement now."), y(e)), configure: e => { p = Y(p, e) },
  494. initHighlighting: () => {
  495. w(), X("10.6.0", "initHighlighting() deprecated. Use highlightAll() now.")
  496. },
  497. initHighlightingOnLoad: () => {
  498. w(), X("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now.")
  499. }, registerLanguage: (e, t) => {
  500. let s = null; try { s = t(n) } catch (t) {
  501. if (z("Language definition for '{}' could not be registered.".replace("{}", e)),
  502. !o) throw t; z(t), s = l
  503. }
  504. s.name || (s.name = e), i[e] = s, s.rawDefinition = t.bind(null, n), s.aliases && v(s.aliases, {
  505. languageName: e
  506. })
  507. }, unregisterLanguage: e => {
  508. delete i[e]
  509. ; for (const t of Object.keys(s)) s[t] === e && delete s[t]
  510. },
  511. listLanguages: () => Object.keys(i), getLanguage: O, registerAliases: v,
  512. autoDetection: k, inherit: Y, addPlugin: e => {
  513. (e => {
  514. e["before:highlightBlock"] && !e["before:highlightElement"] && (e["before:highlightElement"] = t => {
  515. e["before:highlightBlock"](Object.assign({ block: t.el }, t))
  516. }), e["after:highlightBlock"] && !e["after:highlightElement"] && (e["after:highlightElement"] = t => {
  517. e["after:highlightBlock"](Object.assign({ block: t.el }, t))
  518. })
  519. })(e), r.push(e)
  520. },
  521. removePlugin: e => { const t = r.indexOf(e); -1 !== t && r.splice(t, 1) }
  522. }), n.debugMode = () => {
  523. o = !1
  524. }, n.safeMode = () => { o = !0 }, n.versionString = "11.11.1", n.regex = {
  525. concat: h,
  526. lookahead: g, either: f, optional: d, anyNumberOfTimes: u
  527. }
  528. ; for (const t in j) "object" == typeof j[t] && e(j[t]); return Object.assign(n, j), n
  529. }, te = ee({}); return te.newInstance = () => ee({}), te
  530. }()
  531. ; "object" == typeof exports && "undefined" != typeof module && (module.exports = hljs);/*! `css` grammar compiled for Highlight.js 11.11.1 */
  532. (() => {
  533. var e = (() => {
  534. "use strict"
  535. ; const e = ["a", "abbr", "address", "article", "aside", "audio", "b", "blockquote", "body", "button", "canvas", "caption", "cite", "code", "dd", "del", "details", "dfn", "div", "dl", "dt", "em", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "html", "i", "iframe", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "mark", "menu", "nav", "object", "ol", "optgroup", "option", "p", "picture", "q", "quote", "samp", "section", "select", "source", "span", "strong", "summary", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "time", "tr", "ul", "var", "video", "defs", "g", "marker", "mask", "pattern", "svg", "switch", "symbol", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feFlood", "feGaussianBlur", "feImage", "feMerge", "feMorphology", "feOffset", "feSpecularLighting", "feTile", "feTurbulence", "linearGradient", "radialGradient", "stop", "circle", "ellipse", "image", "line", "path", "polygon", "polyline", "rect", "text", "use", "textPath", "tspan", "foreignObject", "clipPath"], i = ["any-hover", "any-pointer", "aspect-ratio", "color", "color-gamut", "color-index", "device-aspect-ratio", "device-height", "device-width", "display-mode", "forced-colors", "grid", "height", "hover", "inverted-colors", "monochrome", "orientation", "overflow-block", "overflow-inline", "pointer", "prefers-color-scheme", "prefers-contrast", "prefers-reduced-motion", "prefers-reduced-transparency", "resolution", "scan", "scripting", "update", "width", "min-width", "max-width", "min-height", "max-height"].sort().reverse(), t = ["active", "any-link", "blank", "checked", "current", "default", "defined", "dir", "disabled", "drop", "empty", "enabled", "first", "first-child", "first-of-type", "fullscreen", "future", "focus", "focus-visible", "focus-within", "has", "host", "host-context", "hover", "indeterminate", "in-range", "invalid", "is", "lang", "last-child", "last-of-type", "left", "link", "local-link", "not", "nth-child", "nth-col", "nth-last-child", "nth-last-col", "nth-last-of-type", "nth-of-type", "only-child", "only-of-type", "optional", "out-of-range", "past", "placeholder-shown", "read-only", "read-write", "required", "right", "root", "scope", "target", "target-within", "user-invalid", "valid", "visited", "where"].sort().reverse(), o = ["after", "backdrop", "before", "cue", "cue-region", "first-letter", "first-line", "grammar-error", "marker", "part", "placeholder", "selection", "slotted", "spelling-error"].sort().reverse(), r = ["accent-color", "align-content", "align-items", "align-self", "alignment-baseline", "all", "anchor-name", "animation", "animation-composition", "animation-delay", "animation-direction", "animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state", "animation-range", "animation-range-end", "animation-range-start", "animation-timeline", "animation-timing-function", "appearance", "aspect-ratio", "backdrop-filter", "backface-visibility", "background", "background-attachment", "background-blend-mode", "background-clip", "background-color", "background-image", "background-origin", "background-position", "background-position-x", "background-position-y", "background-repeat", "background-size", "baseline-shift", "block-size", "border", "border-block", "border-block-color", "border-block-end", "border-block-end-color", "border-block-end-style", "border-block-end-width", "border-block-start", "border-block-start-color", "border-block-start-style", "border-block-start-width", "border-block-style", "border-block-width", "border-bottom", "border-bottom-color", "border-bottom-left-radius", "border-bottom-right-radius", "border-bottom-style", "border-bottom-width", "border-collapse", "border-color", "border-end-end-radius", "border-end-start-radius", "border-image", "border-image-outset", "border-image-repeat", "border-image-slice", "border-image-source", "border-image-width", "border-inline", "border-inline-color", "border-inline-end", "border-inline-end-color", "border-inline-end-style", "border-inline-end-width", "border-inline-start", "border-inline-start-color", "border-inline-start-style", "border-inline-start-width", "border-inline-style", "border-inline-width", "border-left", "border-left-color", "border-left-style", "border-left-width", "border-radius", "border-right", "border-right-color", "border-right-style", "border-right-width", "border-spacing", "border-start-end-radius", "border-start-start-radius", "border-style", "border-top", "border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-style", "border-top-width", "border-width", "bottom", "box-align", "box-decoration-break", "box-direction", "box-flex", "box-flex-group", "box-lines", "box-ordinal-group", "box-orient", "box-pack", "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", "caption-side", "caret-color", "clear", "clip", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "color-scheme", "column-count", "column-fill", "column-gap", "column-rule", "column-rule-color", "column-rule-style", "column-rule-width", "column-span", "column-width", "columns", "contain", "contain-intrinsic-block-size", "contain-intrinsic-height", "contain-intrinsic-inline-size", "contain-intrinsic-size", "contain-intrinsic-width", "container", "container-name", "container-type", "content", "content-visibility", "counter-increment", "counter-reset", "counter-set", "cue", "cue-after", "cue-before", "cursor", "cx", "cy", "direction", "display", "dominant-baseline", "empty-cells", "enable-background", "field-sizing", "fill", "fill-opacity", "fill-rule", "filter", "flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", "float", "flood-color", "flood-opacity", "flow", "font", "font-display", "font-family", "font-feature-settings", "font-kerning", "font-language-override", "font-optical-sizing", "font-palette", "font-size", "font-size-adjust", "font-smooth", "font-smoothing", "font-stretch", "font-style", "font-synthesis", "font-synthesis-position", "font-synthesis-small-caps", "font-synthesis-style", "font-synthesis-weight", "font-variant", "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", "font-variant-emoji", "font-variant-ligatures", "font-variant-numeric", "font-variant-position", "font-variation-settings", "font-weight", "forced-color-adjust", "gap", "glyph-orientation-horizontal", "glyph-orientation-vertical", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", "grid-auto-rows", "grid-column", "grid-column-end", "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns", "grid-template-rows", "hanging-punctuation", "height", "hyphenate-character", "hyphenate-limit-chars", "hyphens", "icon", "image-orientation", "image-rendering", "image-resolution", "ime-mode", "initial-letter", "initial-letter-align", "inline-size", "inset", "inset-area", "inset-block", "inset-block-end", "inset-block-start", "inset-inline", "inset-inline-end", "inset-inline-start", "isolation", "justify-content", "justify-items", "justify-self", "kerning", "left", "letter-spacing", "lighting-color", "line-break", "line-height", "line-height-step", "list-style", "list-style-image", "list-style-position", "list-style-type", "margin", "margin-block", "margin-block-end", "margin-block-start", "margin-bottom", "margin-inline", "margin-inline-end", "margin-inline-start", "margin-left", "margin-right", "margin-top", "margin-trim", "marker", "marker-end", "marker-mid", "marker-start", "marks", "mask", "mask-border", "mask-border-mode", "mask-border-outset", "mask-border-repeat", "mask-border-slice", "mask-border-source", "mask-border-width", "mask-clip", "mask-composite", "mask-image", "mask-mode", "mask-origin", "mask-position", "mask-repeat", "mask-size", "mask-type", "masonry-auto-flow", "math-depth", "math-shift", "math-style", "max-block-size", "max-height", "max-inline-size", "max-width", "min-block-size", "min-height", "min-inline-size", "min-width", "mix-blend-mode", "nav-down", "nav-index", "nav-left", "nav-right", "nav-up", "none", "normal", "object-fit", "object-position", "offset", "offset-anchor", "offset-distance", "offset-path", "offset-position", "offset-rotate", "opacity", "order", "orphans", "outline", "outline-color", "outline-offset", "outline-style", "outline-width", "overflow", "overflow-anchor", "overflow-block", "overflow-clip-margin", "overflow-inline", "overflow-wrap", "overflow-x", "overflow-y", "overlay", "overscroll-behavior", "overscroll-behavior-block", "overscroll-behavior-inline", "overscroll-behavior-x", "overscroll-behavior-y", "padding", "padding-block", "padding-block-end", "padding-block-start", "padding-bottom", "padding-inline", "padding-inline-end", "padding-inline-start", "padding-left", "padding-right", "padding-top", "page", "page-break-after", "page-break-before", "page-break-inside", "paint-order", "pause", "pause-after", "pause-before", "perspective", "perspective-origin", "place-content", "place-items", "place-self", "pointer-events", "position", "position-anchor", "position-visibility", "print-color-adjust", "quotes", "r", "resize", "rest", "rest-after", "rest-before", "right", "rotate", "row-gap", "ruby-align", "ruby-position", "scale", "scroll-behavior", "scroll-margin", "scroll-margin-block", "scroll-margin-block-end", "scroll-margin-block-start", "scroll-margin-bottom", "scroll-margin-inline", "scroll-margin-inline-end", "scroll-margin-inline-start", "scroll-margin-left", "scroll-margin-right", "scroll-margin-top", "scroll-padding", "scroll-padding-block", "scroll-padding-block-end", "scroll-padding-block-start", "scroll-padding-bottom", "scroll-padding-inline", "scroll-padding-inline-end", "scroll-padding-inline-start", "scroll-padding-left", "scroll-padding-right", "scroll-padding-top", "scroll-snap-align", "scroll-snap-stop", "scroll-snap-type", "scroll-timeline", "scroll-timeline-axis", "scroll-timeline-name", "scrollbar-color", "scrollbar-gutter", "scrollbar-width", "shape-image-threshold", "shape-margin", "shape-outside", "shape-rendering", "speak", "speak-as", "src", "stop-color", "stop-opacity", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "tab-size", "table-layout", "text-align", "text-align-all", "text-align-last", "text-anchor", "text-combine-upright", "text-decoration", "text-decoration-color", "text-decoration-line", "text-decoration-skip", "text-decoration-skip-ink", "text-decoration-style", "text-decoration-thickness", "text-emphasis", "text-emphasis-color", "text-emphasis-position", "text-emphasis-style", "text-indent", "text-justify", "text-orientation", "text-overflow", "text-rendering", "text-shadow", "text-size-adjust", "text-transform", "text-underline-offset", "text-underline-position", "text-wrap", "text-wrap-mode", "text-wrap-style", "timeline-scope", "top", "touch-action", "transform", "transform-box", "transform-origin", "transform-style", "transition", "transition-behavior", "transition-delay", "transition-duration", "transition-property", "transition-timing-function", "translate", "unicode-bidi", "user-modify", "user-select", "vector-effect", "vertical-align", "view-timeline", "view-timeline-axis", "view-timeline-inset", "view-timeline-name", "view-transition-name", "visibility", "voice-balance", "voice-duration", "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", "voice-volume", "white-space", "white-space-collapse", "widows", "width", "will-change", "word-break", "word-spacing", "word-wrap", "writing-mode", "x", "y", "z-index", "zoom"].sort().reverse()
  536. ; return n => {
  537. const a = n.regex, l = (e => ({
  538. IMPORTANT: { scope: "meta", begin: "!important" },
  539. BLOCK_COMMENT: e.C_BLOCK_COMMENT_MODE, HEXCOLOR: {
  540. scope: "number",
  541. begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/
  542. }, FUNCTION_DISPATCH: {
  543. className: "built_in", begin: /[\w-]+(?=\()/
  544. }, ATTRIBUTE_SELECTOR_MODE: {
  545. scope: "selector-attr", begin: /\[/, end: /\]/, illegal: "$",
  546. contains: [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE]
  547. }, CSS_NUMBER_MODE: {
  548. scope: "number",
  549. begin: e.NUMBER_RE + "(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
  550. relevance: 0
  551. }, CSS_VARIABLE: { className: "attr", begin: /--[A-Za-z_][A-Za-z0-9_-]*/ }
  552. }))(n), s = [n.APOS_STRING_MODE, n.QUOTE_STRING_MODE]; return {
  553. name: "CSS",
  554. case_insensitive: !0, illegal: /[=|'\$]/, keywords: { keyframePosition: "from to" },
  555. classNameAliases: { keyframePosition: "selector-tag" }, contains: [l.BLOCK_COMMENT, {
  556. begin: /-(webkit|moz|ms|o)-(?=[a-z])/
  557. }, l.CSS_NUMBER_MODE, {
  558. className: "selector-id", begin: /#[A-Za-z0-9_-]+/, relevance: 0
  559. }, {
  560. className: "selector-class", begin: "\\.[a-zA-Z-][a-zA-Z0-9_-]*", relevance: 0
  561. }, l.ATTRIBUTE_SELECTOR_MODE, {
  562. className: "selector-pseudo", variants: [{
  563. begin: ":(" + t.join("|") + ")"
  564. }, { begin: ":(:)?(" + o.join("|") + ")" }]
  565. }, l.CSS_VARIABLE, {
  566. className: "attribute", begin: "\\b(" + r.join("|") + ")\\b"
  567. }, {
  568. begin: /:/, end: /[;}{]/,
  569. contains: [l.BLOCK_COMMENT, l.HEXCOLOR, l.IMPORTANT, l.CSS_NUMBER_MODE, ...s, {
  570. begin: /(url|data-uri)\(/, end: /\)/, relevance: 0, keywords: {
  571. built_in: "url data-uri"
  572. }, contains: [...s, {
  573. className: "string", begin: /[^)]/, endsWithParent: !0,
  574. excludeEnd: !0
  575. }]
  576. }, l.FUNCTION_DISPATCH]
  577. }, {
  578. begin: a.lookahead(/@/), end: "[{;]",
  579. relevance: 0, illegal: /:/, contains: [{
  580. className: "keyword", begin: /@-?\w[\w]*(-\w+)*/
  581. }, {
  582. begin: /\s/, endsWithParent: !0, excludeEnd: !0, relevance: 0, keywords: {
  583. $pattern: /[a-z-]+/, keyword: "and or not only", attribute: i.join(" ")
  584. }, contains: [{
  585. begin: /[a-z-]+(?=:)/, className: "attribute"
  586. }, ...s, l.CSS_NUMBER_MODE]
  587. }]
  588. }, {
  589. className: "selector-tag", begin: "\\b(" + e.join("|") + ")\\b"
  590. }]
  591. }
  592. }
  593. })()
  594. ; hljs.registerLanguage("css", e)
  595. })();/*! `javascript` grammar compiled for Highlight.js 11.11.1 */
  596. (() => {
  597. var e = (() => {
  598. "use strict"
  599. ; const e = "[A-Za-z$_][0-9A-Za-z$_]*", n = ["as", "in", "of", "if", "for", "while", "finally", "var", "new", "function", "do", "return", "void", "else", "break", "catch", "instanceof", "with", "throw", "case", "default", "try", "switch", "continue", "typeof", "delete", "let", "yield", "const", "class", "debugger", "async", "await", "static", "import", "from", "export", "extends", "using"], a = ["true", "false", "null", "undefined", "NaN", "Infinity"], t = ["Object", "Function", "Boolean", "Symbol", "Math", "Date", "Number", "BigInt", "String", "RegExp", "Array", "Float32Array", "Float64Array", "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Int32Array", "Uint16Array", "Uint32Array", "BigInt64Array", "BigUint64Array", "Set", "Map", "WeakSet", "WeakMap", "ArrayBuffer", "SharedArrayBuffer", "Atomics", "DataView", "JSON", "Promise", "Generator", "GeneratorFunction", "AsyncFunction", "Reflect", "Proxy", "Intl", "WebAssembly"], s = ["Error", "EvalError", "InternalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError"], r = ["setInterval", "setTimeout", "clearInterval", "clearTimeout", "require", "exports", "eval", "isFinite", "isNaN", "parseFloat", "parseInt", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "escape", "unescape"], c = ["arguments", "this", "super", "console", "window", "document", "localStorage", "sessionStorage", "module", "global"], i = [].concat(r, t, s)
  600. ; return o => {
  601. const l = o.regex, d = e, b = {
  602. begin: /<[A-Za-z0-9\\._:-]+/,
  603. end: /\/[A-Za-z0-9\\._:-]+>|\/>/, isTrulyOpeningTag: (e, n) => {
  604. const a = e[0].length + e.index, t = e.input[a]
  605. ; if ("<" === t || "," === t) return void n.ignoreMatch(); let s
  606. ; ">" === t && (((e, { after: n }) => {
  607. const a = "</" + e[0].slice(1)
  608. ; return -1 !== e.input.indexOf(a, n)
  609. })(e, { after: a }) || n.ignoreMatch())
  610. ; const r = e.input.substring(a)
  611. ; ((s = r.match(/^\s*=/)) || (s = r.match(/^\s+extends\s+/)) && 0 === s.index) && n.ignoreMatch()
  612. }
  613. }, g = {
  614. $pattern: e, keyword: n, literal: a, built_in: i, "variable.language": c
  615. }, u = "[0-9](_?[0-9])*", m = `\\.(${u})`, E = "0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*", A = {
  616. className: "number", variants: [{
  617. begin: `(\\b(${E})((${m})|\\.)?|(${m}))[eE][+-]?(${u})\\b`
  618. }, {
  619. begin: `\\b(${E})\\b((${m})\\b|\\.)?|(${m})\\b`
  620. }, {
  621. begin: "\\b(0|[1-9](_?[0-9])*)n\\b"
  622. }, {
  623. begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"
  624. }, {
  625. begin: "\\b0[bB][0-1](_?[0-1])*n?\\b"
  626. }, { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" }, {
  627. begin: "\\b0[0-7]+n?\\b"
  628. }], relevance: 0
  629. }, y = {
  630. className: "subst", begin: "\\$\\{",
  631. end: "\\}", keywords: g, contains: []
  632. }, h = {
  633. begin: ".?html`", end: "", starts: {
  634. end: "`",
  635. returnEnd: !1, contains: [o.BACKSLASH_ESCAPE, y], subLanguage: "xml"
  636. }
  637. }, _ = {
  638. begin: ".?css`", end: "", starts: {
  639. end: "`", returnEnd: !1,
  640. contains: [o.BACKSLASH_ESCAPE, y], subLanguage: "css"
  641. }
  642. }, N = {
  643. begin: ".?gql`", end: "",
  644. starts: {
  645. end: "`", returnEnd: !1, contains: [o.BACKSLASH_ESCAPE, y],
  646. subLanguage: "graphql"
  647. }
  648. }, f = {
  649. className: "string", begin: "`", end: "`",
  650. contains: [o.BACKSLASH_ESCAPE, y]
  651. }, p = {
  652. className: "comment",
  653. variants: [o.COMMENT(/\/\*\*(?!\/)/, "\\*/", {
  654. relevance: 0, contains: [{
  655. begin: "(?=@[A-Za-z]+)", relevance: 0, contains: [{
  656. className: "doctag",
  657. begin: "@[A-Za-z]+"
  658. }, {
  659. className: "type", begin: "\\{", end: "\\}", excludeEnd: !0,
  660. excludeBegin: !0, relevance: 0
  661. }, {
  662. className: "variable", begin: d + "(?=\\s*(-)|$)",
  663. endsParent: !0, relevance: 0
  664. }, { begin: /(?=[^\n])\s/, relevance: 0 }]
  665. }]
  666. }), o.C_BLOCK_COMMENT_MODE, o.C_LINE_COMMENT_MODE]
  667. }, v = [o.APOS_STRING_MODE, o.QUOTE_STRING_MODE, h, _, N, f, { match: /\$\d+/ }, A]
  668. ; y.contains = v.concat({
  669. begin: /\{/, end: /\}/, keywords: g, contains: ["self"].concat(v)
  670. }); const S = [].concat(p, y.contains), w = S.concat([{
  671. begin: /(\s*)\(/, end: /\)/,
  672. keywords: g, contains: ["self"].concat(S)
  673. }]), R = {
  674. className: "params", begin: /(\s*)\(/,
  675. end: /\)/, excludeBegin: !0, excludeEnd: !0, keywords: g, contains: w
  676. }, O = {
  677. variants: [{
  678. match: [/class/, /\s+/, d, /\s+/, /extends/, /\s+/, l.concat(d, "(", l.concat(/\./, d), ")*")],
  679. scope: { 1: "keyword", 3: "title.class", 5: "keyword", 7: "title.class.inherited" }
  680. }, {
  681. match: [/class/, /\s+/, d], scope: { 1: "keyword", 3: "title.class" }
  682. }]
  683. }, k = {
  684. relevance: 0,
  685. match: l.either(/\bJSON/, /\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/, /\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/, /\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),
  686. className: "title.class", keywords: { _: [...t, ...s] }
  687. }, I = {
  688. variants: [{
  689. match: [/function/, /\s+/, d, /(?=\s*\()/]
  690. }, { match: [/function/, /\s*(?=\()/] }],
  691. className: { 1: "keyword", 3: "title.function" }, label: "func.def", contains: [R],
  692. illegal: /%/
  693. }, x = {
  694. match: l.concat(/\b/, (T = [...r, "super", "import"].map((e => e + "\\s*\\(")),
  695. l.concat("(?!", T.join("|"), ")")), d, l.lookahead(/\s*\(/)),
  696. className: "title.function", relevance: 0
  697. }; var T; const C = {
  698. begin: l.concat(/\./, l.lookahead(l.concat(d, /(?![0-9A-Za-z$_(])/))), end: d,
  699. excludeBegin: !0, keywords: "prototype", className: "property", relevance: 0
  700. }, M = {
  701. match: [/get|set/, /\s+/, d, /(?=\()/], className: { 1: "keyword", 3: "title.function" },
  702. contains: [{ begin: /\(\)/ }, R]
  703. }, B = "(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|" + o.UNDERSCORE_IDENT_RE + ")\\s*=>", $ = {
  704. match: [/const|var|let/, /\s+/, d, /\s*/, /=\s*/, /(async\s*)?/, l.lookahead(B)],
  705. keywords: "async", className: { 1: "keyword", 3: "title.function" }, contains: [R]
  706. }
  707. ; return {
  708. name: "JavaScript", aliases: ["js", "jsx", "mjs", "cjs"], keywords: g, exports: {
  709. PARAMS_CONTAINS: w, CLASS_REFERENCE: k
  710. }, illegal: /#(?![$_A-z])/,
  711. contains: [o.SHEBANG({ label: "shebang", binary: "node", relevance: 5 }), {
  712. label: "use_strict", className: "meta", relevance: 10,
  713. begin: /^\s*['"]use (strict|asm)['"]/
  714. }, o.APOS_STRING_MODE, o.QUOTE_STRING_MODE, h, _, N, f, p, { match: /\$\d+/ }, A, k, {
  715. scope: "attr", match: d + l.lookahead(":"), relevance: 0
  716. }, $, {
  717. begin: "(" + o.RE_STARTERS_RE + "|\\b(case|return|throw)\\b)\\s*",
  718. keywords: "return throw case", relevance: 0, contains: [p, o.REGEXP_MODE, {
  719. className: "function", begin: B, returnBegin: !0, end: "\\s*=>", contains: [{
  720. className: "params", variants: [{ begin: o.UNDERSCORE_IDENT_RE, relevance: 0 }, {
  721. className: null, begin: /\(\s*\)/, skip: !0
  722. }, {
  723. begin: /(\s*)\(/, end: /\)/,
  724. excludeBegin: !0, excludeEnd: !0, keywords: g, contains: w
  725. }]
  726. }]
  727. }, {
  728. begin: /,/, relevance: 0
  729. }, { match: /\s+/, relevance: 0 }, {
  730. variants: [{ begin: "<>", end: "</>" }, {
  731. match: /<[A-Za-z0-9\\._:-]+\s*\/>/
  732. }, {
  733. begin: b.begin,
  734. "on:begin": b.isTrulyOpeningTag, end: b.end
  735. }], subLanguage: "xml", contains: [{
  736. begin: b.begin, end: b.end, skip: !0, contains: ["self"]
  737. }]
  738. }]
  739. }, I, {
  740. beginKeywords: "while if switch catch for"
  741. }, {
  742. begin: "\\b(?!function)" + o.UNDERSCORE_IDENT_RE + "\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
  743. returnBegin: !0, label: "func.def", contains: [R, o.inherit(o.TITLE_MODE, {
  744. begin: d,
  745. className: "title.function"
  746. })]
  747. }, { match: /\.\.\./, relevance: 0 }, C, {
  748. match: "\\$" + d,
  749. relevance: 0
  750. }, {
  751. match: [/\bconstructor(?=\s*\()/], className: { 1: "title.function" },
  752. contains: [R]
  753. }, x, {
  754. relevance: 0, match: /\b[A-Z][A-Z_0-9]+\b/,
  755. className: "variable.constant"
  756. }, O, M, { match: /\$[(.]/ }]
  757. }
  758. }
  759. })()
  760. ; hljs.registerLanguage("javascript", e)
  761. })();/*! `markdown` grammar compiled for Highlight.js 11.11.1 */
  762. (() => {
  763. var e = (() => {
  764. "use strict"; return e => {
  765. const n = {
  766. begin: /<\/?[A-Za-z_]/,
  767. end: ">", subLanguage: "xml", relevance: 0
  768. }, a = {
  769. variants: [{
  770. begin: /\[.+?\]\[.*?\]/,
  771. relevance: 0
  772. }, {
  773. begin: /\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,
  774. relevance: 2
  775. }, {
  776. begin: e.regex.concat(/\[.+?\]\(/, /[A-Za-z][A-Za-z0-9+.-]*/, /:\/\/.*?\)/),
  777. relevance: 2
  778. }, { begin: /\[.+?\]\([./?&#].*?\)/, relevance: 1 }, {
  779. begin: /\[.*?\]\(.*?\)/, relevance: 0
  780. }], returnBegin: !0, contains: [{
  781. match: /\[(?=\])/
  782. }, {
  783. className: "string", relevance: 0, begin: "\\[", end: "\\]", excludeBegin: !0,
  784. returnEnd: !0
  785. }, {
  786. className: "link", relevance: 0, begin: "\\]\\(", end: "\\)",
  787. excludeBegin: !0, excludeEnd: !0
  788. }, {
  789. className: "symbol", relevance: 0, begin: "\\]\\[",
  790. end: "\\]", excludeBegin: !0, excludeEnd: !0
  791. }]
  792. }, i = {
  793. className: "strong", contains: [],
  794. variants: [{ begin: /_{2}(?!\s)/, end: /_{2}/ }, { begin: /\*{2}(?!\s)/, end: /\*{2}/ }]
  795. }, s = {
  796. className: "emphasis", contains: [], variants: [{ begin: /\*(?![*\s])/, end: /\*/ }, {
  797. begin: /_(?![_\s])/, end: /_/, relevance: 0
  798. }]
  799. }, c = e.inherit(i, {
  800. contains: []
  801. }), t = e.inherit(s, { contains: [] }); i.contains.push(t), s.contains.push(c)
  802. ; let g = [n, a]; return [i, s, c, t].forEach((e => {
  803. e.contains = e.contains.concat(g)
  804. })), g = g.concat(i, s), {
  805. name: "Markdown", aliases: ["md", "mkdown", "mkd"], contains: [{
  806. className: "section", variants: [{ begin: "^#{1,6}", end: "$", contains: g }, {
  807. begin: "(?=^.+?\\n[=-]{2,}$)", contains: [{ begin: "^[=-]*$" }, {
  808. begin: "^", end: "\\n",
  809. contains: g
  810. }]
  811. }]
  812. }, n, {
  813. className: "bullet", begin: "^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",
  814. end: "\\s+", excludeEnd: !0
  815. }, i, s, {
  816. className: "quote", begin: "^>\\s+", contains: g,
  817. end: "$"
  818. }, {
  819. className: "code", variants: [{ begin: "(`{3,})[^`](.|\\n)*?\\1`*[ ]*" }, {
  820. begin: "(~{3,})[^~](.|\\n)*?\\1~*[ ]*"
  821. }, { begin: "```", end: "```+[ ]*$" }, {
  822. begin: "~~~", end: "~~~+[ ]*$"
  823. }, { begin: "`.+?`" }, {
  824. begin: "(?=^( {4}|\\t))",
  825. contains: [{ begin: "^( {4}|\\t)", end: "(\\n)$" }], relevance: 0
  826. }]
  827. }, {
  828. begin: "^[-\\*]{3,}", end: "$"
  829. }, a, {
  830. begin: /^\[[^\n]+\]:/, returnBegin: !0, contains: [{
  831. className: "symbol", begin: /\[/, end: /\]/, excludeBegin: !0, excludeEnd: !0
  832. }, {
  833. className: "link", begin: /:\s*/, end: /$/, excludeBegin: !0
  834. }]
  835. }, {
  836. scope: "literal",
  837. match: /&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/
  838. }]
  839. }
  840. }
  841. })()
  842. ; hljs.registerLanguage("markdown", e)
  843. })();/*! `python` grammar compiled for Highlight.js 11.11.1 */
  844. (() => {
  845. var e = (() => {
  846. "use strict"; return e => {
  847. const n = e.regex, a = /[\p{XID_Start}_]\p{XID_Continue}*/u, s = ["and", "as", "assert", "async", "await", "break", "case", "class", "continue", "def", "del", "elif", "else", "except", "finally", "for", "from", "global", "if", "import", "in", "is", "lambda", "match", "nonlocal|10", "not", "or", "pass", "raise", "return", "try", "while", "with", "yield"], t = {
  848. $pattern: /[A-Za-z]\w+|__\w+__/, keyword: s,
  849. built_in: ["__import__", "abs", "all", "any", "ascii", "bin", "bool", "breakpoint", "bytearray", "bytes", "callable", "chr", "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "exec", "filter", "float", "format", "frozenset", "getattr", "globals", "hasattr", "hash", "help", "hex", "id", "input", "int", "isinstance", "issubclass", "iter", "len", "list", "locals", "map", "max", "memoryview", "min", "next", "object", "oct", "open", "ord", "pow", "print", "property", "range", "repr", "reversed", "round", "set", "setattr", "slice", "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "vars", "zip"],
  850. literal: ["__debug__", "Ellipsis", "False", "None", "NotImplemented", "True"],
  851. type: ["Any", "Callable", "Coroutine", "Dict", "List", "Literal", "Generic", "Optional", "Sequence", "Set", "Tuple", "Type", "Union"]
  852. }, i = { className: "meta", begin: /^(>>>|\.\.\.) / }, r = {
  853. className: "subst", begin: /\{/,
  854. end: /\}/, keywords: t, illegal: /#/
  855. }, l = { begin: /\{\{/, relevance: 0 }, o = {
  856. className: "string", contains: [e.BACKSLASH_ESCAPE], variants: [{
  857. begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/, end: /'''/,
  858. contains: [e.BACKSLASH_ESCAPE, i], relevance: 10
  859. }, {
  860. begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/, end: /"""/,
  861. contains: [e.BACKSLASH_ESCAPE, i], relevance: 10
  862. }, {
  863. begin: /([fF][rR]|[rR][fF]|[fF])'''/, end: /'''/,
  864. contains: [e.BACKSLASH_ESCAPE, i, l, r]
  865. }, {
  866. begin: /([fF][rR]|[rR][fF]|[fF])"""/,
  867. end: /"""/, contains: [e.BACKSLASH_ESCAPE, i, l, r]
  868. }, {
  869. begin: /([uU]|[rR])'/, end: /'/,
  870. relevance: 10
  871. }, { begin: /([uU]|[rR])"/, end: /"/, relevance: 10 }, {
  872. begin: /([bB]|[bB][rR]|[rR][bB])'/, end: /'/
  873. }, {
  874. begin: /([bB]|[bB][rR]|[rR][bB])"/,
  875. end: /"/
  876. }, {
  877. begin: /([fF][rR]|[rR][fF]|[fF])'/, end: /'/,
  878. contains: [e.BACKSLASH_ESCAPE, l, r]
  879. }, {
  880. begin: /([fF][rR]|[rR][fF]|[fF])"/, end: /"/,
  881. contains: [e.BACKSLASH_ESCAPE, l, r]
  882. }, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE]
  883. }, b = "[0-9](_?[0-9])*", c = `(\\b(${b}))?\\.(${b})|\\b(${b})\\.`, d = "\\b|" + s.join("|"), g = {
  884. className: "number", relevance: 0, variants: [{
  885. begin: `(\\b(${b})|(${c}))[eE][+-]?(${b})[jJ]?(?=${d})`
  886. }, { begin: `(${c})[jJ]?` }, {
  887. begin: `\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`
  888. }, {
  889. begin: `\\b0[bB](_?[01])+[lL]?(?=${d})`
  890. }, {
  891. begin: `\\b0[oO](_?[0-7])+[lL]?(?=${d})`
  892. }, { begin: `\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})` }, {
  893. begin: `\\b(${b})[jJ](?=${d})`
  894. }]
  895. }, p = {
  896. className: "comment", begin: n.lookahead(/# type:/), end: /$/, keywords: t,
  897. contains: [{ begin: /# type:/ }, { begin: /#/, end: /\b\B/, endsWithParent: !0 }]
  898. }, m = {
  899. className: "params", variants: [{ className: "", begin: /\(\s*\)/, skip: !0 }, {
  900. begin: /\(/,
  901. end: /\)/, excludeBegin: !0, excludeEnd: !0, keywords: t,
  902. contains: ["self", i, g, o, e.HASH_COMMENT_MODE]
  903. }]
  904. }; return r.contains = [o, g, i], {
  905. name: "Python", aliases: ["py", "gyp", "ipython"], unicodeRegex: !0, keywords: t,
  906. illegal: /(<\/|\?)|=>/, contains: [i, g, {
  907. scope: "variable.language", match: /\bself\b/
  908. }, { beginKeywords: "if", relevance: 0 }, {
  909. match: /\bor\b/, scope: "keyword"
  910. }, o, p, e.HASH_COMMENT_MODE, {
  911. match: [/\bdef/, /\s+/, a], scope: {
  912. 1: "keyword",
  913. 3: "title.function"
  914. }, contains: [m]
  915. }, {
  916. variants: [{
  917. match: [/\bclass/, /\s+/, a, /\s*/, /\(\s*/, a, /\s*\)/]
  918. }, { match: [/\bclass/, /\s+/, a] }],
  919. scope: { 1: "keyword", 3: "title.class", 6: "title.class.inherited" }
  920. }, {
  921. className: "meta", begin: /^[\t ]*@/, end: /(?=#)|$/, contains: [g, m, o]
  922. }]
  923. }
  924. }
  925. })()
  926. ; hljs.registerLanguage("python", e)
  927. })();