eleven / ocho Public

Clone
git clone https://amadan.net/eleven/ocho

Plain git — no account needed to clone.

Download

Download this file

1// πŸ€– markdown-it v14.3.0 (MIT, github.com/markdown-it/markdown-it) β€” vendored
2// single-file ESM bundle: the ONE Markdown parser on web. The feed renders
3// through it (markdown.js), and the WYSIWYG composer parses through the same
4// configuration (prosemirror-markdown), so what you compose and what the feed
5// shows can never disagree. Regenerate on any machine with node:
6//
7// mkdir /tmp/mdit && cd /tmp/mdit && npm init -y
8// npm install markdown-it@14.3.0 esbuild
9// printf 'export { default } from "markdown-it";\n' > entry.mjs
10// npx esbuild entry.mjs --bundle --format=esm --legal-comments=inline \
11// --outfile=markdown-it.js
12//
13// then re-add this header. Unminified on purpose (CLAUDE.md: human-manageable;
14// a version bump diffs reviewably). Bundled deps: entities (BSD-2-Clause),
15// linkify-it, mdurl, punycode.js, uc.micro (MIT). linkify-it is constructed but
16// unused β€” messages autolink through format.js tokenizeText (curated TLDs).
17var __defProp = Object.defineProperty;
18var __export = (target, all) => {
19 for (var name in all)
20 __defProp(target, name, { get: all[name], enumerable: true });
21};
22
23// node_modules/markdown-it/lib/common/utils.mjs
24var utils_exports = {};
25__export(utils_exports, {
26 arrayReplaceAt: () => arrayReplaceAt,
27 asciiTrim: () => asciiTrim,
28 assign: () => assign,
29 escapeHtml: () => escapeHtml,
30 escapeRE: () => escapeRE,
31 fromCodePoint: () => fromCodePoint2,
32 has: () => has,
33 isMdAsciiPunct: () => isMdAsciiPunct,
34 isPunctChar: () => isPunctChar,
35 isPunctCharCode: () => isPunctCharCode,
36 isSpace: () => isSpace,
37 isString: () => isString,
38 isValidEntityCode: () => isValidEntityCode,
39 isWhiteSpace: () => isWhiteSpace,
40 lib: () => lib,
41 normalizeReference: () => normalizeReference,
42 unescapeAll: () => unescapeAll,
43 unescapeMd: () => unescapeMd
44});
45
46// node_modules/mdurl/index.mjs
47var mdurl_exports = {};
48__export(mdurl_exports, {
49 decode: () => decode_default,
50 encode: () => encode_default,
51 format: () => format,
52 parse: () => parse_default
53});
54
55// node_modules/mdurl/lib/decode.mjs
56var decodeCache = {};
57function getDecodeCache(exclude) {
58 let cache = decodeCache[exclude];
59 if (cache) {
60 return cache;
61 }
62 cache = decodeCache[exclude] = [];
63 for (let i = 0; i < 128; i++) {
64 const ch = String.fromCharCode(i);
65 cache.push(ch);
66 }
67 for (let i = 0; i < exclude.length; i++) {
68 const ch = exclude.charCodeAt(i);
69 cache[ch] = "%" + ("0" + ch.toString(16).toUpperCase()).slice(-2);
70 }
71 return cache;
72}
73function decode(string, exclude) {
74 if (typeof exclude !== "string") {
75 exclude = decode.defaultChars;
76 }
77 const cache = getDecodeCache(exclude);
78 return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {
79 let result = "";
80 for (let i = 0, l = seq.length; i < l; i += 3) {
81 const b1 = parseInt(seq.slice(i + 1, i + 3), 16);
82 if (b1 < 128) {
83 result += cache[b1];
84 continue;
85 }
86 if ((b1 & 224) === 192 && i + 3 < l) {
87 const b2 = parseInt(seq.slice(i + 4, i + 6), 16);
88 if ((b2 & 192) === 128) {
89 const chr = b1 << 6 & 1984 | b2 & 63;
90 if (chr < 128) {
91 result += "\uFFFD\uFFFD";
92 } else {
93 result += String.fromCharCode(chr);
94 }
95 i += 3;
96 continue;
97 }
98 }
99 if ((b1 & 240) === 224 && i + 6 < l) {
100 const b2 = parseInt(seq.slice(i + 4, i + 6), 16);
101 const b3 = parseInt(seq.slice(i + 7, i + 9), 16);
102 if ((b2 & 192) === 128 && (b3 & 192) === 128) {
103 const chr = b1 << 12 & 61440 | b2 << 6 & 4032 | b3 & 63;
104 if (chr < 2048 || chr >= 55296 && chr <= 57343) {
105 result += "\uFFFD\uFFFD\uFFFD";
106 } else {
107 result += String.fromCharCode(chr);
108 }
109 i += 6;
110 continue;
111 }
112 }
113 if ((b1 & 248) === 240 && i + 9 < l) {
114 const b2 = parseInt(seq.slice(i + 4, i + 6), 16);
115 const b3 = parseInt(seq.slice(i + 7, i + 9), 16);
116 const b4 = parseInt(seq.slice(i + 10, i + 12), 16);
117 if ((b2 & 192) === 128 && (b3 & 192) === 128 && (b4 & 192) === 128) {
118 let chr = b1 << 18 & 1835008 | b2 << 12 & 258048 | b3 << 6 & 4032 | b4 & 63;
119 if (chr < 65536 || chr > 1114111) {
120 result += "\uFFFD\uFFFD\uFFFD\uFFFD";
121 } else {
122 chr -= 65536;
123 result += String.fromCharCode(55296 + (chr >> 10), 56320 + (chr & 1023));
124 }
125 i += 9;
126 continue;
127 }
128 }
129 result += "\uFFFD";
130 }
131 return result;
132 });
133}
134decode.defaultChars = ";/?:@&=+$,#";
135decode.componentChars = "";
136var decode_default = decode;
137
138// node_modules/mdurl/lib/encode.mjs
139var encodeCache = {};
140function getEncodeCache(exclude) {
141 let cache = encodeCache[exclude];
142 if (cache) {
143 return cache;
144 }
145 cache = encodeCache[exclude] = [];
146 for (let i = 0; i < 128; i++) {
147 const ch = String.fromCharCode(i);
148 if (/^[0-9a-z]$/i.test(ch)) {
149 cache.push(ch);
150 } else {
151 cache.push("%" + ("0" + i.toString(16).toUpperCase()).slice(-2));
152 }
153 }
154 for (let i = 0; i < exclude.length; i++) {
155 cache[exclude.charCodeAt(i)] = exclude[i];
156 }
157 return cache;
158}
159function encode(string, exclude, keepEscaped) {
160 if (typeof exclude !== "string") {
161 keepEscaped = exclude;
162 exclude = encode.defaultChars;
163 }
164 if (typeof keepEscaped === "undefined") {
165 keepEscaped = true;
166 }
167 const cache = getEncodeCache(exclude);
168 let result = "";
169 for (let i = 0, l = string.length; i < l; i++) {
170 const code2 = string.charCodeAt(i);
171 if (keepEscaped && code2 === 37 && i + 2 < l) {
172 if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {
173 result += string.slice(i, i + 3);
174 i += 2;
175 continue;
176 }
177 }
178 if (code2 < 128) {
179 result += cache[code2];
180 continue;
181 }
182 if (code2 >= 55296 && code2 <= 57343) {
183 if (code2 >= 55296 && code2 <= 56319 && i + 1 < l) {
184 const nextCode = string.charCodeAt(i + 1);
185 if (nextCode >= 56320 && nextCode <= 57343) {
186 result += encodeURIComponent(string[i] + string[i + 1]);
187 i++;
188 continue;
189 }
190 }
191 result += "%EF%BF%BD";
192 continue;
193 }
194 result += encodeURIComponent(string[i]);
195 }
196 return result;
197}
198encode.defaultChars = ";/?:@&=+$,-_.!~*'()#";
199encode.componentChars = "-_.!~*'()";
200var encode_default = encode;
201
202// node_modules/mdurl/lib/format.mjs
203function format(url) {
204 let result = "";
205 result += url.protocol || "";
206 result += url.slashes ? "//" : "";
207 result += url.auth ? url.auth + "@" : "";
208 if (url.hostname && url.hostname.indexOf(":") !== -1) {
209 result += "[" + url.hostname + "]";
210 } else {
211 result += url.hostname || "";
212 }
213 result += url.port ? ":" + url.port : "";
214 result += url.pathname || "";
215 result += url.search || "";
216 result += url.hash || "";
217 return result;
218}
219
220// node_modules/mdurl/lib/parse.mjs
221function Url() {
222 this.protocol = null;
223 this.slashes = null;
224 this.auth = null;
225 this.port = null;
226 this.hostname = null;
227 this.hash = null;
228 this.search = null;
229 this.pathname = null;
230}
231var protocolPattern = /^([a-z0-9.+-]+:)/i;
232var portPattern = /:[0-9]*$/;
233var simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/;
234var delims = ["<", ">", '"', "`", " ", "\r", "\n", " "];
235var unwise = ["{", "}", "|", "\\", "^", "`"].concat(delims);
236var autoEscape = ["'"].concat(unwise);
237var nonHostChars = ["%", "/", "?", ";", "#"].concat(autoEscape);
238var hostEndingChars = ["/", "?", "#"];
239var hostnameMaxLen = 255;
240var hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/;
241var hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/;
242var hostlessProtocol = {
243 javascript: true,
244 "javascript:": true
245};
246var slashedProtocol = {
247 http: true,
248 https: true,
249 ftp: true,
250 gopher: true,
251 file: true,
252 "http:": true,
253 "https:": true,
254 "ftp:": true,
255 "gopher:": true,
256 "file:": true
257};
258function urlParse(url, slashesDenoteHost) {
259 if (url && url instanceof Url) return url;
260 const u = new Url();
261 u.parse(url, slashesDenoteHost);
262 return u;
263}
264Url.prototype.parse = function(url, slashesDenoteHost) {
265 let lowerProto, hec, slashes;
266 let rest = url;
267 rest = rest.trim();
268 if (!slashesDenoteHost && url.split("#").length === 1) {
269 const simplePath = simplePathPattern.exec(rest);
270 if (simplePath) {
271 this.pathname = simplePath[1];
272 if (simplePath[2]) {
273 this.search = simplePath[2];
274 }
275 return this;
276 }
277 }
278 let proto = protocolPattern.exec(rest);
279 if (proto) {
280 proto = proto[0];
281 lowerProto = proto.toLowerCase();
282 this.protocol = proto;
283 rest = rest.substr(proto.length);
284 }
285 if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
286 slashes = rest.substr(0, 2) === "//";
287 if (slashes && !(proto && hostlessProtocol[proto])) {
288 rest = rest.substr(2);
289 this.slashes = true;
290 }
291 }
292 if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {
293 let hostEnd = -1;
294 for (let i = 0; i < hostEndingChars.length; i++) {
295 hec = rest.indexOf(hostEndingChars[i]);
296 if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {
297 hostEnd = hec;
298 }
299 }
300 let auth, atSign;
301 if (hostEnd === -1) {
302 atSign = rest.lastIndexOf("@");
303 } else {
304 atSign = rest.lastIndexOf("@", hostEnd);
305 }
306 if (atSign !== -1) {
307 auth = rest.slice(0, atSign);
308 rest = rest.slice(atSign + 1);
309 this.auth = auth;
310 }
311 hostEnd = -1;
312 for (let i = 0; i < nonHostChars.length; i++) {
313 hec = rest.indexOf(nonHostChars[i]);
314 if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {
315 hostEnd = hec;
316 }
317 }
318 if (hostEnd === -1) {
319 hostEnd = rest.length;
320 }
321 if (rest[hostEnd - 1] === ":") {
322 hostEnd--;
323 }
324 const host = rest.slice(0, hostEnd);
325 rest = rest.slice(hostEnd);
326 this.parseHost(host);
327 this.hostname = this.hostname || "";
328 const ipv6Hostname = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]";
329 if (!ipv6Hostname) {
330 const hostparts = this.hostname.split(/\./);
331 for (let i = 0, l = hostparts.length; i < l; i++) {
332 const part = hostparts[i];
333 if (!part) {
334 continue;
335 }
336 if (!part.match(hostnamePartPattern)) {
337 let newpart = "";
338 for (let j = 0, k = part.length; j < k; j++) {
339 if (part.charCodeAt(j) > 127) {
340 newpart += "x";
341 } else {
342 newpart += part[j];
343 }
344 }
345 if (!newpart.match(hostnamePartPattern)) {
346 const validParts = hostparts.slice(0, i);
347 const notHost = hostparts.slice(i + 1);
348 const bit = part.match(hostnamePartStart);
349 if (bit) {
350 validParts.push(bit[1]);
351 notHost.unshift(bit[2]);
352 }
353 if (notHost.length) {
354 rest = notHost.join(".") + rest;
355 }
356 this.hostname = validParts.join(".");
357 break;
358 }
359 }
360 }
361 }
362 if (this.hostname.length > hostnameMaxLen) {
363 this.hostname = "";
364 }
365 if (ipv6Hostname) {
366 this.hostname = this.hostname.substr(1, this.hostname.length - 2);
367 }
368 }
369 const hash = rest.indexOf("#");
370 if (hash !== -1) {
371 this.hash = rest.substr(hash);
372 rest = rest.slice(0, hash);
373 }
374 const qm = rest.indexOf("?");
375 if (qm !== -1) {
376 this.search = rest.substr(qm);
377 rest = rest.slice(0, qm);
378 }
379 if (rest) {
380 this.pathname = rest;
381 }
382 if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {
383 this.pathname = "";
384 }
385 return this;
386};
387Url.prototype.parseHost = function(host) {
388 let port = portPattern.exec(host);
389 if (port) {
390 port = port[0];
391 if (port !== ":") {
392 this.port = port.substr(1);
393 }
394 host = host.substr(0, host.length - port.length);
395 }
396 if (host) {
397 this.hostname = host;
398 }
399};
400var parse_default = urlParse;
401
402// node_modules/uc.micro/index.mjs
403var uc_exports = {};
404__export(uc_exports, {
405 Any: () => regex_default,
406 Cc: () => regex_default2,
407 Cf: () => regex_default3,
408 P: () => regex_default4,
409 S: () => regex_default5,
410 Z: () => regex_default6
411});
412
413// node_modules/uc.micro/properties/Any/regex.mjs
414var regex_default = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
415
416// node_modules/uc.micro/categories/Cc/regex.mjs
417var regex_default2 = /[\0-\x1F\x7F-\x9F]/;
418
419// node_modules/uc.micro/categories/Cf/regex.mjs
420var regex_default3 = /[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/;
421
422// node_modules/uc.micro/categories/P/regex.mjs
423var regex_default4 = /[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/;
424
425// node_modules/uc.micro/categories/S/regex.mjs
426var regex_default5 = /[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC2\uFD40-\uFD4F\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA]/;
427
428// node_modules/uc.micro/categories/Z/regex.mjs
429var regex_default6 = /[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;
430
431// node_modules/entities/lib/esm/generated/decode-data-html.js
432var decode_data_html_default = new Uint16Array(
433 // prettier-ignore
434 '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0))
435);
436
437// node_modules/entities/lib/esm/generated/decode-data-xml.js
438var decode_data_xml_default = new Uint16Array(
439 // prettier-ignore
440 "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0))
441);
442
443// node_modules/entities/lib/esm/decode_codepoint.js
444var _a;
445var decodeMap = /* @__PURE__ */ new Map([
446 [0, 65533],
447 // C1 Unicode control character reference replacements
448 [128, 8364],
449 [130, 8218],
450 [131, 402],
451 [132, 8222],
452 [133, 8230],
453 [134, 8224],
454 [135, 8225],
455 [136, 710],
456 [137, 8240],
457 [138, 352],
458 [139, 8249],
459 [140, 338],
460 [142, 381],
461 [145, 8216],
462 [146, 8217],
463 [147, 8220],
464 [148, 8221],
465 [149, 8226],
466 [150, 8211],
467 [151, 8212],
468 [152, 732],
469 [153, 8482],
470 [154, 353],
471 [155, 8250],
472 [156, 339],
473 [158, 382],
474 [159, 376]
475]);
476var fromCodePoint = (
477 // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
478 (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) {
479 let output = "";
480 if (codePoint > 65535) {
481 codePoint -= 65536;
482 output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
483 codePoint = 56320 | codePoint & 1023;
484 }
485 output += String.fromCharCode(codePoint);
486 return output;
487 }
488);
489function replaceCodePoint(codePoint) {
490 var _a2;
491 if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
492 return 65533;
493 }
494 return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== void 0 ? _a2 : codePoint;
495}
496
497// node_modules/entities/lib/esm/decode.js
498var CharCodes;
499(function(CharCodes2) {
500 CharCodes2[CharCodes2["NUM"] = 35] = "NUM";
501 CharCodes2[CharCodes2["SEMI"] = 59] = "SEMI";
502 CharCodes2[CharCodes2["EQUALS"] = 61] = "EQUALS";
503 CharCodes2[CharCodes2["ZERO"] = 48] = "ZERO";
504 CharCodes2[CharCodes2["NINE"] = 57] = "NINE";
505 CharCodes2[CharCodes2["LOWER_A"] = 97] = "LOWER_A";
506 CharCodes2[CharCodes2["LOWER_F"] = 102] = "LOWER_F";
507 CharCodes2[CharCodes2["LOWER_X"] = 120] = "LOWER_X";
508 CharCodes2[CharCodes2["LOWER_Z"] = 122] = "LOWER_Z";
509 CharCodes2[CharCodes2["UPPER_A"] = 65] = "UPPER_A";
510 CharCodes2[CharCodes2["UPPER_F"] = 70] = "UPPER_F";
511 CharCodes2[CharCodes2["UPPER_Z"] = 90] = "UPPER_Z";
512})(CharCodes || (CharCodes = {}));
513var TO_LOWER_BIT = 32;
514var BinTrieFlags;
515(function(BinTrieFlags2) {
516 BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
517 BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
518 BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE";
519})(BinTrieFlags || (BinTrieFlags = {}));
520function isNumber(code2) {
521 return code2 >= CharCodes.ZERO && code2 <= CharCodes.NINE;
522}
523function isHexadecimalCharacter(code2) {
524 return code2 >= CharCodes.UPPER_A && code2 <= CharCodes.UPPER_F || code2 >= CharCodes.LOWER_A && code2 <= CharCodes.LOWER_F;
525}
526function isAsciiAlphaNumeric(code2) {
527 return code2 >= CharCodes.UPPER_A && code2 <= CharCodes.UPPER_Z || code2 >= CharCodes.LOWER_A && code2 <= CharCodes.LOWER_Z || isNumber(code2);
528}
529function isEntityInAttributeInvalidEnd(code2) {
530 return code2 === CharCodes.EQUALS || isAsciiAlphaNumeric(code2);
531}
532var EntityDecoderState;
533(function(EntityDecoderState2) {
534 EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart";
535 EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart";
536 EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal";
537 EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex";
538 EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity";
539})(EntityDecoderState || (EntityDecoderState = {}));
540var DecodingMode;
541(function(DecodingMode2) {
542 DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy";
543 DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict";
544 DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute";
545})(DecodingMode || (DecodingMode = {}));
546var EntityDecoder = class {
547 constructor(decodeTree, emitCodePoint, errors2) {
548 this.decodeTree = decodeTree;
549 this.emitCodePoint = emitCodePoint;
550 this.errors = errors2;
551 this.state = EntityDecoderState.EntityStart;
552 this.consumed = 1;
553 this.result = 0;
554 this.treeIndex = 0;
555 this.excess = 1;
556 this.decodeMode = DecodingMode.Strict;
557 }
558 /** Resets the instance to make it reusable. */
559 startEntity(decodeMode) {
560 this.decodeMode = decodeMode;
561 this.state = EntityDecoderState.EntityStart;
562 this.result = 0;
563 this.treeIndex = 0;
564 this.excess = 1;
565 this.consumed = 1;
566 }
567 /**
568 * Write an entity to the decoder. This can be called multiple times with partial entities.
569 * If the entity is incomplete, the decoder will return -1.
570 *
571 * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
572 * entity is incomplete, and resume when the next string is written.
573 *
574 * @param string The string containing the entity (or a continuation of the entity).
575 * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
576 * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
577 */
578 write(str, offset) {
579 switch (this.state) {
580 case EntityDecoderState.EntityStart: {
581 if (str.charCodeAt(offset) === CharCodes.NUM) {
582 this.state = EntityDecoderState.NumericStart;
583 this.consumed += 1;
584 return this.stateNumericStart(str, offset + 1);
585 }
586 this.state = EntityDecoderState.NamedEntity;
587 return this.stateNamedEntity(str, offset);
588 }
589 case EntityDecoderState.NumericStart: {
590 return this.stateNumericStart(str, offset);
591 }
592 case EntityDecoderState.NumericDecimal: {
593 return this.stateNumericDecimal(str, offset);
594 }
595 case EntityDecoderState.NumericHex: {
596 return this.stateNumericHex(str, offset);
597 }
598 case EntityDecoderState.NamedEntity: {
599 return this.stateNamedEntity(str, offset);
600 }
601 }
602 }
603 /**
604 * Switches between the numeric decimal and hexadecimal states.
605 *
606 * Equivalent to the `Numeric character reference state` in the HTML spec.
607 *
608 * @param str The string containing the entity (or a continuation of the entity).
609 * @param offset The current offset.
610 * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
611 */
612 stateNumericStart(str, offset) {
613 if (offset >= str.length) {
614 return -1;
615 }
616 if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
617 this.state = EntityDecoderState.NumericHex;
618 this.consumed += 1;
619 return this.stateNumericHex(str, offset + 1);
620 }
621 this.state = EntityDecoderState.NumericDecimal;
622 return this.stateNumericDecimal(str, offset);
623 }
624 addToNumericResult(str, start, end, base2) {
625 if (start !== end) {
626 const digitCount = end - start;
627 this.result = this.result * Math.pow(base2, digitCount) + parseInt(str.substr(start, digitCount), base2);
628 this.consumed += digitCount;
629 }
630 }
631 /**
632 * Parses a hexadecimal numeric entity.
633 *
634 * Equivalent to the `Hexademical character reference state` in the HTML spec.
635 *
636 * @param str The string containing the entity (or a continuation of the entity).
637 * @param offset The current offset.
638 * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
639 */
640 stateNumericHex(str, offset) {
641 const startIdx = offset;
642 while (offset < str.length) {
643 const char = str.charCodeAt(offset);
644 if (isNumber(char) || isHexadecimalCharacter(char)) {
645 offset += 1;
646 } else {
647 this.addToNumericResult(str, startIdx, offset, 16);
648 return this.emitNumericEntity(char, 3);
649 }
650 }
651 this.addToNumericResult(str, startIdx, offset, 16);
652 return -1;
653 }
654 /**
655 * Parses a decimal numeric entity.
656 *
657 * Equivalent to the `Decimal character reference state` in the HTML spec.
658 *
659 * @param str The string containing the entity (or a continuation of the entity).
660 * @param offset The current offset.
661 * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
662 */
663 stateNumericDecimal(str, offset) {
664 const startIdx = offset;
665 while (offset < str.length) {
666 const char = str.charCodeAt(offset);
667 if (isNumber(char)) {
668 offset += 1;
669 } else {
670 this.addToNumericResult(str, startIdx, offset, 10);
671 return this.emitNumericEntity(char, 2);
672 }
673 }
674 this.addToNumericResult(str, startIdx, offset, 10);
675 return -1;
676 }
677 /**
678 * Validate and emit a numeric entity.
679 *
680 * Implements the logic from the `Hexademical character reference start
681 * state` and `Numeric character reference end state` in the HTML spec.
682 *
683 * @param lastCp The last code point of the entity. Used to see if the
684 * entity was terminated with a semicolon.
685 * @param expectedLength The minimum number of characters that should be
686 * consumed. Used to validate that at least one digit
687 * was consumed.
688 * @returns The number of characters that were consumed.
689 */
690 emitNumericEntity(lastCp, expectedLength) {
691 var _a2;
692 if (this.consumed <= expectedLength) {
693 (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.absenceOfDigitsInNumericCharacterReference(this.consumed);
694 return 0;
695 }
696 if (lastCp === CharCodes.SEMI) {
697 this.consumed += 1;
698 } else if (this.decodeMode === DecodingMode.Strict) {
699 return 0;
700 }
701 this.emitCodePoint(replaceCodePoint(this.result), this.consumed);
702 if (this.errors) {
703 if (lastCp !== CharCodes.SEMI) {
704 this.errors.missingSemicolonAfterCharacterReference();
705 }
706 this.errors.validateNumericCharacterReference(this.result);
707 }
708 return this.consumed;
709 }
710 /**
711 * Parses a named entity.
712 *
713 * Equivalent to the `Named character reference state` in the HTML spec.
714 *
715 * @param str The string containing the entity (or a continuation of the entity).
716 * @param offset The current offset.
717 * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
718 */
719 stateNamedEntity(str, offset) {
720 const { decodeTree } = this;
721 let current = decodeTree[this.treeIndex];
722 let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
723 for (; offset < str.length; offset++, this.excess++) {
724 const char = str.charCodeAt(offset);
725 this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
726 if (this.treeIndex < 0) {
727 return this.result === 0 || // If we are parsing an attribute
728 this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity,
729 (valueLength === 0 || // And there should be no invalid characters.
730 isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();
731 }
732 current = decodeTree[this.treeIndex];
733 valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
734 if (valueLength !== 0) {
735 if (char === CharCodes.SEMI) {
736 return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
737 }
738 if (this.decodeMode !== DecodingMode.Strict) {
739 this.result = this.treeIndex;
740 this.consumed += this.excess;
741 this.excess = 0;
742 }
743 }
744 }
745 return -1;
746 }
747 /**
748 * Emit a named entity that was not terminated with a semicolon.
749 *
750 * @returns The number of characters consumed.
751 */
752 emitNotTerminatedNamedEntity() {
753 var _a2;
754 const { result, decodeTree } = this;
755 const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
756 this.emitNamedEntityData(result, valueLength, this.consumed);
757 (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.missingSemicolonAfterCharacterReference();
758 return this.consumed;
759 }
760 /**
761 * Emit a named entity.
762 *
763 * @param result The index of the entity in the decode tree.
764 * @param valueLength The number of bytes in the entity.
765 * @param consumed The number of characters consumed.
766 *
767 * @returns The number of characters consumed.
768 */
769 emitNamedEntityData(result, valueLength, consumed) {
770 const { decodeTree } = this;
771 this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed);
772 if (valueLength === 3) {
773 this.emitCodePoint(decodeTree[result + 2], consumed);
774 }
775 return consumed;
776 }
777 /**
778 * Signal to the parser that the end of the input was reached.
779 *
780 * Remaining data will be emitted and relevant errors will be produced.
781 *
782 * @returns The number of characters consumed.
783 */
784 end() {
785 var _a2;
786 switch (this.state) {
787 case EntityDecoderState.NamedEntity: {
788 return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
789 }
790 // Otherwise, emit a numeric entity if we have one.
791 case EntityDecoderState.NumericDecimal: {
792 return this.emitNumericEntity(0, 2);
793 }
794 case EntityDecoderState.NumericHex: {
795 return this.emitNumericEntity(0, 3);
796 }
797 case EntityDecoderState.NumericStart: {
798 (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.absenceOfDigitsInNumericCharacterReference(this.consumed);
799 return 0;
800 }
801 case EntityDecoderState.EntityStart: {
802 return 0;
803 }
804 }
805 }
806};
807function getDecoder(decodeTree) {
808 let ret = "";
809 const decoder = new EntityDecoder(decodeTree, (str) => ret += fromCodePoint(str));
810 return function decodeWithTrie(str, decodeMode) {
811 let lastIndex = 0;
812 let offset = 0;
813 while ((offset = str.indexOf("&", offset)) >= 0) {
814 ret += str.slice(lastIndex, offset);
815 decoder.startEntity(decodeMode);
816 const len = decoder.write(
817 str,
818 // Skip the "&"
819 offset + 1
820 );
821 if (len < 0) {
822 lastIndex = offset + decoder.end();
823 break;
824 }
825 lastIndex = offset + len;
826 offset = len === 0 ? lastIndex + 1 : lastIndex;
827 }
828 const result = ret + str.slice(lastIndex);
829 ret = "";
830 return result;
831 };
832}
833function determineBranch(decodeTree, current, nodeIdx, char) {
834 const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
835 const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
836 if (branchCount === 0) {
837 return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
838 }
839 if (jumpOffset) {
840 const value = char - jumpOffset;
841 return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;
842 }
843 let lo = nodeIdx;
844 let hi = lo + branchCount - 1;
845 while (lo <= hi) {
846 const mid = lo + hi >>> 1;
847 const midVal = decodeTree[mid];
848 if (midVal < char) {
849 lo = mid + 1;
850 } else if (midVal > char) {
851 hi = mid - 1;
852 } else {
853 return decodeTree[mid + branchCount];
854 }
855 }
856 return -1;
857}
858var htmlDecoder = getDecoder(decode_data_html_default);
859var xmlDecoder = getDecoder(decode_data_xml_default);
860function decodeHTML(str, mode = DecodingMode.Legacy) {
861 return htmlDecoder(str, mode);
862}
863function decodeHTMLStrict(str) {
864 return htmlDecoder(str, DecodingMode.Strict);
865}
866
867// node_modules/entities/lib/esm/generated/encode-html.js
868function restoreDiff(arr) {
869 for (let i = 1; i < arr.length; i++) {
870 arr[i][0] += arr[i - 1][0] + 1;
871 }
872 return arr;
873}
874var encode_html_default = new Map(/* @__PURE__ */ restoreDiff([[9, "&Tab;"], [0, "&NewLine;"], [22, "&excl;"], [0, "&quot;"], [0, "&num;"], [0, "&dollar;"], [0, "&percnt;"], [0, "&amp;"], [0, "&apos;"], [0, "&lpar;"], [0, "&rpar;"], [0, "&ast;"], [0, "&plus;"], [0, "&comma;"], [1, "&period;"], [0, "&sol;"], [10, "&colon;"], [0, "&semi;"], [0, { v: "&lt;", n: 8402, o: "&nvlt;" }], [0, { v: "&equals;", n: 8421, o: "&bne;" }], [0, { v: "&gt;", n: 8402, o: "&nvgt;" }], [0, "&quest;"], [0, "&commat;"], [26, "&lbrack;"], [0, "&bsol;"], [0, "&rbrack;"], [0, "&Hat;"], [0, "&lowbar;"], [0, "&DiacriticalGrave;"], [5, { n: 106, o: "&fjlig;" }], [20, "&lbrace;"], [0, "&verbar;"], [0, "&rbrace;"], [34, "&nbsp;"], [0, "&iexcl;"], [0, "&cent;"], [0, "&pound;"], [0, "&curren;"], [0, "&yen;"], [0, "&brvbar;"], [0, "&sect;"], [0, "&die;"], [0, "&copy;"], [0, "&ordf;"], [0, "&laquo;"], [0, "&not;"], [0, "&shy;"], [0, "&circledR;"], [0, "&macr;"], [0, "&deg;"], [0, "&PlusMinus;"], [0, "&sup2;"], [0, "&sup3;"], [0, "&acute;"], [0, "&micro;"], [0, "&para;"], [0, "&centerdot;"], [0, "&cedil;"], [0, "&sup1;"], [0, "&ordm;"], [0, "&raquo;"], [0, "&frac14;"], [0, "&frac12;"], [0, "&frac34;"], [0, "&iquest;"], [0, "&Agrave;"], [0, "&Aacute;"], [0, "&Acirc;"], [0, "&Atilde;"], [0, "&Auml;"], [0, "&angst;"], [0, "&AElig;"], [0, "&Ccedil;"], [0, "&Egrave;"], [0, "&Eacute;"], [0, "&Ecirc;"], [0, "&Euml;"], [0, "&Igrave;"], [0, "&Iacute;"], [0, "&Icirc;"], [0, "&Iuml;"], [0, "&ETH;"], [0, "&Ntilde;"], [0, "&Ograve;"], [0, "&Oacute;"], [0, "&Ocirc;"], [0, "&Otilde;"], [0, "&Ouml;"], [0, "&times;"], [0, "&Oslash;"], [0, "&Ugrave;"], [0, "&Uacute;"], [0, "&Ucirc;"], [0, "&Uuml;"], [0, "&Yacute;"], [0, "&THORN;"], [0, "&szlig;"], [0, "&agrave;"], [0, "&aacute;"], [0, "&acirc;"], [0, "&atilde;"], [0, "&auml;"], [0, "&aring;"], [0, "&aelig;"], [0, "&ccedil;"], [0, "&egrave;"], [0, "&eacute;"], [0, "&ecirc;"], [0, "&euml;"], [0, "&igrave;"], [0, "&iacute;"], [0, "&icirc;"], [0, "&iuml;"], [0, "&eth;"], [0, "&ntilde;"], [0, "&ograve;"], [0, "&oacute;"], [0, "&ocirc;"], [0, "&otilde;"], [0, "&ouml;"], [0, "&div;"], [0, "&oslash;"], [0, "&ugrave;"], [0, "&uacute;"], [0, "&ucirc;"], [0, "&uuml;"], [0, "&yacute;"], [0, "&thorn;"], [0, "&yuml;"], [0, "&Amacr;"], [0, "&amacr;"], [0, "&Abreve;"], [0, "&abreve;"], [0, "&Aogon;"], [0, "&aogon;"], [0, "&Cacute;"], [0, "&cacute;"], [0, "&Ccirc;"], [0, "&ccirc;"], [0, "&Cdot;"], [0, "&cdot;"], [0, "&Ccaron;"], [0, "&ccaron;"], [0, "&Dcaron;"], [0, "&dcaron;"], [0, "&Dstrok;"], [0, "&dstrok;"], [0, "&Emacr;"], [0, "&emacr;"], [2, "&Edot;"], [0, "&edot;"], [0, "&Eogon;"], [0, "&eogon;"], [0, "&Ecaron;"], [0, "&ecaron;"], [0, "&Gcirc;"], [0, "&gcirc;"], [0, "&Gbreve;"], [0, "&gbreve;"], [0, "&Gdot;"], [0, "&gdot;"], [0, "&Gcedil;"], [1, "&Hcirc;"], [0, "&hcirc;"], [0, "&Hstrok;"], [0, "&hstrok;"], [0, "&Itilde;"], [0, "&itilde;"], [0, "&Imacr;"], [0, "&imacr;"], [2, "&Iogon;"], [0, "&iogon;"], [0, "&Idot;"], [0, "&imath;"], [0, "&IJlig;"], [0, "&ijlig;"], [0, "&Jcirc;"], [0, "&jcirc;"], [0, "&Kcedil;"], [0, "&kcedil;"], [0, "&kgreen;"], [0, "&Lacute;"], [0, "&lacute;"], [0, "&Lcedil;"], [0, "&lcedil;"], [0, "&Lcaron;"], [0, "&lcaron;"], [0, "&Lmidot;"], [0, "&lmidot;"], [0, "&Lstrok;"], [0, "&lstrok;"], [0, "&Nacute;"], [0, "&nacute;"], [0, "&Ncedil;"], [0, "&ncedil;"], [0, "&Ncaron;"], [0, "&ncaron;"], [0, "&napos;"], [0, "&ENG;"], [0, "&eng;"], [0, "&Omacr;"], [0, "&omacr;"], [2, "&Odblac;"], [0, "&odblac;"], [0, "&OElig;"], [0, "&oelig;"], [0, "&Racute;"], [0, "&racute;"], [0, "&Rcedil;"], [0, "&rcedil;"], [0, "&Rcaron;"], [0, "&rcaron;"], [0, "&Sacute;"], [0, "&sacute;"], [0, "&Scirc;"], [0, "&scirc;"], [0, "&Scedil;"], [0, "&scedil;"], [0, "&Scaron;"], [0, "&scaron;"], [0, "&Tcedil;"], [0, "&tcedil;"], [0, "&Tcaron;"], [0, "&tcaron;"], [0, "&Tstrok;"], [0, "&tstrok;"], [0, "&Utilde;"], [0, "&utilde;"], [0, "&Umacr;"], [0, "&umacr;"], [0, "&Ubreve;"], [0, "&ubreve;"], [0, "&Uring;"], [0, "&uring;"], [0, "&Udblac;"], [0, "&udblac;"], [0, "&Uogon;"], [0, "&uogon;"], [0, "&Wcirc;"], [0, "&wcirc;"], [0, "&Ycirc;"], [0, "&ycirc;"], [0, "&Yuml;"], [0, "&Zacute;"], [0, "&zacute;"], [0, "&Zdot;"], [0, "&zdot;"], [0, "&Zcaron;"], [0, "&zcaron;"], [19, "&fnof;"], [34, "&imped;"], [63, "&gacute;"], [65, "&jmath;"], [142, "&circ;"], [0, "&caron;"], [16, "&breve;"], [0, "&DiacriticalDot;"], [0, "&ring;"], [0, "&ogon;"], [0, "&DiacriticalTilde;"], [0, "&dblac;"], [51, "&DownBreve;"], [127, "&Alpha;"], [0, "&Beta;"], [0, "&Gamma;"], [0, "&Delta;"], [0, "&Epsilon;"], [0, "&Zeta;"], [0, "&Eta;"], [0, "&Theta;"], [0, "&Iota;"], [0, "&Kappa;"], [0, "&Lambda;"], [0, "&Mu;"], [0, "&Nu;"], [0, "&Xi;"], [0, "&Omicron;"], [0, "&Pi;"], [0, "&Rho;"], [1, "&Sigma;"], [0, "&Tau;"], [0, "&Upsilon;"], [0, "&Phi;"], [0, "&Chi;"], [0, "&Psi;"], [0, "&ohm;"], [7, "&alpha;"], [0, "&beta;"], [0, "&gamma;"], [0, "&delta;"], [0, "&epsi;"], [0, "&zeta;"], [0, "&eta;"], [0, "&theta;"], [0, "&iota;"], [0, "&kappa;"], [0, "&lambda;"], [0, "&mu;"], [0, "&nu;"], [0, "&xi;"], [0, "&omicron;"], [0, "&pi;"], [0, "&rho;"], [0, "&sigmaf;"], [0, "&sigma;"], [0, "&tau;"], [0, "&upsi;"], [0, "&phi;"], [0, "&chi;"], [0, "&psi;"], [0, "&omega;"], [7, "&thetasym;"], [0, "&Upsi;"], [2, "&phiv;"], [0, "&piv;"], [5, "&Gammad;"], [0, "&digamma;"], [18, "&kappav;"], [0, "&rhov;"], [3, "&epsiv;"], [0, "&backepsilon;"], [10, "&IOcy;"], [0, "&DJcy;"], [0, "&GJcy;"], [0, "&Jukcy;"], [0, "&DScy;"], [0, "&Iukcy;"], [0, "&YIcy;"], [0, "&Jsercy;"], [0, "&LJcy;"], [0, "&NJcy;"], [0, "&TSHcy;"], [0, "&KJcy;"], [1, "&Ubrcy;"], [0, "&DZcy;"], [0, "&Acy;"], [0, "&Bcy;"], [0, "&Vcy;"], [0, "&Gcy;"], [0, "&Dcy;"], [0, "&IEcy;"], [0, "&ZHcy;"], [0, "&Zcy;"], [0, "&Icy;"], [0, "&Jcy;"], [0, "&Kcy;"], [0, "&Lcy;"], [0, "&Mcy;"], [0, "&Ncy;"], [0, "&Ocy;"], [0, "&Pcy;"], [0, "&Rcy;"], [0, "&Scy;"], [0, "&Tcy;"], [0, "&Ucy;"], [0, "&Fcy;"], [0, "&KHcy;"], [0, "&TScy;"], [0, "&CHcy;"], [0, "&SHcy;"], [0, "&SHCHcy;"], [0, "&HARDcy;"], [0, "&Ycy;"], [0, "&SOFTcy;"], [0, "&Ecy;"], [0, "&YUcy;"], [0, "&YAcy;"], [0, "&acy;"], [0, "&bcy;"], [0, "&vcy;"], [0, "&gcy;"], [0, "&dcy;"], [0, "&iecy;"], [0, "&zhcy;"], [0, "&zcy;"], [0, "&icy;"], [0, "&jcy;"], [0, "&kcy;"], [0, "&lcy;"], [0, "&mcy;"], [0, "&ncy;"], [0, "&ocy;"], [0, "&pcy;"], [0, "&rcy;"], [0, "&scy;"], [0, "&tcy;"], [0, "&ucy;"], [0, "&fcy;"], [0, "&khcy;"], [0, "&tscy;"], [0, "&chcy;"], [0, "&shcy;"], [0, "&shchcy;"], [0, "&hardcy;"], [0, "&ycy;"], [0, "&softcy;"], [0, "&ecy;"], [0, "&yucy;"], [0, "&yacy;"], [1, "&iocy;"], [0, "&djcy;"], [0, "&gjcy;"], [0, "&jukcy;"], [0, "&dscy;"], [0, "&iukcy;"], [0, "&yicy;"], [0, "&jsercy;"], [0, "&ljcy;"], [0, "&njcy;"], [0, "&tshcy;"], [0, "&kjcy;"], [1, "&ubrcy;"], [0, "&dzcy;"], [7074, "&ensp;"], [0, "&emsp;"], [0, "&emsp13;"], [0, "&emsp14;"], [1, "&numsp;"], [0, "&puncsp;"], [0, "&ThinSpace;"], [0, "&hairsp;"], [0, "&NegativeMediumSpace;"], [0, "&zwnj;"], [0, "&zwj;"], [0, "&lrm;"], [0, "&rlm;"], [0, "&dash;"], [2, "&ndash;"], [0, "&mdash;"], [0, "&horbar;"], [0, "&Verbar;"], [1, "&lsquo;"], [0, "&CloseCurlyQuote;"], [0, "&lsquor;"], [1, "&ldquo;"], [0, "&CloseCurlyDoubleQuote;"], [0, "&bdquo;"], [1, "&dagger;"], [0, "&Dagger;"], [0, "&bull;"], [2, "&nldr;"], [0, "&hellip;"], [9, "&permil;"], [0, "&pertenk;"], [0, "&prime;"], [0, "&Prime;"], [0, "&tprime;"], [0, "&backprime;"], [3, "&lsaquo;"], [0, "&rsaquo;"], [3, "&oline;"], [2, "&caret;"], [1, "&hybull;"], [0, "&frasl;"], [10, "&bsemi;"], [7, "&qprime;"], [7, { v: "&MediumSpace;", n: 8202, o: "&ThickSpace;" }], [0, "&NoBreak;"], [0, "&af;"], [0, "&InvisibleTimes;"], [0, "&ic;"], [72, "&euro;"], [46, "&tdot;"], [0, "&DotDot;"], [37, "&complexes;"], [2, "&incare;"], [4, "&gscr;"], [0, "&hamilt;"], [0, "&Hfr;"], [0, "&Hopf;"], [0, "&planckh;"], [0, "&hbar;"], [0, "&imagline;"], [0, "&Ifr;"], [0, "&lagran;"], [0, "&ell;"], [1, "&naturals;"], [0, "&numero;"], [0, "&copysr;"], [0, "&weierp;"], [0, "&Popf;"], [0, "&Qopf;"], [0, "&realine;"], [0, "&real;"], [0, "&reals;"], [0, "&rx;"], [3, "&trade;"], [1, "&integers;"], [2, "&mho;"], [0, "&zeetrf;"], [0, "&iiota;"], [2, "&bernou;"], [0, "&Cayleys;"], [1, "&escr;"], [0, "&Escr;"], [0, "&Fouriertrf;"], [1, "&Mellintrf;"], [0, "&order;"], [0, "&alefsym;"], [0, "&beth;"], [0, "&gimel;"], [0, "&daleth;"], [12, "&CapitalDifferentialD;"], [0, "&dd;"], [0, "&ee;"], [0, "&ii;"], [10, "&frac13;"], [0, "&frac23;"], [0, "&frac15;"], [0, "&frac25;"], [0, "&frac35;"], [0, "&frac45;"], [0, "&frac16;"], [0, "&frac56;"], [0, "&frac18;"], [0, "&frac38;"], [0, "&frac58;"], [0, "&frac78;"], [49, "&larr;"], [0, "&ShortUpArrow;"], [0, "&rarr;"], [0, "&darr;"], [0, "&harr;"], [0, "&updownarrow;"], [0, "&nwarr;"], [0, "&nearr;"], [0, "&LowerRightArrow;"], [0, "&LowerLeftArrow;"], [0, "&nlarr;"], [0, "&nrarr;"], [1, { v: "&rarrw;", n: 824, o: "&nrarrw;" }], [0, "&Larr;"], [0, "&Uarr;"], [0, "&Rarr;"], [0, "&Darr;"], [0, "&larrtl;"], [0, "&rarrtl;"], [0, "&LeftTeeArrow;"], [0, "&mapstoup;"], [0, "&map;"], [0, "&DownTeeArrow;"], [1, "&hookleftarrow;"], [0, "&hookrightarrow;"], [0, "&larrlp;"], [0, "&looparrowright;"], [0, "&harrw;"], [0, "&nharr;"], [1, "&lsh;"], [0, "&rsh;"], [0, "&ldsh;"], [0, "&rdsh;"], [1, "&crarr;"], [0, "&cularr;"], [0, "&curarr;"], [2, "&circlearrowleft;"], [0, "&circlearrowright;"], [0, "&leftharpoonup;"], [0, "&DownLeftVector;"], [0, "&RightUpVector;"], [0, "&LeftUpVector;"], [0, "&rharu;"], [0, "&DownRightVector;"], [0, "&dharr;"], [0, "&dharl;"], [0, "&RightArrowLeftArrow;"], [0, "&udarr;"], [0, "&LeftArrowRightArrow;"], [0, "&leftleftarrows;"], [0, "&upuparrows;"], [0, "&rightrightarrows;"], [0, "&ddarr;"], [0, "&leftrightharpoons;"], [0, "&Equilibrium;"], [0, "&nlArr;"], [0, "&nhArr;"], [0, "&nrArr;"], [0, "&DoubleLeftArrow;"], [0, "&DoubleUpArrow;"], [0, "&DoubleRightArrow;"], [0, "&dArr;"], [0, "&DoubleLeftRightArrow;"], [0, "&DoubleUpDownArrow;"], [0, "&nwArr;"], [0, "&neArr;"], [0, "&seArr;"], [0, "&swArr;"], [0, "&lAarr;"], [0, "&rAarr;"], [1, "&zigrarr;"], [6, "&larrb;"], [0, "&rarrb;"], [15, "&DownArrowUpArrow;"], [7, "&loarr;"], [0, "&roarr;"], [0, "&hoarr;"], [0, "&forall;"], [0, "&comp;"], [0, { v: "&part;", n: 824, o: "&npart;" }], [0, "&exist;"], [0, "&nexist;"], [0, "&empty;"], [1, "&Del;"], [0, "&Element;"], [0, "&NotElement;"], [1, "&ni;"], [0, "&notni;"], [2, "&prod;"], [0, "&coprod;"], [0, "&sum;"], [0, "&minus;"], [0, "&MinusPlus;"], [0, "&dotplus;"], [1, "&Backslash;"], [0, "&lowast;"], [0, "&compfn;"], [1, "&radic;"], [2, "&prop;"], [0, "&infin;"], [0, "&angrt;"], [0, { v: "&ang;", n: 8402, o: "&nang;" }], [0, "&angmsd;"], [0, "&angsph;"], [0, "&mid;"], [0, "&nmid;"], [0, "&DoubleVerticalBar;"], [0, "&NotDoubleVerticalBar;"], [0, "&and;"], [0, "&or;"], [0, { v: "&cap;", n: 65024, o: "&caps;" }], [0, { v: "&cup;", n: 65024, o: "&cups;" }], [0, "&int;"], [0, "&Int;"], [0, "&iiint;"], [0, "&conint;"], [0, "&Conint;"], [0, "&Cconint;"], [0, "&cwint;"], [0, "&ClockwiseContourIntegral;"], [0, "&awconint;"], [0, "&there4;"], [0, "&becaus;"], [0, "&ratio;"], [0, "&Colon;"], [0, "&dotminus;"], [1, "&mDDot;"], [0, "&homtht;"], [0, { v: "&sim;", n: 8402, o: "&nvsim;" }], [0, { v: "&backsim;", n: 817, o: "&race;" }], [0, { v: "&ac;", n: 819, o: "&acE;" }], [0, "&acd;"], [0, "&VerticalTilde;"], [0, "&NotTilde;"], [0, { v: "&eqsim;", n: 824, o: "&nesim;" }], [0, "&sime;"], [0, "&NotTildeEqual;"], [0, "&cong;"], [0, "&simne;"], [0, "&ncong;"], [0, "&ap;"], [0, "&nap;"], [0, "&ape;"], [0, { v: "&apid;", n: 824, o: "&napid;" }], [0, "&backcong;"], [0, { v: "&asympeq;", n: 8402, o: "&nvap;" }], [0, { v: "&bump;", n: 824, o: "&nbump;" }], [0, { v: "&bumpe;", n: 824, o: "&nbumpe;" }], [0, { v: "&doteq;", n: 824, o: "&nedot;" }], [0, "&doteqdot;"], [0, "&efDot;"], [0, "&erDot;"], [0, "&Assign;"], [0, "&ecolon;"], [0, "&ecir;"], [0, "&circeq;"], [1, "&wedgeq;"], [0, "&veeeq;"], [1, "&triangleq;"], [2, "&equest;"], [0, "&ne;"], [0, { v: "&Congruent;", n: 8421, o: "&bnequiv;" }], [0, "&nequiv;"], [1, { v: "&le;", n: 8402, o: "&nvle;" }], [0, { v: "&ge;", n: 8402, o: "&nvge;" }], [0, { v: "&lE;", n: 824, o: "&nlE;" }], [0, { v: "&gE;", n: 824, o: "&ngE;" }], [0, { v: "&lnE;", n: 65024, o: "&lvertneqq;" }], [0, { v: "&gnE;", n: 65024, o: "&gvertneqq;" }], [0, { v: "&ll;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nLtv;"], [7577, "&nLt;"]])) }], [0, { v: "&gg;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nGtv;"], [7577, "&nGt;"]])) }], [0, "&between;"], [0, "&NotCupCap;"], [0, "&nless;"], [0, "&ngt;"], [0, "&nle;"], [0, "&nge;"], [0, "&lesssim;"], [0, "&GreaterTilde;"], [0, "&nlsim;"], [0, "&ngsim;"], [0, "&LessGreater;"], [0, "&gl;"], [0, "&NotLessGreater;"], [0, "&NotGreaterLess;"], [0, "&pr;"], [0, "&sc;"], [0, "&prcue;"], [0, "&sccue;"], [0, "&PrecedesTilde;"], [0, { v: "&scsim;", n: 824, o: "&NotSucceedsTilde;" }], [0, "&NotPrecedes;"], [0, "&NotSucceeds;"], [0, { v: "&sub;", n: 8402, o: "&NotSubset;" }], [0, { v: "&sup;", n: 8402, o: "&NotSuperset;" }], [0, "&nsub;"], [0, "&nsup;"], [0, "&sube;"], [0, "&supe;"], [0, "&NotSubsetEqual;"], [0, "&NotSupersetEqual;"], [0, { v: "&subne;", n: 65024, o: "&varsubsetneq;" }], [0, { v: "&supne;", n: 65024, o: "&varsupsetneq;" }], [1, "&cupdot;"], [0, "&UnionPlus;"], [0, { v: "&sqsub;", n: 824, o: "&NotSquareSubset;" }], [0, { v: "&sqsup;", n: 824, o: "&NotSquareSuperset;" }], [0, "&sqsube;"], [0, "&sqsupe;"], [0, { v: "&sqcap;", n: 65024, o: "&sqcaps;" }], [0, { v: "&sqcup;", n: 65024, o: "&sqcups;" }], [0, "&CirclePlus;"], [0, "&CircleMinus;"], [0, "&CircleTimes;"], [0, "&osol;"], [0, "&CircleDot;"], [0, "&circledcirc;"], [0, "&circledast;"], [1, "&circleddash;"], [0, "&boxplus;"], [0, "&boxminus;"], [0, "&boxtimes;"], [0, "&dotsquare;"], [0, "&RightTee;"], [0, "&dashv;"], [0, "&DownTee;"], [0, "&bot;"], [1, "&models;"], [0, "&DoubleRightTee;"], [0, "&Vdash;"], [0, "&Vvdash;"], [0, "&VDash;"], [0, "&nvdash;"], [0, "&nvDash;"], [0, "&nVdash;"], [0, "&nVDash;"], [0, "&prurel;"], [1, "&LeftTriangle;"], [0, "&RightTriangle;"], [0, { v: "&LeftTriangleEqual;", n: 8402, o: "&nvltrie;" }], [0, { v: "&RightTriangleEqual;", n: 8402, o: "&nvrtrie;" }], [0, "&origof;"], [0, "&imof;"], [0, "&multimap;"], [0, "&hercon;"], [0, "&intcal;"], [0, "&veebar;"], [1, "&barvee;"], [0, "&angrtvb;"], [0, "&lrtri;"], [0, "&bigwedge;"], [0, "&bigvee;"], [0, "&bigcap;"], [0, "&bigcup;"], [0, "&diam;"], [0, "&sdot;"], [0, "&sstarf;"], [0, "&divideontimes;"], [0, "&bowtie;"], [0, "&ltimes;"], [0, "&rtimes;"], [0, "&leftthreetimes;"], [0, "&rightthreetimes;"], [0, "&backsimeq;"], [0, "&curlyvee;"], [0, "&curlywedge;"], [0, "&Sub;"], [0, "&Sup;"], [0, "&Cap;"], [0, "&Cup;"], [0, "&fork;"], [0, "&epar;"], [0, "&lessdot;"], [0, "&gtdot;"], [0, { v: "&Ll;", n: 824, o: "&nLl;" }], [0, { v: "&Gg;", n: 824, o: "&nGg;" }], [0, { v: "&leg;", n: 65024, o: "&lesg;" }], [0, { v: "&gel;", n: 65024, o: "&gesl;" }], [2, "&cuepr;"], [0, "&cuesc;"], [0, "&NotPrecedesSlantEqual;"], [0, "&NotSucceedsSlantEqual;"], [0, "&NotSquareSubsetEqual;"], [0, "&NotSquareSupersetEqual;"], [2, "&lnsim;"], [0, "&gnsim;"], [0, "&precnsim;"], [0, "&scnsim;"], [0, "&nltri;"], [0, "&NotRightTriangle;"], [0, "&nltrie;"], [0, "&NotRightTriangleEqual;"], [0, "&vellip;"], [0, "&ctdot;"], [0, "&utdot;"], [0, "&dtdot;"], [0, "&disin;"], [0, "&isinsv;"], [0, "&isins;"], [0, { v: "&isindot;", n: 824, o: "&notindot;" }], [0, "&notinvc;"], [0, "&notinvb;"], [1, { v: "&isinE;", n: 824, o: "&notinE;" }], [0, "&nisd;"], [0, "&xnis;"], [0, "&nis;"], [0, "&notnivc;"], [0, "&notnivb;"], [6, "&barwed;"], [0, "&Barwed;"], [1, "&lceil;"], [0, "&rceil;"], [0, "&LeftFloor;"], [0, "&rfloor;"], [0, "&drcrop;"], [0, "&dlcrop;"], [0, "&urcrop;"], [0, "&ulcrop;"], [0, "&bnot;"], [1, "&profline;"], [0, "&profsurf;"], [1, "&telrec;"], [0, "&target;"], [5, "&ulcorn;"], [0, "&urcorn;"], [0, "&dlcorn;"], [0, "&drcorn;"], [2, "&frown;"], [0, "&smile;"], [9, "&cylcty;"], [0, "&profalar;"], [7, "&topbot;"], [6, "&ovbar;"], [1, "&solbar;"], [60, "&angzarr;"], [51, "&lmoustache;"], [0, "&rmoustache;"], [2, "&OverBracket;"], [0, "&bbrk;"], [0, "&bbrktbrk;"], [37, "&OverParenthesis;"], [0, "&UnderParenthesis;"], [0, "&OverBrace;"], [0, "&UnderBrace;"], [2, "&trpezium;"], [4, "&elinters;"], [59, "&blank;"], [164, "&circledS;"], [55, "&boxh;"], [1, "&boxv;"], [9, "&boxdr;"], [3, "&boxdl;"], [3, "&boxur;"], [3, "&boxul;"], [3, "&boxvr;"], [7, "&boxvl;"], [7, "&boxhd;"], [7, "&boxhu;"], [7, "&boxvh;"], [19, "&boxH;"], [0, "&boxV;"], [0, "&boxdR;"], [0, "&boxDr;"], [0, "&boxDR;"], [0, "&boxdL;"], [0, "&boxDl;"], [0, "&boxDL;"], [0, "&boxuR;"], [0, "&boxUr;"], [0, "&boxUR;"], [0, "&boxuL;"], [0, "&boxUl;"], [0, "&boxUL;"], [0, "&boxvR;"], [0, "&boxVr;"], [0, "&boxVR;"], [0, "&boxvL;"], [0, "&boxVl;"], [0, "&boxVL;"], [0, "&boxHd;"], [0, "&boxhD;"], [0, "&boxHD;"], [0, "&boxHu;"], [0, "&boxhU;"], [0, "&boxHU;"], [0, "&boxvH;"], [0, "&boxVh;"], [0, "&boxVH;"], [19, "&uhblk;"], [3, "&lhblk;"], [3, "&block;"], [8, "&blk14;"], [0, "&blk12;"], [0, "&blk34;"], [13, "&square;"], [8, "&blacksquare;"], [0, "&EmptyVerySmallSquare;"], [1, "&rect;"], [0, "&marker;"], [2, "&fltns;"], [1, "&bigtriangleup;"], [0, "&blacktriangle;"], [0, "&triangle;"], [2, "&blacktriangleright;"], [0, "&rtri;"], [3, "&bigtriangledown;"], [0, "&blacktriangledown;"], [0, "&dtri;"], [2, "&blacktriangleleft;"], [0, "&ltri;"], [6, "&loz;"], [0, "&cir;"], [32, "&tridot;"], [2, "&bigcirc;"], [8, "&ultri;"], [0, "&urtri;"], [0, "&lltri;"], [0, "&EmptySmallSquare;"], [0, "&FilledSmallSquare;"], [8, "&bigstar;"], [0, "&star;"], [7, "&phone;"], [49, "&female;"], [1, "&male;"], [29, "&spades;"], [2, "&clubs;"], [1, "&hearts;"], [0, "&diamondsuit;"], [3, "&sung;"], [2, "&flat;"], [0, "&natural;"], [0, "&sharp;"], [163, "&check;"], [3, "&cross;"], [8, "&malt;"], [21, "&sext;"], [33, "&VerticalSeparator;"], [25, "&lbbrk;"], [0, "&rbbrk;"], [84, "&bsolhsub;"], [0, "&suphsol;"], [28, "&LeftDoubleBracket;"], [0, "&RightDoubleBracket;"], [0, "&lang;"], [0, "&rang;"], [0, "&Lang;"], [0, "&Rang;"], [0, "&loang;"], [0, "&roang;"], [7, "&longleftarrow;"], [0, "&longrightarrow;"], [0, "&longleftrightarrow;"], [0, "&DoubleLongLeftArrow;"], [0, "&DoubleLongRightArrow;"], [0, "&DoubleLongLeftRightArrow;"], [1, "&longmapsto;"], [2, "&dzigrarr;"], [258, "&nvlArr;"], [0, "&nvrArr;"], [0, "&nvHarr;"], [0, "&Map;"], [6, "&lbarr;"], [0, "&bkarow;"], [0, "&lBarr;"], [0, "&dbkarow;"], [0, "&drbkarow;"], [0, "&DDotrahd;"], [0, "&UpArrowBar;"], [0, "&DownArrowBar;"], [2, "&Rarrtl;"], [2, "&latail;"], [0, "&ratail;"], [0, "&lAtail;"], [0, "&rAtail;"], [0, "&larrfs;"], [0, "&rarrfs;"], [0, "&larrbfs;"], [0, "&rarrbfs;"], [2, "&nwarhk;"], [0, "&nearhk;"], [0, "&hksearow;"], [0, "&hkswarow;"], [0, "&nwnear;"], [0, "&nesear;"], [0, "&seswar;"], [0, "&swnwar;"], [8, { v: "&rarrc;", n: 824, o: "&nrarrc;" }], [1, "&cudarrr;"], [0, "&ldca;"], [0, "&rdca;"], [0, "&cudarrl;"], [0, "&larrpl;"], [2, "&curarrm;"], [0, "&cularrp;"], [7, "&rarrpl;"], [2, "&harrcir;"], [0, "&Uarrocir;"], [0, "&lurdshar;"], [0, "&ldrushar;"], [2, "&LeftRightVector;"], [0, "&RightUpDownVector;"], [0, "&DownLeftRightVector;"], [0, "&LeftUpDownVector;"], [0, "&LeftVectorBar;"], [0, "&RightVectorBar;"], [0, "&RightUpVectorBar;"], [0, "&RightDownVectorBar;"], [0, "&DownLeftVectorBar;"], [0, "&DownRightVectorBar;"], [0, "&LeftUpVectorBar;"], [0, "&LeftDownVectorBar;"], [0, "&LeftTeeVector;"], [0, "&RightTeeVector;"], [0, "&RightUpTeeVector;"], [0, "&RightDownTeeVector;"], [0, "&DownLeftTeeVector;"], [0, "&DownRightTeeVector;"], [0, "&LeftUpTeeVector;"], [0, "&LeftDownTeeVector;"], [0, "&lHar;"], [0, "&uHar;"], [0, "&rHar;"], [0, "&dHar;"], [0, "&luruhar;"], [0, "&ldrdhar;"], [0, "&ruluhar;"], [0, "&rdldhar;"], [0, "&lharul;"], [0, "&llhard;"], [0, "&rharul;"], [0, "&lrhard;"], [0, "&udhar;"], [0, "&duhar;"], [0, "&RoundImplies;"], [0, "&erarr;"], [0, "&simrarr;"], [0, "&larrsim;"], [0, "&rarrsim;"], [0, "&rarrap;"], [0, "&ltlarr;"], [1, "&gtrarr;"], [0, "&subrarr;"], [1, "&suplarr;"], [0, "&lfisht;"], [0, "&rfisht;"], [0, "&ufisht;"], [0, "&dfisht;"], [5, "&lopar;"], [0, "&ropar;"], [4, "&lbrke;"], [0, "&rbrke;"], [0, "&lbrkslu;"], [0, "&rbrksld;"], [0, "&lbrksld;"], [0, "&rbrkslu;"], [0, "&langd;"], [0, "&rangd;"], [0, "&lparlt;"], [0, "&rpargt;"], [0, "&gtlPar;"], [0, "&ltrPar;"], [3, "&vzigzag;"], [1, "&vangrt;"], [0, "&angrtvbd;"], [6, "&ange;"], [0, "&range;"], [0, "&dwangle;"], [0, "&uwangle;"], [0, "&angmsdaa;"], [0, "&angmsdab;"], [0, "&angmsdac;"], [0, "&angmsdad;"], [0, "&angmsdae;"], [0, "&angmsdaf;"], [0, "&angmsdag;"], [0, "&angmsdah;"], [0, "&bemptyv;"], [0, "&demptyv;"], [0, "&cemptyv;"], [0, "&raemptyv;"], [0, "&laemptyv;"], [0, "&ohbar;"], [0, "&omid;"], [0, "&opar;"], [1, "&operp;"], [1, "&olcross;"], [0, "&odsold;"], [1, "&olcir;"], [0, "&ofcir;"], [0, "&olt;"], [0, "&ogt;"], [0, "&cirscir;"], [0, "&cirE;"], [0, "&solb;"], [0, "&bsolb;"], [3, "&boxbox;"], [3, "&trisb;"], [0, "&rtriltri;"], [0, { v: "&LeftTriangleBar;", n: 824, o: "&NotLeftTriangleBar;" }], [0, { v: "&RightTriangleBar;", n: 824, o: "&NotRightTriangleBar;" }], [11, "&iinfin;"], [0, "&infintie;"], [0, "&nvinfin;"], [4, "&eparsl;"], [0, "&smeparsl;"], [0, "&eqvparsl;"], [5, "&blacklozenge;"], [8, "&RuleDelayed;"], [1, "&dsol;"], [9, "&bigodot;"], [0, "&bigoplus;"], [0, "&bigotimes;"], [1, "&biguplus;"], [1, "&bigsqcup;"], [5, "&iiiint;"], [0, "&fpartint;"], [2, "&cirfnint;"], [0, "&awint;"], [0, "&rppolint;"], [0, "&scpolint;"], [0, "&npolint;"], [0, "&pointint;"], [0, "&quatint;"], [0, "&intlarhk;"], [10, "&pluscir;"], [0, "&plusacir;"], [0, "&simplus;"], [0, "&plusdu;"], [0, "&plussim;"], [0, "&plustwo;"], [1, "&mcomma;"], [0, "&minusdu;"], [2, "&loplus;"], [0, "&roplus;"], [0, "&Cross;"], [0, "&timesd;"], [0, "&timesbar;"], [1, "&smashp;"], [0, "&lotimes;"], [0, "&rotimes;"], [0, "&otimesas;"], [0, "&Otimes;"], [0, "&odiv;"], [0, "&triplus;"], [0, "&triminus;"], [0, "&tritime;"], [0, "&intprod;"], [2, "&amalg;"], [0, "&capdot;"], [1, "&ncup;"], [0, "&ncap;"], [0, "&capand;"], [0, "&cupor;"], [0, "&cupcap;"], [0, "&capcup;"], [0, "&cupbrcap;"], [0, "&capbrcup;"], [0, "&cupcup;"], [0, "&capcap;"], [0, "&ccups;"], [0, "&ccaps;"], [2, "&ccupssm;"], [2, "&And;"], [0, "&Or;"], [0, "&andand;"], [0, "&oror;"], [0, "&orslope;"], [0, "&andslope;"], [1, "&andv;"], [0, "&orv;"], [0, "&andd;"], [0, "&ord;"], [1, "&wedbar;"], [6, "&sdote;"], [3, "&simdot;"], [2, { v: "&congdot;", n: 824, o: "&ncongdot;" }], [0, "&easter;"], [0, "&apacir;"], [0, { v: "&apE;", n: 824, o: "&napE;" }], [0, "&eplus;"], [0, "&pluse;"], [0, "&Esim;"], [0, "&Colone;"], [0, "&Equal;"], [1, "&ddotseq;"], [0, "&equivDD;"], [0, "&ltcir;"], [0, "&gtcir;"], [0, "&ltquest;"], [0, "&gtquest;"], [0, { v: "&leqslant;", n: 824, o: "&nleqslant;" }], [0, { v: "&geqslant;", n: 824, o: "&ngeqslant;" }], [0, "&lesdot;"], [0, "&gesdot;"], [0, "&lesdoto;"], [0, "&gesdoto;"], [0, "&lesdotor;"], [0, "&gesdotol;"], [0, "&lap;"], [0, "&gap;"], [0, "&lne;"], [0, "&gne;"], [0, "&lnap;"], [0, "&gnap;"], [0, "&lEg;"], [0, "&gEl;"], [0, "&lsime;"], [0, "&gsime;"], [0, "&lsimg;"], [0, "&gsiml;"], [0, "&lgE;"], [0, "&glE;"], [0, "&lesges;"], [0, "&gesles;"], [0, "&els;"], [0, "&egs;"], [0, "&elsdot;"], [0, "&egsdot;"], [0, "&el;"], [0, "&eg;"], [2, "&siml;"], [0, "&simg;"], [0, "&simlE;"], [0, "&simgE;"], [0, { v: "&LessLess;", n: 824, o: "&NotNestedLessLess;" }], [0, { v: "&GreaterGreater;", n: 824, o: "&NotNestedGreaterGreater;" }], [1, "&glj;"], [0, "&gla;"], [0, "&ltcc;"], [0, "&gtcc;"], [0, "&lescc;"], [0, "&gescc;"], [0, "&smt;"], [0, "&lat;"], [0, { v: "&smte;", n: 65024, o: "&smtes;" }], [0, { v: "&late;", n: 65024, o: "&lates;" }], [0, "&bumpE;"], [0, { v: "&PrecedesEqual;", n: 824, o: "&NotPrecedesEqual;" }], [0, { v: "&sce;", n: 824, o: "&NotSucceedsEqual;" }], [2, "&prE;"], [0, "&scE;"], [0, "&precneqq;"], [0, "&scnE;"], [0, "&prap;"], [0, "&scap;"], [0, "&precnapprox;"], [0, "&scnap;"], [0, "&Pr;"], [0, "&Sc;"], [0, "&subdot;"], [0, "&supdot;"], [0, "&subplus;"], [0, "&supplus;"], [0, "&submult;"], [0, "&supmult;"], [0, "&subedot;"], [0, "&supedot;"], [0, { v: "&subE;", n: 824, o: "&nsubE;" }], [0, { v: "&supE;", n: 824, o: "&nsupE;" }], [0, "&subsim;"], [0, "&supsim;"], [2, { v: "&subnE;", n: 65024, o: "&varsubsetneqq;" }], [0, { v: "&supnE;", n: 65024, o: "&varsupsetneqq;" }], [2, "&csub;"], [0, "&csup;"], [0, "&csube;"], [0, "&csupe;"], [0, "&subsup;"], [0, "&supsub;"], [0, "&subsub;"], [0, "&supsup;"], [0, "&suphsub;"], [0, "&supdsub;"], [0, "&forkv;"], [0, "&topfork;"], [0, "&mlcp;"], [8, "&Dashv;"], [1, "&Vdashl;"], [0, "&Barv;"], [0, "&vBar;"], [0, "&vBarv;"], [1, "&Vbar;"], [0, "&Not;"], [0, "&bNot;"], [0, "&rnmid;"], [0, "&cirmid;"], [0, "&midcir;"], [0, "&topcir;"], [0, "&nhpar;"], [0, "&parsim;"], [9, { v: "&parsl;", n: 8421, o: "&nparsl;" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "&Ascr;"], [1, "&Cscr;"], [0, "&Dscr;"], [2, "&Gscr;"], [2, "&Jscr;"], [0, "&Kscr;"], [2, "&Nscr;"], [0, "&Oscr;"], [0, "&Pscr;"], [0, "&Qscr;"], [1, "&Sscr;"], [0, "&Tscr;"], [0, "&Uscr;"], [0, "&Vscr;"], [0, "&Wscr;"], [0, "&Xscr;"], [0, "&Yscr;"], [0, "&Zscr;"], [0, "&ascr;"], [0, "&bscr;"], [0, "&cscr;"], [0, "&dscr;"], [1, "&fscr;"], [1, "&hscr;"], [0, "&iscr;"], [0, "&jscr;"], [0, "&kscr;"], [0, "&lscr;"], [0, "&mscr;"], [0, "&nscr;"], [1, "&pscr;"], [0, "&qscr;"], [0, "&rscr;"], [0, "&sscr;"], [0, "&tscr;"], [0, "&uscr;"], [0, "&vscr;"], [0, "&wscr;"], [0, "&xscr;"], [0, "&yscr;"], [0, "&zscr;"], [52, "&Afr;"], [0, "&Bfr;"], [1, "&Dfr;"], [0, "&Efr;"], [0, "&Ffr;"], [0, "&Gfr;"], [2, "&Jfr;"], [0, "&Kfr;"], [0, "&Lfr;"], [0, "&Mfr;"], [0, "&Nfr;"], [0, "&Ofr;"], [0, "&Pfr;"], [0, "&Qfr;"], [1, "&Sfr;"], [0, "&Tfr;"], [0, "&Ufr;"], [0, "&Vfr;"], [0, "&Wfr;"], [0, "&Xfr;"], [0, "&Yfr;"], [1, "&afr;"], [0, "&bfr;"], [0, "&cfr;"], [0, "&dfr;"], [0, "&efr;"], [0, "&ffr;"], [0, "&gfr;"], [0, "&hfr;"], [0, "&ifr;"], [0, "&jfr;"], [0, "&kfr;"], [0, "&lfr;"], [0, "&mfr;"], [0, "&nfr;"], [0, "&ofr;"], [0, "&pfr;"], [0, "&qfr;"], [0, "&rfr;"], [0, "&sfr;"], [0, "&tfr;"], [0, "&ufr;"], [0, "&vfr;"], [0, "&wfr;"], [0, "&xfr;"], [0, "&yfr;"], [0, "&zfr;"], [0, "&Aopf;"], [0, "&Bopf;"], [1, "&Dopf;"], [0, "&Eopf;"], [0, "&Fopf;"], [0, "&Gopf;"], [1, "&Iopf;"], [0, "&Jopf;"], [0, "&Kopf;"], [0, "&Lopf;"], [0, "&Mopf;"], [1, "&Oopf;"], [3, "&Sopf;"], [0, "&Topf;"], [0, "&Uopf;"], [0, "&Vopf;"], [0, "&Wopf;"], [0, "&Xopf;"], [0, "&Yopf;"], [1, "&aopf;"], [0, "&bopf;"], [0, "&copf;"], [0, "&dopf;"], [0, "&eopf;"], [0, "&fopf;"], [0, "&gopf;"], [0, "&hopf;"], [0, "&iopf;"], [0, "&jopf;"], [0, "&kopf;"], [0, "&lopf;"], [0, "&mopf;"], [0, "&nopf;"], [0, "&oopf;"], [0, "&popf;"], [0, "&qopf;"], [0, "&ropf;"], [0, "&sopf;"], [0, "&topf;"], [0, "&uopf;"], [0, "&vopf;"], [0, "&wopf;"], [0, "&xopf;"], [0, "&yopf;"], [0, "&zopf;"]])) }], [8906, "&fflig;"], [0, "&filig;"], [0, "&fllig;"], [0, "&ffilig;"], [0, "&ffllig;"]]));
875
876// node_modules/entities/lib/esm/escape.js
877var xmlCodeMap = /* @__PURE__ */ new Map([
878 [34, "&quot;"],
879 [38, "&amp;"],
880 [39, "&apos;"],
881 [60, "&lt;"],
882 [62, "&gt;"]
883]);
884var getCodePoint = (
885 // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
886 String.prototype.codePointAt != null ? (str, index) => str.codePointAt(index) : (
887 // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
888 (c, index) => (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index)
889 )
890);
891function getEscaper(regex, map2) {
892 return function escape3(data) {
893 let match2;
894 let lastIdx = 0;
895 let result = "";
896 while (match2 = regex.exec(data)) {
897 if (lastIdx !== match2.index) {
898 result += data.substring(lastIdx, match2.index);
899 }
900 result += map2.get(match2[0].charCodeAt(0));
901 lastIdx = match2.index + 1;
902 }
903 return result + data.substring(lastIdx);
904 };
905}
906var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
907var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([
908 [34, "&quot;"],
909 [38, "&amp;"],
910 [160, "&nbsp;"]
911]));
912var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([
913 [38, "&amp;"],
914 [60, "&lt;"],
915 [62, "&gt;"],
916 [160, "&nbsp;"]
917]));
918
919// node_modules/entities/lib/esm/index.js
920var EntityLevel;
921(function(EntityLevel2) {
922 EntityLevel2[EntityLevel2["XML"] = 0] = "XML";
923 EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML";
924})(EntityLevel || (EntityLevel = {}));
925var EncodingMode;
926(function(EncodingMode2) {
927 EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8";
928 EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII";
929 EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive";
930 EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute";
931 EncodingMode2[EncodingMode2["Text"] = 4] = "Text";
932})(EncodingMode || (EncodingMode = {}));
933
934// node_modules/markdown-it/lib/common/utils.mjs
935function _class(obj) {
936 return Object.prototype.toString.call(obj);
937}
938function isString(obj) {
939 return _class(obj) === "[object String]";
940}
941var _hasOwnProperty = Object.prototype.hasOwnProperty;
942function has(object, key) {
943 return _hasOwnProperty.call(object, key);
944}
945function assign(obj) {
946 const sources = Array.prototype.slice.call(arguments, 1);
947 sources.forEach(function(source) {
948 if (!source) {
949 return;
950 }
951 if (typeof source !== "object") {
952 throw new TypeError(source + "must be object");
953 }
954 Object.keys(source).forEach(function(key) {
955 obj[key] = source[key];
956 });
957 });
958 return obj;
959}
960function arrayReplaceAt(src, pos, newElements) {
961 return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));
962}
963function isValidEntityCode(c) {
964 if (c >= 55296 && c <= 57343) {
965 return false;
966 }
967 if (c >= 64976 && c <= 65007) {
968 return false;
969 }
970 if ((c & 65535) === 65535 || (c & 65535) === 65534) {
971 return false;
972 }
973 if (c >= 0 && c <= 8) {
974 return false;
975 }
976 if (c === 11) {
977 return false;
978 }
979 if (c >= 14 && c <= 31) {
980 return false;
981 }
982 if (c >= 127 && c <= 159) {
983 return false;
984 }
985 if (c > 1114111) {
986 return false;
987 }
988 return true;
989}
990function fromCodePoint2(c) {
991 if (c > 65535) {
992 c -= 65536;
993 const surrogate1 = 55296 + (c >> 10);
994 const surrogate2 = 56320 + (c & 1023);
995 return String.fromCharCode(surrogate1, surrogate2);
996 }
997 return String.fromCharCode(c);
998}
999var UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g;
1000var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;
1001var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + "|" + ENTITY_RE.source, "gi");
1002var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;
1003function replaceEntityPattern(match2, name) {
1004 if (name.charCodeAt(0) === 35 && DIGITAL_ENTITY_TEST_RE.test(name)) {
1005 const code2 = name[1].toLowerCase() === "x" ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);
1006 if (isValidEntityCode(code2)) {
1007 return fromCodePoint2(code2);
1008 }
1009 return match2;
1010 }
1011 const decoded = decodeHTML(match2);
1012 if (decoded !== match2) {
1013 return decoded;
1014 }
1015 return match2;
1016}
1017function unescapeMd(str) {
1018 if (str.indexOf("\\") < 0) {
1019 return str;
1020 }
1021 return str.replace(UNESCAPE_MD_RE, "$1");
1022}
1023function unescapeAll(str) {
1024 if (str.indexOf("\\") < 0 && str.indexOf("&") < 0) {
1025 return str;
1026 }
1027 return str.replace(UNESCAPE_ALL_RE, function(match2, escaped, entity2) {
1028 if (escaped) {
1029 return escaped;
1030 }
1031 return replaceEntityPattern(match2, entity2);
1032 });
1033}
1034var HTML_ESCAPE_TEST_RE = /[&<>"]/;
1035var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g;
1036var HTML_REPLACEMENTS = {
1037 "&": "&amp;",
1038 "<": "&lt;",
1039 ">": "&gt;",
1040 '"': "&quot;"
1041};
1042function replaceUnsafeChar(ch) {
1043 return HTML_REPLACEMENTS[ch];
1044}
1045function escapeHtml(str) {
1046 if (HTML_ESCAPE_TEST_RE.test(str)) {
1047 return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);
1048 }
1049 return str;
1050}
1051var REGEXP_ESCAPE_RE = /[.?*+^$[\]\\(){}|-]/g;
1052function escapeRE(str) {
1053 return str.replace(REGEXP_ESCAPE_RE, "\\$&");
1054}
1055function isSpace(code2) {
1056 switch (code2) {
1057 case 9:
1058 case 32:
1059 return true;
1060 }
1061 return false;
1062}
1063function isWhiteSpace(code2) {
1064 if (code2 >= 8192 && code2 <= 8202) {
1065 return true;
1066 }
1067 switch (code2) {
1068 case 9:
1069 // \t
1070 case 10:
1071 // \n
1072 case 11:
1073 // \v
1074 case 12:
1075 // \f
1076 case 13:
1077 // \r
1078 case 32:
1079 case 160:
1080 case 5760:
1081 case 8239:
1082 case 8287:
1083 case 12288:
1084 return true;
1085 }
1086 return false;
1087}
1088function isPunctChar(ch) {
1089 return regex_default4.test(ch) || regex_default5.test(ch);
1090}
1091function isPunctCharCode(code2) {
1092 return isPunctChar(fromCodePoint2(code2));
1093}
1094function isMdAsciiPunct(ch) {
1095 switch (ch) {
1096 case 33:
1097 case 34:
1098 case 35:
1099 case 36:
1100 case 37:
1101 case 38:
1102 case 39:
1103 case 40:
1104 case 41:
1105 case 42:
1106 case 43:
1107 case 44:
1108 case 45:
1109 case 46:
1110 case 47:
1111 case 58:
1112 case 59:
1113 case 60:
1114 case 61:
1115 case 62:
1116 case 63:
1117 case 64:
1118 case 91:
1119 case 92:
1120 case 93:
1121 case 94:
1122 case 95:
1123 case 96:
1124 case 123:
1125 case 124:
1126 case 125:
1127 case 126:
1128 return true;
1129 default:
1130 return false;
1131 }
1132}
1133function normalizeReference(str) {
1134 str = str.trim().replace(/\s+/g, " ");
1135 if ("\u1E9E".toLowerCase() === "\u1E7E") {
1136 str = str.replace(/ẞ/g, "\xDF");
1137 }
1138 return str.toLowerCase().toUpperCase();
1139}
1140function isAsciiTrimmable(c) {
1141 return c === 32 || c === 9 || c === 10 || c === 13;
1142}
1143function asciiTrim(str) {
1144 let start = 0;
1145 for (; start < str.length; start++) {
1146 if (!isAsciiTrimmable(str.charCodeAt(start))) {
1147 break;
1148 }
1149 }
1150 let end = str.length - 1;
1151 for (; end >= start; end--) {
1152 if (!isAsciiTrimmable(str.charCodeAt(end))) {
1153 break;
1154 }
1155 }
1156 return str.slice(start, end + 1);
1157}
1158var lib = { mdurl: mdurl_exports, ucmicro: uc_exports };
1159
1160// node_modules/markdown-it/lib/helpers/index.mjs
1161var helpers_exports = {};
1162__export(helpers_exports, {
1163 parseLinkDestination: () => parseLinkDestination,
1164 parseLinkLabel: () => parseLinkLabel,
1165 parseLinkTitle: () => parseLinkTitle
1166});
1167
1168// node_modules/markdown-it/lib/helpers/parse_link_label.mjs
1169function parseLinkLabel(state, start, disableNested) {
1170 let level, found, marker, prevPos;
1171 const max = state.posMax;
1172 const oldPos = state.pos;
1173 state.pos = start + 1;
1174 level = 1;
1175 while (state.pos < max) {
1176 marker = state.src.charCodeAt(state.pos);
1177 if (marker === 93) {
1178 level--;
1179 if (level === 0) {
1180 found = true;
1181 break;
1182 }
1183 }
1184 prevPos = state.pos;
1185 state.md.inline.skipToken(state);
1186 if (marker === 91) {
1187 if (prevPos === state.pos - 1) {
1188 level++;
1189 } else if (disableNested) {
1190 state.pos = oldPos;
1191 return -1;
1192 }
1193 }
1194 }
1195 let labelEnd = -1;
1196 if (found) {
1197 labelEnd = state.pos;
1198 }
1199 state.pos = oldPos;
1200 return labelEnd;
1201}
1202
1203// node_modules/markdown-it/lib/helpers/parse_link_destination.mjs
1204function parseLinkDestination(str, start, max) {
1205 let code2;
1206 let pos = start;
1207 const result = {
1208 ok: false,
1209 pos: 0,
1210 str: ""
1211 };
1212 if (str.charCodeAt(pos) === 60) {
1213 pos++;
1214 while (pos < max) {
1215 code2 = str.charCodeAt(pos);
1216 if (code2 === 10) {
1217 return result;
1218 }
1219 if (code2 === 60) {
1220 return result;
1221 }
1222 if (code2 === 62) {
1223 result.pos = pos + 1;
1224 result.str = unescapeAll(str.slice(start + 1, pos));
1225 result.ok = true;
1226 return result;
1227 }
1228 if (code2 === 92 && pos + 1 < max) {
1229 pos += 2;
1230 continue;
1231 }
1232 pos++;
1233 }
1234 return result;
1235 }
1236 let level = 0;
1237 while (pos < max) {
1238 code2 = str.charCodeAt(pos);
1239 if (code2 === 32) {
1240 break;
1241 }
1242 if (code2 < 32 || code2 === 127) {
1243 break;
1244 }
1245 if (code2 === 92 && pos + 1 < max) {
1246 if (str.charCodeAt(pos + 1) === 32) {
1247 break;
1248 }
1249 pos += 2;
1250 continue;
1251 }
1252 if (code2 === 40) {
1253 level++;
1254 if (level > 32) {
1255 return result;
1256 }
1257 }
1258 if (code2 === 41) {
1259 if (level === 0) {
1260 break;
1261 }
1262 level--;
1263 }
1264 pos++;
1265 }
1266 if (start === pos) {
1267 return result;
1268 }
1269 if (level !== 0) {
1270 return result;
1271 }
1272 result.str = unescapeAll(str.slice(start, pos));
1273 result.pos = pos;
1274 result.ok = true;
1275 return result;
1276}
1277
1278// node_modules/markdown-it/lib/helpers/parse_link_title.mjs
1279function parseLinkTitle(str, start, max, prev_state) {
1280 let code2;
1281 let pos = start;
1282 const state = {
1283 // if `true`, this is a valid link title
1284 ok: false,
1285 // if `true`, this link can be continued on the next line
1286 can_continue: false,
1287 // if `ok`, it's the position of the first character after the closing marker
1288 pos: 0,
1289 // if `ok`, it's the unescaped title
1290 str: "",
1291 // expected closing marker character code
1292 marker: 0
1293 };
1294 if (prev_state) {
1295 state.str = prev_state.str;
1296 state.marker = prev_state.marker;
1297 } else {
1298 if (pos >= max) {
1299 return state;
1300 }
1301 let marker = str.charCodeAt(pos);
1302 if (marker !== 34 && marker !== 39 && marker !== 40) {
1303 return state;
1304 }
1305 start++;
1306 pos++;
1307 if (marker === 40) {
1308 marker = 41;
1309 }
1310 state.marker = marker;
1311 }
1312 while (pos < max) {
1313 code2 = str.charCodeAt(pos);
1314 if (code2 === state.marker) {
1315 state.pos = pos + 1;
1316 state.str += unescapeAll(str.slice(start, pos));
1317 state.ok = true;
1318 return state;
1319 } else if (code2 === 40 && state.marker === 41) {
1320 return state;
1321 } else if (code2 === 92 && pos + 1 < max) {
1322 pos++;
1323 }
1324 pos++;
1325 }
1326 state.can_continue = true;
1327 state.str += unescapeAll(str.slice(start, pos));
1328 return state;
1329}
1330
1331// node_modules/markdown-it/lib/renderer.mjs
1332var default_rules = {};
1333default_rules.code_inline = function(tokens, idx, options, env, slf) {
1334 const token = tokens[idx];
1335 return "<code" + slf.renderAttrs(token) + ">" + escapeHtml(token.content) + "</code>";
1336};
1337default_rules.code_block = function(tokens, idx, options, env, slf) {
1338 const token = tokens[idx];
1339 return "<pre" + slf.renderAttrs(token) + "><code>" + escapeHtml(tokens[idx].content) + "</code></pre>\n";
1340};
1341default_rules.fence = function(tokens, idx, options, env, slf) {
1342 const token = tokens[idx];
1343 const info = token.info ? unescapeAll(token.info).trim() : "";
1344 let langName = "";
1345 let langAttrs = "";
1346 if (info) {
1347 const arr = info.split(/(\s+)/g);
1348 langName = arr[0];
1349 langAttrs = arr.slice(2).join("");
1350 }
1351 let highlighted;
1352 if (options.highlight) {
1353 highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content);
1354 } else {
1355 highlighted = escapeHtml(token.content);
1356 }
1357 if (highlighted.indexOf("<pre") === 0) {
1358 return highlighted + "\n";
1359 }
1360 if (info) {
1361 const i = token.attrIndex("class");
1362 const tmpAttrs = token.attrs ? token.attrs.slice() : [];
1363 if (i < 0) {
1364 tmpAttrs.push(["class", options.langPrefix + langName]);
1365 } else {
1366 tmpAttrs[i] = tmpAttrs[i].slice();
1367 tmpAttrs[i][1] += " " + options.langPrefix + langName;
1368 }
1369 const tmpToken = {
1370 attrs: tmpAttrs
1371 };
1372 return `<pre><code${slf.renderAttrs(tmpToken)}>${highlighted}</code></pre>
1373`;
1374 }
1375 return `<pre><code${slf.renderAttrs(token)}>${highlighted}</code></pre>
1376`;
1377};
1378default_rules.image = function(tokens, idx, options, env, slf) {
1379 const token = tokens[idx];
1380 token.attrs[token.attrIndex("alt")][1] = slf.renderInlineAsText(token.children, options, env);
1381 return slf.renderToken(tokens, idx, options);
1382};
1383default_rules.hardbreak = function(tokens, idx, options) {
1384 return options.xhtmlOut ? "<br />\n" : "<br>\n";
1385};
1386default_rules.softbreak = function(tokens, idx, options) {
1387 return options.breaks ? options.xhtmlOut ? "<br />\n" : "<br>\n" : "\n";
1388};
1389default_rules.text = function(tokens, idx) {
1390 return escapeHtml(tokens[idx].content);
1391};
1392default_rules.html_block = function(tokens, idx) {
1393 return tokens[idx].content;
1394};
1395default_rules.html_inline = function(tokens, idx) {
1396 return tokens[idx].content;
1397};
1398function Renderer() {
1399 this.rules = assign({}, default_rules);
1400}
1401Renderer.prototype.renderAttrs = function renderAttrs(token) {
1402 let i, l, result;
1403 if (!token.attrs) {
1404 return "";
1405 }
1406 result = "";
1407 for (i = 0, l = token.attrs.length; i < l; i++) {
1408 result += " " + escapeHtml(token.attrs[i][0]) + '="' + escapeHtml(token.attrs[i][1]) + '"';
1409 }
1410 return result;
1411};
1412Renderer.prototype.renderToken = function renderToken(tokens, idx, options) {
1413 const token = tokens[idx];
1414 let result = "";
1415 if (token.hidden) {
1416 return "";
1417 }
1418 if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {
1419 result += "\n";
1420 }
1421 result += (token.nesting === -1 ? "</" : "<") + token.tag;
1422 result += this.renderAttrs(token);
1423 if (token.nesting === 0 && options.xhtmlOut) {
1424 result += " /";
1425 }
1426 let needLf = false;
1427 if (token.block) {
1428 needLf = true;
1429 if (token.nesting === 1) {
1430 if (idx + 1 < tokens.length) {
1431 const nextToken = tokens[idx + 1];
1432 if (nextToken.type === "inline" || nextToken.hidden) {
1433 needLf = false;
1434 } else if (nextToken.nesting === -1 && nextToken.tag === token.tag) {
1435 needLf = false;
1436 }
1437 }
1438 }
1439 }
1440 result += needLf ? ">\n" : ">";
1441 return result;
1442};
1443Renderer.prototype.renderInline = function(tokens, options, env) {
1444 let result = "";
1445 const rules = this.rules;
1446 for (let i = 0, len = tokens.length; i < len; i++) {
1447 const type = tokens[i].type;
1448 if (typeof rules[type] !== "undefined") {
1449 result += rules[type](tokens, i, options, env, this);
1450 } else {
1451 result += this.renderToken(tokens, i, options);
1452 }
1453 }
1454 return result;
1455};
1456Renderer.prototype.renderInlineAsText = function(tokens, options, env) {
1457 let result = "";
1458 for (let i = 0, len = tokens.length; i < len; i++) {
1459 switch (tokens[i].type) {
1460 case "text":
1461 result += tokens[i].content;
1462 break;
1463 case "image":
1464 result += this.renderInlineAsText(tokens[i].children, options, env);
1465 break;
1466 case "html_inline":
1467 case "html_block":
1468 result += tokens[i].content;
1469 break;
1470 case "softbreak":
1471 case "hardbreak":
1472 result += "\n";
1473 break;
1474 default:
1475 }
1476 }
1477 return result;
1478};
1479Renderer.prototype.render = function(tokens, options, env) {
1480 let result = "";
1481 const rules = this.rules;
1482 for (let i = 0, len = tokens.length; i < len; i++) {
1483 const type = tokens[i].type;
1484 if (type === "inline") {
1485 result += this.renderInline(tokens[i].children, options, env);
1486 } else if (typeof rules[type] !== "undefined") {
1487 result += rules[type](tokens, i, options, env, this);
1488 } else {
1489 result += this.renderToken(tokens, i, options, env);
1490 }
1491 }
1492 return result;
1493};
1494var renderer_default = Renderer;
1495
1496// node_modules/markdown-it/lib/ruler.mjs
1497function Ruler() {
1498 this.__rules__ = [];
1499 this.__cache__ = null;
1500}
1501Ruler.prototype.__find__ = function(name) {
1502 for (let i = 0; i < this.__rules__.length; i++) {
1503 if (this.__rules__[i].name === name) {
1504 return i;
1505 }
1506 }
1507 return -1;
1508};
1509Ruler.prototype.__compile__ = function() {
1510 const self = this;
1511 const chains = [""];
1512 self.__rules__.forEach(function(rule) {
1513 if (!rule.enabled) {
1514 return;
1515 }
1516 rule.alt.forEach(function(altName) {
1517 if (chains.indexOf(altName) < 0) {
1518 chains.push(altName);
1519 }
1520 });
1521 });
1522 self.__cache__ = {};
1523 chains.forEach(function(chain) {
1524 self.__cache__[chain] = [];
1525 self.__rules__.forEach(function(rule) {
1526 if (!rule.enabled) {
1527 return;
1528 }
1529 if (chain && rule.alt.indexOf(chain) < 0) {
1530 return;
1531 }
1532 self.__cache__[chain].push(rule.fn);
1533 });
1534 });
1535};
1536Ruler.prototype.at = function(name, fn, options) {
1537 const index = this.__find__(name);
1538 const opt = options || {};
1539 if (index === -1) {
1540 throw new Error("Parser rule not found: " + name);
1541 }
1542 this.__rules__[index].fn = fn;
1543 this.__rules__[index].alt = opt.alt || [];
1544 this.__cache__ = null;
1545};
1546Ruler.prototype.before = function(beforeName, ruleName, fn, options) {
1547 const index = this.__find__(beforeName);
1548 const opt = options || {};
1549 if (index === -1) {
1550 throw new Error("Parser rule not found: " + beforeName);
1551 }
1552 this.__rules__.splice(index, 0, {
1553 name: ruleName,
1554 enabled: true,
1555 fn,
1556 alt: opt.alt || []
1557 });
1558 this.__cache__ = null;
1559};
1560Ruler.prototype.after = function(afterName, ruleName, fn, options) {
1561 const index = this.__find__(afterName);
1562 const opt = options || {};
1563 if (index === -1) {
1564 throw new Error("Parser rule not found: " + afterName);
1565 }
1566 this.__rules__.splice(index + 1, 0, {
1567 name: ruleName,
1568 enabled: true,
1569 fn,
1570 alt: opt.alt || []
1571 });
1572 this.__cache__ = null;
1573};
1574Ruler.prototype.push = function(ruleName, fn, options) {
1575 const opt = options || {};
1576 this.__rules__.push({
1577 name: ruleName,
1578 enabled: true,
1579 fn,
1580 alt: opt.alt || []
1581 });
1582 this.__cache__ = null;
1583};
1584Ruler.prototype.enable = function(list2, ignoreInvalid) {
1585 if (!Array.isArray(list2)) {
1586 list2 = [list2];
1587 }
1588 const result = [];
1589 list2.forEach(function(name) {
1590 const idx = this.__find__(name);
1591 if (idx < 0) {
1592 if (ignoreInvalid) {
1593 return;
1594 }
1595 throw new Error("Rules manager: invalid rule name " + name);
1596 }
1597 this.__rules__[idx].enabled = true;
1598 result.push(name);
1599 }, this);
1600 this.__cache__ = null;
1601 return result;
1602};
1603Ruler.prototype.enableOnly = function(list2, ignoreInvalid) {
1604 if (!Array.isArray(list2)) {
1605 list2 = [list2];
1606 }
1607 this.__rules__.forEach(function(rule) {
1608 rule.enabled = false;
1609 });
1610 this.enable(list2, ignoreInvalid);
1611};
1612Ruler.prototype.disable = function(list2, ignoreInvalid) {
1613 if (!Array.isArray(list2)) {
1614 list2 = [list2];
1615 }
1616 const result = [];
1617 list2.forEach(function(name) {
1618 const idx = this.__find__(name);
1619 if (idx < 0) {
1620 if (ignoreInvalid) {
1621 return;
1622 }
1623 throw new Error("Rules manager: invalid rule name " + name);
1624 }
1625 this.__rules__[idx].enabled = false;
1626 result.push(name);
1627 }, this);
1628 this.__cache__ = null;
1629 return result;
1630};
1631Ruler.prototype.getRules = function(chainName) {
1632 if (this.__cache__ === null) {
1633 this.__compile__();
1634 }
1635 return this.__cache__[chainName] || [];
1636};
1637var ruler_default = Ruler;
1638
1639// node_modules/markdown-it/lib/token.mjs
1640function Token(type, tag, nesting) {
1641 this.type = type;
1642 this.tag = tag;
1643 this.attrs = null;
1644 this.map = null;
1645 this.nesting = nesting;
1646 this.level = 0;
1647 this.children = null;
1648 this.content = "";
1649 this.markup = "";
1650 this.info = "";
1651 this.meta = null;
1652 this.block = false;
1653 this.hidden = false;
1654}
1655Token.prototype.attrIndex = function attrIndex(name) {
1656 if (!this.attrs) {
1657 return -1;
1658 }
1659 const attrs = this.attrs;
1660 for (let i = 0, len = attrs.length; i < len; i++) {
1661 if (attrs[i][0] === name) {
1662 return i;
1663 }
1664 }
1665 return -1;
1666};
1667Token.prototype.attrPush = function attrPush(attrData) {
1668 if (this.attrs) {
1669 this.attrs.push(attrData);
1670 } else {
1671 this.attrs = [attrData];
1672 }
1673};
1674Token.prototype.attrSet = function attrSet(name, value) {
1675 const idx = this.attrIndex(name);
1676 const attrData = [name, value];
1677 if (idx < 0) {
1678 this.attrPush(attrData);
1679 } else {
1680 this.attrs[idx] = attrData;
1681 }
1682};
1683Token.prototype.attrGet = function attrGet(name) {
1684 const idx = this.attrIndex(name);
1685 let value = null;
1686 if (idx >= 0) {
1687 value = this.attrs[idx][1];
1688 }
1689 return value;
1690};
1691Token.prototype.attrJoin = function attrJoin(name, value) {
1692 const idx = this.attrIndex(name);
1693 if (idx < 0) {
1694 this.attrPush([name, value]);
1695 } else {
1696 this.attrs[idx][1] = this.attrs[idx][1] + " " + value;
1697 }
1698};
1699var token_default = Token;
1700
1701// node_modules/markdown-it/lib/rules_core/state_core.mjs
1702function StateCore(src, md, env) {
1703 this.src = src;
1704 this.env = env;
1705 this.tokens = [];
1706 this.inlineMode = false;
1707 this.md = md;
1708}
1709StateCore.prototype.Token = token_default;
1710var state_core_default = StateCore;
1711
1712// node_modules/markdown-it/lib/rules_core/normalize.mjs
1713var NEWLINES_RE = /\r\n?|\n/g;
1714var NULL_RE = /\0/g;
1715function normalize(state) {
1716 let str;
1717 str = state.src.replace(NEWLINES_RE, "\n");
1718 str = str.replace(NULL_RE, "\uFFFD");
1719 state.src = str;
1720}
1721
1722// node_modules/markdown-it/lib/rules_core/block.mjs
1723function block(state) {
1724 let token;
1725 if (state.inlineMode) {
1726 token = new state.Token("inline", "", 0);
1727 token.content = state.src;
1728 token.map = [0, 1];
1729 token.children = [];
1730 state.tokens.push(token);
1731 } else {
1732 state.md.block.parse(state.src, state.md, state.env, state.tokens);
1733 }
1734}
1735
1736// node_modules/markdown-it/lib/rules_core/inline.mjs
1737function inline(state) {
1738 const tokens = state.tokens;
1739 for (let i = 0, l = tokens.length; i < l; i++) {
1740 const tok = tokens[i];
1741 if (tok.type === "inline") {
1742 state.md.inline.parse(tok.content, state.md, state.env, tok.children);
1743 }
1744 }
1745}
1746
1747// node_modules/markdown-it/lib/rules_core/linkify.mjs
1748function isLinkOpen(str) {
1749 return /^<a[>\s]/i.test(str);
1750}
1751function isLinkClose(str) {
1752 return /^<\/a\s*>/i.test(str);
1753}
1754function linkify(state) {
1755 const blockTokens = state.tokens;
1756 if (!state.md.options.linkify) {
1757 return;
1758 }
1759 for (let j = 0, l = blockTokens.length; j < l; j++) {
1760 if (blockTokens[j].type !== "inline" || !state.md.linkify.pretest(blockTokens[j].content)) {
1761 continue;
1762 }
1763 let tokens = blockTokens[j].children;
1764 let htmlLinkLevel = 0;
1765 for (let i = tokens.length - 1; i >= 0; i--) {
1766 const currentToken = tokens[i];
1767 if (currentToken.type === "link_close") {
1768 i--;
1769 while (tokens[i].level !== currentToken.level && tokens[i].type !== "link_open") {
1770 i--;
1771 }
1772 continue;
1773 }
1774 if (currentToken.type === "html_inline") {
1775 if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {
1776 htmlLinkLevel--;
1777 }
1778 if (isLinkClose(currentToken.content)) {
1779 htmlLinkLevel++;
1780 }
1781 }
1782 if (htmlLinkLevel > 0) {
1783 continue;
1784 }
1785 if (currentToken.type === "text" && state.md.linkify.test(currentToken.content)) {
1786 const text2 = currentToken.content;
1787 let links = state.md.linkify.match(text2);
1788 const nodes = [];
1789 let level = currentToken.level;
1790 let lastPos = 0;
1791 if (links.length > 0 && links[0].index === 0 && i > 0 && tokens[i - 1].type === "text_special") {
1792 links = links.slice(1);
1793 }
1794 for (let ln = 0; ln < links.length; ln++) {
1795 const url = links[ln].url;
1796 const fullUrl = state.md.normalizeLink(url);
1797 if (!state.md.validateLink(fullUrl)) {
1798 continue;
1799 }
1800 let urlText = links[ln].text;
1801 if (!links[ln].schema) {
1802 urlText = state.md.normalizeLinkText("http://" + urlText).replace(/^http:\/\//, "");
1803 } else if (links[ln].schema === "mailto:" && !/^mailto:/i.test(urlText)) {
1804 urlText = state.md.normalizeLinkText("mailto:" + urlText).replace(/^mailto:/, "");
1805 } else {
1806 urlText = state.md.normalizeLinkText(urlText);
1807 }
1808 const pos = links[ln].index;
1809 if (pos > lastPos) {
1810 const token = new state.Token("text", "", 0);
1811 token.content = text2.slice(lastPos, pos);
1812 token.level = level;
1813 nodes.push(token);
1814 }
1815 const token_o = new state.Token("link_open", "a", 1);
1816 token_o.attrs = [["href", fullUrl]];
1817 token_o.level = level++;
1818 token_o.markup = "linkify";
1819 token_o.info = "auto";
1820 nodes.push(token_o);
1821 const token_t = new state.Token("text", "", 0);
1822 token_t.content = urlText;
1823 token_t.level = level;
1824 nodes.push(token_t);
1825 const token_c = new state.Token("link_close", "a", -1);
1826 token_c.level = --level;
1827 token_c.markup = "linkify";
1828 token_c.info = "auto";
1829 nodes.push(token_c);
1830 lastPos = links[ln].lastIndex;
1831 }
1832 if (lastPos < text2.length) {
1833 const token = new state.Token("text", "", 0);
1834 token.content = text2.slice(lastPos);
1835 token.level = level;
1836 nodes.push(token);
1837 }
1838 blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);
1839 }
1840 }
1841 }
1842}
1843
1844// node_modules/markdown-it/lib/rules_core/replacements.mjs
1845var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/;
1846var SCOPED_ABBR_TEST_RE = /\((c|tm|r)\)/i;
1847var SCOPED_ABBR_RE = /\((c|tm|r)\)/ig;
1848var SCOPED_ABBR = {
1849 c: "\xA9",
1850 r: "\xAE",
1851 tm: "\u2122"
1852};
1853function replaceFn(match2, name) {
1854 return SCOPED_ABBR[name.toLowerCase()];
1855}
1856function replace_scoped(inlineTokens) {
1857 let inside_autolink = 0;
1858 for (let i = inlineTokens.length - 1; i >= 0; i--) {
1859 const token = inlineTokens[i];
1860 if (token.type === "text" && !inside_autolink) {
1861 token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);
1862 }
1863 if (token.type === "link_open" && token.info === "auto") {
1864 inside_autolink--;
1865 }
1866 if (token.type === "link_close" && token.info === "auto") {
1867 inside_autolink++;
1868 }
1869 }
1870}
1871function replace_rare(inlineTokens) {
1872 let inside_autolink = 0;
1873 for (let i = inlineTokens.length - 1; i >= 0; i--) {
1874 const token = inlineTokens[i];
1875 if (token.type === "text" && !inside_autolink) {
1876 if (RARE_RE.test(token.content)) {
1877 token.content = token.content.replace(/\+-/g, "\xB1").replace(/\.{2,}/g, "\u2026").replace(/([?!])…/g, "$1..").replace(/([?!]){4,}/g, "$1$1$1").replace(/,{2,}/g, ",").replace(/(^|[^-])---(?=[^-]|$)/mg, "$1\u2014").replace(/(^|\s)--(?=\s|$)/mg, "$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg, "$1\u2013");
1878 }
1879 }
1880 if (token.type === "link_open" && token.info === "auto") {
1881 inside_autolink--;
1882 }
1883 if (token.type === "link_close" && token.info === "auto") {
1884 inside_autolink++;
1885 }
1886 }
1887}
1888function replace(state) {
1889 let blkIdx;
1890 if (!state.md.options.typographer) {
1891 return;
1892 }
1893 for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {
1894 if (state.tokens[blkIdx].type !== "inline") {
1895 continue;
1896 }
1897 if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {
1898 replace_scoped(state.tokens[blkIdx].children);
1899 }
1900 if (RARE_RE.test(state.tokens[blkIdx].content)) {
1901 replace_rare(state.tokens[blkIdx].children);
1902 }
1903 }
1904}
1905
1906// node_modules/markdown-it/lib/rules_core/smartquotes.mjs
1907var QUOTE_TEST_RE = /['"]/;
1908var QUOTE_RE = /['"]/g;
1909var APOSTROPHE = "\u2019";
1910function addReplacement(replacements, tokenIdx, pos, ch) {
1911 if (!replacements[tokenIdx]) {
1912 replacements[tokenIdx] = [];
1913 }
1914 replacements[tokenIdx].push({ pos, ch });
1915}
1916function applyReplacements(str, replacements) {
1917 let result = "";
1918 let lastPos = 0;
1919 replacements.sort((a, b) => a.pos - b.pos);
1920 for (let i = 0; i < replacements.length; i++) {
1921 const replacement = replacements[i];
1922 result += str.slice(lastPos, replacement.pos) + replacement.ch;
1923 lastPos = replacement.pos + 1;
1924 }
1925 return result + str.slice(lastPos);
1926}
1927function process_inlines(tokens, state) {
1928 let j;
1929 const stack = [];
1930 const replacements = {};
1931 for (let i = 0; i < tokens.length; i++) {
1932 const token = tokens[i];
1933 const thisLevel = tokens[i].level;
1934 for (j = stack.length - 1; j >= 0; j--) {
1935 if (stack[j].level <= thisLevel) {
1936 break;
1937 }
1938 }
1939 stack.length = j + 1;
1940 if (token.type !== "text") {
1941 continue;
1942 }
1943 const text2 = token.content;
1944 let pos = 0;
1945 const max = text2.length;
1946 OUTER:
1947 while (pos < max) {
1948 QUOTE_RE.lastIndex = pos;
1949 const t = QUOTE_RE.exec(text2);
1950 if (!t) {
1951 break;
1952 }
1953 let canOpen = true;
1954 let canClose = true;
1955 pos = t.index + 1;
1956 const isSingle = t[0] === "'";
1957 let lastChar = 32;
1958 if (t.index - 1 >= 0) {
1959 lastChar = text2.charCodeAt(t.index - 1);
1960 } else {
1961 for (j = i - 1; j >= 0; j--) {
1962 if (tokens[j].type === "softbreak" || tokens[j].type === "hardbreak") break;
1963 if (!tokens[j].content) continue;
1964 lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);
1965 break;
1966 }
1967 }
1968 let nextChar = 32;
1969 if (pos < max) {
1970 nextChar = text2.charCodeAt(pos);
1971 } else {
1972 for (j = i + 1; j < tokens.length; j++) {
1973 if (tokens[j].type === "softbreak" || tokens[j].type === "hardbreak") break;
1974 if (!tokens[j].content) continue;
1975 nextChar = tokens[j].content.charCodeAt(0);
1976 break;
1977 }
1978 }
1979 const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar);
1980 const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar);
1981 const isLastWhiteSpace = isWhiteSpace(lastChar);
1982 const isNextWhiteSpace = isWhiteSpace(nextChar);
1983 if (isNextWhiteSpace) {
1984 canOpen = false;
1985 } else if (isNextPunctChar) {
1986 if (!(isLastWhiteSpace || isLastPunctChar)) {
1987 canOpen = false;
1988 }
1989 }
1990 if (isLastWhiteSpace) {
1991 canClose = false;
1992 } else if (isLastPunctChar) {
1993 if (!(isNextWhiteSpace || isNextPunctChar)) {
1994 canClose = false;
1995 }
1996 }
1997 if (nextChar === 34 && t[0] === '"') {
1998 if (lastChar >= 48 && lastChar <= 57) {
1999 canClose = canOpen = false;
2000 }
2001 }
2002 if (canOpen && canClose) {
2003 canOpen = isLastPunctChar;
2004 canClose = isNextPunctChar;
2005 }
2006 if (!canOpen && !canClose) {
2007 if (isSingle) {
2008 addReplacement(replacements, i, t.index, APOSTROPHE);
2009 }
2010 continue;
2011 }
2012 if (canClose) {
2013 for (j = stack.length - 1; j >= 0; j--) {
2014 let item = stack[j];
2015 if (stack[j].level < thisLevel) {
2016 break;
2017 }
2018 if (item.single === isSingle && stack[j].level === thisLevel) {
2019 item = stack[j];
2020 let openQuote;
2021 let closeQuote;
2022 if (isSingle) {
2023 openQuote = state.md.options.quotes[2];
2024 closeQuote = state.md.options.quotes[3];
2025 } else {
2026 openQuote = state.md.options.quotes[0];
2027 closeQuote = state.md.options.quotes[1];
2028 }
2029 addReplacement(replacements, i, t.index, closeQuote);
2030 addReplacement(replacements, item.token, item.pos, openQuote);
2031 stack.length = j;
2032 continue OUTER;
2033 }
2034 }
2035 }
2036 if (canOpen) {
2037 stack.push({
2038 token: i,
2039 pos: t.index,
2040 single: isSingle,
2041 level: thisLevel
2042 });
2043 } else if (canClose && isSingle) {
2044 addReplacement(replacements, i, t.index, APOSTROPHE);
2045 }
2046 }
2047 }
2048 Object.keys(replacements).forEach(function(tokenIdx) {
2049 tokens[tokenIdx].content = applyReplacements(tokens[tokenIdx].content, replacements[tokenIdx]);
2050 });
2051}
2052function smartquotes(state) {
2053 if (!state.md.options.typographer) {
2054 return;
2055 }
2056 for (let blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {
2057 if (state.tokens[blkIdx].type !== "inline" || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {
2058 continue;
2059 }
2060 process_inlines(state.tokens[blkIdx].children, state);
2061 }
2062}
2063
2064// node_modules/markdown-it/lib/rules_core/text_join.mjs
2065function text_join(state) {
2066 let curr, last;
2067 const blockTokens = state.tokens;
2068 const l = blockTokens.length;
2069 for (let j = 0; j < l; j++) {
2070 if (blockTokens[j].type !== "inline") continue;
2071 const tokens = blockTokens[j].children;
2072 const max = tokens.length;
2073 for (curr = 0; curr < max; curr++) {
2074 if (tokens[curr].type === "text_special") {
2075 tokens[curr].type = "text";
2076 }
2077 }
2078 for (curr = last = 0; curr < max; curr++) {
2079 if (tokens[curr].type === "text" && curr + 1 < max && tokens[curr + 1].type === "text") {
2080 tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
2081 } else {
2082 if (curr !== last) {
2083 tokens[last] = tokens[curr];
2084 }
2085 last++;
2086 }
2087 }
2088 if (curr !== last) {
2089 tokens.length = last;
2090 }
2091 }
2092}
2093
2094// node_modules/markdown-it/lib/parser_core.mjs
2095var _rules = [
2096 ["normalize", normalize],
2097 ["block", block],
2098 ["inline", inline],
2099 ["linkify", linkify],
2100 ["replacements", replace],
2101 ["smartquotes", smartquotes],
2102 // `text_join` finds `text_special` tokens (for escape sequences)
2103 // and joins them with the rest of the text
2104 ["text_join", text_join]
2105];
2106function Core() {
2107 this.ruler = new ruler_default();
2108 for (let i = 0; i < _rules.length; i++) {
2109 this.ruler.push(_rules[i][0], _rules[i][1]);
2110 }
2111}
2112Core.prototype.process = function(state) {
2113 const rules = this.ruler.getRules("");
2114 for (let i = 0, l = rules.length; i < l; i++) {
2115 rules[i](state);
2116 }
2117};
2118Core.prototype.State = state_core_default;
2119var parser_core_default = Core;
2120
2121// node_modules/markdown-it/lib/rules_block/state_block.mjs
2122function StateBlock(src, md, env, tokens) {
2123 this.src = src;
2124 this.md = md;
2125 this.env = env;
2126 this.tokens = tokens;
2127 this.bMarks = [];
2128 this.eMarks = [];
2129 this.tShift = [];
2130 this.sCount = [];
2131 this.bsCount = [];
2132 this.blkIndent = 0;
2133 this.line = 0;
2134 this.lineMax = 0;
2135 this.tight = false;
2136 this.ddIndent = -1;
2137 this.listIndent = -1;
2138 this.parentType = "root";
2139 this.level = 0;
2140 const s = this.src;
2141 for (let start = 0, pos = 0, indent = 0, offset = 0, len = s.length, indent_found = false; pos < len; pos++) {
2142 const ch = s.charCodeAt(pos);
2143 if (!indent_found) {
2144 if (isSpace(ch)) {
2145 indent++;
2146 if (ch === 9) {
2147 offset += 4 - offset % 4;
2148 } else {
2149 offset++;
2150 }
2151 continue;
2152 } else {
2153 indent_found = true;
2154 }
2155 }
2156 if (ch === 10 || pos === len - 1) {
2157 if (ch !== 10) {
2158 pos++;
2159 }
2160 this.bMarks.push(start);
2161 this.eMarks.push(pos);
2162 this.tShift.push(indent);
2163 this.sCount.push(offset);
2164 this.bsCount.push(0);
2165 indent_found = false;
2166 indent = 0;
2167 offset = 0;
2168 start = pos + 1;
2169 }
2170 }
2171 this.bMarks.push(s.length);
2172 this.eMarks.push(s.length);
2173 this.tShift.push(0);
2174 this.sCount.push(0);
2175 this.bsCount.push(0);
2176 this.lineMax = this.bMarks.length - 1;
2177}
2178StateBlock.prototype.push = function(type, tag, nesting) {
2179 const token = new token_default(type, tag, nesting);
2180 token.block = true;
2181 if (nesting < 0) this.level--;
2182 token.level = this.level;
2183 if (nesting > 0) this.level++;
2184 this.tokens.push(token);
2185 return token;
2186};
2187StateBlock.prototype.isEmpty = function isEmpty(line) {
2188 return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];
2189};
2190StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {
2191 for (let max = this.lineMax; from < max; from++) {
2192 if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {
2193 break;
2194 }
2195 }
2196 return from;
2197};
2198StateBlock.prototype.skipSpaces = function skipSpaces(pos) {
2199 for (let max = this.src.length; pos < max; pos++) {
2200 const ch = this.src.charCodeAt(pos);
2201 if (!isSpace(ch)) {
2202 break;
2203 }
2204 }
2205 return pos;
2206};
2207StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {
2208 if (pos <= min) {
2209 return pos;
2210 }
2211 while (pos > min) {
2212 if (!isSpace(this.src.charCodeAt(--pos))) {
2213 return pos + 1;
2214 }
2215 }
2216 return pos;
2217};
2218StateBlock.prototype.skipChars = function skipChars(pos, code2) {
2219 for (let max = this.src.length; pos < max; pos++) {
2220 if (this.src.charCodeAt(pos) !== code2) {
2221 break;
2222 }
2223 }
2224 return pos;
2225};
2226StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code2, min) {
2227 if (pos <= min) {
2228 return pos;
2229 }
2230 while (pos > min) {
2231 if (code2 !== this.src.charCodeAt(--pos)) {
2232 return pos + 1;
2233 }
2234 }
2235 return pos;
2236};
2237StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {
2238 if (begin >= end) {
2239 return "";
2240 }
2241 const queue = new Array(end - begin);
2242 for (let i = 0, line = begin; line < end; line++, i++) {
2243 let lineIndent = 0;
2244 const lineStart = this.bMarks[line];
2245 let first = lineStart;
2246 let last;
2247 if (line + 1 < end || keepLastLF) {
2248 last = this.eMarks[line] + 1;
2249 } else {
2250 last = this.eMarks[line];
2251 }
2252 while (first < last && lineIndent < indent) {
2253 const ch = this.src.charCodeAt(first);
2254 if (isSpace(ch)) {
2255 if (ch === 9) {
2256 lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;
2257 } else {
2258 lineIndent++;
2259 }
2260 } else if (first - lineStart < this.tShift[line]) {
2261 lineIndent++;
2262 } else {
2263 break;
2264 }
2265 first++;
2266 }
2267 if (lineIndent > indent) {
2268 queue[i] = new Array(lineIndent - indent + 1).join(" ") + this.src.slice(first, last);
2269 } else {
2270 queue[i] = this.src.slice(first, last);
2271 }
2272 }
2273 return queue.join("");
2274};
2275StateBlock.prototype.Token = token_default;
2276var state_block_default = StateBlock;
2277
2278// node_modules/markdown-it/lib/rules_block/table.mjs
2279var MAX_AUTOCOMPLETED_CELLS = 65536;
2280function getLine(state, line) {
2281 const pos = state.bMarks[line] + state.tShift[line];
2282 const max = state.eMarks[line];
2283 return state.src.slice(pos, max);
2284}
2285function escapedSplit(str) {
2286 const result = [];
2287 const max = str.length;
2288 let pos = 0;
2289 let ch = str.charCodeAt(pos);
2290 let isEscaped = false;
2291 let lastPos = 0;
2292 let current = "";
2293 while (pos < max) {
2294 if (ch === 124) {
2295 if (!isEscaped) {
2296 result.push(current + str.substring(lastPos, pos));
2297 current = "";
2298 lastPos = pos + 1;
2299 } else {
2300 current += str.substring(lastPos, pos - 1);
2301 lastPos = pos;
2302 }
2303 }
2304 isEscaped = ch === 92;
2305 pos++;
2306 ch = str.charCodeAt(pos);
2307 }
2308 result.push(current + str.substring(lastPos));
2309 return result;
2310}
2311function table(state, startLine, endLine, silent) {
2312 if (startLine + 2 > endLine) {
2313 return false;
2314 }
2315 let nextLine = startLine + 1;
2316 if (state.sCount[nextLine] < state.blkIndent) {
2317 return false;
2318 }
2319 if (state.sCount[nextLine] - state.blkIndent >= 4) {
2320 return false;
2321 }
2322 let pos = state.bMarks[nextLine] + state.tShift[nextLine];
2323 if (pos >= state.eMarks[nextLine]) {
2324 return false;
2325 }
2326 const firstCh = state.src.charCodeAt(pos++);
2327 if (firstCh !== 124 && firstCh !== 45 && firstCh !== 58) {
2328 return false;
2329 }
2330 if (pos >= state.eMarks[nextLine]) {
2331 return false;
2332 }
2333 const secondCh = state.src.charCodeAt(pos++);
2334 if (secondCh !== 124 && secondCh !== 45 && secondCh !== 58 && !isSpace(secondCh)) {
2335 return false;
2336 }
2337 if (firstCh === 45 && isSpace(secondCh)) {
2338 return false;
2339 }
2340 while (pos < state.eMarks[nextLine]) {
2341 const ch = state.src.charCodeAt(pos);
2342 if (ch !== 124 && ch !== 45 && ch !== 58 && !isSpace(ch)) {
2343 return false;
2344 }
2345 pos++;
2346 }
2347 let lineText = getLine(state, startLine + 1);
2348 let columns = lineText.split("|");
2349 const aligns = [];
2350 for (let i = 0; i < columns.length; i++) {
2351 const t = columns[i].trim();
2352 if (!t) {
2353 if (i === 0 || i === columns.length - 1) {
2354 continue;
2355 } else {
2356 return false;
2357 }
2358 }
2359 if (!/^:?-+:?$/.test(t)) {
2360 return false;
2361 }
2362 if (t.charCodeAt(t.length - 1) === 58) {
2363 aligns.push(t.charCodeAt(0) === 58 ? "center" : "right");
2364 } else if (t.charCodeAt(0) === 58) {
2365 aligns.push("left");
2366 } else {
2367 aligns.push("");
2368 }
2369 }
2370 lineText = getLine(state, startLine).trim();
2371 if (lineText.indexOf("|") === -1) {
2372 return false;
2373 }
2374 if (state.sCount[startLine] - state.blkIndent >= 4) {
2375 return false;
2376 }
2377 columns = escapedSplit(lineText);
2378 if (columns.length && columns[0] === "") columns.shift();
2379 if (columns.length && columns[columns.length - 1] === "") columns.pop();
2380 const columnCount = columns.length;
2381 if (columnCount === 0 || columnCount !== aligns.length) {
2382 return false;
2383 }
2384 if (silent) {
2385 return true;
2386 }
2387 const oldParentType = state.parentType;
2388 state.parentType = "table";
2389 const terminatorRules = state.md.block.ruler.getRules("blockquote");
2390 const token_to = state.push("table_open", "table", 1);
2391 const tableLines = [startLine, 0];
2392 token_to.map = tableLines;
2393 const token_tho = state.push("thead_open", "thead", 1);
2394 token_tho.map = [startLine, startLine + 1];
2395 const token_htro = state.push("tr_open", "tr", 1);
2396 token_htro.map = [startLine, startLine + 1];
2397 for (let i = 0; i < columns.length; i++) {
2398 const token_ho = state.push("th_open", "th", 1);
2399 if (aligns[i]) {
2400 token_ho.attrs = [["style", "text-align:" + aligns[i]]];
2401 }
2402 const token_il = state.push("inline", "", 0);
2403 token_il.content = columns[i].trim();
2404 token_il.children = [];
2405 state.push("th_close", "th", -1);
2406 }
2407 state.push("tr_close", "tr", -1);
2408 state.push("thead_close", "thead", -1);
2409 let tbodyLines;
2410 let autocompletedCells = 0;
2411 for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {
2412 if (state.sCount[nextLine] < state.blkIndent) {
2413 break;
2414 }
2415 let terminate = false;
2416 for (let i = 0, l = terminatorRules.length; i < l; i++) {
2417 if (terminatorRules[i](state, nextLine, endLine, true)) {
2418 terminate = true;
2419 break;
2420 }
2421 }
2422 if (terminate) {
2423 break;
2424 }
2425 lineText = getLine(state, nextLine).trim();
2426 if (!lineText) {
2427 break;
2428 }
2429 if (state.sCount[nextLine] - state.blkIndent >= 4) {
2430 break;
2431 }
2432 columns = escapedSplit(lineText);
2433 if (columns.length && columns[0] === "") columns.shift();
2434 if (columns.length && columns[columns.length - 1] === "") columns.pop();
2435 autocompletedCells += columnCount - columns.length;
2436 if (autocompletedCells > MAX_AUTOCOMPLETED_CELLS) {
2437 break;
2438 }
2439 if (nextLine === startLine + 2) {
2440 const token_tbo = state.push("tbody_open", "tbody", 1);
2441 token_tbo.map = tbodyLines = [startLine + 2, 0];
2442 }
2443 const token_tro = state.push("tr_open", "tr", 1);
2444 token_tro.map = [nextLine, nextLine + 1];
2445 for (let i = 0; i < columnCount; i++) {
2446 const token_tdo = state.push("td_open", "td", 1);
2447 if (aligns[i]) {
2448 token_tdo.attrs = [["style", "text-align:" + aligns[i]]];
2449 }
2450 const token_il = state.push("inline", "", 0);
2451 token_il.content = columns[i] ? columns[i].trim() : "";
2452 token_il.children = [];
2453 state.push("td_close", "td", -1);
2454 }
2455 state.push("tr_close", "tr", -1);
2456 }
2457 if (tbodyLines) {
2458 state.push("tbody_close", "tbody", -1);
2459 tbodyLines[1] = nextLine;
2460 }
2461 state.push("table_close", "table", -1);
2462 tableLines[1] = nextLine;
2463 state.parentType = oldParentType;
2464 state.line = nextLine;
2465 return true;
2466}
2467
2468// node_modules/markdown-it/lib/rules_block/code.mjs
2469function code(state, startLine, endLine) {
2470 if (state.sCount[startLine] - state.blkIndent < 4) {
2471 return false;
2472 }
2473 let nextLine = startLine + 1;
2474 let last = nextLine;
2475 while (nextLine < endLine) {
2476 if (state.isEmpty(nextLine)) {
2477 nextLine++;
2478 continue;
2479 }
2480 if (state.sCount[nextLine] - state.blkIndent >= 4) {
2481 nextLine++;
2482 last = nextLine;
2483 continue;
2484 }
2485 break;
2486 }
2487 state.line = last;
2488 const token = state.push("code_block", "code", 0);
2489 token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + "\n";
2490 token.map = [startLine, state.line];
2491 return true;
2492}
2493
2494// node_modules/markdown-it/lib/rules_block/fence.mjs
2495function fence(state, startLine, endLine, silent) {
2496 let pos = state.bMarks[startLine] + state.tShift[startLine];
2497 let max = state.eMarks[startLine];
2498 if (state.sCount[startLine] - state.blkIndent >= 4) {
2499 return false;
2500 }
2501 if (pos + 3 > max) {
2502 return false;
2503 }
2504 const marker = state.src.charCodeAt(pos);
2505 if (marker !== 126 && marker !== 96) {
2506 return false;
2507 }
2508 let mem = pos;
2509 pos = state.skipChars(pos, marker);
2510 let len = pos - mem;
2511 if (len < 3) {
2512 return false;
2513 }
2514 const markup = state.src.slice(mem, pos);
2515 const params = state.src.slice(pos, max);
2516 if (marker === 96) {
2517 if (params.indexOf(String.fromCharCode(marker)) >= 0) {
2518 return false;
2519 }
2520 }
2521 if (silent) {
2522 return true;
2523 }
2524 let nextLine = startLine;
2525 let haveEndMarker = false;
2526 for (; ; ) {
2527 nextLine++;
2528 if (nextLine >= endLine) {
2529 break;
2530 }
2531 pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];
2532 max = state.eMarks[nextLine];
2533 if (pos < max && state.sCount[nextLine] < state.blkIndent) {
2534 break;
2535 }
2536 if (state.src.charCodeAt(pos) !== marker) {
2537 continue;
2538 }
2539 if (state.sCount[nextLine] - state.blkIndent >= 4) {
2540 continue;
2541 }
2542 pos = state.skipChars(pos, marker);
2543 if (pos - mem < len) {
2544 continue;
2545 }
2546 pos = state.skipSpaces(pos);
2547 if (pos < max) {
2548 continue;
2549 }
2550 haveEndMarker = true;
2551 break;
2552 }
2553 len = state.sCount[startLine];
2554 state.line = nextLine + (haveEndMarker ? 1 : 0);
2555 const token = state.push("fence", "code", 0);
2556 token.info = params;
2557 token.content = state.getLines(startLine + 1, nextLine, len, true);
2558 token.markup = markup;
2559 token.map = [startLine, state.line];
2560 return true;
2561}
2562
2563// node_modules/markdown-it/lib/rules_block/blockquote.mjs
2564function blockquote(state, startLine, endLine, silent) {
2565 let pos = state.bMarks[startLine] + state.tShift[startLine];
2566 let max = state.eMarks[startLine];
2567 const oldLineMax = state.lineMax;
2568 if (state.sCount[startLine] - state.blkIndent >= 4) {
2569 return false;
2570 }
2571 if (state.src.charCodeAt(pos) !== 62) {
2572 return false;
2573 }
2574 if (silent) {
2575 return true;
2576 }
2577 const oldBMarks = [];
2578 const oldBSCount = [];
2579 const oldSCount = [];
2580 const oldTShift = [];
2581 const terminatorRules = state.md.block.ruler.getRules("blockquote");
2582 const oldParentType = state.parentType;
2583 state.parentType = "blockquote";
2584 let lastLineEmpty = false;
2585 let nextLine;
2586 for (nextLine = startLine; nextLine < endLine; nextLine++) {
2587 const isOutdented = state.sCount[nextLine] < state.blkIndent;
2588 pos = state.bMarks[nextLine] + state.tShift[nextLine];
2589 max = state.eMarks[nextLine];
2590 if (pos >= max) {
2591 break;
2592 }
2593 if (state.src.charCodeAt(pos++) === 62 && !isOutdented) {
2594 let initial = state.sCount[nextLine] + 1;
2595 let spaceAfterMarker;
2596 let adjustTab;
2597 if (state.src.charCodeAt(pos) === 32) {
2598 pos++;
2599 initial++;
2600 adjustTab = false;
2601 spaceAfterMarker = true;
2602 } else if (state.src.charCodeAt(pos) === 9) {
2603 spaceAfterMarker = true;
2604 if ((state.bsCount[nextLine] + initial) % 4 === 3) {
2605 pos++;
2606 initial++;
2607 adjustTab = false;
2608 } else {
2609 adjustTab = true;
2610 }
2611 } else {
2612 spaceAfterMarker = false;
2613 }
2614 let offset = initial;
2615 oldBMarks.push(state.bMarks[nextLine]);
2616 state.bMarks[nextLine] = pos;
2617 while (pos < max) {
2618 const ch = state.src.charCodeAt(pos);
2619 if (isSpace(ch)) {
2620 if (ch === 9) {
2621 offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;
2622 } else {
2623 offset++;
2624 }
2625 } else {
2626 break;
2627 }
2628 pos++;
2629 }
2630 lastLineEmpty = pos >= max;
2631 oldBSCount.push(state.bsCount[nextLine]);
2632 state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);
2633 oldSCount.push(state.sCount[nextLine]);
2634 state.sCount[nextLine] = offset - initial;
2635 oldTShift.push(state.tShift[nextLine]);
2636 state.tShift[nextLine] = pos - state.bMarks[nextLine];
2637 continue;
2638 }
2639 if (lastLineEmpty) {
2640 break;
2641 }
2642 let terminate = false;
2643 for (let i = 0, l = terminatorRules.length; i < l; i++) {
2644 if (terminatorRules[i](state, nextLine, endLine, true)) {
2645 terminate = true;
2646 break;
2647 }
2648 }
2649 if (terminate) {
2650 state.lineMax = nextLine;
2651 if (state.blkIndent !== 0) {
2652 oldBMarks.push(state.bMarks[nextLine]);
2653 oldBSCount.push(state.bsCount[nextLine]);
2654 oldTShift.push(state.tShift[nextLine]);
2655 oldSCount.push(state.sCount[nextLine]);
2656 state.sCount[nextLine] -= state.blkIndent;
2657 }
2658 break;
2659 }
2660 oldBMarks.push(state.bMarks[nextLine]);
2661 oldBSCount.push(state.bsCount[nextLine]);
2662 oldTShift.push(state.tShift[nextLine]);
2663 oldSCount.push(state.sCount[nextLine]);
2664 state.sCount[nextLine] = -1;
2665 }
2666 const oldIndent = state.blkIndent;
2667 state.blkIndent = 0;
2668 const token_o = state.push("blockquote_open", "blockquote", 1);
2669 token_o.markup = ">";
2670 const lines = [startLine, 0];
2671 token_o.map = lines;
2672 state.md.block.tokenize(state, startLine, nextLine);
2673 const token_c = state.push("blockquote_close", "blockquote", -1);
2674 token_c.markup = ">";
2675 state.lineMax = oldLineMax;
2676 state.parentType = oldParentType;
2677 lines[1] = state.line;
2678 for (let i = 0; i < oldTShift.length; i++) {
2679 state.bMarks[i + startLine] = oldBMarks[i];
2680 state.tShift[i + startLine] = oldTShift[i];
2681 state.sCount[i + startLine] = oldSCount[i];
2682 state.bsCount[i + startLine] = oldBSCount[i];
2683 }
2684 state.blkIndent = oldIndent;
2685 return true;
2686}
2687
2688// node_modules/markdown-it/lib/rules_block/hr.mjs
2689function hr(state, startLine, endLine, silent) {
2690 const max = state.eMarks[startLine];
2691 if (state.sCount[startLine] - state.blkIndent >= 4) {
2692 return false;
2693 }
2694 let pos = state.bMarks[startLine] + state.tShift[startLine];
2695 const marker = state.src.charCodeAt(pos++);
2696 if (marker !== 42 && marker !== 45 && marker !== 95) {
2697 return false;
2698 }
2699 let cnt = 1;
2700 while (pos < max) {
2701 const ch = state.src.charCodeAt(pos++);
2702 if (ch !== marker && !isSpace(ch)) {
2703 return false;
2704 }
2705 if (ch === marker) {
2706 cnt++;
2707 }
2708 }
2709 if (cnt < 3) {
2710 return false;
2711 }
2712 if (silent) {
2713 return true;
2714 }
2715 state.line = startLine + 1;
2716 const token = state.push("hr", "hr", 0);
2717 token.map = [startLine, state.line];
2718 token.markup = Array(cnt + 1).join(String.fromCharCode(marker));
2719 return true;
2720}
2721
2722// node_modules/markdown-it/lib/rules_block/list.mjs
2723function skipBulletListMarker(state, startLine) {
2724 const max = state.eMarks[startLine];
2725 let pos = state.bMarks[startLine] + state.tShift[startLine];
2726 const marker = state.src.charCodeAt(pos++);
2727 if (marker !== 42 && marker !== 45 && marker !== 43) {
2728 return -1;
2729 }
2730 if (pos < max) {
2731 const ch = state.src.charCodeAt(pos);
2732 if (!isSpace(ch)) {
2733 return -1;
2734 }
2735 }
2736 return pos;
2737}
2738function skipOrderedListMarker(state, startLine) {
2739 const start = state.bMarks[startLine] + state.tShift[startLine];
2740 const max = state.eMarks[startLine];
2741 let pos = start;
2742 if (pos + 1 >= max) {
2743 return -1;
2744 }
2745 let ch = state.src.charCodeAt(pos++);
2746 if (ch < 48 || ch > 57) {
2747 return -1;
2748 }
2749 for (; ; ) {
2750 if (pos >= max) {
2751 return -1;
2752 }
2753 ch = state.src.charCodeAt(pos++);
2754 if (ch >= 48 && ch <= 57) {
2755 if (pos - start >= 10) {
2756 return -1;
2757 }
2758 continue;
2759 }
2760 if (ch === 41 || ch === 46) {
2761 break;
2762 }
2763 return -1;
2764 }
2765 if (pos < max) {
2766 ch = state.src.charCodeAt(pos);
2767 if (!isSpace(ch)) {
2768 return -1;
2769 }
2770 }
2771 return pos;
2772}
2773function markTightParagraphs(state, idx) {
2774 const level = state.level + 2;
2775 for (let i = idx + 2, l = state.tokens.length - 2; i < l; i++) {
2776 if (state.tokens[i].level === level && state.tokens[i].type === "paragraph_open") {
2777 state.tokens[i + 2].hidden = true;
2778 state.tokens[i].hidden = true;
2779 i += 2;
2780 }
2781 }
2782}
2783function list(state, startLine, endLine, silent) {
2784 let max, pos, start, token;
2785 let nextLine = startLine;
2786 let tight = true;
2787 if (state.sCount[nextLine] - state.blkIndent >= 4) {
2788 return false;
2789 }
2790 if (state.listIndent >= 0 && state.sCount[nextLine] - state.listIndent >= 4 && state.sCount[nextLine] < state.blkIndent) {
2791 return false;
2792 }
2793 let isTerminatingParagraph = false;
2794 if (silent && state.parentType === "paragraph") {
2795 if (state.sCount[nextLine] >= state.blkIndent) {
2796 isTerminatingParagraph = true;
2797 }
2798 }
2799 let isOrdered;
2800 let markerValue;
2801 let posAfterMarker;
2802 if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {
2803 isOrdered = true;
2804 start = state.bMarks[nextLine] + state.tShift[nextLine];
2805 markerValue = Number(state.src.slice(start, posAfterMarker - 1));
2806 if (isTerminatingParagraph && markerValue !== 1) return false;
2807 } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {
2808 isOrdered = false;
2809 } else {
2810 return false;
2811 }
2812 if (isTerminatingParagraph) {
2813 if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false;
2814 }
2815 if (silent) {
2816 return true;
2817 }
2818 const markerCharCode = state.src.charCodeAt(posAfterMarker - 1);
2819 const listTokIdx = state.tokens.length;
2820 if (isOrdered) {
2821 token = state.push("ordered_list_open", "ol", 1);
2822 if (markerValue !== 1) {
2823 token.attrs = [["start", markerValue]];
2824 }
2825 } else {
2826 token = state.push("bullet_list_open", "ul", 1);
2827 }
2828 const listLines = [nextLine, 0];
2829 token.map = listLines;
2830 token.markup = String.fromCharCode(markerCharCode);
2831 let prevEmptyEnd = false;
2832 const terminatorRules = state.md.block.ruler.getRules("list");
2833 const oldParentType = state.parentType;
2834 state.parentType = "list";
2835 while (nextLine < endLine) {
2836 pos = posAfterMarker;
2837 max = state.eMarks[nextLine];
2838 const initial = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine]);
2839 let offset = initial;
2840 while (pos < max) {
2841 const ch = state.src.charCodeAt(pos);
2842 if (ch === 9) {
2843 offset += 4 - (offset + state.bsCount[nextLine]) % 4;
2844 } else if (ch === 32) {
2845 offset++;
2846 } else {
2847 break;
2848 }
2849 pos++;
2850 }
2851 const contentStart = pos;
2852 let indentAfterMarker;
2853 if (contentStart >= max) {
2854 indentAfterMarker = 1;
2855 } else {
2856 indentAfterMarker = offset - initial;
2857 }
2858 if (indentAfterMarker > 4) {
2859 indentAfterMarker = 1;
2860 }
2861 const indent = initial + indentAfterMarker;
2862 token = state.push("list_item_open", "li", 1);
2863 token.markup = String.fromCharCode(markerCharCode);
2864 const itemLines = [nextLine, 0];
2865 token.map = itemLines;
2866 if (isOrdered) {
2867 token.info = state.src.slice(start, posAfterMarker - 1);
2868 }
2869 const oldTight = state.tight;
2870 const oldTShift = state.tShift[nextLine];
2871 const oldSCount = state.sCount[nextLine];
2872 const oldListIndent = state.listIndent;
2873 state.listIndent = state.blkIndent;
2874 state.blkIndent = indent;
2875 state.tight = true;
2876 state.tShift[nextLine] = contentStart - state.bMarks[nextLine];
2877 state.sCount[nextLine] = offset;
2878 if (contentStart >= max && state.isEmpty(nextLine + 1)) {
2879 state.line = Math.min(state.line + 2, endLine);
2880 } else {
2881 state.md.block.tokenize(state, nextLine, endLine, true);
2882 }
2883 if (!state.tight || prevEmptyEnd) {
2884 tight = false;
2885 }
2886 prevEmptyEnd = state.line - nextLine > 1 && state.isEmpty(state.line - 1);
2887 state.blkIndent = state.listIndent;
2888 state.listIndent = oldListIndent;
2889 state.tShift[nextLine] = oldTShift;
2890 state.sCount[nextLine] = oldSCount;
2891 state.tight = oldTight;
2892 token = state.push("list_item_close", "li", -1);
2893 token.markup = String.fromCharCode(markerCharCode);
2894 nextLine = state.line;
2895 itemLines[1] = nextLine;
2896 if (nextLine >= endLine) {
2897 break;
2898 }
2899 if (state.sCount[nextLine] < state.blkIndent) {
2900 break;
2901 }
2902 if (state.sCount[nextLine] - state.blkIndent >= 4) {
2903 break;
2904 }
2905 let terminate = false;
2906 for (let i = 0, l = terminatorRules.length; i < l; i++) {
2907 if (terminatorRules[i](state, nextLine, endLine, true)) {
2908 terminate = true;
2909 break;
2910 }
2911 }
2912 if (terminate) {
2913 break;
2914 }
2915 if (isOrdered) {
2916 posAfterMarker = skipOrderedListMarker(state, nextLine);
2917 if (posAfterMarker < 0) {
2918 break;
2919 }
2920 start = state.bMarks[nextLine] + state.tShift[nextLine];
2921 } else {
2922 posAfterMarker = skipBulletListMarker(state, nextLine);
2923 if (posAfterMarker < 0) {
2924 break;
2925 }
2926 }
2927 if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {
2928 break;
2929 }
2930 }
2931 if (isOrdered) {
2932 token = state.push("ordered_list_close", "ol", -1);
2933 } else {
2934 token = state.push("bullet_list_close", "ul", -1);
2935 }
2936 token.markup = String.fromCharCode(markerCharCode);
2937 listLines[1] = nextLine;
2938 state.line = nextLine;
2939 state.parentType = oldParentType;
2940 if (tight) {
2941 markTightParagraphs(state, listTokIdx);
2942 }
2943 return true;
2944}
2945
2946// node_modules/markdown-it/lib/rules_block/reference.mjs
2947function reference(state, startLine, _endLine, silent) {
2948 let pos = state.bMarks[startLine] + state.tShift[startLine];
2949 let max = state.eMarks[startLine];
2950 let nextLine = startLine + 1;
2951 if (state.sCount[startLine] - state.blkIndent >= 4) {
2952 return false;
2953 }
2954 if (state.src.charCodeAt(pos) !== 91) {
2955 return false;
2956 }
2957 function getNextLine(nextLine2) {
2958 const endLine = state.lineMax;
2959 if (nextLine2 >= endLine || state.isEmpty(nextLine2)) {
2960 return null;
2961 }
2962 let isContinuation = false;
2963 if (state.sCount[nextLine2] - state.blkIndent > 3) {
2964 isContinuation = true;
2965 }
2966 if (state.sCount[nextLine2] < 0) {
2967 isContinuation = true;
2968 }
2969 if (!isContinuation) {
2970 const terminatorRules = state.md.block.ruler.getRules("reference");
2971 const oldParentType = state.parentType;
2972 state.parentType = "reference";
2973 let terminate = false;
2974 for (let i = 0, l = terminatorRules.length; i < l; i++) {
2975 if (terminatorRules[i](state, nextLine2, endLine, true)) {
2976 terminate = true;
2977 break;
2978 }
2979 }
2980 state.parentType = oldParentType;
2981 if (terminate) {
2982 return null;
2983 }
2984 }
2985 const pos2 = state.bMarks[nextLine2] + state.tShift[nextLine2];
2986 const max2 = state.eMarks[nextLine2];
2987 return state.src.slice(pos2, max2 + 1);
2988 }
2989 let str = state.src.slice(pos, max + 1);
2990 max = str.length;
2991 let labelEnd = -1;
2992 for (pos = 1; pos < max; pos++) {
2993 const ch = str.charCodeAt(pos);
2994 if (ch === 91) {
2995 return false;
2996 } else if (ch === 93) {
2997 labelEnd = pos;
2998 break;
2999 } else if (ch === 10) {
3000 const lineContent = getNextLine(nextLine);
3001 if (lineContent !== null) {
3002 str += lineContent;
3003 max = str.length;
3004 nextLine++;
3005 }
3006 } else if (ch === 92) {
3007 pos++;
3008 if (pos < max && str.charCodeAt(pos) === 10) {
3009 const lineContent = getNextLine(nextLine);
3010 if (lineContent !== null) {
3011 str += lineContent;
3012 max = str.length;
3013 nextLine++;
3014 }
3015 }
3016 }
3017 }
3018 if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 58) {
3019 return false;
3020 }
3021 for (pos = labelEnd + 2; pos < max; pos++) {
3022 const ch = str.charCodeAt(pos);
3023 if (ch === 10) {
3024 const lineContent = getNextLine(nextLine);
3025 if (lineContent !== null) {
3026 str += lineContent;
3027 max = str.length;
3028 nextLine++;
3029 }
3030 } else if (isSpace(ch)) {
3031 } else {
3032 break;
3033 }
3034 }
3035 const destRes = state.md.helpers.parseLinkDestination(str, pos, max);
3036 if (!destRes.ok) {
3037 return false;
3038 }
3039 const href = state.md.normalizeLink(destRes.str);
3040 if (!state.md.validateLink(href)) {
3041 return false;
3042 }
3043 pos = destRes.pos;
3044 const destEndPos = pos;
3045 const destEndLineNo = nextLine;
3046 const start = pos;
3047 for (; pos < max; pos++) {
3048 const ch = str.charCodeAt(pos);
3049 if (ch === 10) {
3050 const lineContent = getNextLine(nextLine);
3051 if (lineContent !== null) {
3052 str += lineContent;
3053 max = str.length;
3054 nextLine++;
3055 }
3056 } else if (isSpace(ch)) {
3057 } else {
3058 break;
3059 }
3060 }
3061 let titleRes = state.md.helpers.parseLinkTitle(str, pos, max);
3062 while (titleRes.can_continue) {
3063 const lineContent = getNextLine(nextLine);
3064 if (lineContent === null) break;
3065 str += lineContent;
3066 pos = max;
3067 max = str.length;
3068 nextLine++;
3069 titleRes = state.md.helpers.parseLinkTitle(str, pos, max, titleRes);
3070 }
3071 let title;
3072 if (pos < max && start !== pos && titleRes.ok) {
3073 title = titleRes.str;
3074 pos = titleRes.pos;
3075 } else {
3076 title = "";
3077 pos = destEndPos;
3078 nextLine = destEndLineNo;
3079 }
3080 while (pos < max) {
3081 const ch = str.charCodeAt(pos);
3082 if (!isSpace(ch)) {
3083 break;
3084 }
3085 pos++;
3086 }
3087 if (pos < max && str.charCodeAt(pos) !== 10) {
3088 if (title) {
3089 title = "";
3090 pos = destEndPos;
3091 nextLine = destEndLineNo;
3092 while (pos < max) {
3093 const ch = str.charCodeAt(pos);
3094 if (!isSpace(ch)) {
3095 break;
3096 }
3097 pos++;
3098 }
3099 }
3100 }
3101 if (pos < max && str.charCodeAt(pos) !== 10) {
3102 return false;
3103 }
3104 const label = normalizeReference(str.slice(1, labelEnd));
3105 if (!label) {
3106 return false;
3107 }
3108 if (silent) {
3109 return true;
3110 }
3111 if (typeof state.env.references === "undefined") {
3112 state.env.references = {};
3113 }
3114 if (typeof state.env.references[label] === "undefined") {
3115 state.env.references[label] = { title, href };
3116 }
3117 state.line = nextLine;
3118 return true;
3119}
3120
3121// node_modules/markdown-it/lib/common/html_blocks.mjs
3122var html_blocks_default = [
3123 "address",
3124 "article",
3125 "aside",
3126 "base",
3127 "basefont",
3128 "blockquote",
3129 "body",
3130 "caption",
3131 "center",
3132 "col",
3133 "colgroup",
3134 "dd",
3135 "details",
3136 "dialog",
3137 "dir",
3138 "div",
3139 "dl",
3140 "dt",
3141 "fieldset",
3142 "figcaption",
3143 "figure",
3144 "footer",
3145 "form",
3146 "frame",
3147 "frameset",
3148 "h1",
3149 "h2",
3150 "h3",
3151 "h4",
3152 "h5",
3153 "h6",
3154 "head",
3155 "header",
3156 "hr",
3157 "html",
3158 "iframe",
3159 "legend",
3160 "li",
3161 "link",
3162 "main",
3163 "menu",
3164 "menuitem",
3165 "nav",
3166 "noframes",
3167 "ol",
3168 "optgroup",
3169 "option",
3170 "p",
3171 "param",
3172 "search",
3173 "section",
3174 "summary",
3175 "table",
3176 "tbody",
3177 "td",
3178 "tfoot",
3179 "th",
3180 "thead",
3181 "title",
3182 "tr",
3183 "track",
3184 "ul"
3185];
3186
3187// node_modules/markdown-it/lib/common/html_re.mjs
3188var attr_name = "[a-zA-Z_:][a-zA-Z0-9:._-]*";
3189var unquoted = "[^\"'=<>`\\x00-\\x20]+";
3190var single_quoted = "'[^']*'";
3191var double_quoted = '"[^"]*"';
3192var attr_value = "(?:" + unquoted + "|" + single_quoted + "|" + double_quoted + ")";
3193var attribute = "(?:\\s+" + attr_name + "(?:\\s*=\\s*" + attr_value + ")?)";
3194var open_tag = "<[A-Za-z][A-Za-z0-9\\-]*" + attribute + "*\\s*\\/?>";
3195var close_tag = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>";
3196var comment = "<!---?>|<!--(?:[^-]|-[^-]|--[^>])*-->";
3197var processing = "<[?][\\s\\S]*?[?]>";
3198var declaration = "<![A-Za-z][^>]*>";
3199var cdata = "<!\\[CDATA\\[[\\s\\S]*?\\]\\]>";
3200var HTML_TAG_RE = new RegExp("^(?:" + open_tag + "|" + close_tag + "|" + comment + "|" + processing + "|" + declaration + "|" + cdata + ")");
3201var HTML_OPEN_CLOSE_TAG_RE = new RegExp("^(?:" + open_tag + "|" + close_tag + ")");
3202
3203// node_modules/markdown-it/lib/rules_block/html_block.mjs
3204var HTML_SEQUENCES = [
3205 [/^<(script|pre|style|textarea)(?=(\s|>|$))/i, /<\/(script|pre|style|textarea)>/i, true],
3206 [/^<!--/, /-->/, true],
3207 [/^<\?/, /\?>/, true],
3208 [/^<![A-Z]/, />/, true],
3209 [/^<!\[CDATA\[/, /\]\]>/, true],
3210 [new RegExp("^</?(" + html_blocks_default.join("|") + ")(?=(\\s|/?>|$))", "i"), /^$/, true],
3211 [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + "\\s*$"), /^$/, false]
3212];
3213function html_block(state, startLine, endLine, silent) {
3214 let pos = state.bMarks[startLine] + state.tShift[startLine];
3215 let max = state.eMarks[startLine];
3216 if (state.sCount[startLine] - state.blkIndent >= 4) {
3217 return false;
3218 }
3219 if (!state.md.options.html) {
3220 return false;
3221 }
3222 if (state.src.charCodeAt(pos) !== 60) {
3223 return false;
3224 }
3225 let lineText = state.src.slice(pos, max);
3226 let i = 0;
3227 for (; i < HTML_SEQUENCES.length; i++) {
3228 if (HTML_SEQUENCES[i][0].test(lineText)) {
3229 break;
3230 }
3231 }
3232 if (i === HTML_SEQUENCES.length) {
3233 return false;
3234 }
3235 if (silent) {
3236 return HTML_SEQUENCES[i][2];
3237 }
3238 let nextLine = startLine + 1;
3239 const endsOnBlankLine = HTML_SEQUENCES[i][1].test("");
3240 if (!HTML_SEQUENCES[i][1].test(lineText)) {
3241 for (; nextLine < endLine; nextLine++) {
3242 if (state.sCount[nextLine] < state.blkIndent) {
3243 if (endsOnBlankLine || !state.isEmpty(nextLine)) {
3244 break;
3245 }
3246 }
3247 pos = state.bMarks[nextLine] + state.tShift[nextLine];
3248 max = state.eMarks[nextLine];
3249 lineText = state.src.slice(pos, max);
3250 if (HTML_SEQUENCES[i][1].test(lineText)) {
3251 if (lineText.length !== 0) {
3252 nextLine++;
3253 }
3254 break;
3255 }
3256 }
3257 }
3258 state.line = nextLine;
3259 const token = state.push("html_block", "", 0);
3260 token.map = [startLine, nextLine];
3261 token.content = state.getLines(startLine, nextLine, state.blkIndent, true);
3262 return true;
3263}
3264
3265// node_modules/markdown-it/lib/rules_block/heading.mjs
3266function heading(state, startLine, endLine, silent) {
3267 let pos = state.bMarks[startLine] + state.tShift[startLine];
3268 let max = state.eMarks[startLine];
3269 if (state.sCount[startLine] - state.blkIndent >= 4) {
3270 return false;
3271 }
3272 let ch = state.src.charCodeAt(pos);
3273 if (ch !== 35 || pos >= max) {
3274 return false;
3275 }
3276 let level = 1;
3277 ch = state.src.charCodeAt(++pos);
3278 while (ch === 35 && pos < max && level <= 6) {
3279 level++;
3280 ch = state.src.charCodeAt(++pos);
3281 }
3282 if (level > 6 || pos < max && !isSpace(ch)) {
3283 return false;
3284 }
3285 if (silent) {
3286 return true;
3287 }
3288 max = state.skipSpacesBack(max, pos);
3289 const tmp = state.skipCharsBack(max, 35, pos);
3290 if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {
3291 max = tmp;
3292 }
3293 state.line = startLine + 1;
3294 const token_o = state.push("heading_open", "h" + String(level), 1);
3295 token_o.markup = "########".slice(0, level);
3296 token_o.map = [startLine, state.line];
3297 const token_i = state.push("inline", "", 0);
3298 token_i.content = asciiTrim(state.src.slice(pos, max));
3299 token_i.map = [startLine, state.line];
3300 token_i.children = [];
3301 const token_c = state.push("heading_close", "h" + String(level), -1);
3302 token_c.markup = "########".slice(0, level);
3303 return true;
3304}
3305
3306// node_modules/markdown-it/lib/rules_block/lheading.mjs
3307function lheading(state, startLine, endLine) {
3308 const terminatorRules = state.md.block.ruler.getRules("paragraph");
3309 if (state.sCount[startLine] - state.blkIndent >= 4) {
3310 return false;
3311 }
3312 const oldParentType = state.parentType;
3313 state.parentType = "paragraph";
3314 let level = 0;
3315 let marker;
3316 let nextLine = startLine + 1;
3317 for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
3318 if (state.sCount[nextLine] - state.blkIndent > 3) {
3319 continue;
3320 }
3321 if (state.sCount[nextLine] >= state.blkIndent) {
3322 let pos = state.bMarks[nextLine] + state.tShift[nextLine];
3323 const max = state.eMarks[nextLine];
3324 if (pos < max) {
3325 marker = state.src.charCodeAt(pos);
3326 if (marker === 45 || marker === 61) {
3327 pos = state.skipChars(pos, marker);
3328 pos = state.skipSpaces(pos);
3329 if (pos >= max) {
3330 level = marker === 61 ? 1 : 2;
3331 break;
3332 }
3333 }
3334 }
3335 }
3336 if (state.sCount[nextLine] < 0) {
3337 continue;
3338 }
3339 let terminate = false;
3340 for (let i = 0, l = terminatorRules.length; i < l; i++) {
3341 if (terminatorRules[i](state, nextLine, endLine, true)) {
3342 terminate = true;
3343 break;
3344 }
3345 }
3346 if (terminate) {
3347 break;
3348 }
3349 }
3350 if (!level) {
3351 state.parentType = oldParentType;
3352 return false;
3353 }
3354 const content = asciiTrim(state.getLines(startLine, nextLine, state.blkIndent, false));
3355 state.line = nextLine + 1;
3356 const token_o = state.push("heading_open", "h" + String(level), 1);
3357 token_o.markup = String.fromCharCode(marker);
3358 token_o.map = [startLine, state.line];
3359 const token_i = state.push("inline", "", 0);
3360 token_i.content = content;
3361 token_i.map = [startLine, state.line - 1];
3362 token_i.children = [];
3363 const token_c = state.push("heading_close", "h" + String(level), -1);
3364 token_c.markup = String.fromCharCode(marker);
3365 state.parentType = oldParentType;
3366 return true;
3367}
3368
3369// node_modules/markdown-it/lib/rules_block/paragraph.mjs
3370function paragraph(state, startLine, endLine) {
3371 const terminatorRules = state.md.block.ruler.getRules("paragraph");
3372 const oldParentType = state.parentType;
3373 let nextLine = startLine + 1;
3374 state.parentType = "paragraph";
3375 for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
3376 if (state.sCount[nextLine] - state.blkIndent > 3) {
3377 continue;
3378 }
3379 if (state.sCount[nextLine] < 0) {
3380 continue;
3381 }
3382 let terminate = false;
3383 for (let i = 0, l = terminatorRules.length; i < l; i++) {
3384 if (terminatorRules[i](state, nextLine, endLine, true)) {
3385 terminate = true;
3386 break;
3387 }
3388 }
3389 if (terminate) {
3390 break;
3391 }
3392 }
3393 const content = asciiTrim(state.getLines(startLine, nextLine, state.blkIndent, false));
3394 state.line = nextLine;
3395 const token_o = state.push("paragraph_open", "p", 1);
3396 token_o.map = [startLine, state.line];
3397 const token_i = state.push("inline", "", 0);
3398 token_i.content = content;
3399 token_i.map = [startLine, state.line];
3400 token_i.children = [];
3401 state.push("paragraph_close", "p", -1);
3402 state.parentType = oldParentType;
3403 return true;
3404}
3405
3406// node_modules/markdown-it/lib/parser_block.mjs
3407var _rules2 = [
3408 // First 2 params - rule name & source. Secondary array - list of rules,
3409 // which can be terminated by this one.
3410 ["table", table, ["paragraph", "reference"]],
3411 ["code", code],
3412 ["fence", fence, ["paragraph", "reference", "blockquote", "list"]],
3413 ["blockquote", blockquote, ["paragraph", "reference", "blockquote", "list"]],
3414 ["hr", hr, ["paragraph", "reference", "blockquote", "list"]],
3415 ["list", list, ["paragraph", "reference", "blockquote"]],
3416 ["reference", reference],
3417 ["html_block", html_block, ["paragraph", "reference", "blockquote"]],
3418 ["heading", heading, ["paragraph", "reference", "blockquote"]],
3419 ["lheading", lheading],
3420 ["paragraph", paragraph]
3421];
3422function ParserBlock() {
3423 this.ruler = new ruler_default();
3424 for (let i = 0; i < _rules2.length; i++) {
3425 this.ruler.push(_rules2[i][0], _rules2[i][1], { alt: (_rules2[i][2] || []).slice() });
3426 }
3427}
3428ParserBlock.prototype.tokenize = function(state, startLine, endLine) {
3429 const rules = this.ruler.getRules("");
3430 const len = rules.length;
3431 const maxNesting = state.md.options.maxNesting;
3432 let line = startLine;
3433 let hasEmptyLines = false;
3434 while (line < endLine) {
3435 state.line = line = state.skipEmptyLines(line);
3436 if (line >= endLine) {
3437 break;
3438 }
3439 if (state.sCount[line] < state.blkIndent) {
3440 break;
3441 }
3442 if (state.level >= maxNesting) {
3443 state.line = endLine;
3444 break;
3445 }
3446 const prevLine = state.line;
3447 let ok = false;
3448 for (let i = 0; i < len; i++) {
3449 ok = rules[i](state, line, endLine, false);
3450 if (ok) {
3451 if (prevLine >= state.line) {
3452 throw new Error("block rule didn't increment state.line");
3453 }
3454 break;
3455 }
3456 }
3457 if (!ok) throw new Error("none of the block rules matched");
3458 state.tight = !hasEmptyLines;
3459 if (state.isEmpty(state.line - 1)) {
3460 hasEmptyLines = true;
3461 }
3462 line = state.line;
3463 if (line < endLine && state.isEmpty(line)) {
3464 hasEmptyLines = true;
3465 line++;
3466 state.line = line;
3467 }
3468 }
3469};
3470ParserBlock.prototype.parse = function(src, md, env, outTokens) {
3471 if (!src) {
3472 return;
3473 }
3474 const state = new this.State(src, md, env, outTokens);
3475 this.tokenize(state, state.line, state.lineMax);
3476};
3477ParserBlock.prototype.State = state_block_default;
3478var parser_block_default = ParserBlock;
3479
3480// node_modules/markdown-it/lib/rules_inline/state_inline.mjs
3481function StateInline(src, md, env, outTokens) {
3482 this.src = src;
3483 this.env = env;
3484 this.md = md;
3485 this.tokens = outTokens;
3486 this.tokens_meta = Array(outTokens.length);
3487 this.pos = 0;
3488 this.posMax = this.src.length;
3489 this.level = 0;
3490 this.pending = "";
3491 this.pendingLevel = 0;
3492 this.cache = {};
3493 this.delimiters = [];
3494 this._prev_delimiters = [];
3495 this.backticks = {};
3496 this.backticksScanned = false;
3497 this.linkLevel = 0;
3498}
3499StateInline.prototype.pushPending = function() {
3500 const token = new token_default("text", "", 0);
3501 token.content = this.pending;
3502 token.level = this.pendingLevel;
3503 this.tokens.push(token);
3504 this.pending = "";
3505 return token;
3506};
3507StateInline.prototype.push = function(type, tag, nesting) {
3508 if (this.pending) {
3509 this.pushPending();
3510 }
3511 const token = new token_default(type, tag, nesting);
3512 let token_meta = null;
3513 if (nesting < 0) {
3514 this.level--;
3515 this.delimiters = this._prev_delimiters.pop();
3516 }
3517 token.level = this.level;
3518 if (nesting > 0) {
3519 this.level++;
3520 this._prev_delimiters.push(this.delimiters);
3521 this.delimiters = [];
3522 token_meta = { delimiters: this.delimiters };
3523 }
3524 this.pendingLevel = this.level;
3525 this.tokens.push(token);
3526 this.tokens_meta.push(token_meta);
3527 return token;
3528};
3529StateInline.prototype.scanDelims = function(start, canSplitWord) {
3530 const max = this.posMax;
3531 const marker = this.src.charCodeAt(start);
3532 let lastChar;
3533 if (start === 0) {
3534 lastChar = 32;
3535 } else if (start === 1) {
3536 lastChar = this.src.charCodeAt(0);
3537 if ((lastChar & 63488) === 55296) {
3538 lastChar = 65533;
3539 }
3540 } else {
3541 lastChar = this.src.charCodeAt(start - 1);
3542 if ((lastChar & 64512) === 56320) {
3543 const highSurr = this.src.charCodeAt(start - 2);
3544 lastChar = (highSurr & 64512) === 55296 ? 65536 + (highSurr - 55296 << 10) + (lastChar - 56320) : 65533;
3545 } else if ((lastChar & 64512) === 55296) {
3546 lastChar = 65533;
3547 }
3548 }
3549 let pos = start;
3550 while (pos < max && this.src.charCodeAt(pos) === marker) {
3551 pos++;
3552 }
3553 const count = pos - start;
3554 let nextChar = pos < max ? this.src.charCodeAt(pos) : 32;
3555 if ((nextChar & 64512) === 55296) {
3556 const lowSurr = this.src.charCodeAt(pos + 1);
3557 nextChar = (lowSurr & 64512) === 56320 ? 65536 + (nextChar - 55296 << 10) + (lowSurr - 56320) : 65533;
3558 } else if ((nextChar & 64512) === 56320) {
3559 nextChar = 65533;
3560 }
3561 const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar);
3562 const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar);
3563 const isLastWhiteSpace = isWhiteSpace(lastChar);
3564 const isNextWhiteSpace = isWhiteSpace(nextChar);
3565 const left_flanking = !isNextWhiteSpace && (!isNextPunctChar || isLastWhiteSpace || isLastPunctChar);
3566 const right_flanking = !isLastWhiteSpace && (!isLastPunctChar || isNextWhiteSpace || isNextPunctChar);
3567 const can_open = left_flanking && (canSplitWord || !right_flanking || isLastPunctChar);
3568 const can_close = right_flanking && (canSplitWord || !left_flanking || isNextPunctChar);
3569 return { can_open, can_close, length: count };
3570};
3571StateInline.prototype.Token = token_default;
3572var state_inline_default = StateInline;
3573
3574// node_modules/markdown-it/lib/rules_inline/text.mjs
3575function isTerminatorChar(ch) {
3576 switch (ch) {
3577 case 10:
3578 case 33:
3579 case 35:
3580 case 36:
3581 case 37:
3582 case 38:
3583 case 42:
3584 case 43:
3585 case 45:
3586 case 58:
3587 case 60:
3588 case 61:
3589 case 62:
3590 case 64:
3591 case 91:
3592 case 92:
3593 case 93:
3594 case 94:
3595 case 95:
3596 case 96:
3597 case 123:
3598 case 125:
3599 case 126:
3600 return true;
3601 default:
3602 return false;
3603 }
3604}
3605function text(state, silent) {
3606 let pos = state.pos;
3607 while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {
3608 pos++;
3609 }
3610 if (pos === state.pos) {
3611 return false;
3612 }
3613 if (!silent) {
3614 state.pending += state.src.slice(state.pos, pos);
3615 }
3616 state.pos = pos;
3617 return true;
3618}
3619
3620// node_modules/markdown-it/lib/rules_inline/linkify.mjs
3621var SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;
3622function linkify2(state, silent) {
3623 if (!state.md.options.linkify) return false;
3624 if (state.linkLevel > 0) return false;
3625 const pos = state.pos;
3626 const max = state.posMax;
3627 if (pos + 3 > max) return false;
3628 if (state.src.charCodeAt(pos) !== 58) return false;
3629 if (state.src.charCodeAt(pos + 1) !== 47) return false;
3630 if (state.src.charCodeAt(pos + 2) !== 47) return false;
3631 const match2 = state.pending.match(SCHEME_RE);
3632 if (!match2) return false;
3633 const proto = match2[1];
3634 const link2 = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length));
3635 if (!link2) return false;
3636 let url = link2.url;
3637 if (url.length <= proto.length) return false;
3638 let urlEnd = url.length;
3639 while (urlEnd > 0 && url.charCodeAt(urlEnd - 1) === 42) {
3640 urlEnd--;
3641 }
3642 if (urlEnd !== url.length) {
3643 url = url.slice(0, urlEnd);
3644 }
3645 const fullUrl = state.md.normalizeLink(url);
3646 if (!state.md.validateLink(fullUrl)) return false;
3647 if (!silent) {
3648 state.pending = state.pending.slice(0, -proto.length);
3649 const token_o = state.push("link_open", "a", 1);
3650 token_o.attrs = [["href", fullUrl]];
3651 token_o.markup = "linkify";
3652 token_o.info = "auto";
3653 const token_t = state.push("text", "", 0);
3654 token_t.content = state.md.normalizeLinkText(url);
3655 const token_c = state.push("link_close", "a", -1);
3656 token_c.markup = "linkify";
3657 token_c.info = "auto";
3658 }
3659 state.pos += url.length - proto.length;
3660 return true;
3661}
3662
3663// node_modules/markdown-it/lib/rules_inline/newline.mjs
3664function newline(state, silent) {
3665 let pos = state.pos;
3666 if (state.src.charCodeAt(pos) !== 10) {
3667 return false;
3668 }
3669 const pmax = state.pending.length - 1;
3670 const max = state.posMax;
3671 if (!silent) {
3672 if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) {
3673 if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) {
3674 let ws = pmax - 1;
3675 while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 32) ws--;
3676 state.pending = state.pending.slice(0, ws);
3677 state.push("hardbreak", "br", 0);
3678 } else {
3679 state.pending = state.pending.slice(0, -1);
3680 state.push("softbreak", "br", 0);
3681 }
3682 } else {
3683 state.push("softbreak", "br", 0);
3684 }
3685 }
3686 pos++;
3687 while (pos < max && isSpace(state.src.charCodeAt(pos))) {
3688 pos++;
3689 }
3690 state.pos = pos;
3691 return true;
3692}
3693
3694// node_modules/markdown-it/lib/rules_inline/escape.mjs
3695var ESCAPED = [];
3696for (let i = 0; i < 256; i++) {
3697 ESCAPED.push(0);
3698}
3699"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(ch) {
3700 ESCAPED[ch.charCodeAt(0)] = 1;
3701});
3702function escape2(state, silent) {
3703 let pos = state.pos;
3704 const max = state.posMax;
3705 if (state.src.charCodeAt(pos) !== 92) return false;
3706 pos++;
3707 if (pos >= max) return false;
3708 let ch1 = state.src.charCodeAt(pos);
3709 if (ch1 === 10) {
3710 if (!silent) {
3711 state.push("hardbreak", "br", 0);
3712 }
3713 pos++;
3714 while (pos < max) {
3715 ch1 = state.src.charCodeAt(pos);
3716 if (!isSpace(ch1)) break;
3717 pos++;
3718 }
3719 state.pos = pos;
3720 return true;
3721 }
3722 if (ch1 === 32) {
3723 if (!silent) {
3724 const token = state.push("text_special", "", 0);
3725 token.content = "\\";
3726 token.markup = "\\";
3727 token.info = "escape";
3728 }
3729 state.pos = pos;
3730 return true;
3731 }
3732 let escapedStr = state.src[pos];
3733 if (ch1 >= 55296 && ch1 <= 56319 && pos + 1 < max) {
3734 const ch2 = state.src.charCodeAt(pos + 1);
3735 if (ch2 >= 56320 && ch2 <= 57343) {
3736 escapedStr += state.src[pos + 1];
3737 pos++;
3738 }
3739 }
3740 const origStr = "\\" + escapedStr;
3741 if (!silent) {
3742 const token = state.push("text_special", "", 0);
3743 if (ch1 < 256 && ESCAPED[ch1] !== 0) {
3744 token.content = escapedStr;
3745 } else {
3746 token.content = origStr;
3747 }
3748 token.markup = origStr;
3749 token.info = "escape";
3750 }
3751 state.pos = pos + 1;
3752 return true;
3753}
3754
3755// node_modules/markdown-it/lib/rules_inline/backticks.mjs
3756function backtick(state, silent) {
3757 let pos = state.pos;
3758 const ch = state.src.charCodeAt(pos);
3759 if (ch !== 96) {
3760 return false;
3761 }
3762 const start = pos;
3763 pos++;
3764 const max = state.posMax;
3765 while (pos < max && state.src.charCodeAt(pos) === 96) {
3766 pos++;
3767 }
3768 const marker = state.src.slice(start, pos);
3769 const openerLength = marker.length;
3770 if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {
3771 if (!silent) state.pending += marker;
3772 state.pos += openerLength;
3773 return true;
3774 }
3775 let matchEnd = pos;
3776 let matchStart;
3777 while ((matchStart = state.src.indexOf("`", matchEnd)) !== -1) {
3778 matchEnd = matchStart + 1;
3779 while (matchEnd < max && state.src.charCodeAt(matchEnd) === 96) {
3780 matchEnd++;
3781 }
3782 const closerLength = matchEnd - matchStart;
3783 if (closerLength === openerLength) {
3784 if (!silent) {
3785 const token = state.push("code_inline", "code", 0);
3786 token.markup = marker;
3787 token.content = state.src.slice(pos, matchStart).replace(/\n/g, " ").replace(/^ (.+) $/, "$1");
3788 }
3789 state.pos = matchEnd;
3790 return true;
3791 }
3792 state.backticks[closerLength] = matchStart;
3793 }
3794 state.backticksScanned = true;
3795 if (!silent) state.pending += marker;
3796 state.pos += openerLength;
3797 return true;
3798}
3799
3800// node_modules/markdown-it/lib/rules_inline/strikethrough.mjs
3801function strikethrough_tokenize(state, silent) {
3802 const start = state.pos;
3803 const marker = state.src.charCodeAt(start);
3804 if (silent) {
3805 return false;
3806 }
3807 if (marker !== 126) {
3808 return false;
3809 }
3810 const scanned = state.scanDelims(state.pos, true);
3811 let len = scanned.length;
3812 const ch = String.fromCharCode(marker);
3813 if (len < 2) {
3814 return false;
3815 }
3816 let token;
3817 if (len % 2) {
3818 token = state.push("text", "", 0);
3819 token.content = ch;
3820 len--;
3821 }
3822 for (let i = 0; i < len; i += 2) {
3823 token = state.push("text", "", 0);
3824 token.content = ch + ch;
3825 state.delimiters.push({
3826 marker,
3827 length: 0,
3828 // disable "rule of 3" length checks meant for emphasis
3829 token: state.tokens.length - 1,
3830 end: -1,
3831 open: scanned.can_open,
3832 close: scanned.can_close
3833 });
3834 }
3835 state.pos += scanned.length;
3836 return true;
3837}
3838function postProcess(state, delimiters) {
3839 let token;
3840 const loneMarkers = [];
3841 const max = delimiters.length;
3842 for (let i = 0; i < max; i++) {
3843 const startDelim = delimiters[i];
3844 if (startDelim.marker !== 126) {
3845 continue;
3846 }
3847 if (startDelim.end === -1) {
3848 continue;
3849 }
3850 const endDelim = delimiters[startDelim.end];
3851 token = state.tokens[startDelim.token];
3852 token.type = "s_open";
3853 token.tag = "s";
3854 token.nesting = 1;
3855 token.markup = "~~";
3856 token.content = "";
3857 token = state.tokens[endDelim.token];
3858 token.type = "s_close";
3859 token.tag = "s";
3860 token.nesting = -1;
3861 token.markup = "~~";
3862 token.content = "";
3863 if (state.tokens[endDelim.token - 1].type === "text" && state.tokens[endDelim.token - 1].content === "~") {
3864 loneMarkers.push(endDelim.token - 1);
3865 }
3866 }
3867 while (loneMarkers.length) {
3868 const i = loneMarkers.pop();
3869 let j = i + 1;
3870 while (j < state.tokens.length && state.tokens[j].type === "s_close") {
3871 j++;
3872 }
3873 j--;
3874 if (i !== j) {
3875 token = state.tokens[j];
3876 state.tokens[j] = state.tokens[i];
3877 state.tokens[i] = token;
3878 }
3879 }
3880}
3881function strikethrough_postProcess(state) {
3882 const tokens_meta = state.tokens_meta;
3883 const max = state.tokens_meta.length;
3884 postProcess(state, state.delimiters);
3885 for (let curr = 0; curr < max; curr++) {
3886 if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
3887 postProcess(state, tokens_meta[curr].delimiters);
3888 }
3889 }
3890}
3891var strikethrough_default = {
3892 tokenize: strikethrough_tokenize,
3893 postProcess: strikethrough_postProcess
3894};
3895
3896// node_modules/markdown-it/lib/rules_inline/emphasis.mjs
3897function emphasis_tokenize(state, silent) {
3898 const start = state.pos;
3899 const marker = state.src.charCodeAt(start);
3900 if (silent) {
3901 return false;
3902 }
3903 if (marker !== 95 && marker !== 42) {
3904 return false;
3905 }
3906 const scanned = state.scanDelims(state.pos, marker === 42);
3907 for (let i = 0; i < scanned.length; i++) {
3908 const token = state.push("text", "", 0);
3909 token.content = String.fromCharCode(marker);
3910 state.delimiters.push({
3911 // Char code of the starting marker (number).
3912 //
3913 marker,
3914 // Total length of these series of delimiters.
3915 //
3916 length: scanned.length,
3917 // A position of the token this delimiter corresponds to.
3918 //
3919 token: state.tokens.length - 1,
3920 // If this delimiter is matched as a valid opener, `end` will be
3921 // equal to its position, otherwise it's `-1`.
3922 //
3923 end: -1,
3924 // Boolean flags that determine if this delimiter could open or close
3925 // an emphasis.
3926 //
3927 open: scanned.can_open,
3928 close: scanned.can_close
3929 });
3930 }
3931 state.pos += scanned.length;
3932 return true;
3933}
3934function postProcess2(state, delimiters) {
3935 const max = delimiters.length;
3936 for (let i = max - 1; i >= 0; i--) {
3937 const startDelim = delimiters[i];
3938 if (startDelim.marker !== 95 && startDelim.marker !== 42) {
3939 continue;
3940 }
3941 if (startDelim.end === -1) {
3942 continue;
3943 }
3944 const endDelim = delimiters[startDelim.end];
3945 const isStrong = i > 0 && delimiters[i - 1].end === startDelim.end + 1 && // check that first two markers match and adjacent
3946 delimiters[i - 1].marker === startDelim.marker && delimiters[i - 1].token === startDelim.token - 1 && // check that last two markers are adjacent (we can safely assume they match)
3947 delimiters[startDelim.end + 1].token === endDelim.token + 1;
3948 const ch = String.fromCharCode(startDelim.marker);
3949 const token_o = state.tokens[startDelim.token];
3950 token_o.type = isStrong ? "strong_open" : "em_open";
3951 token_o.tag = isStrong ? "strong" : "em";
3952 token_o.nesting = 1;
3953 token_o.markup = isStrong ? ch + ch : ch;
3954 token_o.content = "";
3955 const token_c = state.tokens[endDelim.token];
3956 token_c.type = isStrong ? "strong_close" : "em_close";
3957 token_c.tag = isStrong ? "strong" : "em";
3958 token_c.nesting = -1;
3959 token_c.markup = isStrong ? ch + ch : ch;
3960 token_c.content = "";
3961 if (isStrong) {
3962 state.tokens[delimiters[i - 1].token].content = "";
3963 state.tokens[delimiters[startDelim.end + 1].token].content = "";
3964 i--;
3965 }
3966 }
3967}
3968function emphasis_post_process(state) {
3969 const tokens_meta = state.tokens_meta;
3970 const max = state.tokens_meta.length;
3971 postProcess2(state, state.delimiters);
3972 for (let curr = 0; curr < max; curr++) {
3973 if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
3974 postProcess2(state, tokens_meta[curr].delimiters);
3975 }
3976 }
3977}
3978var emphasis_default = {
3979 tokenize: emphasis_tokenize,
3980 postProcess: emphasis_post_process
3981};
3982
3983// node_modules/markdown-it/lib/rules_inline/link.mjs
3984function link(state, silent) {
3985 let code2, label, res, ref;
3986 let href = "";
3987 let title = "";
3988 let start = state.pos;
3989 let parseReference = true;
3990 if (state.src.charCodeAt(state.pos) !== 91) {
3991 return false;
3992 }
3993 const oldPos = state.pos;
3994 const max = state.posMax;
3995 const labelStart = state.pos + 1;
3996 const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);
3997 if (labelEnd < 0) {
3998 return false;
3999 }
4000 let pos = labelEnd + 1;
4001 if (pos < max && state.src.charCodeAt(pos) === 40) {
4002 parseReference = false;
4003 pos++;
4004 for (; pos < max; pos++) {
4005 code2 = state.src.charCodeAt(pos);
4006 if (!isSpace(code2) && code2 !== 10) {
4007 break;
4008 }
4009 }
4010 if (pos >= max) {
4011 return false;
4012 }
4013 start = pos;
4014 res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);
4015 if (res.ok) {
4016 href = state.md.normalizeLink(res.str);
4017 if (state.md.validateLink(href)) {
4018 pos = res.pos;
4019 } else {
4020 href = "";
4021 }
4022 start = pos;
4023 for (; pos < max; pos++) {
4024 code2 = state.src.charCodeAt(pos);
4025 if (!isSpace(code2) && code2 !== 10) {
4026 break;
4027 }
4028 }
4029 res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);
4030 if (pos < max && start !== pos && res.ok) {
4031 title = res.str;
4032 pos = res.pos;
4033 for (; pos < max; pos++) {
4034 code2 = state.src.charCodeAt(pos);
4035 if (!isSpace(code2) && code2 !== 10) {
4036 break;
4037 }
4038 }
4039 }
4040 }
4041 if (pos >= max || state.src.charCodeAt(pos) !== 41) {
4042 parseReference = true;
4043 }
4044 pos++;
4045 }
4046 if (parseReference) {
4047 if (typeof state.env.references === "undefined") {
4048 return false;
4049 }
4050 if (pos < max && state.src.charCodeAt(pos) === 91) {
4051 start = pos + 1;
4052 pos = state.md.helpers.parseLinkLabel(state, pos);
4053 if (pos >= 0) {
4054 label = state.src.slice(start, pos++);
4055 } else {
4056 pos = labelEnd + 1;
4057 }
4058 } else {
4059 pos = labelEnd + 1;
4060 }
4061 if (!label) {
4062 label = state.src.slice(labelStart, labelEnd);
4063 }
4064 ref = state.env.references[normalizeReference(label)];
4065 if (!ref) {
4066 state.pos = oldPos;
4067 return false;
4068 }
4069 href = ref.href;
4070 title = ref.title;
4071 }
4072 if (!silent) {
4073 state.pos = labelStart;
4074 state.posMax = labelEnd;
4075 const token_o = state.push("link_open", "a", 1);
4076 const attrs = [["href", href]];
4077 token_o.attrs = attrs;
4078 if (title) {
4079 attrs.push(["title", title]);
4080 }
4081 state.linkLevel++;
4082 state.md.inline.tokenize(state);
4083 state.linkLevel--;
4084 state.push("link_close", "a", -1);
4085 }
4086 state.pos = pos;
4087 state.posMax = max;
4088 return true;
4089}
4090
4091// node_modules/markdown-it/lib/rules_inline/image.mjs
4092function image(state, silent) {
4093 let code2, content, label, pos, ref, res, title, start;
4094 let href = "";
4095 const oldPos = state.pos;
4096 const max = state.posMax;
4097 if (state.src.charCodeAt(state.pos) !== 33) {
4098 return false;
4099 }
4100 if (state.src.charCodeAt(state.pos + 1) !== 91) {
4101 return false;
4102 }
4103 const labelStart = state.pos + 2;
4104 const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);
4105 if (labelEnd < 0) {
4106 return false;
4107 }
4108 pos = labelEnd + 1;
4109 if (pos < max && state.src.charCodeAt(pos) === 40) {
4110 pos++;
4111 for (; pos < max; pos++) {
4112 code2 = state.src.charCodeAt(pos);
4113 if (!isSpace(code2) && code2 !== 10) {
4114 break;
4115 }
4116 }
4117 if (pos >= max) {
4118 return false;
4119 }
4120 start = pos;
4121 res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);
4122 if (res.ok) {
4123 href = state.md.normalizeLink(res.str);
4124 if (state.md.validateLink(href)) {
4125 pos = res.pos;
4126 } else {
4127 href = "";
4128 }
4129 }
4130 start = pos;
4131 for (; pos < max; pos++) {
4132 code2 = state.src.charCodeAt(pos);
4133 if (!isSpace(code2) && code2 !== 10) {
4134 break;
4135 }
4136 }
4137 res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);
4138 if (pos < max && start !== pos && res.ok) {
4139 title = res.str;
4140 pos = res.pos;
4141 for (; pos < max; pos++) {
4142 code2 = state.src.charCodeAt(pos);
4143 if (!isSpace(code2) && code2 !== 10) {
4144 break;
4145 }
4146 }
4147 } else {
4148 title = "";
4149 }
4150 if (pos >= max || state.src.charCodeAt(pos) !== 41) {
4151 state.pos = oldPos;
4152 return false;
4153 }
4154 pos++;
4155 } else {
4156 if (typeof state.env.references === "undefined") {
4157 return false;
4158 }
4159 if (pos < max && state.src.charCodeAt(pos) === 91) {
4160 start = pos + 1;
4161 pos = state.md.helpers.parseLinkLabel(state, pos);
4162 if (pos >= 0) {
4163 label = state.src.slice(start, pos++);
4164 } else {
4165 pos = labelEnd + 1;
4166 }
4167 } else {
4168 pos = labelEnd + 1;
4169 }
4170 if (!label) {
4171 label = state.src.slice(labelStart, labelEnd);
4172 }
4173 ref = state.env.references[normalizeReference(label)];
4174 if (!ref) {
4175 state.pos = oldPos;
4176 return false;
4177 }
4178 href = ref.href;
4179 title = ref.title;
4180 }
4181 if (!silent) {
4182 content = state.src.slice(labelStart, labelEnd);
4183 const tokens = [];
4184 state.md.inline.parse(
4185 content,
4186 state.md,
4187 state.env,
4188 tokens
4189 );
4190 const token = state.push("image", "img", 0);
4191 const attrs = [["src", href], ["alt", ""]];
4192 token.attrs = attrs;
4193 token.children = tokens;
4194 token.content = content;
4195 if (title) {
4196 attrs.push(["title", title]);
4197 }
4198 }
4199 state.pos = pos;
4200 state.posMax = max;
4201 return true;
4202}
4203
4204// node_modules/markdown-it/lib/rules_inline/autolink.mjs
4205var EMAIL_RE = /^([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])?)*)$/;
4206var AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\x00-\x20]*)$/;
4207function autolink(state, silent) {
4208 let pos = state.pos;
4209 if (state.src.charCodeAt(pos) !== 60) {
4210 return false;
4211 }
4212 const start = state.pos;
4213 const max = state.posMax;
4214 for (; ; ) {
4215 if (++pos >= max) return false;
4216 const ch = state.src.charCodeAt(pos);
4217 if (ch === 60) return false;
4218 if (ch === 62) break;
4219 }
4220 const url = state.src.slice(start + 1, pos);
4221 if (AUTOLINK_RE.test(url)) {
4222 const fullUrl = state.md.normalizeLink(url);
4223 if (!state.md.validateLink(fullUrl)) {
4224 return false;
4225 }
4226 if (!silent) {
4227 const token_o = state.push("link_open", "a", 1);
4228 token_o.attrs = [["href", fullUrl]];
4229 token_o.markup = "autolink";
4230 token_o.info = "auto";
4231 const token_t = state.push("text", "", 0);
4232 token_t.content = state.md.normalizeLinkText(url);
4233 const token_c = state.push("link_close", "a", -1);
4234 token_c.markup = "autolink";
4235 token_c.info = "auto";
4236 }
4237 state.pos += url.length + 2;
4238 return true;
4239 }
4240 if (EMAIL_RE.test(url)) {
4241 const fullUrl = state.md.normalizeLink("mailto:" + url);
4242 if (!state.md.validateLink(fullUrl)) {
4243 return false;
4244 }
4245 if (!silent) {
4246 const token_o = state.push("link_open", "a", 1);
4247 token_o.attrs = [["href", fullUrl]];
4248 token_o.markup = "autolink";
4249 token_o.info = "auto";
4250 const token_t = state.push("text", "", 0);
4251 token_t.content = state.md.normalizeLinkText(url);
4252 const token_c = state.push("link_close", "a", -1);
4253 token_c.markup = "autolink";
4254 token_c.info = "auto";
4255 }
4256 state.pos += url.length + 2;
4257 return true;
4258 }
4259 return false;
4260}
4261
4262// node_modules/markdown-it/lib/rules_inline/html_inline.mjs
4263function isLinkOpen2(str) {
4264 return /^<a[>\s]/i.test(str);
4265}
4266function isLinkClose2(str) {
4267 return /^<\/a\s*>/i.test(str);
4268}
4269function isLetter(ch) {
4270 const lc = ch | 32;
4271 return lc >= 97 && lc <= 122;
4272}
4273function html_inline(state, silent) {
4274 if (!state.md.options.html) {
4275 return false;
4276 }
4277 const max = state.posMax;
4278 const pos = state.pos;
4279 if (state.src.charCodeAt(pos) !== 60 || pos + 2 >= max) {
4280 return false;
4281 }
4282 const ch = state.src.charCodeAt(pos + 1);
4283 if (ch !== 33 && ch !== 63 && ch !== 47 && !isLetter(ch)) {
4284 return false;
4285 }
4286 const match2 = state.src.slice(pos).match(HTML_TAG_RE);
4287 if (!match2) {
4288 return false;
4289 }
4290 if (!silent) {
4291 const token = state.push("html_inline", "", 0);
4292 token.content = match2[0];
4293 if (isLinkOpen2(token.content)) state.linkLevel++;
4294 if (isLinkClose2(token.content)) state.linkLevel--;
4295 }
4296 state.pos += match2[0].length;
4297 return true;
4298}
4299
4300// node_modules/markdown-it/lib/rules_inline/entity.mjs
4301var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;
4302var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;
4303function entity(state, silent) {
4304 const pos = state.pos;
4305 const max = state.posMax;
4306 if (state.src.charCodeAt(pos) !== 38) return false;
4307 if (pos + 1 >= max) return false;
4308 const ch = state.src.charCodeAt(pos + 1);
4309 if (ch === 35) {
4310 const match2 = state.src.slice(pos).match(DIGITAL_RE);
4311 if (match2) {
4312 if (!silent) {
4313 const code2 = match2[1][0].toLowerCase() === "x" ? parseInt(match2[1].slice(1), 16) : parseInt(match2[1], 10);
4314 const token = state.push("text_special", "", 0);
4315 token.content = isValidEntityCode(code2) ? fromCodePoint2(code2) : fromCodePoint2(65533);
4316 token.markup = match2[0];
4317 token.info = "entity";
4318 }
4319 state.pos += match2[0].length;
4320 return true;
4321 }
4322 } else {
4323 const match2 = state.src.slice(pos).match(NAMED_RE);
4324 if (match2) {
4325 const decoded = decodeHTMLStrict(match2[0]);
4326 if (decoded !== match2[0]) {
4327 if (!silent) {
4328 const token = state.push("text_special", "", 0);
4329 token.content = decoded;
4330 token.markup = match2[0];
4331 token.info = "entity";
4332 }
4333 state.pos += match2[0].length;
4334 return true;
4335 }
4336 }
4337 }
4338 return false;
4339}
4340
4341// node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs
4342function processDelimiters(delimiters) {
4343 const openersBottom = {};
4344 const max = delimiters.length;
4345 if (!max) return;
4346 let headerIdx = 0;
4347 let lastTokenIdx = -2;
4348 const jumps = [];
4349 for (let closerIdx = 0; closerIdx < max; closerIdx++) {
4350 const closer = delimiters[closerIdx];
4351 jumps.push(0);
4352 if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {
4353 headerIdx = closerIdx;
4354 }
4355 lastTokenIdx = closer.token;
4356 closer.length = closer.length || 0;
4357 if (!closer.close) continue;
4358 if (!openersBottom.hasOwnProperty(closer.marker)) {
4359 openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1];
4360 }
4361 const minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3];
4362 let openerIdx = headerIdx - jumps[headerIdx] - 1;
4363 let newMinOpenerIdx = openerIdx;
4364 for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {
4365 const opener = delimiters[openerIdx];
4366 if (opener.marker !== closer.marker) continue;
4367 if (opener.open && opener.end < 0) {
4368 let isOddMatch = false;
4369 if (opener.close || closer.open) {
4370 if ((opener.length + closer.length) % 3 === 0) {
4371 if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {
4372 isOddMatch = true;
4373 }
4374 }
4375 }
4376 if (!isOddMatch) {
4377 const lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? jumps[openerIdx - 1] + 1 : 0;
4378 jumps[closerIdx] = closerIdx - openerIdx + lastJump;
4379 jumps[openerIdx] = lastJump;
4380 closer.open = false;
4381 opener.end = closerIdx;
4382 opener.close = false;
4383 newMinOpenerIdx = -1;
4384 lastTokenIdx = -2;
4385 break;
4386 }
4387 }
4388 }
4389 if (newMinOpenerIdx !== -1) {
4390 openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx;
4391 }
4392 }
4393}
4394function link_pairs(state) {
4395 const tokens_meta = state.tokens_meta;
4396 const max = state.tokens_meta.length;
4397 processDelimiters(state.delimiters);
4398 for (let curr = 0; curr < max; curr++) {
4399 if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
4400 processDelimiters(tokens_meta[curr].delimiters);
4401 }
4402 }
4403}
4404
4405// node_modules/markdown-it/lib/rules_inline/fragments_join.mjs
4406function fragments_join(state) {
4407 let curr, last;
4408 let level = 0;
4409 const tokens = state.tokens;
4410 const max = state.tokens.length;
4411 for (curr = last = 0; curr < max; curr++) {
4412 if (tokens[curr].nesting < 0) level--;
4413 tokens[curr].level = level;
4414 if (tokens[curr].nesting > 0) level++;
4415 if (tokens[curr].type === "text" && curr + 1 < max && tokens[curr + 1].type === "text") {
4416 tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
4417 } else {
4418 if (curr !== last) {
4419 tokens[last] = tokens[curr];
4420 }
4421 last++;
4422 }
4423 }
4424 if (curr !== last) {
4425 tokens.length = last;
4426 }
4427}
4428
4429// node_modules/markdown-it/lib/parser_inline.mjs
4430var _rules3 = [
4431 ["text", text],
4432 ["linkify", linkify2],
4433 ["newline", newline],
4434 ["escape", escape2],
4435 ["backticks", backtick],
4436 ["strikethrough", strikethrough_default.tokenize],
4437 ["emphasis", emphasis_default.tokenize],
4438 ["link", link],
4439 ["image", image],
4440 ["autolink", autolink],
4441 ["html_inline", html_inline],
4442 ["entity", entity]
4443];
4444var _rules22 = [
4445 ["balance_pairs", link_pairs],
4446 ["strikethrough", strikethrough_default.postProcess],
4447 ["emphasis", emphasis_default.postProcess],
4448 // rules for pairs separate '**' into its own text tokens, which may be left unused,
4449 // rule below merges unused segments back with the rest of the text
4450 ["fragments_join", fragments_join]
4451];
4452function ParserInline() {
4453 this.ruler = new ruler_default();
4454 for (let i = 0; i < _rules3.length; i++) {
4455 this.ruler.push(_rules3[i][0], _rules3[i][1]);
4456 }
4457 this.ruler2 = new ruler_default();
4458 for (let i = 0; i < _rules22.length; i++) {
4459 this.ruler2.push(_rules22[i][0], _rules22[i][1]);
4460 }
4461}
4462ParserInline.prototype.skipToken = function(state) {
4463 const pos = state.pos;
4464 const rules = this.ruler.getRules("");
4465 const len = rules.length;
4466 const maxNesting = state.md.options.maxNesting;
4467 const cache = state.cache;
4468 if (typeof cache[pos] !== "undefined") {
4469 state.pos = cache[pos];
4470 return;
4471 }
4472 let ok = false;
4473 if (state.level < maxNesting) {
4474 for (let i = 0; i < len; i++) {
4475 state.level++;
4476 ok = rules[i](state, true);
4477 state.level--;
4478 if (ok) {
4479 if (pos >= state.pos) {
4480 throw new Error("inline rule didn't increment state.pos");
4481 }
4482 break;
4483 }
4484 }
4485 } else {
4486 state.pos = state.posMax;
4487 }
4488 if (!ok) {
4489 state.pos++;
4490 }
4491 cache[pos] = state.pos;
4492};
4493ParserInline.prototype.tokenize = function(state) {
4494 const rules = this.ruler.getRules("");
4495 const len = rules.length;
4496 const end = state.posMax;
4497 const maxNesting = state.md.options.maxNesting;
4498 while (state.pos < end) {
4499 const prevPos = state.pos;
4500 let ok = false;
4501 if (state.level < maxNesting) {
4502 for (let i = 0; i < len; i++) {
4503 ok = rules[i](state, false);
4504 if (ok) {
4505 if (prevPos >= state.pos) {
4506 throw new Error("inline rule didn't increment state.pos");
4507 }
4508 break;
4509 }
4510 }
4511 }
4512 if (ok) {
4513 if (state.pos >= end) {
4514 break;
4515 }
4516 continue;
4517 }
4518 state.pending += state.src[state.pos++];
4519 }
4520 if (state.pending) {
4521 state.pushPending();
4522 }
4523};
4524ParserInline.prototype.parse = function(str, md, env, outTokens) {
4525 const state = new this.State(str, md, env, outTokens);
4526 this.tokenize(state);
4527 const rules = this.ruler2.getRules("");
4528 const len = rules.length;
4529 for (let i = 0; i < len; i++) {
4530 rules[i](state);
4531 }
4532};
4533ParserInline.prototype.State = state_inline_default;
4534var parser_inline_default = ParserInline;
4535
4536// node_modules/linkify-it/lib/re.mjs
4537function re_default(opts) {
4538 const re = {};
4539 opts = opts || {};
4540 re.src_Any = regex_default.source;
4541 re.src_Cc = regex_default2.source;
4542 re.src_Z = regex_default6.source;
4543 re.src_P = regex_default4.source;
4544 re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join("|");
4545 re.src_ZCc = [re.src_Z, re.src_Cc].join("|");
4546 const text_separators = "[><\uFF5C]";
4547 re.src_pseudo_letter = `(?:(?!${text_separators}|${re.src_ZPCc})${re.src_Any})`;
4548 re.src_ip4 = "(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
4549 re.src_auth = `(?:(?:(?!${re.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`;
4550 re.src_port = "(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?";
4551 re.src_host_terminator = `(?=$|${text_separators}|${re.src_ZPCc})(?!${opts["---"] ? "-(?!--)|" : "-|"}_|:\\d|\\.-|\\.(?!$|${re.src_ZPCc}))`;
4552 re.src_path = `(?:[/?#](?:(?!${re.src_ZCc}|${text_separators}|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!${re.src_ZCc}|\\]).)*\\]|\\((?:(?!${re.src_ZCc}|[)]).)*\\)|\\{(?:(?!${re.src_ZCc}|[}]).)*\\}|\\"(?:(?!${re.src_ZCc}|["]).)+\\"|\\'(?:(?!${re.src_ZCc}|[']).)+\\'|\\'(?=${re.src_pseudo_letter}|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!${re.src_ZCc}|[.]|$)|` + (opts["---"] ? "\\-(?!--(?:[^-]|$))(?:-*)|" : "\\-+|") + // allow `,,,` in paths
4553 `,(?!${re.src_ZCc}|$)|;(?!${re.src_ZCc}|$)|\\!+(?!${re.src_ZCc}|[!]|$)|\\?(?!${re.src_ZCc}|[?]|$))+|\\/)?`;
4554 re.src_email_name = '[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]{0,63}';
4555 re.src_xn = "xn--[a-z0-9\\-]{1,59}";
4556 re.src_domain_root = // Allow letters & digits (http://test1)
4557 "(?:" + re.src_xn + `|${re.src_pseudo_letter}{1,63})`;
4558 re.src_domain = "(?:" + re.src_xn + `|(?:${re.src_pseudo_letter})|(?:${re.src_pseudo_letter}(?:-|${re.src_pseudo_letter}){0,61}${re.src_pseudo_letter}))`;
4559 re.src_host = `(?:(?:(?:(?:${re.src_domain})\\.)*${re.src_domain}))`;
4560 re.tpl_host_fuzzy = "(?:" + re.src_ip4 + `|(?:(?:(?:${re.src_domain})\\.)+(?:%TLDS%)))`;
4561 re.tpl_host_no_ip_fuzzy = `(?:(?:(?:${re.src_domain})\\.)+(?:%TLDS%))`;
4562 re.src_host_strict = re.src_host + re.src_host_terminator;
4563 re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator;
4564 re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator;
4565 re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;
4566 re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator;
4567 re.tpl_host_fuzzy_test = `localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:${re.src_ZPCc}|>|$))`;
4568 re.tpl_email_fuzzy = `(^|${text_separators}|"|\\(|${re.src_ZCc})(${re.src_email_name}@${re.tpl_host_fuzzy_strict})`;
4569 re.tpl_link_fuzzy = // Fuzzy link can't be prepended with .:/\- and non punctuation.
4570 // but can start with > (markdown blockquote)
4571 `(^|(?![.:/\\-_@])(?:[$+<=>^\`|\uFF5C]|${re.src_ZPCc}))((?![$+<=>^\`|\uFF5C])${re.tpl_host_port_fuzzy_strict}${re.src_path})`;
4572 re.tpl_link_no_ip_fuzzy = // Fuzzy link can't be prepended with .:/\- and non punctuation.
4573 // but can start with > (markdown blockquote)
4574 `(^|(?![.:/\\-_@])(?:[$+<=>^\`|\uFF5C]|${re.src_ZPCc}))((?![$+<=>^\`|\uFF5C])${re.tpl_host_port_no_ip_fuzzy_strict}${re.src_path})`;
4575 return re;
4576}
4577
4578// node_modules/linkify-it/index.mjs
4579function assign2(obj) {
4580 const sources = Array.prototype.slice.call(arguments, 1);
4581 sources.forEach(function(source) {
4582 if (!source) {
4583 return;
4584 }
4585 Object.keys(source).forEach(function(key) {
4586 obj[key] = source[key];
4587 });
4588 });
4589 return obj;
4590}
4591function _class2(obj) {
4592 return Object.prototype.toString.call(obj);
4593}
4594function isString2(obj) {
4595 return _class2(obj) === "[object String]";
4596}
4597function isObject(obj) {
4598 return _class2(obj) === "[object Object]";
4599}
4600function isRegExp(obj) {
4601 return _class2(obj) === "[object RegExp]";
4602}
4603function isFunction(obj) {
4604 return _class2(obj) === "[object Function]";
4605}
4606function escapeRE2(str) {
4607 return str.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
4608}
4609var defaultOptions = {
4610 fuzzyLink: true,
4611 fuzzyEmail: true,
4612 fuzzyIP: false
4613};
4614function isOptionsObj(obj) {
4615 return Object.keys(obj || {}).reduce(function(acc, k) {
4616 return acc || defaultOptions.hasOwnProperty(k);
4617 }, false);
4618}
4619var defaultSchemas = {
4620 "http:": {
4621 validate: function(text2, pos, self) {
4622 const tail = text2.slice(pos);
4623 if (!self.re.http) {
4624 self.re.http = new RegExp(
4625 `^\\/\\/${self.re.src_auth}${self.re.src_host_port_strict}${self.re.src_path}`,
4626 "i"
4627 );
4628 }
4629 if (self.re.http.test(tail)) {
4630 return tail.match(self.re.http)[0].length;
4631 }
4632 return 0;
4633 }
4634 },
4635 "https:": "http:",
4636 "ftp:": "http:",
4637 "//": {
4638 validate: function(text2, pos, self) {
4639 const tail = text2.slice(pos);
4640 if (!self.re.no_http) {
4641 self.re.no_http = new RegExp(
4642 "^" + self.re.src_auth + // Don't allow single-level domains, because of false positives like '//test'
4643 // with code comments
4644 `(?:localhost|(?:(?:${self.re.src_domain})\\.)+${self.re.src_domain_root})` + self.re.src_port + self.re.src_host_terminator + self.re.src_path,
4645 "i"
4646 );
4647 }
4648 if (self.re.no_http.test(tail)) {
4649 if (pos >= 3 && text2[pos - 3] === ":") {
4650 return 0;
4651 }
4652 if (pos >= 3 && text2[pos - 3] === "/") {
4653 return 0;
4654 }
4655 return tail.match(self.re.no_http)[0].length;
4656 }
4657 return 0;
4658 }
4659 },
4660 "mailto:": {
4661 validate: function(text2, pos, self) {
4662 const tail = text2.slice(pos);
4663 if (!self.re.mailto) {
4664 self.re.mailto = new RegExp(
4665 `^${self.re.src_email_name}@${self.re.src_host_strict}`,
4666 "i"
4667 );
4668 }
4669 if (self.re.mailto.test(tail)) {
4670 return tail.match(self.re.mailto)[0].length;
4671 }
4672 return 0;
4673 }
4674 }
4675};
4676var tlds_2ch_src_re = "a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]";
4677var tlds_default = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");
4678function createValidator(re) {
4679 return function(text2, pos) {
4680 const tail = text2.slice(pos);
4681 if (re.test(tail)) {
4682 return tail.match(re)[0].length;
4683 }
4684 return 0;
4685 };
4686}
4687function createNormalizer() {
4688 return function(match2, self) {
4689 self.normalize(match2);
4690 };
4691}
4692function compile(self) {
4693 const re = self.re = re_default(self.__opts__);
4694 const tlds2 = self.__tlds__.slice();
4695 self.onCompile();
4696 if (!self.__tlds_replaced__) {
4697 tlds2.push(tlds_2ch_src_re);
4698 }
4699 tlds2.push(re.src_xn);
4700 re.src_tlds = tlds2.join("|");
4701 function untpl(tpl) {
4702 return tpl.replace("%TLDS%", re.src_tlds);
4703 }
4704 re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), "i");
4705 re.email_fuzzy_global = RegExp(untpl(re.tpl_email_fuzzy), "ig");
4706 re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), "i");
4707 re.link_fuzzy_global = RegExp(untpl(re.tpl_link_fuzzy), "ig");
4708 re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), "i");
4709 re.link_no_ip_fuzzy_global = RegExp(untpl(re.tpl_link_no_ip_fuzzy), "ig");
4710 re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), "i");
4711 const aliases = [];
4712 self.__compiled__ = {};
4713 function schemaError(name, val) {
4714 throw new Error(`(LinkifyIt) Invalid schema "${name}": ${val}`);
4715 }
4716 Object.keys(self.__schemas__).forEach(function(name) {
4717 const val = self.__schemas__[name];
4718 if (val === null) {
4719 return;
4720 }
4721 const compiled = { validate: null, link: null };
4722 self.__compiled__[name] = compiled;
4723 if (isObject(val)) {
4724 if (isRegExp(val.validate)) {
4725 compiled.validate = createValidator(val.validate);
4726 } else if (isFunction(val.validate)) {
4727 compiled.validate = val.validate;
4728 } else {
4729 schemaError(name, val);
4730 }
4731 if (isFunction(val.normalize)) {
4732 compiled.normalize = val.normalize;
4733 } else if (!val.normalize) {
4734 compiled.normalize = createNormalizer();
4735 } else {
4736 schemaError(name, val);
4737 }
4738 return;
4739 }
4740 if (isString2(val)) {
4741 aliases.push(name);
4742 return;
4743 }
4744 schemaError(name, val);
4745 });
4746 aliases.forEach(function(alias) {
4747 if (!self.__compiled__[self.__schemas__[alias]]) {
4748 return;
4749 }
4750 self.__compiled__[alias].validate = self.__compiled__[self.__schemas__[alias]].validate;
4751 self.__compiled__[alias].normalize = self.__compiled__[self.__schemas__[alias]].normalize;
4752 });
4753 self.__compiled__[""] = { validate: null, normalize: createNormalizer() };
4754 const slist = Object.keys(self.__compiled__).filter(function(name) {
4755 return name.length > 0 && self.__compiled__[name];
4756 }).map(escapeRE2).join("|");
4757 self.re.schema_test = RegExp(`(^|(?!_)(?:[><\uFF5C]|${re.src_ZPCc}))(${slist})`, "i");
4758 self.re.schema_search = RegExp(`(^|(?!_)(?:[><\uFF5C]|${re.src_ZPCc}))(${slist})`, "ig");
4759 self.re.schema_at_start = RegExp(`^${self.re.schema_search.source}`, "i");
4760 self.re.pretest = RegExp(
4761 `(${self.re.schema_test.source})|(${self.re.host_fuzzy_test.source})|@`,
4762 "i"
4763 );
4764}
4765function Match(text2, schema, index, lastIndex) {
4766 const raw = text2.slice(index, lastIndex);
4767 this.schema = schema.toLowerCase();
4768 this.index = index;
4769 this.lastIndex = lastIndex;
4770 this.raw = raw;
4771 this.text = raw;
4772 this.url = raw;
4773}
4774function LinkifyIt(schemas, options) {
4775 if (!(this instanceof LinkifyIt)) {
4776 return new LinkifyIt(schemas, options);
4777 }
4778 if (!options) {
4779 if (isOptionsObj(schemas)) {
4780 options = schemas;
4781 schemas = {};
4782 }
4783 }
4784 this.__opts__ = assign2({}, defaultOptions, options);
4785 this.__schemas__ = assign2({}, defaultSchemas, schemas);
4786 this.__compiled__ = {};
4787 this.__tlds__ = tlds_default;
4788 this.__tlds_replaced__ = false;
4789 this.re = {};
4790 compile(this);
4791}
4792LinkifyIt.prototype.add = function add(schema, definition) {
4793 this.__schemas__[schema] = definition;
4794 compile(this);
4795 return this;
4796};
4797LinkifyIt.prototype.set = function set(options) {
4798 this.__opts__ = assign2(this.__opts__, options);
4799 return this;
4800};
4801LinkifyIt.prototype.test = function test(text2) {
4802 if (!text2.length) {
4803 return false;
4804 }
4805 let m, re;
4806 if (this.re.schema_test.test(text2)) {
4807 re = this.re.schema_search;
4808 re.lastIndex = 0;
4809 while ((m = re.exec(text2)) !== null) {
4810 if (this.testSchemaAt(text2, m[2], re.lastIndex)) {
4811 return true;
4812 }
4813 }
4814 }
4815 if (this.__opts__.fuzzyLink && this.__compiled__["http:"]) {
4816 if (text2.search(this.re.host_fuzzy_test) >= 0) {
4817 if (text2.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy) !== null) {
4818 return true;
4819 }
4820 }
4821 }
4822 if (this.__opts__.fuzzyEmail && this.__compiled__["mailto:"]) {
4823 if (text2.indexOf("@") >= 0) {
4824 if (text2.match(this.re.email_fuzzy) !== null) {
4825 return true;
4826 }
4827 }
4828 }
4829 return false;
4830};
4831LinkifyIt.prototype.pretest = function pretest(text2) {
4832 return this.re.pretest.test(text2);
4833};
4834LinkifyIt.prototype.testSchemaAt = function testSchemaAt(text2, schema, pos) {
4835 if (!this.__compiled__[schema.toLowerCase()]) {
4836 return 0;
4837 }
4838 return this.__compiled__[schema.toLowerCase()].validate(text2, pos, this);
4839};
4840LinkifyIt.prototype.match = function match(text2) {
4841 const result = [];
4842 const type_schemed = [];
4843 const type_fuzzy_link = [];
4844 const type_fuzzy_email = [];
4845 let m, len, re;
4846 function choose(a, b) {
4847 if (!a) {
4848 return b;
4849 }
4850 if (!b) {
4851 return a;
4852 }
4853 if (a.index !== b.index) {
4854 return a.index < b.index ? a : b;
4855 }
4856 return a.lastIndex >= b.lastIndex ? a : b;
4857 }
4858 if (!text2.length) {
4859 return null;
4860 }
4861 if (this.re.schema_test.test(text2)) {
4862 re = this.re.schema_search;
4863 re.lastIndex = 0;
4864 while ((m = re.exec(text2)) !== null) {
4865 len = this.testSchemaAt(text2, m[2], re.lastIndex);
4866 if (len) {
4867 type_schemed.push({
4868 schema: m[2],
4869 index: m.index + m[1].length,
4870 lastIndex: m.index + m[0].length + len
4871 });
4872 }
4873 }
4874 }
4875 if (this.__opts__.fuzzyLink && this.__compiled__["http:"]) {
4876 re = this.__opts__.fuzzyIP ? this.re.link_fuzzy_global : this.re.link_no_ip_fuzzy_global;
4877 re.lastIndex = 0;
4878 while ((m = re.exec(text2)) !== null) {
4879 type_fuzzy_link.push({
4880 schema: "",
4881 index: m.index + m[1].length,
4882 lastIndex: m.index + m[0].length
4883 });
4884 }
4885 }
4886 if (this.__opts__.fuzzyEmail && this.__compiled__["mailto:"]) {
4887 re = this.re.email_fuzzy_global;
4888 re.lastIndex = 0;
4889 while ((m = re.exec(text2)) !== null) {
4890 type_fuzzy_email.push({
4891 schema: "mailto:",
4892 index: m.index + m[1].length,
4893 lastIndex: m.index + m[0].length
4894 });
4895 }
4896 }
4897 const indexes = [0, 0, 0];
4898 let lastIndex = 0;
4899 for (; ; ) {
4900 const candidates = [
4901 type_schemed[indexes[0]],
4902 type_fuzzy_email[indexes[1]],
4903 type_fuzzy_link[indexes[2]]
4904 ];
4905 const candidate = choose(choose(candidates[0], candidates[1]), candidates[2]);
4906 if (!candidate) {
4907 break;
4908 }
4909 if (candidate === candidates[0]) {
4910 indexes[0]++;
4911 } else if (candidate === candidates[1]) {
4912 indexes[1]++;
4913 } else {
4914 indexes[2]++;
4915 }
4916 if (candidate.index < lastIndex) {
4917 continue;
4918 }
4919 const match2 = new Match(text2, candidate.schema, candidate.index, candidate.lastIndex);
4920 this.__compiled__[match2.schema].normalize(match2, this);
4921 result.push(match2);
4922 lastIndex = candidate.lastIndex;
4923 }
4924 if (result.length) {
4925 return result;
4926 }
4927 return null;
4928};
4929LinkifyIt.prototype.matchAtStart = function matchAtStart(text2) {
4930 if (!text2.length) return null;
4931 const m = this.re.schema_at_start.exec(text2);
4932 if (!m) return null;
4933 const len = this.testSchemaAt(text2, m[2], m[0].length);
4934 if (!len) return null;
4935 const match2 = new Match(text2, m[2], m.index + m[1].length, m.index + m[0].length + len);
4936 this.__compiled__[match2.schema].normalize(match2, this);
4937 return match2;
4938};
4939LinkifyIt.prototype.tlds = function tlds(list2, keepOld) {
4940 list2 = Array.isArray(list2) ? list2 : [list2];
4941 if (!keepOld) {
4942 this.__tlds__ = list2.slice();
4943 this.__tlds_replaced__ = true;
4944 compile(this);
4945 return this;
4946 }
4947 this.__tlds__ = this.__tlds__.concat(list2).sort().filter(function(el, idx, arr) {
4948 return el !== arr[idx - 1];
4949 }).reverse();
4950 compile(this);
4951 return this;
4952};
4953LinkifyIt.prototype.normalize = function normalize2(match2) {
4954 if (!match2.schema) {
4955 match2.url = `http://${match2.url}`;
4956 }
4957 if (match2.schema === "mailto:" && !/^mailto:/i.test(match2.url)) {
4958 match2.url = `mailto:${match2.url}`;
4959 }
4960};
4961LinkifyIt.prototype.onCompile = function onCompile() {
4962};
4963var linkify_it_default = LinkifyIt;
4964
4965// node_modules/punycode.js/punycode.es6.js
4966var maxInt = 2147483647;
4967var base = 36;
4968var tMin = 1;
4969var tMax = 26;
4970var skew = 38;
4971var damp = 700;
4972var initialBias = 72;
4973var initialN = 128;
4974var delimiter = "-";
4975var regexPunycode = /^xn--/;
4976var regexNonASCII = /[^\0-\x7F]/;
4977var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g;
4978var errors = {
4979 "overflow": "Overflow: input needs wider integers to process",
4980 "not-basic": "Illegal input >= 0x80 (not a basic code point)",
4981 "invalid-input": "Invalid input"
4982};
4983var baseMinusTMin = base - tMin;
4984var floor = Math.floor;
4985var stringFromCharCode = String.fromCharCode;
4986function error(type) {
4987 throw new RangeError(errors[type]);
4988}
4989function map(array, callback) {
4990 const result = [];
4991 let length = array.length;
4992 while (length--) {
4993 result[length] = callback(array[length]);
4994 }
4995 return result;
4996}
4997function mapDomain(domain, callback) {
4998 const parts = domain.split("@");
4999 let result = "";
5000 if (parts.length > 1) {
5001 result = parts[0] + "@";
5002 domain = parts[1];
5003 }
5004 domain = domain.replace(regexSeparators, ".");
5005 const labels = domain.split(".");
5006 const encoded = map(labels, callback).join(".");
5007 return result + encoded;
5008}
5009function ucs2decode(string) {
5010 const output = [];
5011 let counter = 0;
5012 const length = string.length;
5013 while (counter < length) {
5014 const value = string.charCodeAt(counter++);
5015 if (value >= 55296 && value <= 56319 && counter < length) {
5016 const extra = string.charCodeAt(counter++);
5017 if ((extra & 64512) == 56320) {
5018 output.push(((value & 1023) << 10) + (extra & 1023) + 65536);
5019 } else {
5020 output.push(value);
5021 counter--;
5022 }
5023 } else {
5024 output.push(value);
5025 }
5026 }
5027 return output;
5028}
5029var ucs2encode = (codePoints) => String.fromCodePoint(...codePoints);
5030var basicToDigit = function(codePoint) {
5031 if (codePoint >= 48 && codePoint < 58) {
5032 return 26 + (codePoint - 48);
5033 }
5034 if (codePoint >= 65 && codePoint < 91) {
5035 return codePoint - 65;
5036 }
5037 if (codePoint >= 97 && codePoint < 123) {
5038 return codePoint - 97;
5039 }
5040 return base;
5041};
5042var digitToBasic = function(digit, flag) {
5043 return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
5044};
5045var adapt = function(delta, numPoints, firstTime) {
5046 let k = 0;
5047 delta = firstTime ? floor(delta / damp) : delta >> 1;
5048 delta += floor(delta / numPoints);
5049 for (; delta > baseMinusTMin * tMax >> 1; k += base) {
5050 delta = floor(delta / baseMinusTMin);
5051 }
5052 return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
5053};
5054var decode2 = function(input) {
5055 const output = [];
5056 const inputLength = input.length;
5057 let i = 0;
5058 let n = initialN;
5059 let bias = initialBias;
5060 let basic = input.lastIndexOf(delimiter);
5061 if (basic < 0) {
5062 basic = 0;
5063 }
5064 for (let j = 0; j < basic; ++j) {
5065 if (input.charCodeAt(j) >= 128) {
5066 error("not-basic");
5067 }
5068 output.push(input.charCodeAt(j));
5069 }
5070 for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; ) {
5071 const oldi = i;
5072 for (let w = 1, k = base; ; k += base) {
5073 if (index >= inputLength) {
5074 error("invalid-input");
5075 }
5076 const digit = basicToDigit(input.charCodeAt(index++));
5077 if (digit >= base) {
5078 error("invalid-input");
5079 }
5080 if (digit > floor((maxInt - i) / w)) {
5081 error("overflow");
5082 }
5083 i += digit * w;
5084 const t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
5085 if (digit < t) {
5086 break;
5087 }
5088 const baseMinusT = base - t;
5089 if (w > floor(maxInt / baseMinusT)) {
5090 error("overflow");
5091 }
5092 w *= baseMinusT;
5093 }
5094 const out = output.length + 1;
5095 bias = adapt(i - oldi, out, oldi == 0);
5096 if (floor(i / out) > maxInt - n) {
5097 error("overflow");
5098 }
5099 n += floor(i / out);
5100 i %= out;
5101 output.splice(i++, 0, n);
5102 }
5103 return String.fromCodePoint(...output);
5104};
5105var encode2 = function(input) {
5106 const output = [];
5107 input = ucs2decode(input);
5108 const inputLength = input.length;
5109 let n = initialN;
5110 let delta = 0;
5111 let bias = initialBias;
5112 for (const currentValue of input) {
5113 if (currentValue < 128) {
5114 output.push(stringFromCharCode(currentValue));
5115 }
5116 }
5117 const basicLength = output.length;
5118 let handledCPCount = basicLength;
5119 if (basicLength) {
5120 output.push(delimiter);
5121 }
5122 while (handledCPCount < inputLength) {
5123 let m = maxInt;
5124 for (const currentValue of input) {
5125 if (currentValue >= n && currentValue < m) {
5126 m = currentValue;
5127 }
5128 }
5129 const handledCPCountPlusOne = handledCPCount + 1;
5130 if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
5131 error("overflow");
5132 }
5133 delta += (m - n) * handledCPCountPlusOne;
5134 n = m;
5135 for (const currentValue of input) {
5136 if (currentValue < n && ++delta > maxInt) {
5137 error("overflow");
5138 }
5139 if (currentValue === n) {
5140 let q = delta;
5141 for (let k = base; ; k += base) {
5142 const t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
5143 if (q < t) {
5144 break;
5145 }
5146 const qMinusT = q - t;
5147 const baseMinusT = base - t;
5148 output.push(
5149 stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
5150 );
5151 q = floor(qMinusT / baseMinusT);
5152 }
5153 output.push(stringFromCharCode(digitToBasic(q, 0)));
5154 bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);
5155 delta = 0;
5156 ++handledCPCount;
5157 }
5158 }
5159 ++delta;
5160 ++n;
5161 }
5162 return output.join("");
5163};
5164var toUnicode = function(input) {
5165 return mapDomain(input, function(string) {
5166 return regexPunycode.test(string) ? decode2(string.slice(4).toLowerCase()) : string;
5167 });
5168};
5169var toASCII = function(input) {
5170 return mapDomain(input, function(string) {
5171 return regexNonASCII.test(string) ? "xn--" + encode2(string) : string;
5172 });
5173};
5174var punycode = {
5175 /**
5176 * A string representing the current Punycode.js version number.
5177 * @memberOf punycode
5178 * @type String
5179 */
5180 "version": "2.3.1",
5181 /**
5182 * An object of methods to convert from JavaScript's internal character
5183 * representation (UCS-2) to Unicode code points, and back.
5184 * @see <https://mathiasbynens.be/notes/javascript-encoding>
5185 * @memberOf punycode
5186 * @type Object
5187 */
5188 "ucs2": {
5189 "decode": ucs2decode,
5190 "encode": ucs2encode
5191 },
5192 "decode": decode2,
5193 "encode": encode2,
5194 "toASCII": toASCII,
5195 "toUnicode": toUnicode
5196};
5197var punycode_es6_default = punycode;
5198
5199// node_modules/markdown-it/lib/presets/default.mjs
5200var default_default = {
5201 options: {
5202 // Enable HTML tags in source
5203 html: false,
5204 // Use '/' to close single tags (<br />)
5205 xhtmlOut: false,
5206 // Convert '\n' in paragraphs into <br>
5207 breaks: false,
5208 // CSS language prefix for fenced blocks
5209 langPrefix: "language-",
5210 // autoconvert URL-like texts to links
5211 linkify: false,
5212 // Enable some language-neutral replacements + quotes beautification
5213 typographer: false,
5214 // Double + single quotes replacement pairs, when typographer enabled,
5215 // and smartquotes on. Could be either a String or an Array.
5216 //
5217 // For example, you can use 'Β«Β»β€žβ€œ' for Russian, 'β€žβ€œβ€šβ€˜' for German,
5218 // and ['Β«\xA0', '\xA0Β»', 'β€Ή\xA0', '\xA0β€Ί'] for French (including nbsp).
5219 quotes: "\u201C\u201D\u2018\u2019",
5220 /* β€œβ€β€˜β€™ */
5221 // Highlighter function. Should return escaped HTML,
5222 // or '' if the source string is not changed and should be escaped externaly.
5223 // If result starts with <pre... internal wrapper is skipped.
5224 //
5225 // function (/*str, lang*/) { return ''; }
5226 //
5227 highlight: null,
5228 // Internal protection, recursion limit
5229 maxNesting: 100
5230 },
5231 components: {
5232 core: {},
5233 block: {},
5234 inline: {}
5235 }
5236};
5237
5238// node_modules/markdown-it/lib/presets/zero.mjs
5239var zero_default = {
5240 options: {
5241 // Enable HTML tags in source
5242 html: false,
5243 // Use '/' to close single tags (<br />)
5244 xhtmlOut: false,
5245 // Convert '\n' in paragraphs into <br>
5246 breaks: false,
5247 // CSS language prefix for fenced blocks
5248 langPrefix: "language-",
5249 // autoconvert URL-like texts to links
5250 linkify: false,
5251 // Enable some language-neutral replacements + quotes beautification
5252 typographer: false,
5253 // Double + single quotes replacement pairs, when typographer enabled,
5254 // and smartquotes on. Could be either a String or an Array.
5255 //
5256 // For example, you can use 'Β«Β»β€žβ€œ' for Russian, 'β€žβ€œβ€šβ€˜' for German,
5257 // and ['Β«\xA0', '\xA0Β»', 'β€Ή\xA0', '\xA0β€Ί'] for French (including nbsp).
5258 quotes: "\u201C\u201D\u2018\u2019",
5259 /* β€œβ€β€˜β€™ */
5260 // Highlighter function. Should return escaped HTML,
5261 // or '' if the source string is not changed and should be escaped externaly.
5262 // If result starts with <pre... internal wrapper is skipped.
5263 //
5264 // function (/*str, lang*/) { return ''; }
5265 //
5266 highlight: null,
5267 // Internal protection, recursion limit
5268 maxNesting: 20
5269 },
5270 components: {
5271 core: {
5272 rules: [
5273 "normalize",
5274 "block",
5275 "inline",
5276 "text_join"
5277 ]
5278 },
5279 block: {
5280 rules: [
5281 "paragraph"
5282 ]
5283 },
5284 inline: {
5285 rules: [
5286 "text"
5287 ],
5288 rules2: [
5289 "balance_pairs",
5290 "fragments_join"
5291 ]
5292 }
5293 }
5294};
5295
5296// node_modules/markdown-it/lib/presets/commonmark.mjs
5297var commonmark_default = {
5298 options: {
5299 // Enable HTML tags in source
5300 html: true,
5301 // Use '/' to close single tags (<br />)
5302 xhtmlOut: true,
5303 // Convert '\n' in paragraphs into <br>
5304 breaks: false,
5305 // CSS language prefix for fenced blocks
5306 langPrefix: "language-",
5307 // autoconvert URL-like texts to links
5308 linkify: false,
5309 // Enable some language-neutral replacements + quotes beautification
5310 typographer: false,
5311 // Double + single quotes replacement pairs, when typographer enabled,
5312 // and smartquotes on. Could be either a String or an Array.
5313 //
5314 // For example, you can use 'Β«Β»β€žβ€œ' for Russian, 'β€žβ€œβ€šβ€˜' for German,
5315 // and ['Β«\xA0', '\xA0Β»', 'β€Ή\xA0', '\xA0β€Ί'] for French (including nbsp).
5316 quotes: "\u201C\u201D\u2018\u2019",
5317 /* β€œβ€β€˜β€™ */
5318 // Highlighter function. Should return escaped HTML,
5319 // or '' if the source string is not changed and should be escaped externaly.
5320 // If result starts with <pre... internal wrapper is skipped.
5321 //
5322 // function (/*str, lang*/) { return ''; }
5323 //
5324 highlight: null,
5325 // Internal protection, recursion limit
5326 maxNesting: 20
5327 },
5328 components: {
5329 core: {
5330 rules: [
5331 "normalize",
5332 "block",
5333 "inline",
5334 "text_join"
5335 ]
5336 },
5337 block: {
5338 rules: [
5339 "blockquote",
5340 "code",
5341 "fence",
5342 "heading",
5343 "hr",
5344 "html_block",
5345 "lheading",
5346 "list",
5347 "reference",
5348 "paragraph"
5349 ]
5350 },
5351 inline: {
5352 rules: [
5353 "autolink",
5354 "backticks",
5355 "emphasis",
5356 "entity",
5357 "escape",
5358 "html_inline",
5359 "image",
5360 "link",
5361 "newline",
5362 "text"
5363 ],
5364 rules2: [
5365 "balance_pairs",
5366 "emphasis",
5367 "fragments_join"
5368 ]
5369 }
5370 }
5371};
5372
5373// node_modules/markdown-it/lib/index.mjs
5374var config = {
5375 default: default_default,
5376 zero: zero_default,
5377 commonmark: commonmark_default
5378};
5379var BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;
5380var GOOD_DATA_RE = /^data:image\/(gif|png|jpeg|webp);/;
5381function validateLink(url) {
5382 const str = url.trim().toLowerCase();
5383 return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) : true;
5384}
5385var RECODE_HOSTNAME_FOR = ["http:", "https:", "mailto:"];
5386function normalizeLink(url) {
5387 const parsed = parse_default(url, true);
5388 if (parsed.hostname) {
5389 if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
5390 try {
5391 parsed.hostname = punycode_es6_default.toASCII(parsed.hostname);
5392 } catch (er) {
5393 }
5394 }
5395 }
5396 return encode_default(format(parsed));
5397}
5398function normalizeLinkText(url) {
5399 const parsed = parse_default(url, true);
5400 if (parsed.hostname) {
5401 if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
5402 try {
5403 parsed.hostname = punycode_es6_default.toUnicode(parsed.hostname);
5404 } catch (er) {
5405 }
5406 }
5407 }
5408 return decode_default(format(parsed), decode_default.defaultChars + "%");
5409}
5410function MarkdownIt(presetName, options) {
5411 if (!(this instanceof MarkdownIt)) {
5412 return new MarkdownIt(presetName, options);
5413 }
5414 if (!options) {
5415 if (!isString(presetName)) {
5416 options = presetName || {};
5417 presetName = "default";
5418 }
5419 }
5420 this.inline = new parser_inline_default();
5421 this.block = new parser_block_default();
5422 this.core = new parser_core_default();
5423 this.renderer = new renderer_default();
5424 this.linkify = new linkify_it_default();
5425 this.validateLink = validateLink;
5426 this.normalizeLink = normalizeLink;
5427 this.normalizeLinkText = normalizeLinkText;
5428 this.utils = utils_exports;
5429 this.helpers = assign({}, helpers_exports);
5430 this.options = {};
5431 this.configure(presetName);
5432 if (options) {
5433 this.set(options);
5434 }
5435}
5436MarkdownIt.prototype.set = function(options) {
5437 assign(this.options, options);
5438 return this;
5439};
5440MarkdownIt.prototype.configure = function(presets) {
5441 const self = this;
5442 if (isString(presets)) {
5443 const presetName = presets;
5444 presets = config[presetName];
5445 if (!presets) {
5446 throw new Error('Wrong `markdown-it` preset "' + presetName + '", check name');
5447 }
5448 }
5449 if (!presets) {
5450 throw new Error("Wrong `markdown-it` preset, can't be empty");
5451 }
5452 if (presets.options) {
5453 self.set(presets.options);
5454 }
5455 if (presets.components) {
5456 Object.keys(presets.components).forEach(function(name) {
5457 if (presets.components[name].rules) {
5458 self[name].ruler.enableOnly(presets.components[name].rules);
5459 }
5460 if (presets.components[name].rules2) {
5461 self[name].ruler2.enableOnly(presets.components[name].rules2);
5462 }
5463 });
5464 }
5465 return this;
5466};
5467MarkdownIt.prototype.enable = function(list2, ignoreInvalid) {
5468 let result = [];
5469 if (!Array.isArray(list2)) {
5470 list2 = [list2];
5471 }
5472 ["core", "block", "inline"].forEach(function(chain) {
5473 result = result.concat(this[chain].ruler.enable(list2, true));
5474 }, this);
5475 result = result.concat(this.inline.ruler2.enable(list2, true));
5476 const missed = list2.filter(function(name) {
5477 return result.indexOf(name) < 0;
5478 });
5479 if (missed.length && !ignoreInvalid) {
5480 throw new Error("MarkdownIt. Failed to enable unknown rule(s): " + missed);
5481 }
5482 return this;
5483};
5484MarkdownIt.prototype.disable = function(list2, ignoreInvalid) {
5485 let result = [];
5486 if (!Array.isArray(list2)) {
5487 list2 = [list2];
5488 }
5489 ["core", "block", "inline"].forEach(function(chain) {
5490 result = result.concat(this[chain].ruler.disable(list2, true));
5491 }, this);
5492 result = result.concat(this.inline.ruler2.disable(list2, true));
5493 const missed = list2.filter(function(name) {
5494 return result.indexOf(name) < 0;
5495 });
5496 if (missed.length && !ignoreInvalid) {
5497 throw new Error("MarkdownIt. Failed to disable unknown rule(s): " + missed);
5498 }
5499 return this;
5500};
5501MarkdownIt.prototype.use = function(plugin) {
5502 const args = [this].concat(Array.prototype.slice.call(arguments, 1));
5503 plugin.apply(plugin, args);
5504 return this;
5505};
5506MarkdownIt.prototype.parse = function(src, env) {
5507 if (typeof src !== "string") {
5508 throw new Error("Input data should be a String");
5509 }
5510 const state = new this.core.State(src, this, env);
5511 this.core.process(state);
5512 return state.tokens;
5513};
5514MarkdownIt.prototype.render = function(src, env) {
5515 env = env || {};
5516 return this.renderer.render(this.parse(src, env), this.options, env);
5517};
5518MarkdownIt.prototype.parseInline = function(src, env) {
5519 const state = new this.core.State(src, this, env);
5520 state.inlineMode = true;
5521 this.core.process(state);
5522 return state.tokens;
5523};
5524MarkdownIt.prototype.renderInline = function(src, env) {
5525 env = env || {};
5526 return this.renderer.render(this.parseInline(src, env), this.options, env);
5527};
5528var lib_default = MarkdownIt;
5529export {
5530 lib_default as default
5531};
5532