@bluepic/embed 0.4.0-next.129 → 0.4.0-next.130

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3337 @@
1
+ const E = new TextEncoder(), R = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", B = new Uint8Array(256);
2
+ for (let s = 0; s < R.length; s++)
3
+ B[R.charCodeAt(s)] = s;
4
+ function _(s) {
5
+ let u = s.length;
6
+ for (; u > 0 && s.charAt(u - 1) === "="; )
7
+ u--;
8
+ u % 4 === 1 && u--;
9
+ const r = u % 4, t = Math.floor(u / 4) * 3 + (r ? r - 1 : 0), i = new ArrayBuffer(t), n = new Uint8Array(i);
10
+ let e = 0;
11
+ for (let a = 0; a < u; a += 4) {
12
+ let o = B[s.charCodeAt(a)], c = B[s.charCodeAt(a + 1)], l = B[s.charCodeAt(a + 2)], p = B[s.charCodeAt(a + 3)];
13
+ n[e++] = o << 2 | c >> 4, e < t && (n[e++] = (c & 15) << 4 | l >> 2), e < t && (n[e++] = (l & 3) << 6 | p & 63);
14
+ }
15
+ return i;
16
+ }
17
+ const J = /* @__PURE__ */ new Map([
18
+ // Hebrew. The logical and explicit ordering variants share the iso-8859-8 index.
19
+ ["iso88598i", "iso-8859-8"],
20
+ ["iso88598e", "iso-8859-8"],
21
+ // Japanese. WHATWG shift_jis is the Windows-31J index, so cp932 text decodes
22
+ // identically, including the NEC and IBM extension rows.
23
+ ["shiftjis", "shift_jis"],
24
+ ["windows31j", "shift_jis"],
25
+ ["mskanji", "shift_jis"],
26
+ ["eucjp", "euc-jp"],
27
+ // ISO-2022-JP, including the -1 / -2 supersets. Escape sequences outside plain
28
+ // ISO-2022-JP (JIS X 0212, the non-Japanese G2 sets, and the SO/SI katakana shifts
29
+ // cp50222 uses) decode to replacement characters, but the Japanese text around them
30
+ // still comes out right.
31
+ ["iso2022jp", "iso-2022-jp"],
32
+ ["iso2022jp1", "iso-2022-jp"],
33
+ ["iso2022jp2", "iso-2022-jp"],
34
+ ["junet", "iso-2022-jp"],
35
+ // Korean. The WHATWG euc-kr index is the extended cp949 / UHC index.
36
+ ["euckr", "euc-kr"],
37
+ ["uhc", "euc-kr"],
38
+ // Thai.
39
+ ["tis620", "windows-874"]
40
+ ]), Y = /* @__PURE__ */ new Map([
41
+ ["932", "shift_jis"],
42
+ ["936", "gbk"],
43
+ ["949", "euc-kr"],
44
+ ["950", "big5"],
45
+ ["874", "windows-874"],
46
+ // Microsoft's EUC-JP and ISO-2022-JP variants. euc-jp and iso-2022-jp cover
47
+ // everything they can express.
48
+ ["51932", "euc-jp"],
49
+ ["50220", "iso-2022-jp"],
50
+ ["50221", "iso-2022-jp"],
51
+ ["50222", "iso-2022-jp"]
52
+ ]), Z = /^(?:cp|windows|ms|ibm)(\d+)$/;
53
+ function X(s) {
54
+ return s.replace(/^(?:x-ms-|x-|cs)/, "").replace(/[\s._-]+/g, "");
55
+ }
56
+ function U(s) {
57
+ try {
58
+ return new TextDecoder(s);
59
+ } catch {
60
+ return null;
61
+ }
62
+ }
63
+ function N(s) {
64
+ s = (s || "utf8").trim().toLowerCase();
65
+ const u = U(s);
66
+ if (u)
67
+ return u;
68
+ const r = X(s), t = r.match(Z), i = t && Y.get(t[1]) || J.get(r) || r;
69
+ return U(i) || new TextDecoder("windows-1252");
70
+ }
71
+ async function x(s) {
72
+ if ("arrayBuffer" in s)
73
+ return await s.arrayBuffer();
74
+ const u = new FileReader();
75
+ return new Promise((r, t) => {
76
+ u.onload = function(i) {
77
+ r(i.target.result);
78
+ }, u.onerror = function(i) {
79
+ t(u.error);
80
+ }, u.readAsArrayBuffer(s);
81
+ });
82
+ }
83
+ function F(s) {
84
+ return s >= 48 && s <= 57 ? s - 48 : s >= 97 && s <= 102 ? s - 97 + 10 : s >= 65 && s <= 70 ? s - 65 + 10 : -1;
85
+ }
86
+ function q(s, u, r) {
87
+ let t = s.indexOf("*");
88
+ t >= 0 && (s = s.substr(0, t)), u = u.toUpperCase();
89
+ let i;
90
+ if (u === "Q") {
91
+ r = r.replace(/=\s+([0-9a-fA-F])/g, "=$1").replace(/[_\s]/g, " ");
92
+ let n = E.encode(r), e = [];
93
+ for (let o = 0, c = n.length; o < c; o++) {
94
+ let l = n[o];
95
+ if (o <= c - 2 && l === 61) {
96
+ let p = F(n[o + 1]), f = F(n[o + 2]);
97
+ if (p >= 0 && f >= 0) {
98
+ e.push(p << 4 | f), o += 2;
99
+ continue;
100
+ }
101
+ }
102
+ e.push(l);
103
+ }
104
+ i = new ArrayBuffer(e.length);
105
+ let a = new DataView(i);
106
+ for (let o = 0, c = e.length; o < c; o++)
107
+ a.setUint8(o, e[o]);
108
+ } else u === "B" ? i = _(r.replace(/[^a-zA-Z0-9\+\/=]+/g, "")) : i = E.encode(r);
109
+ return N(s).decode(i);
110
+ }
111
+ const W = "=\\?([^?\\s]+)\\?([QqBb])\\?([^?]*)\\?=", P = new RegExp(W, "g"), uu = /^[ \t\r\n]+$/, eu = new RegExp(`^(?:${W}\\s*)+$`);
112
+ function tu(s) {
113
+ return eu.test(s);
114
+ }
115
+ function ru(s) {
116
+ const u = [];
117
+ P.lastIndex = 0;
118
+ let r = 0, t;
119
+ for (; t = P.exec(s); )
120
+ t.index > r && u.push({ text: s.substring(r, t.index) }), u.push({ charset: t[1], encoding: t[2], encodedText: t[3] }), r = t.index + t[0].length;
121
+ return r < s.length && u.push({ text: s.substring(r) }), u;
122
+ }
123
+ function su(s, u) {
124
+ const r = s.encoding.toUpperCase();
125
+ return s.charset !== u.charset || r !== u.encoding.toUpperCase() ? !1 : r === "B" ? s.encodedText.length % 4 === 0 && !/=$/.test(s.encodedText) : !0;
126
+ }
127
+ function H(s, u) {
128
+ let r = "", t = null;
129
+ for (let i = 0; i < s.length; i++) {
130
+ const n = s[i];
131
+ if (n.text !== void 0) {
132
+ const e = s[i + 1];
133
+ if (t && e && e.text === void 0 && uu.test(n.text))
134
+ continue;
135
+ t && (r += q(t.charset, t.encoding, t.encodedText), t = null), r += n.text;
136
+ continue;
137
+ }
138
+ if (t && u && su(t, n)) {
139
+ t.encodedText += n.encodedText;
140
+ continue;
141
+ }
142
+ t && (r += q(t.charset, t.encoding, t.encodedText)), t = { charset: n.charset, encoding: n.encoding, encodedText: n.encodedText };
143
+ }
144
+ return t && (r += q(t.charset, t.encoding, t.encodedText)), r;
145
+ }
146
+ function C(s) {
147
+ const u = ru((s || "").toString()), r = H(u, !0);
148
+ return r.indexOf("�") < 0 ? r : H(u, !1);
149
+ }
150
+ function O(s, u) {
151
+ u = u || "utf-8";
152
+ let r = [];
153
+ for (let n = 0; n < s.length; n++) {
154
+ let e = s.charAt(n);
155
+ if (e === "%" && /^[a-f0-9]{2}/i.test(s.substr(n + 1, 2))) {
156
+ let a = s.substr(n + 1, 2);
157
+ n += 2, r.push(parseInt(a, 16));
158
+ } else if (e.charCodeAt(0) > 126) {
159
+ e = E.encode(e);
160
+ for (let a = 0; a < e.length; a++)
161
+ r.push(e[a]);
162
+ } else
163
+ r.push(e.charCodeAt(0));
164
+ }
165
+ const t = new ArrayBuffer(r.length), i = new DataView(t);
166
+ for (let n = 0, e = r.length; n < e; n++)
167
+ i.setUint8(n, r[n]);
168
+ return N(u).decode(t);
169
+ }
170
+ function au(s) {
171
+ let u = /* @__PURE__ */ new Map();
172
+ Object.keys(s.params).forEach((r) => {
173
+ let t = r.match(/\*((\d+)\*?)?$/);
174
+ if (!t)
175
+ return;
176
+ let i = r.substr(0, t.index).toLowerCase(), n = Number(t[2]) || 0, e;
177
+ u.has(i) ? e = u.get(i) : (e = {
178
+ charset: !1,
179
+ values: []
180
+ }, u.set(i, e));
181
+ let a = s.params[r], o = t[0].charAt(t[0].length - 1) === "*";
182
+ n === 0 && o && (t = a.match(/^([^']*)'[^']*'(.*)$/)) && (e.charset = t[1] || "utf-8", a = t[2]), e.values.push({ nr: n, value: a, encoded: o }), delete s.params[r];
183
+ }), u.forEach((r, t) => {
184
+ let i = "", n = "";
185
+ for (let e of r.values.sort((a, o) => a.nr - o.nr)) {
186
+ if (e.encoded) {
187
+ n += e.value;
188
+ continue;
189
+ }
190
+ n && (i += O(n, r.charset), n = ""), i += e.value;
191
+ }
192
+ n && (i += O(n, r.charset)), s.params[t] = i;
193
+ });
194
+ }
195
+ class iu {
196
+ constructor() {
197
+ this.chunks = [];
198
+ }
199
+ update(u) {
200
+ this.chunks.push(u), this.chunks.push(`
201
+ `);
202
+ }
203
+ finalize() {
204
+ return x(new Blob(this.chunks, { type: "application/octet-stream" }));
205
+ }
206
+ }
207
+ class nu {
208
+ constructor(u) {
209
+ u = u || {}, this.decoder = u.decoder || new TextDecoder(), this.maxChunkSize = 100 * 1024, this.chunks = [], this.remainder = "";
210
+ }
211
+ pushChunk(u) {
212
+ u.length && this.chunks.push(_(u));
213
+ }
214
+ flushRemainder() {
215
+ this.pushChunk(this.remainder), this.remainder = "";
216
+ }
217
+ update(u) {
218
+ const t = this.decoder.decode(u).replace(/[^a-zA-Z0-9+/=]+/g, "").split(/=+/);
219
+ for (let i = 0; i < t.length; i++)
220
+ this.remainder += t[i], i < t.length - 1 && this.flushRemainder();
221
+ if (this.remainder.length >= this.maxChunkSize) {
222
+ const i = Math.floor(this.remainder.length / 4) * 4;
223
+ this.pushChunk(this.remainder.substring(0, i)), this.remainder = this.remainder.substring(i);
224
+ }
225
+ }
226
+ finalize() {
227
+ return this.flushRemainder(), x(new Blob(this.chunks, { type: "application/octet-stream" }));
228
+ }
229
+ }
230
+ const j = 61, ou = 10;
231
+ class lu {
232
+ constructor() {
233
+ this.maxChunkSize = 100 * 1024, this.buffer = new Uint8Array(this.maxChunkSize), this.bufferPos = 0, this.chunks = [];
234
+ }
235
+ writeByte(u) {
236
+ this.bufferPos >= this.buffer.length && this.flushBuffer(), this.buffer[this.bufferPos++] = u;
237
+ }
238
+ // Literal text is the bulk of a typical body, so it is copied in runs rather than a
239
+ // byte at a time
240
+ writeBytes(u, r, t) {
241
+ for (; r < t; ) {
242
+ this.bufferPos >= this.buffer.length && this.flushBuffer();
243
+ const i = Math.min(t - r, this.buffer.length - this.bufferPos);
244
+ this.buffer.set(u.subarray(r, r + i), this.bufferPos), this.bufferPos += i, r += i;
245
+ }
246
+ }
247
+ flushBuffer() {
248
+ this.bufferPos && (this.chunks.push(this.buffer.slice(0, this.bufferPos)), this.bufferPos = 0);
249
+ }
250
+ // Quoted-printable source is 7 bit by definition, so it is decoded byte by byte and
251
+ // the result is handed on as bytes. Running the body charset over the encoded source
252
+ // instead corrupted every part whose charset was not ASCII compatible: the same
253
+ // content that decoded correctly in base64 came out as mojibake in quoted-printable.
254
+ update(u) {
255
+ let r = u.length;
256
+ const t = r > 0 && u[r - 1] === j;
257
+ t && r--;
258
+ let i = 0;
259
+ for (let n = 0; n < r; n++) {
260
+ if (u[n] !== j || n + 2 >= r)
261
+ continue;
262
+ const e = F(u[n + 1]), a = F(u[n + 2]);
263
+ e < 0 || a < 0 || (this.writeBytes(u, i, n), this.writeByte(e << 4 | a), n += 2, i = n + 1);
264
+ }
265
+ this.writeBytes(u, i, r), t || this.writeByte(ou);
266
+ }
267
+ finalize() {
268
+ return this.flushBuffer(), x(new Blob(this.chunks, { type: "application/octet-stream" }));
269
+ }
270
+ }
271
+ const cu = new TextDecoder("utf-8", { ignoreBOM: !0 }), k = (s) => s.replace(/^[ \t]+|[ \t]+$/g, ""), pu = /* @__PURE__ */ new Set([
272
+ "content-type",
273
+ "content-transfer-encoding",
274
+ "content-disposition",
275
+ "content-id",
276
+ "content-description"
277
+ ]);
278
+ class z {
279
+ constructor(u) {
280
+ if (this.options = u || {}, this.postalMime = this.options.postalMime, this.childNodes = [], this.finalizedChildCount = 0, this.options.parentNode) {
281
+ if (this.parentNode = this.options.parentNode, this.depth = this.parentNode.depth + 1, this.depth > this.options.maxNestingDepth)
282
+ throw new Error(`Maximum MIME nesting depth of ${this.options.maxNestingDepth} levels exceeded`);
283
+ this.options.parentNode.childNodes.push(this);
284
+ } else
285
+ this.depth = 0;
286
+ this.state = "header", this.headerLines = [];
287
+ const t = (this.options.parentMultipartType || null) === "digest" ? "message/rfc822" : "text/plain";
288
+ this.contentType = {
289
+ value: t
290
+ }, this.contentTransferEncoding = {
291
+ value: "8bit"
292
+ }, this.contentDisposition = {
293
+ value: ""
294
+ }, this.headers = [], this.contentDecoder = !1;
295
+ }
296
+ setupContentDecoder(u) {
297
+ /base64/i.test(u) ? this.contentDecoder = new nu() : /quoted-printable/i.test(u) ? this.contentDecoder = new lu() : this.contentDecoder = new iu();
298
+ }
299
+ async finalize() {
300
+ if (this.state === "finished")
301
+ return;
302
+ this.state === "header" && this.processHeaders();
303
+ let u = this.postalMime.boundaries;
304
+ for (let r = u.length - 1; r >= 0; r--)
305
+ if (u[r].node === this) {
306
+ u.splice(r, 1);
307
+ break;
308
+ }
309
+ await this.finalizeChildNodes(), this.content = this.contentDecoder ? await this.contentDecoder.finalize() : null, this.contentDecoder = !1, this.state = "finished";
310
+ }
311
+ async finalizeChildNodes() {
312
+ for (; this.finalizedChildCount < this.childNodes.length; )
313
+ await this.childNodes[this.finalizedChildCount++].finalize();
314
+ }
315
+ // Strip RFC 822 comments (parenthesized text) from structured header values.
316
+ //
317
+ // Inside an unquoted parameter value a parenthesis that continues the current token is
318
+ // content, because `filename=Invoice(1).pdf` is a filename and not a token followed by
319
+ // a comment, and deleting the parens silently renames the attachment.
320
+ stripComments(u) {
321
+ let r = "", t = 0, i = !1, n = !1, e = -1, a = !1;
322
+ const o = () => !a || !r.length || /[ \t]$/.test(r);
323
+ for (let c = 0; c < u.length; c++) {
324
+ const l = u.charAt(c);
325
+ if (i) {
326
+ t === 0 && (r += l), i = !1;
327
+ continue;
328
+ }
329
+ if (l === "\\") {
330
+ i = !0, t === 0 && (r += l);
331
+ continue;
332
+ }
333
+ if (l === '"' && t === 0) {
334
+ n = !n, r += l;
335
+ continue;
336
+ }
337
+ if (!n) {
338
+ if (l === "(" && o()) {
339
+ t === 0 && (e = c), t++;
340
+ continue;
341
+ }
342
+ if (l === ")" && t > 0) {
343
+ t--;
344
+ continue;
345
+ }
346
+ t === 0 && (l === "=" ? a = !0 : l === ";" && (a = !1));
347
+ }
348
+ t === 0 && (r += l);
349
+ }
350
+ return t === 0 || u.indexOf(";", e) < 0 ? r : u;
351
+ }
352
+ parseStructuredHeader(u) {
353
+ u = this.stripComments(u);
354
+ let r = {
355
+ value: !1,
356
+ params: {}
357
+ }, t = !1, i = "", n = "value", e = "", a = !1, o = !1, c = !1, l;
358
+ const p = (h) => {
359
+ i.length && (i += e), e = "", i += h;
360
+ }, f = () => {
361
+ const h = i;
362
+ return i = "", e = "", a = !1, h;
363
+ }, b = (h, d) => {
364
+ Object.prototype.hasOwnProperty.call(r.params, h) || (r.params[h] = d);
365
+ }, A = () => {
366
+ const h = f();
367
+ t === !1 ? r.value = h : b(t, h);
368
+ }, m = () => {
369
+ const h = f().trim();
370
+ h && b(h.toLowerCase(), "");
371
+ };
372
+ for (let h = 0, d = u.length; h < d; h++)
373
+ switch (l = u.charAt(h), n) {
374
+ case "key":
375
+ if (l === "=") {
376
+ t = f().trim().toLowerCase(), n = "value";
377
+ break;
378
+ }
379
+ if (l === ";") {
380
+ m();
381
+ break;
382
+ }
383
+ i += l;
384
+ break;
385
+ case "value":
386
+ if (c)
387
+ p(l);
388
+ else if (o && l === "\\") {
389
+ c = !0;
390
+ continue;
391
+ } else o && l === o ? (o = !1, a = !0) : !o && l === '"' ? (o = l, i.length && (i += e), e = "") : !o && l === ";" ? (A(), n = "key") : !o && (l === " " || l === " ") ? e += l : a || p(l);
392
+ c = !1;
393
+ break;
394
+ }
395
+ return n === "value" ? A() : m(), r.value && (r.value = r.value.toLowerCase()), au(r), r;
396
+ }
397
+ decodeFlowedText(u, r) {
398
+ return u.split(/\r?\n/).map((t) => t.charAt(0) === " " ? t.slice(1) : t).reduce((t, i) => t.endsWith(" ") && t !== "-- " && !t.endsWith(`
399
+ -- `) ? r ? t.slice(0, -1) + i : t + i : t + `
400
+ ` + i);
401
+ }
402
+ getTextContent() {
403
+ if (!this.content)
404
+ return "";
405
+ let u = N(this.contentType.parsed.params.charset).decode(this.content);
406
+ return /^flowed$/i.test(this.contentType.parsed.params.format) && (u = this.decodeFlowedText(u, /^yes$/i.test(this.contentType.parsed.params.delsp))), u;
407
+ }
408
+ processHeaders() {
409
+ let u = [];
410
+ for (let t of this.headerLines)
411
+ u.length && /^[ \t]/.test(t) ? u[u.length - 1].push(t) : u.push([t]);
412
+ this.rawHeaderLines = [];
413
+ let r = /* @__PURE__ */ new Set();
414
+ for (let t of u) {
415
+ let i = t.join(`
416
+ `), n = i.indexOf(":"), e = k(n < 0 ? i : i.substr(0, n));
417
+ this.rawHeaderLines.push({
418
+ key: e.toLowerCase(),
419
+ line: i
420
+ });
421
+ let a = t.join("");
422
+ n = a.indexOf(":");
423
+ let o = k(n < 0 ? a : a.substr(0, n)), c = n < 0 ? "" : k(a.substr(n + 1).replace(/[\r\n]+/g, " "));
424
+ this.headers.push({ key: o.toLowerCase(), originalKey: o, value: c });
425
+ const l = o.toLowerCase();
426
+ if (pu.has(l) && !r.has(l))
427
+ switch (r.add(l), l) {
428
+ case "content-type":
429
+ this.contentType = { value: c, parsed: {} };
430
+ break;
431
+ case "content-transfer-encoding":
432
+ this.contentTransferEncoding = { value: c, parsed: {} };
433
+ break;
434
+ case "content-disposition":
435
+ this.contentDisposition = { value: c, parsed: {} };
436
+ break;
437
+ case "content-id":
438
+ this.contentId = c;
439
+ break;
440
+ case "content-description":
441
+ this.contentDescription = c;
442
+ break;
443
+ }
444
+ }
445
+ this.contentType.parsed = this.parseStructuredHeader(this.contentType.value), this.contentType.multipart = /^multipart\//i.test(this.contentType.parsed.value) ? this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf("/") + 1) : !1, this.contentType.multipart && this.contentType.parsed.params.boundary && this.postalMime.boundaries.push({
446
+ value: E.encode(this.contentType.parsed.params.boundary),
447
+ node: this
448
+ }), this.contentDisposition.parsed = this.parseStructuredHeader(this.contentDisposition.value), this.contentTransferEncoding.encoding = (this.stripComments(this.contentTransferEncoding.value).toLowerCase().match(/[\w-]+/) || [""])[0], this.setupContentDecoder(this.contentTransferEncoding.encoding);
449
+ }
450
+ feed(u) {
451
+ switch (this.state) {
452
+ case "header":
453
+ if (!u.length)
454
+ return this.state = "body", this.processHeaders();
455
+ if (this.postalMime.headerSize += u.length, this.postalMime.headerSize > this.options.maxHeadersSize)
456
+ throw new Error(`Maximum header size of ${this.options.maxHeadersSize} bytes exceeded`);
457
+ this.headerLines.push(cu.decode(u));
458
+ break;
459
+ case "body":
460
+ this.contentDecoder.update(u);
461
+ }
462
+ }
463
+ }
464
+ const M = {
465
+ "&AElig": "Æ",
466
+ "&AElig;": "Æ",
467
+ "&AMP": "&",
468
+ "&AMP;": "&",
469
+ "&Aacute": "Á",
470
+ "&Aacute;": "Á",
471
+ "&Abreve;": "Ă",
472
+ "&Acirc": "Â",
473
+ "&Acirc;": "Â",
474
+ "&Acy;": "А",
475
+ "&Afr;": "𝔄",
476
+ "&Agrave": "À",
477
+ "&Agrave;": "À",
478
+ "&Alpha;": "Α",
479
+ "&Amacr;": "Ā",
480
+ "&And;": "⩓",
481
+ "&Aogon;": "Ą",
482
+ "&Aopf;": "𝔸",
483
+ "&ApplyFunction;": "⁡",
484
+ "&Aring": "Å",
485
+ "&Aring;": "Å",
486
+ "&Ascr;": "𝒜",
487
+ "&Assign;": "≔",
488
+ "&Atilde": "Ã",
489
+ "&Atilde;": "Ã",
490
+ "&Auml": "Ä",
491
+ "&Auml;": "Ä",
492
+ "&Backslash;": "∖",
493
+ "&Barv;": "⫧",
494
+ "&Barwed;": "⌆",
495
+ "&Bcy;": "Б",
496
+ "&Because;": "∵",
497
+ "&Bernoullis;": "ℬ",
498
+ "&Beta;": "Β",
499
+ "&Bfr;": "𝔅",
500
+ "&Bopf;": "𝔹",
501
+ "&Breve;": "˘",
502
+ "&Bscr;": "ℬ",
503
+ "&Bumpeq;": "≎",
504
+ "&CHcy;": "Ч",
505
+ "&COPY": "©",
506
+ "&COPY;": "©",
507
+ "&Cacute;": "Ć",
508
+ "&Cap;": "⋒",
509
+ "&CapitalDifferentialD;": "ⅅ",
510
+ "&Cayleys;": "ℭ",
511
+ "&Ccaron;": "Č",
512
+ "&Ccedil": "Ç",
513
+ "&Ccedil;": "Ç",
514
+ "&Ccirc;": "Ĉ",
515
+ "&Cconint;": "∰",
516
+ "&Cdot;": "Ċ",
517
+ "&Cedilla;": "¸",
518
+ "&CenterDot;": "·",
519
+ "&Cfr;": "ℭ",
520
+ "&Chi;": "Χ",
521
+ "&CircleDot;": "⊙",
522
+ "&CircleMinus;": "⊖",
523
+ "&CirclePlus;": "⊕",
524
+ "&CircleTimes;": "⊗",
525
+ "&ClockwiseContourIntegral;": "∲",
526
+ "&CloseCurlyDoubleQuote;": "”",
527
+ "&CloseCurlyQuote;": "’",
528
+ "&Colon;": "∷",
529
+ "&Colone;": "⩴",
530
+ "&Congruent;": "≡",
531
+ "&Conint;": "∯",
532
+ "&ContourIntegral;": "∮",
533
+ "&Copf;": "ℂ",
534
+ "&Coproduct;": "∐",
535
+ "&CounterClockwiseContourIntegral;": "∳",
536
+ "&Cross;": "⨯",
537
+ "&Cscr;": "𝒞",
538
+ "&Cup;": "⋓",
539
+ "&CupCap;": "≍",
540
+ "&DD;": "ⅅ",
541
+ "&DDotrahd;": "⤑",
542
+ "&DJcy;": "Ђ",
543
+ "&DScy;": "Ѕ",
544
+ "&DZcy;": "Џ",
545
+ "&Dagger;": "‡",
546
+ "&Darr;": "↡",
547
+ "&Dashv;": "⫤",
548
+ "&Dcaron;": "Ď",
549
+ "&Dcy;": "Д",
550
+ "&Del;": "∇",
551
+ "&Delta;": "Δ",
552
+ "&Dfr;": "𝔇",
553
+ "&DiacriticalAcute;": "´",
554
+ "&DiacriticalDot;": "˙",
555
+ "&DiacriticalDoubleAcute;": "˝",
556
+ "&DiacriticalGrave;": "`",
557
+ "&DiacriticalTilde;": "˜",
558
+ "&Diamond;": "⋄",
559
+ "&DifferentialD;": "ⅆ",
560
+ "&Dopf;": "𝔻",
561
+ "&Dot;": "¨",
562
+ "&DotDot;": "⃜",
563
+ "&DotEqual;": "≐",
564
+ "&DoubleContourIntegral;": "∯",
565
+ "&DoubleDot;": "¨",
566
+ "&DoubleDownArrow;": "⇓",
567
+ "&DoubleLeftArrow;": "⇐",
568
+ "&DoubleLeftRightArrow;": "⇔",
569
+ "&DoubleLeftTee;": "⫤",
570
+ "&DoubleLongLeftArrow;": "⟸",
571
+ "&DoubleLongLeftRightArrow;": "⟺",
572
+ "&DoubleLongRightArrow;": "⟹",
573
+ "&DoubleRightArrow;": "⇒",
574
+ "&DoubleRightTee;": "⊨",
575
+ "&DoubleUpArrow;": "⇑",
576
+ "&DoubleUpDownArrow;": "⇕",
577
+ "&DoubleVerticalBar;": "∥",
578
+ "&DownArrow;": "↓",
579
+ "&DownArrowBar;": "⤓",
580
+ "&DownArrowUpArrow;": "⇵",
581
+ "&DownBreve;": "̑",
582
+ "&DownLeftRightVector;": "⥐",
583
+ "&DownLeftTeeVector;": "⥞",
584
+ "&DownLeftVector;": "↽",
585
+ "&DownLeftVectorBar;": "⥖",
586
+ "&DownRightTeeVector;": "⥟",
587
+ "&DownRightVector;": "⇁",
588
+ "&DownRightVectorBar;": "⥗",
589
+ "&DownTee;": "⊤",
590
+ "&DownTeeArrow;": "↧",
591
+ "&Downarrow;": "⇓",
592
+ "&Dscr;": "𝒟",
593
+ "&Dstrok;": "Đ",
594
+ "&ENG;": "Ŋ",
595
+ "&ETH": "Ð",
596
+ "&ETH;": "Ð",
597
+ "&Eacute": "É",
598
+ "&Eacute;": "É",
599
+ "&Ecaron;": "Ě",
600
+ "&Ecirc": "Ê",
601
+ "&Ecirc;": "Ê",
602
+ "&Ecy;": "Э",
603
+ "&Edot;": "Ė",
604
+ "&Efr;": "𝔈",
605
+ "&Egrave": "È",
606
+ "&Egrave;": "È",
607
+ "&Element;": "∈",
608
+ "&Emacr;": "Ē",
609
+ "&EmptySmallSquare;": "◻",
610
+ "&EmptyVerySmallSquare;": "▫",
611
+ "&Eogon;": "Ę",
612
+ "&Eopf;": "𝔼",
613
+ "&Epsilon;": "Ε",
614
+ "&Equal;": "⩵",
615
+ "&EqualTilde;": "≂",
616
+ "&Equilibrium;": "⇌",
617
+ "&Escr;": "ℰ",
618
+ "&Esim;": "⩳",
619
+ "&Eta;": "Η",
620
+ "&Euml": "Ë",
621
+ "&Euml;": "Ë",
622
+ "&Exists;": "∃",
623
+ "&ExponentialE;": "ⅇ",
624
+ "&Fcy;": "Ф",
625
+ "&Ffr;": "𝔉",
626
+ "&FilledSmallSquare;": "◼",
627
+ "&FilledVerySmallSquare;": "▪",
628
+ "&Fopf;": "𝔽",
629
+ "&ForAll;": "∀",
630
+ "&Fouriertrf;": "ℱ",
631
+ "&Fscr;": "ℱ",
632
+ "&GJcy;": "Ѓ",
633
+ "&GT": ">",
634
+ "&GT;": ">",
635
+ "&Gamma;": "Γ",
636
+ "&Gammad;": "Ϝ",
637
+ "&Gbreve;": "Ğ",
638
+ "&Gcedil;": "Ģ",
639
+ "&Gcirc;": "Ĝ",
640
+ "&Gcy;": "Г",
641
+ "&Gdot;": "Ġ",
642
+ "&Gfr;": "𝔊",
643
+ "&Gg;": "⋙",
644
+ "&Gopf;": "𝔾",
645
+ "&GreaterEqual;": "≥",
646
+ "&GreaterEqualLess;": "⋛",
647
+ "&GreaterFullEqual;": "≧",
648
+ "&GreaterGreater;": "⪢",
649
+ "&GreaterLess;": "≷",
650
+ "&GreaterSlantEqual;": "⩾",
651
+ "&GreaterTilde;": "≳",
652
+ "&Gscr;": "𝒢",
653
+ "&Gt;": "≫",
654
+ "&HARDcy;": "Ъ",
655
+ "&Hacek;": "ˇ",
656
+ "&Hat;": "^",
657
+ "&Hcirc;": "Ĥ",
658
+ "&Hfr;": "ℌ",
659
+ "&HilbertSpace;": "ℋ",
660
+ "&Hopf;": "ℍ",
661
+ "&HorizontalLine;": "─",
662
+ "&Hscr;": "ℋ",
663
+ "&Hstrok;": "Ħ",
664
+ "&HumpDownHump;": "≎",
665
+ "&HumpEqual;": "≏",
666
+ "&IEcy;": "Е",
667
+ "&IJlig;": "IJ",
668
+ "&IOcy;": "Ё",
669
+ "&Iacute": "Í",
670
+ "&Iacute;": "Í",
671
+ "&Icirc": "Î",
672
+ "&Icirc;": "Î",
673
+ "&Icy;": "И",
674
+ "&Idot;": "İ",
675
+ "&Ifr;": "ℑ",
676
+ "&Igrave": "Ì",
677
+ "&Igrave;": "Ì",
678
+ "&Im;": "ℑ",
679
+ "&Imacr;": "Ī",
680
+ "&ImaginaryI;": "ⅈ",
681
+ "&Implies;": "⇒",
682
+ "&Int;": "∬",
683
+ "&Integral;": "∫",
684
+ "&Intersection;": "⋂",
685
+ "&InvisibleComma;": "⁣",
686
+ "&InvisibleTimes;": "⁢",
687
+ "&Iogon;": "Į",
688
+ "&Iopf;": "𝕀",
689
+ "&Iota;": "Ι",
690
+ "&Iscr;": "ℐ",
691
+ "&Itilde;": "Ĩ",
692
+ "&Iukcy;": "І",
693
+ "&Iuml": "Ï",
694
+ "&Iuml;": "Ï",
695
+ "&Jcirc;": "Ĵ",
696
+ "&Jcy;": "Й",
697
+ "&Jfr;": "𝔍",
698
+ "&Jopf;": "𝕁",
699
+ "&Jscr;": "𝒥",
700
+ "&Jsercy;": "Ј",
701
+ "&Jukcy;": "Є",
702
+ "&KHcy;": "Х",
703
+ "&KJcy;": "Ќ",
704
+ "&Kappa;": "Κ",
705
+ "&Kcedil;": "Ķ",
706
+ "&Kcy;": "К",
707
+ "&Kfr;": "𝔎",
708
+ "&Kopf;": "𝕂",
709
+ "&Kscr;": "𝒦",
710
+ "&LJcy;": "Љ",
711
+ "&LT": "<",
712
+ "&LT;": "<",
713
+ "&Lacute;": "Ĺ",
714
+ "&Lambda;": "Λ",
715
+ "&Lang;": "⟪",
716
+ "&Laplacetrf;": "ℒ",
717
+ "&Larr;": "↞",
718
+ "&Lcaron;": "Ľ",
719
+ "&Lcedil;": "Ļ",
720
+ "&Lcy;": "Л",
721
+ "&LeftAngleBracket;": "⟨",
722
+ "&LeftArrow;": "←",
723
+ "&LeftArrowBar;": "⇤",
724
+ "&LeftArrowRightArrow;": "⇆",
725
+ "&LeftCeiling;": "⌈",
726
+ "&LeftDoubleBracket;": "⟦",
727
+ "&LeftDownTeeVector;": "⥡",
728
+ "&LeftDownVector;": "⇃",
729
+ "&LeftDownVectorBar;": "⥙",
730
+ "&LeftFloor;": "⌊",
731
+ "&LeftRightArrow;": "↔",
732
+ "&LeftRightVector;": "⥎",
733
+ "&LeftTee;": "⊣",
734
+ "&LeftTeeArrow;": "↤",
735
+ "&LeftTeeVector;": "⥚",
736
+ "&LeftTriangle;": "⊲",
737
+ "&LeftTriangleBar;": "⧏",
738
+ "&LeftTriangleEqual;": "⊴",
739
+ "&LeftUpDownVector;": "⥑",
740
+ "&LeftUpTeeVector;": "⥠",
741
+ "&LeftUpVector;": "↿",
742
+ "&LeftUpVectorBar;": "⥘",
743
+ "&LeftVector;": "↼",
744
+ "&LeftVectorBar;": "⥒",
745
+ "&Leftarrow;": "⇐",
746
+ "&Leftrightarrow;": "⇔",
747
+ "&LessEqualGreater;": "⋚",
748
+ "&LessFullEqual;": "≦",
749
+ "&LessGreater;": "≶",
750
+ "&LessLess;": "⪡",
751
+ "&LessSlantEqual;": "⩽",
752
+ "&LessTilde;": "≲",
753
+ "&Lfr;": "𝔏",
754
+ "&Ll;": "⋘",
755
+ "&Lleftarrow;": "⇚",
756
+ "&Lmidot;": "Ŀ",
757
+ "&LongLeftArrow;": "⟵",
758
+ "&LongLeftRightArrow;": "⟷",
759
+ "&LongRightArrow;": "⟶",
760
+ "&Longleftarrow;": "⟸",
761
+ "&Longleftrightarrow;": "⟺",
762
+ "&Longrightarrow;": "⟹",
763
+ "&Lopf;": "𝕃",
764
+ "&LowerLeftArrow;": "↙",
765
+ "&LowerRightArrow;": "↘",
766
+ "&Lscr;": "ℒ",
767
+ "&Lsh;": "↰",
768
+ "&Lstrok;": "Ł",
769
+ "&Lt;": "≪",
770
+ "&Map;": "⤅",
771
+ "&Mcy;": "М",
772
+ "&MediumSpace;": " ",
773
+ "&Mellintrf;": "ℳ",
774
+ "&Mfr;": "𝔐",
775
+ "&MinusPlus;": "∓",
776
+ "&Mopf;": "𝕄",
777
+ "&Mscr;": "ℳ",
778
+ "&Mu;": "Μ",
779
+ "&NJcy;": "Њ",
780
+ "&Nacute;": "Ń",
781
+ "&Ncaron;": "Ň",
782
+ "&Ncedil;": "Ņ",
783
+ "&Ncy;": "Н",
784
+ "&NegativeMediumSpace;": "​",
785
+ "&NegativeThickSpace;": "​",
786
+ "&NegativeThinSpace;": "​",
787
+ "&NegativeVeryThinSpace;": "​",
788
+ "&NestedGreaterGreater;": "≫",
789
+ "&NestedLessLess;": "≪",
790
+ "&NewLine;": `
791
+ `,
792
+ "&Nfr;": "𝔑",
793
+ "&NoBreak;": "⁠",
794
+ "&NonBreakingSpace;": " ",
795
+ "&Nopf;": "ℕ",
796
+ "&Not;": "⫬",
797
+ "&NotCongruent;": "≢",
798
+ "&NotCupCap;": "≭",
799
+ "&NotDoubleVerticalBar;": "∦",
800
+ "&NotElement;": "∉",
801
+ "&NotEqual;": "≠",
802
+ "&NotEqualTilde;": "≂̸",
803
+ "&NotExists;": "∄",
804
+ "&NotGreater;": "≯",
805
+ "&NotGreaterEqual;": "≱",
806
+ "&NotGreaterFullEqual;": "≧̸",
807
+ "&NotGreaterGreater;": "≫̸",
808
+ "&NotGreaterLess;": "≹",
809
+ "&NotGreaterSlantEqual;": "⩾̸",
810
+ "&NotGreaterTilde;": "≵",
811
+ "&NotHumpDownHump;": "≎̸",
812
+ "&NotHumpEqual;": "≏̸",
813
+ "&NotLeftTriangle;": "⋪",
814
+ "&NotLeftTriangleBar;": "⧏̸",
815
+ "&NotLeftTriangleEqual;": "⋬",
816
+ "&NotLess;": "≮",
817
+ "&NotLessEqual;": "≰",
818
+ "&NotLessGreater;": "≸",
819
+ "&NotLessLess;": "≪̸",
820
+ "&NotLessSlantEqual;": "⩽̸",
821
+ "&NotLessTilde;": "≴",
822
+ "&NotNestedGreaterGreater;": "⪢̸",
823
+ "&NotNestedLessLess;": "⪡̸",
824
+ "&NotPrecedes;": "⊀",
825
+ "&NotPrecedesEqual;": "⪯̸",
826
+ "&NotPrecedesSlantEqual;": "⋠",
827
+ "&NotReverseElement;": "∌",
828
+ "&NotRightTriangle;": "⋫",
829
+ "&NotRightTriangleBar;": "⧐̸",
830
+ "&NotRightTriangleEqual;": "⋭",
831
+ "&NotSquareSubset;": "⊏̸",
832
+ "&NotSquareSubsetEqual;": "⋢",
833
+ "&NotSquareSuperset;": "⊐̸",
834
+ "&NotSquareSupersetEqual;": "⋣",
835
+ "&NotSubset;": "⊂⃒",
836
+ "&NotSubsetEqual;": "⊈",
837
+ "&NotSucceeds;": "⊁",
838
+ "&NotSucceedsEqual;": "⪰̸",
839
+ "&NotSucceedsSlantEqual;": "⋡",
840
+ "&NotSucceedsTilde;": "≿̸",
841
+ "&NotSuperset;": "⊃⃒",
842
+ "&NotSupersetEqual;": "⊉",
843
+ "&NotTilde;": "≁",
844
+ "&NotTildeEqual;": "≄",
845
+ "&NotTildeFullEqual;": "≇",
846
+ "&NotTildeTilde;": "≉",
847
+ "&NotVerticalBar;": "∤",
848
+ "&Nscr;": "𝒩",
849
+ "&Ntilde": "Ñ",
850
+ "&Ntilde;": "Ñ",
851
+ "&Nu;": "Ν",
852
+ "&OElig;": "Œ",
853
+ "&Oacute": "Ó",
854
+ "&Oacute;": "Ó",
855
+ "&Ocirc": "Ô",
856
+ "&Ocirc;": "Ô",
857
+ "&Ocy;": "О",
858
+ "&Odblac;": "Ő",
859
+ "&Ofr;": "𝔒",
860
+ "&Ograve": "Ò",
861
+ "&Ograve;": "Ò",
862
+ "&Omacr;": "Ō",
863
+ "&Omega;": "Ω",
864
+ "&Omicron;": "Ο",
865
+ "&Oopf;": "𝕆",
866
+ "&OpenCurlyDoubleQuote;": "“",
867
+ "&OpenCurlyQuote;": "‘",
868
+ "&Or;": "⩔",
869
+ "&Oscr;": "𝒪",
870
+ "&Oslash": "Ø",
871
+ "&Oslash;": "Ø",
872
+ "&Otilde": "Õ",
873
+ "&Otilde;": "Õ",
874
+ "&Otimes;": "⨷",
875
+ "&Ouml": "Ö",
876
+ "&Ouml;": "Ö",
877
+ "&OverBar;": "‾",
878
+ "&OverBrace;": "⏞",
879
+ "&OverBracket;": "⎴",
880
+ "&OverParenthesis;": "⏜",
881
+ "&PartialD;": "∂",
882
+ "&Pcy;": "П",
883
+ "&Pfr;": "𝔓",
884
+ "&Phi;": "Φ",
885
+ "&Pi;": "Π",
886
+ "&PlusMinus;": "±",
887
+ "&Poincareplane;": "ℌ",
888
+ "&Popf;": "ℙ",
889
+ "&Pr;": "⪻",
890
+ "&Precedes;": "≺",
891
+ "&PrecedesEqual;": "⪯",
892
+ "&PrecedesSlantEqual;": "≼",
893
+ "&PrecedesTilde;": "≾",
894
+ "&Prime;": "″",
895
+ "&Product;": "∏",
896
+ "&Proportion;": "∷",
897
+ "&Proportional;": "∝",
898
+ "&Pscr;": "𝒫",
899
+ "&Psi;": "Ψ",
900
+ "&QUOT": '"',
901
+ "&QUOT;": '"',
902
+ "&Qfr;": "𝔔",
903
+ "&Qopf;": "ℚ",
904
+ "&Qscr;": "𝒬",
905
+ "&RBarr;": "⤐",
906
+ "&REG": "®",
907
+ "&REG;": "®",
908
+ "&Racute;": "Ŕ",
909
+ "&Rang;": "⟫",
910
+ "&Rarr;": "↠",
911
+ "&Rarrtl;": "⤖",
912
+ "&Rcaron;": "Ř",
913
+ "&Rcedil;": "Ŗ",
914
+ "&Rcy;": "Р",
915
+ "&Re;": "ℜ",
916
+ "&ReverseElement;": "∋",
917
+ "&ReverseEquilibrium;": "⇋",
918
+ "&ReverseUpEquilibrium;": "⥯",
919
+ "&Rfr;": "ℜ",
920
+ "&Rho;": "Ρ",
921
+ "&RightAngleBracket;": "⟩",
922
+ "&RightArrow;": "→",
923
+ "&RightArrowBar;": "⇥",
924
+ "&RightArrowLeftArrow;": "⇄",
925
+ "&RightCeiling;": "⌉",
926
+ "&RightDoubleBracket;": "⟧",
927
+ "&RightDownTeeVector;": "⥝",
928
+ "&RightDownVector;": "⇂",
929
+ "&RightDownVectorBar;": "⥕",
930
+ "&RightFloor;": "⌋",
931
+ "&RightTee;": "⊢",
932
+ "&RightTeeArrow;": "↦",
933
+ "&RightTeeVector;": "⥛",
934
+ "&RightTriangle;": "⊳",
935
+ "&RightTriangleBar;": "⧐",
936
+ "&RightTriangleEqual;": "⊵",
937
+ "&RightUpDownVector;": "⥏",
938
+ "&RightUpTeeVector;": "⥜",
939
+ "&RightUpVector;": "↾",
940
+ "&RightUpVectorBar;": "⥔",
941
+ "&RightVector;": "⇀",
942
+ "&RightVectorBar;": "⥓",
943
+ "&Rightarrow;": "⇒",
944
+ "&Ropf;": "ℝ",
945
+ "&RoundImplies;": "⥰",
946
+ "&Rrightarrow;": "⇛",
947
+ "&Rscr;": "ℛ",
948
+ "&Rsh;": "↱",
949
+ "&RuleDelayed;": "⧴",
950
+ "&SHCHcy;": "Щ",
951
+ "&SHcy;": "Ш",
952
+ "&SOFTcy;": "Ь",
953
+ "&Sacute;": "Ś",
954
+ "&Sc;": "⪼",
955
+ "&Scaron;": "Š",
956
+ "&Scedil;": "Ş",
957
+ "&Scirc;": "Ŝ",
958
+ "&Scy;": "С",
959
+ "&Sfr;": "𝔖",
960
+ "&ShortDownArrow;": "↓",
961
+ "&ShortLeftArrow;": "←",
962
+ "&ShortRightArrow;": "→",
963
+ "&ShortUpArrow;": "↑",
964
+ "&Sigma;": "Σ",
965
+ "&SmallCircle;": "∘",
966
+ "&Sopf;": "𝕊",
967
+ "&Sqrt;": "√",
968
+ "&Square;": "□",
969
+ "&SquareIntersection;": "⊓",
970
+ "&SquareSubset;": "⊏",
971
+ "&SquareSubsetEqual;": "⊑",
972
+ "&SquareSuperset;": "⊐",
973
+ "&SquareSupersetEqual;": "⊒",
974
+ "&SquareUnion;": "⊔",
975
+ "&Sscr;": "𝒮",
976
+ "&Star;": "⋆",
977
+ "&Sub;": "⋐",
978
+ "&Subset;": "⋐",
979
+ "&SubsetEqual;": "⊆",
980
+ "&Succeeds;": "≻",
981
+ "&SucceedsEqual;": "⪰",
982
+ "&SucceedsSlantEqual;": "≽",
983
+ "&SucceedsTilde;": "≿",
984
+ "&SuchThat;": "∋",
985
+ "&Sum;": "∑",
986
+ "&Sup;": "⋑",
987
+ "&Superset;": "⊃",
988
+ "&SupersetEqual;": "⊇",
989
+ "&Supset;": "⋑",
990
+ "&THORN": "Þ",
991
+ "&THORN;": "Þ",
992
+ "&TRADE;": "™",
993
+ "&TSHcy;": "Ћ",
994
+ "&TScy;": "Ц",
995
+ "&Tab;": " ",
996
+ "&Tau;": "Τ",
997
+ "&Tcaron;": "Ť",
998
+ "&Tcedil;": "Ţ",
999
+ "&Tcy;": "Т",
1000
+ "&Tfr;": "𝔗",
1001
+ "&Therefore;": "∴",
1002
+ "&Theta;": "Θ",
1003
+ "&ThickSpace;": "  ",
1004
+ "&ThinSpace;": " ",
1005
+ "&Tilde;": "∼",
1006
+ "&TildeEqual;": "≃",
1007
+ "&TildeFullEqual;": "≅",
1008
+ "&TildeTilde;": "≈",
1009
+ "&Topf;": "𝕋",
1010
+ "&TripleDot;": "⃛",
1011
+ "&Tscr;": "𝒯",
1012
+ "&Tstrok;": "Ŧ",
1013
+ "&Uacute": "Ú",
1014
+ "&Uacute;": "Ú",
1015
+ "&Uarr;": "↟",
1016
+ "&Uarrocir;": "⥉",
1017
+ "&Ubrcy;": "Ў",
1018
+ "&Ubreve;": "Ŭ",
1019
+ "&Ucirc": "Û",
1020
+ "&Ucirc;": "Û",
1021
+ "&Ucy;": "У",
1022
+ "&Udblac;": "Ű",
1023
+ "&Ufr;": "𝔘",
1024
+ "&Ugrave": "Ù",
1025
+ "&Ugrave;": "Ù",
1026
+ "&Umacr;": "Ū",
1027
+ "&UnderBar;": "_",
1028
+ "&UnderBrace;": "⏟",
1029
+ "&UnderBracket;": "⎵",
1030
+ "&UnderParenthesis;": "⏝",
1031
+ "&Union;": "⋃",
1032
+ "&UnionPlus;": "⊎",
1033
+ "&Uogon;": "Ų",
1034
+ "&Uopf;": "𝕌",
1035
+ "&UpArrow;": "↑",
1036
+ "&UpArrowBar;": "⤒",
1037
+ "&UpArrowDownArrow;": "⇅",
1038
+ "&UpDownArrow;": "↕",
1039
+ "&UpEquilibrium;": "⥮",
1040
+ "&UpTee;": "⊥",
1041
+ "&UpTeeArrow;": "↥",
1042
+ "&Uparrow;": "⇑",
1043
+ "&Updownarrow;": "⇕",
1044
+ "&UpperLeftArrow;": "↖",
1045
+ "&UpperRightArrow;": "↗",
1046
+ "&Upsi;": "ϒ",
1047
+ "&Upsilon;": "Υ",
1048
+ "&Uring;": "Ů",
1049
+ "&Uscr;": "𝒰",
1050
+ "&Utilde;": "Ũ",
1051
+ "&Uuml": "Ü",
1052
+ "&Uuml;": "Ü",
1053
+ "&VDash;": "⊫",
1054
+ "&Vbar;": "⫫",
1055
+ "&Vcy;": "В",
1056
+ "&Vdash;": "⊩",
1057
+ "&Vdashl;": "⫦",
1058
+ "&Vee;": "⋁",
1059
+ "&Verbar;": "‖",
1060
+ "&Vert;": "‖",
1061
+ "&VerticalBar;": "∣",
1062
+ "&VerticalLine;": "|",
1063
+ "&VerticalSeparator;": "❘",
1064
+ "&VerticalTilde;": "≀",
1065
+ "&VeryThinSpace;": " ",
1066
+ "&Vfr;": "𝔙",
1067
+ "&Vopf;": "𝕍",
1068
+ "&Vscr;": "𝒱",
1069
+ "&Vvdash;": "⊪",
1070
+ "&Wcirc;": "Ŵ",
1071
+ "&Wedge;": "⋀",
1072
+ "&Wfr;": "𝔚",
1073
+ "&Wopf;": "𝕎",
1074
+ "&Wscr;": "𝒲",
1075
+ "&Xfr;": "𝔛",
1076
+ "&Xi;": "Ξ",
1077
+ "&Xopf;": "𝕏",
1078
+ "&Xscr;": "𝒳",
1079
+ "&YAcy;": "Я",
1080
+ "&YIcy;": "Ї",
1081
+ "&YUcy;": "Ю",
1082
+ "&Yacute": "Ý",
1083
+ "&Yacute;": "Ý",
1084
+ "&Ycirc;": "Ŷ",
1085
+ "&Ycy;": "Ы",
1086
+ "&Yfr;": "𝔜",
1087
+ "&Yopf;": "𝕐",
1088
+ "&Yscr;": "𝒴",
1089
+ "&Yuml;": "Ÿ",
1090
+ "&ZHcy;": "Ж",
1091
+ "&Zacute;": "Ź",
1092
+ "&Zcaron;": "Ž",
1093
+ "&Zcy;": "З",
1094
+ "&Zdot;": "Ż",
1095
+ "&ZeroWidthSpace;": "​",
1096
+ "&Zeta;": "Ζ",
1097
+ "&Zfr;": "ℨ",
1098
+ "&Zopf;": "ℤ",
1099
+ "&Zscr;": "𝒵",
1100
+ "&aacute": "á",
1101
+ "&aacute;": "á",
1102
+ "&abreve;": "ă",
1103
+ "&ac;": "∾",
1104
+ "&acE;": "∾̳",
1105
+ "&acd;": "∿",
1106
+ "&acirc": "â",
1107
+ "&acirc;": "â",
1108
+ "&acute": "´",
1109
+ "&acute;": "´",
1110
+ "&acy;": "а",
1111
+ "&aelig": "æ",
1112
+ "&aelig;": "æ",
1113
+ "&af;": "⁡",
1114
+ "&afr;": "𝔞",
1115
+ "&agrave": "à",
1116
+ "&agrave;": "à",
1117
+ "&alefsym;": "ℵ",
1118
+ "&aleph;": "ℵ",
1119
+ "&alpha;": "α",
1120
+ "&amacr;": "ā",
1121
+ "&amalg;": "⨿",
1122
+ "&amp": "&",
1123
+ "&amp;": "&",
1124
+ "&and;": "∧",
1125
+ "&andand;": "⩕",
1126
+ "&andd;": "⩜",
1127
+ "&andslope;": "⩘",
1128
+ "&andv;": "⩚",
1129
+ "&ang;": "∠",
1130
+ "&ange;": "⦤",
1131
+ "&angle;": "∠",
1132
+ "&angmsd;": "∡",
1133
+ "&angmsdaa;": "⦨",
1134
+ "&angmsdab;": "⦩",
1135
+ "&angmsdac;": "⦪",
1136
+ "&angmsdad;": "⦫",
1137
+ "&angmsdae;": "⦬",
1138
+ "&angmsdaf;": "⦭",
1139
+ "&angmsdag;": "⦮",
1140
+ "&angmsdah;": "⦯",
1141
+ "&angrt;": "∟",
1142
+ "&angrtvb;": "⊾",
1143
+ "&angrtvbd;": "⦝",
1144
+ "&angsph;": "∢",
1145
+ "&angst;": "Å",
1146
+ "&angzarr;": "⍼",
1147
+ "&aogon;": "ą",
1148
+ "&aopf;": "𝕒",
1149
+ "&ap;": "≈",
1150
+ "&apE;": "⩰",
1151
+ "&apacir;": "⩯",
1152
+ "&ape;": "≊",
1153
+ "&apid;": "≋",
1154
+ "&apos;": "'",
1155
+ "&approx;": "≈",
1156
+ "&approxeq;": "≊",
1157
+ "&aring": "å",
1158
+ "&aring;": "å",
1159
+ "&ascr;": "𝒶",
1160
+ "&ast;": "*",
1161
+ "&asymp;": "≈",
1162
+ "&asympeq;": "≍",
1163
+ "&atilde": "ã",
1164
+ "&atilde;": "ã",
1165
+ "&auml": "ä",
1166
+ "&auml;": "ä",
1167
+ "&awconint;": "∳",
1168
+ "&awint;": "⨑",
1169
+ "&bNot;": "⫭",
1170
+ "&backcong;": "≌",
1171
+ "&backepsilon;": "϶",
1172
+ "&backprime;": "‵",
1173
+ "&backsim;": "∽",
1174
+ "&backsimeq;": "⋍",
1175
+ "&barvee;": "⊽",
1176
+ "&barwed;": "⌅",
1177
+ "&barwedge;": "⌅",
1178
+ "&bbrk;": "⎵",
1179
+ "&bbrktbrk;": "⎶",
1180
+ "&bcong;": "≌",
1181
+ "&bcy;": "б",
1182
+ "&bdquo;": "„",
1183
+ "&becaus;": "∵",
1184
+ "&because;": "∵",
1185
+ "&bemptyv;": "⦰",
1186
+ "&bepsi;": "϶",
1187
+ "&bernou;": "ℬ",
1188
+ "&beta;": "β",
1189
+ "&beth;": "ℶ",
1190
+ "&between;": "≬",
1191
+ "&bfr;": "𝔟",
1192
+ "&bigcap;": "⋂",
1193
+ "&bigcirc;": "◯",
1194
+ "&bigcup;": "⋃",
1195
+ "&bigodot;": "⨀",
1196
+ "&bigoplus;": "⨁",
1197
+ "&bigotimes;": "⨂",
1198
+ "&bigsqcup;": "⨆",
1199
+ "&bigstar;": "★",
1200
+ "&bigtriangledown;": "▽",
1201
+ "&bigtriangleup;": "△",
1202
+ "&biguplus;": "⨄",
1203
+ "&bigvee;": "⋁",
1204
+ "&bigwedge;": "⋀",
1205
+ "&bkarow;": "⤍",
1206
+ "&blacklozenge;": "⧫",
1207
+ "&blacksquare;": "▪",
1208
+ "&blacktriangle;": "▴",
1209
+ "&blacktriangledown;": "▾",
1210
+ "&blacktriangleleft;": "◂",
1211
+ "&blacktriangleright;": "▸",
1212
+ "&blank;": "␣",
1213
+ "&blk12;": "▒",
1214
+ "&blk14;": "░",
1215
+ "&blk34;": "▓",
1216
+ "&block;": "█",
1217
+ "&bne;": "=⃥",
1218
+ "&bnequiv;": "≡⃥",
1219
+ "&bnot;": "⌐",
1220
+ "&bopf;": "𝕓",
1221
+ "&bot;": "⊥",
1222
+ "&bottom;": "⊥",
1223
+ "&bowtie;": "⋈",
1224
+ "&boxDL;": "╗",
1225
+ "&boxDR;": "╔",
1226
+ "&boxDl;": "╖",
1227
+ "&boxDr;": "╓",
1228
+ "&boxH;": "═",
1229
+ "&boxHD;": "╦",
1230
+ "&boxHU;": "╩",
1231
+ "&boxHd;": "╤",
1232
+ "&boxHu;": "╧",
1233
+ "&boxUL;": "╝",
1234
+ "&boxUR;": "╚",
1235
+ "&boxUl;": "╜",
1236
+ "&boxUr;": "╙",
1237
+ "&boxV;": "║",
1238
+ "&boxVH;": "╬",
1239
+ "&boxVL;": "╣",
1240
+ "&boxVR;": "╠",
1241
+ "&boxVh;": "╫",
1242
+ "&boxVl;": "╢",
1243
+ "&boxVr;": "╟",
1244
+ "&boxbox;": "⧉",
1245
+ "&boxdL;": "╕",
1246
+ "&boxdR;": "╒",
1247
+ "&boxdl;": "┐",
1248
+ "&boxdr;": "┌",
1249
+ "&boxh;": "─",
1250
+ "&boxhD;": "╥",
1251
+ "&boxhU;": "╨",
1252
+ "&boxhd;": "┬",
1253
+ "&boxhu;": "┴",
1254
+ "&boxminus;": "⊟",
1255
+ "&boxplus;": "⊞",
1256
+ "&boxtimes;": "⊠",
1257
+ "&boxuL;": "╛",
1258
+ "&boxuR;": "╘",
1259
+ "&boxul;": "┘",
1260
+ "&boxur;": "└",
1261
+ "&boxv;": "│",
1262
+ "&boxvH;": "╪",
1263
+ "&boxvL;": "╡",
1264
+ "&boxvR;": "╞",
1265
+ "&boxvh;": "┼",
1266
+ "&boxvl;": "┤",
1267
+ "&boxvr;": "├",
1268
+ "&bprime;": "‵",
1269
+ "&breve;": "˘",
1270
+ "&brvbar": "¦",
1271
+ "&brvbar;": "¦",
1272
+ "&bscr;": "𝒷",
1273
+ "&bsemi;": "⁏",
1274
+ "&bsim;": "∽",
1275
+ "&bsime;": "⋍",
1276
+ "&bsol;": "\\",
1277
+ "&bsolb;": "⧅",
1278
+ "&bsolhsub;": "⟈",
1279
+ "&bull;": "•",
1280
+ "&bullet;": "•",
1281
+ "&bump;": "≎",
1282
+ "&bumpE;": "⪮",
1283
+ "&bumpe;": "≏",
1284
+ "&bumpeq;": "≏",
1285
+ "&cacute;": "ć",
1286
+ "&cap;": "∩",
1287
+ "&capand;": "⩄",
1288
+ "&capbrcup;": "⩉",
1289
+ "&capcap;": "⩋",
1290
+ "&capcup;": "⩇",
1291
+ "&capdot;": "⩀",
1292
+ "&caps;": "∩︀",
1293
+ "&caret;": "⁁",
1294
+ "&caron;": "ˇ",
1295
+ "&ccaps;": "⩍",
1296
+ "&ccaron;": "č",
1297
+ "&ccedil": "ç",
1298
+ "&ccedil;": "ç",
1299
+ "&ccirc;": "ĉ",
1300
+ "&ccups;": "⩌",
1301
+ "&ccupssm;": "⩐",
1302
+ "&cdot;": "ċ",
1303
+ "&cedil": "¸",
1304
+ "&cedil;": "¸",
1305
+ "&cemptyv;": "⦲",
1306
+ "&cent": "¢",
1307
+ "&cent;": "¢",
1308
+ "&centerdot;": "·",
1309
+ "&cfr;": "𝔠",
1310
+ "&chcy;": "ч",
1311
+ "&check;": "✓",
1312
+ "&checkmark;": "✓",
1313
+ "&chi;": "χ",
1314
+ "&cir;": "○",
1315
+ "&cirE;": "⧃",
1316
+ "&circ;": "ˆ",
1317
+ "&circeq;": "≗",
1318
+ "&circlearrowleft;": "↺",
1319
+ "&circlearrowright;": "↻",
1320
+ "&circledR;": "®",
1321
+ "&circledS;": "Ⓢ",
1322
+ "&circledast;": "⊛",
1323
+ "&circledcirc;": "⊚",
1324
+ "&circleddash;": "⊝",
1325
+ "&cire;": "≗",
1326
+ "&cirfnint;": "⨐",
1327
+ "&cirmid;": "⫯",
1328
+ "&cirscir;": "⧂",
1329
+ "&clubs;": "♣",
1330
+ "&clubsuit;": "♣",
1331
+ "&colon;": ":",
1332
+ "&colone;": "≔",
1333
+ "&coloneq;": "≔",
1334
+ "&comma;": ",",
1335
+ "&commat;": "@",
1336
+ "&comp;": "∁",
1337
+ "&compfn;": "∘",
1338
+ "&complement;": "∁",
1339
+ "&complexes;": "ℂ",
1340
+ "&cong;": "≅",
1341
+ "&congdot;": "⩭",
1342
+ "&conint;": "∮",
1343
+ "&copf;": "𝕔",
1344
+ "&coprod;": "∐",
1345
+ "&copy": "©",
1346
+ "&copy;": "©",
1347
+ "&copysr;": "℗",
1348
+ "&crarr;": "↵",
1349
+ "&cross;": "✗",
1350
+ "&cscr;": "𝒸",
1351
+ "&csub;": "⫏",
1352
+ "&csube;": "⫑",
1353
+ "&csup;": "⫐",
1354
+ "&csupe;": "⫒",
1355
+ "&ctdot;": "⋯",
1356
+ "&cudarrl;": "⤸",
1357
+ "&cudarrr;": "⤵",
1358
+ "&cuepr;": "⋞",
1359
+ "&cuesc;": "⋟",
1360
+ "&cularr;": "↶",
1361
+ "&cularrp;": "⤽",
1362
+ "&cup;": "∪",
1363
+ "&cupbrcap;": "⩈",
1364
+ "&cupcap;": "⩆",
1365
+ "&cupcup;": "⩊",
1366
+ "&cupdot;": "⊍",
1367
+ "&cupor;": "⩅",
1368
+ "&cups;": "∪︀",
1369
+ "&curarr;": "↷",
1370
+ "&curarrm;": "⤼",
1371
+ "&curlyeqprec;": "⋞",
1372
+ "&curlyeqsucc;": "⋟",
1373
+ "&curlyvee;": "⋎",
1374
+ "&curlywedge;": "⋏",
1375
+ "&curren": "¤",
1376
+ "&curren;": "¤",
1377
+ "&curvearrowleft;": "↶",
1378
+ "&curvearrowright;": "↷",
1379
+ "&cuvee;": "⋎",
1380
+ "&cuwed;": "⋏",
1381
+ "&cwconint;": "∲",
1382
+ "&cwint;": "∱",
1383
+ "&cylcty;": "⌭",
1384
+ "&dArr;": "⇓",
1385
+ "&dHar;": "⥥",
1386
+ "&dagger;": "†",
1387
+ "&daleth;": "ℸ",
1388
+ "&darr;": "↓",
1389
+ "&dash;": "‐",
1390
+ "&dashv;": "⊣",
1391
+ "&dbkarow;": "⤏",
1392
+ "&dblac;": "˝",
1393
+ "&dcaron;": "ď",
1394
+ "&dcy;": "д",
1395
+ "&dd;": "ⅆ",
1396
+ "&ddagger;": "‡",
1397
+ "&ddarr;": "⇊",
1398
+ "&ddotseq;": "⩷",
1399
+ "&deg": "°",
1400
+ "&deg;": "°",
1401
+ "&delta;": "δ",
1402
+ "&demptyv;": "⦱",
1403
+ "&dfisht;": "⥿",
1404
+ "&dfr;": "𝔡",
1405
+ "&dharl;": "⇃",
1406
+ "&dharr;": "⇂",
1407
+ "&diam;": "⋄",
1408
+ "&diamond;": "⋄",
1409
+ "&diamondsuit;": "♦",
1410
+ "&diams;": "♦",
1411
+ "&die;": "¨",
1412
+ "&digamma;": "ϝ",
1413
+ "&disin;": "⋲",
1414
+ "&div;": "÷",
1415
+ "&divide": "÷",
1416
+ "&divide;": "÷",
1417
+ "&divideontimes;": "⋇",
1418
+ "&divonx;": "⋇",
1419
+ "&djcy;": "ђ",
1420
+ "&dlcorn;": "⌞",
1421
+ "&dlcrop;": "⌍",
1422
+ "&dollar;": "$",
1423
+ "&dopf;": "𝕕",
1424
+ "&dot;": "˙",
1425
+ "&doteq;": "≐",
1426
+ "&doteqdot;": "≑",
1427
+ "&dotminus;": "∸",
1428
+ "&dotplus;": "∔",
1429
+ "&dotsquare;": "⊡",
1430
+ "&doublebarwedge;": "⌆",
1431
+ "&downarrow;": "↓",
1432
+ "&downdownarrows;": "⇊",
1433
+ "&downharpoonleft;": "⇃",
1434
+ "&downharpoonright;": "⇂",
1435
+ "&drbkarow;": "⤐",
1436
+ "&drcorn;": "⌟",
1437
+ "&drcrop;": "⌌",
1438
+ "&dscr;": "𝒹",
1439
+ "&dscy;": "ѕ",
1440
+ "&dsol;": "⧶",
1441
+ "&dstrok;": "đ",
1442
+ "&dtdot;": "⋱",
1443
+ "&dtri;": "▿",
1444
+ "&dtrif;": "▾",
1445
+ "&duarr;": "⇵",
1446
+ "&duhar;": "⥯",
1447
+ "&dwangle;": "⦦",
1448
+ "&dzcy;": "џ",
1449
+ "&dzigrarr;": "⟿",
1450
+ "&eDDot;": "⩷",
1451
+ "&eDot;": "≑",
1452
+ "&eacute": "é",
1453
+ "&eacute;": "é",
1454
+ "&easter;": "⩮",
1455
+ "&ecaron;": "ě",
1456
+ "&ecir;": "≖",
1457
+ "&ecirc": "ê",
1458
+ "&ecirc;": "ê",
1459
+ "&ecolon;": "≕",
1460
+ "&ecy;": "э",
1461
+ "&edot;": "ė",
1462
+ "&ee;": "ⅇ",
1463
+ "&efDot;": "≒",
1464
+ "&efr;": "𝔢",
1465
+ "&eg;": "⪚",
1466
+ "&egrave": "è",
1467
+ "&egrave;": "è",
1468
+ "&egs;": "⪖",
1469
+ "&egsdot;": "⪘",
1470
+ "&el;": "⪙",
1471
+ "&elinters;": "⏧",
1472
+ "&ell;": "ℓ",
1473
+ "&els;": "⪕",
1474
+ "&elsdot;": "⪗",
1475
+ "&emacr;": "ē",
1476
+ "&empty;": "∅",
1477
+ "&emptyset;": "∅",
1478
+ "&emptyv;": "∅",
1479
+ "&emsp13;": " ",
1480
+ "&emsp14;": " ",
1481
+ "&emsp;": " ",
1482
+ "&eng;": "ŋ",
1483
+ "&ensp;": " ",
1484
+ "&eogon;": "ę",
1485
+ "&eopf;": "𝕖",
1486
+ "&epar;": "⋕",
1487
+ "&eparsl;": "⧣",
1488
+ "&eplus;": "⩱",
1489
+ "&epsi;": "ε",
1490
+ "&epsilon;": "ε",
1491
+ "&epsiv;": "ϵ",
1492
+ "&eqcirc;": "≖",
1493
+ "&eqcolon;": "≕",
1494
+ "&eqsim;": "≂",
1495
+ "&eqslantgtr;": "⪖",
1496
+ "&eqslantless;": "⪕",
1497
+ "&equals;": "=",
1498
+ "&equest;": "≟",
1499
+ "&equiv;": "≡",
1500
+ "&equivDD;": "⩸",
1501
+ "&eqvparsl;": "⧥",
1502
+ "&erDot;": "≓",
1503
+ "&erarr;": "⥱",
1504
+ "&escr;": "ℯ",
1505
+ "&esdot;": "≐",
1506
+ "&esim;": "≂",
1507
+ "&eta;": "η",
1508
+ "&eth": "ð",
1509
+ "&eth;": "ð",
1510
+ "&euml": "ë",
1511
+ "&euml;": "ë",
1512
+ "&euro;": "€",
1513
+ "&excl;": "!",
1514
+ "&exist;": "∃",
1515
+ "&expectation;": "ℰ",
1516
+ "&exponentiale;": "ⅇ",
1517
+ "&fallingdotseq;": "≒",
1518
+ "&fcy;": "ф",
1519
+ "&female;": "♀",
1520
+ "&ffilig;": "ffi",
1521
+ "&fflig;": "ff",
1522
+ "&ffllig;": "ffl",
1523
+ "&ffr;": "𝔣",
1524
+ "&filig;": "fi",
1525
+ "&fjlig;": "fj",
1526
+ "&flat;": "♭",
1527
+ "&fllig;": "fl",
1528
+ "&fltns;": "▱",
1529
+ "&fnof;": "ƒ",
1530
+ "&fopf;": "𝕗",
1531
+ "&forall;": "∀",
1532
+ "&fork;": "⋔",
1533
+ "&forkv;": "⫙",
1534
+ "&fpartint;": "⨍",
1535
+ "&frac12": "½",
1536
+ "&frac12;": "½",
1537
+ "&frac13;": "⅓",
1538
+ "&frac14": "¼",
1539
+ "&frac14;": "¼",
1540
+ "&frac15;": "⅕",
1541
+ "&frac16;": "⅙",
1542
+ "&frac18;": "⅛",
1543
+ "&frac23;": "⅔",
1544
+ "&frac25;": "⅖",
1545
+ "&frac34": "¾",
1546
+ "&frac34;": "¾",
1547
+ "&frac35;": "⅗",
1548
+ "&frac38;": "⅜",
1549
+ "&frac45;": "⅘",
1550
+ "&frac56;": "⅚",
1551
+ "&frac58;": "⅝",
1552
+ "&frac78;": "⅞",
1553
+ "&frasl;": "⁄",
1554
+ "&frown;": "⌢",
1555
+ "&fscr;": "𝒻",
1556
+ "&gE;": "≧",
1557
+ "&gEl;": "⪌",
1558
+ "&gacute;": "ǵ",
1559
+ "&gamma;": "γ",
1560
+ "&gammad;": "ϝ",
1561
+ "&gap;": "⪆",
1562
+ "&gbreve;": "ğ",
1563
+ "&gcirc;": "ĝ",
1564
+ "&gcy;": "г",
1565
+ "&gdot;": "ġ",
1566
+ "&ge;": "≥",
1567
+ "&gel;": "⋛",
1568
+ "&geq;": "≥",
1569
+ "&geqq;": "≧",
1570
+ "&geqslant;": "⩾",
1571
+ "&ges;": "⩾",
1572
+ "&gescc;": "⪩",
1573
+ "&gesdot;": "⪀",
1574
+ "&gesdoto;": "⪂",
1575
+ "&gesdotol;": "⪄",
1576
+ "&gesl;": "⋛︀",
1577
+ "&gesles;": "⪔",
1578
+ "&gfr;": "𝔤",
1579
+ "&gg;": "≫",
1580
+ "&ggg;": "⋙",
1581
+ "&gimel;": "ℷ",
1582
+ "&gjcy;": "ѓ",
1583
+ "&gl;": "≷",
1584
+ "&glE;": "⪒",
1585
+ "&gla;": "⪥",
1586
+ "&glj;": "⪤",
1587
+ "&gnE;": "≩",
1588
+ "&gnap;": "⪊",
1589
+ "&gnapprox;": "⪊",
1590
+ "&gne;": "⪈",
1591
+ "&gneq;": "⪈",
1592
+ "&gneqq;": "≩",
1593
+ "&gnsim;": "⋧",
1594
+ "&gopf;": "𝕘",
1595
+ "&grave;": "`",
1596
+ "&gscr;": "ℊ",
1597
+ "&gsim;": "≳",
1598
+ "&gsime;": "⪎",
1599
+ "&gsiml;": "⪐",
1600
+ "&gt": ">",
1601
+ "&gt;": ">",
1602
+ "&gtcc;": "⪧",
1603
+ "&gtcir;": "⩺",
1604
+ "&gtdot;": "⋗",
1605
+ "&gtlPar;": "⦕",
1606
+ "&gtquest;": "⩼",
1607
+ "&gtrapprox;": "⪆",
1608
+ "&gtrarr;": "⥸",
1609
+ "&gtrdot;": "⋗",
1610
+ "&gtreqless;": "⋛",
1611
+ "&gtreqqless;": "⪌",
1612
+ "&gtrless;": "≷",
1613
+ "&gtrsim;": "≳",
1614
+ "&gvertneqq;": "≩︀",
1615
+ "&gvnE;": "≩︀",
1616
+ "&hArr;": "⇔",
1617
+ "&hairsp;": " ",
1618
+ "&half;": "½",
1619
+ "&hamilt;": "ℋ",
1620
+ "&hardcy;": "ъ",
1621
+ "&harr;": "↔",
1622
+ "&harrcir;": "⥈",
1623
+ "&harrw;": "↭",
1624
+ "&hbar;": "ℏ",
1625
+ "&hcirc;": "ĥ",
1626
+ "&hearts;": "♥",
1627
+ "&heartsuit;": "♥",
1628
+ "&hellip;": "…",
1629
+ "&hercon;": "⊹",
1630
+ "&hfr;": "𝔥",
1631
+ "&hksearow;": "⤥",
1632
+ "&hkswarow;": "⤦",
1633
+ "&hoarr;": "⇿",
1634
+ "&homtht;": "∻",
1635
+ "&hookleftarrow;": "↩",
1636
+ "&hookrightarrow;": "↪",
1637
+ "&hopf;": "𝕙",
1638
+ "&horbar;": "―",
1639
+ "&hscr;": "𝒽",
1640
+ "&hslash;": "ℏ",
1641
+ "&hstrok;": "ħ",
1642
+ "&hybull;": "⁃",
1643
+ "&hyphen;": "‐",
1644
+ "&iacute": "í",
1645
+ "&iacute;": "í",
1646
+ "&ic;": "⁣",
1647
+ "&icirc": "î",
1648
+ "&icirc;": "î",
1649
+ "&icy;": "и",
1650
+ "&iecy;": "е",
1651
+ "&iexcl": "¡",
1652
+ "&iexcl;": "¡",
1653
+ "&iff;": "⇔",
1654
+ "&ifr;": "𝔦",
1655
+ "&igrave": "ì",
1656
+ "&igrave;": "ì",
1657
+ "&ii;": "ⅈ",
1658
+ "&iiiint;": "⨌",
1659
+ "&iiint;": "∭",
1660
+ "&iinfin;": "⧜",
1661
+ "&iiota;": "℩",
1662
+ "&ijlig;": "ij",
1663
+ "&imacr;": "ī",
1664
+ "&image;": "ℑ",
1665
+ "&imagline;": "ℐ",
1666
+ "&imagpart;": "ℑ",
1667
+ "&imath;": "ı",
1668
+ "&imof;": "⊷",
1669
+ "&imped;": "Ƶ",
1670
+ "&in;": "∈",
1671
+ "&incare;": "℅",
1672
+ "&infin;": "∞",
1673
+ "&infintie;": "⧝",
1674
+ "&inodot;": "ı",
1675
+ "&int;": "∫",
1676
+ "&intcal;": "⊺",
1677
+ "&integers;": "ℤ",
1678
+ "&intercal;": "⊺",
1679
+ "&intlarhk;": "⨗",
1680
+ "&intprod;": "⨼",
1681
+ "&iocy;": "ё",
1682
+ "&iogon;": "į",
1683
+ "&iopf;": "𝕚",
1684
+ "&iota;": "ι",
1685
+ "&iprod;": "⨼",
1686
+ "&iquest": "¿",
1687
+ "&iquest;": "¿",
1688
+ "&iscr;": "𝒾",
1689
+ "&isin;": "∈",
1690
+ "&isinE;": "⋹",
1691
+ "&isindot;": "⋵",
1692
+ "&isins;": "⋴",
1693
+ "&isinsv;": "⋳",
1694
+ "&isinv;": "∈",
1695
+ "&it;": "⁢",
1696
+ "&itilde;": "ĩ",
1697
+ "&iukcy;": "і",
1698
+ "&iuml": "ï",
1699
+ "&iuml;": "ï",
1700
+ "&jcirc;": "ĵ",
1701
+ "&jcy;": "й",
1702
+ "&jfr;": "𝔧",
1703
+ "&jmath;": "ȷ",
1704
+ "&jopf;": "𝕛",
1705
+ "&jscr;": "𝒿",
1706
+ "&jsercy;": "ј",
1707
+ "&jukcy;": "є",
1708
+ "&kappa;": "κ",
1709
+ "&kappav;": "ϰ",
1710
+ "&kcedil;": "ķ",
1711
+ "&kcy;": "к",
1712
+ "&kfr;": "𝔨",
1713
+ "&kgreen;": "ĸ",
1714
+ "&khcy;": "х",
1715
+ "&kjcy;": "ќ",
1716
+ "&kopf;": "𝕜",
1717
+ "&kscr;": "𝓀",
1718
+ "&lAarr;": "⇚",
1719
+ "&lArr;": "⇐",
1720
+ "&lAtail;": "⤛",
1721
+ "&lBarr;": "⤎",
1722
+ "&lE;": "≦",
1723
+ "&lEg;": "⪋",
1724
+ "&lHar;": "⥢",
1725
+ "&lacute;": "ĺ",
1726
+ "&laemptyv;": "⦴",
1727
+ "&lagran;": "ℒ",
1728
+ "&lambda;": "λ",
1729
+ "&lang;": "⟨",
1730
+ "&langd;": "⦑",
1731
+ "&langle;": "⟨",
1732
+ "&lap;": "⪅",
1733
+ "&laquo": "«",
1734
+ "&laquo;": "«",
1735
+ "&larr;": "←",
1736
+ "&larrb;": "⇤",
1737
+ "&larrbfs;": "⤟",
1738
+ "&larrfs;": "⤝",
1739
+ "&larrhk;": "↩",
1740
+ "&larrlp;": "↫",
1741
+ "&larrpl;": "⤹",
1742
+ "&larrsim;": "⥳",
1743
+ "&larrtl;": "↢",
1744
+ "&lat;": "⪫",
1745
+ "&latail;": "⤙",
1746
+ "&late;": "⪭",
1747
+ "&lates;": "⪭︀",
1748
+ "&lbarr;": "⤌",
1749
+ "&lbbrk;": "❲",
1750
+ "&lbrace;": "{",
1751
+ "&lbrack;": "[",
1752
+ "&lbrke;": "⦋",
1753
+ "&lbrksld;": "⦏",
1754
+ "&lbrkslu;": "⦍",
1755
+ "&lcaron;": "ľ",
1756
+ "&lcedil;": "ļ",
1757
+ "&lceil;": "⌈",
1758
+ "&lcub;": "{",
1759
+ "&lcy;": "л",
1760
+ "&ldca;": "⤶",
1761
+ "&ldquo;": "“",
1762
+ "&ldquor;": "„",
1763
+ "&ldrdhar;": "⥧",
1764
+ "&ldrushar;": "⥋",
1765
+ "&ldsh;": "↲",
1766
+ "&le;": "≤",
1767
+ "&leftarrow;": "←",
1768
+ "&leftarrowtail;": "↢",
1769
+ "&leftharpoondown;": "↽",
1770
+ "&leftharpoonup;": "↼",
1771
+ "&leftleftarrows;": "⇇",
1772
+ "&leftrightarrow;": "↔",
1773
+ "&leftrightarrows;": "⇆",
1774
+ "&leftrightharpoons;": "⇋",
1775
+ "&leftrightsquigarrow;": "↭",
1776
+ "&leftthreetimes;": "⋋",
1777
+ "&leg;": "⋚",
1778
+ "&leq;": "≤",
1779
+ "&leqq;": "≦",
1780
+ "&leqslant;": "⩽",
1781
+ "&les;": "⩽",
1782
+ "&lescc;": "⪨",
1783
+ "&lesdot;": "⩿",
1784
+ "&lesdoto;": "⪁",
1785
+ "&lesdotor;": "⪃",
1786
+ "&lesg;": "⋚︀",
1787
+ "&lesges;": "⪓",
1788
+ "&lessapprox;": "⪅",
1789
+ "&lessdot;": "⋖",
1790
+ "&lesseqgtr;": "⋚",
1791
+ "&lesseqqgtr;": "⪋",
1792
+ "&lessgtr;": "≶",
1793
+ "&lesssim;": "≲",
1794
+ "&lfisht;": "⥼",
1795
+ "&lfloor;": "⌊",
1796
+ "&lfr;": "𝔩",
1797
+ "&lg;": "≶",
1798
+ "&lgE;": "⪑",
1799
+ "&lhard;": "↽",
1800
+ "&lharu;": "↼",
1801
+ "&lharul;": "⥪",
1802
+ "&lhblk;": "▄",
1803
+ "&ljcy;": "љ",
1804
+ "&ll;": "≪",
1805
+ "&llarr;": "⇇",
1806
+ "&llcorner;": "⌞",
1807
+ "&llhard;": "⥫",
1808
+ "&lltri;": "◺",
1809
+ "&lmidot;": "ŀ",
1810
+ "&lmoust;": "⎰",
1811
+ "&lmoustache;": "⎰",
1812
+ "&lnE;": "≨",
1813
+ "&lnap;": "⪉",
1814
+ "&lnapprox;": "⪉",
1815
+ "&lne;": "⪇",
1816
+ "&lneq;": "⪇",
1817
+ "&lneqq;": "≨",
1818
+ "&lnsim;": "⋦",
1819
+ "&loang;": "⟬",
1820
+ "&loarr;": "⇽",
1821
+ "&lobrk;": "⟦",
1822
+ "&longleftarrow;": "⟵",
1823
+ "&longleftrightarrow;": "⟷",
1824
+ "&longmapsto;": "⟼",
1825
+ "&longrightarrow;": "⟶",
1826
+ "&looparrowleft;": "↫",
1827
+ "&looparrowright;": "↬",
1828
+ "&lopar;": "⦅",
1829
+ "&lopf;": "𝕝",
1830
+ "&loplus;": "⨭",
1831
+ "&lotimes;": "⨴",
1832
+ "&lowast;": "∗",
1833
+ "&lowbar;": "_",
1834
+ "&loz;": "◊",
1835
+ "&lozenge;": "◊",
1836
+ "&lozf;": "⧫",
1837
+ "&lpar;": "(",
1838
+ "&lparlt;": "⦓",
1839
+ "&lrarr;": "⇆",
1840
+ "&lrcorner;": "⌟",
1841
+ "&lrhar;": "⇋",
1842
+ "&lrhard;": "⥭",
1843
+ "&lrm;": "‎",
1844
+ "&lrtri;": "⊿",
1845
+ "&lsaquo;": "‹",
1846
+ "&lscr;": "𝓁",
1847
+ "&lsh;": "↰",
1848
+ "&lsim;": "≲",
1849
+ "&lsime;": "⪍",
1850
+ "&lsimg;": "⪏",
1851
+ "&lsqb;": "[",
1852
+ "&lsquo;": "‘",
1853
+ "&lsquor;": "‚",
1854
+ "&lstrok;": "ł",
1855
+ "&lt": "<",
1856
+ "&lt;": "<",
1857
+ "&ltcc;": "⪦",
1858
+ "&ltcir;": "⩹",
1859
+ "&ltdot;": "⋖",
1860
+ "&lthree;": "⋋",
1861
+ "&ltimes;": "⋉",
1862
+ "&ltlarr;": "⥶",
1863
+ "&ltquest;": "⩻",
1864
+ "&ltrPar;": "⦖",
1865
+ "&ltri;": "◃",
1866
+ "&ltrie;": "⊴",
1867
+ "&ltrif;": "◂",
1868
+ "&lurdshar;": "⥊",
1869
+ "&luruhar;": "⥦",
1870
+ "&lvertneqq;": "≨︀",
1871
+ "&lvnE;": "≨︀",
1872
+ "&mDDot;": "∺",
1873
+ "&macr": "¯",
1874
+ "&macr;": "¯",
1875
+ "&male;": "♂",
1876
+ "&malt;": "✠",
1877
+ "&maltese;": "✠",
1878
+ "&map;": "↦",
1879
+ "&mapsto;": "↦",
1880
+ "&mapstodown;": "↧",
1881
+ "&mapstoleft;": "↤",
1882
+ "&mapstoup;": "↥",
1883
+ "&marker;": "▮",
1884
+ "&mcomma;": "⨩",
1885
+ "&mcy;": "м",
1886
+ "&mdash;": "—",
1887
+ "&measuredangle;": "∡",
1888
+ "&mfr;": "𝔪",
1889
+ "&mho;": "℧",
1890
+ "&micro": "µ",
1891
+ "&micro;": "µ",
1892
+ "&mid;": "∣",
1893
+ "&midast;": "*",
1894
+ "&midcir;": "⫰",
1895
+ "&middot": "·",
1896
+ "&middot;": "·",
1897
+ "&minus;": "−",
1898
+ "&minusb;": "⊟",
1899
+ "&minusd;": "∸",
1900
+ "&minusdu;": "⨪",
1901
+ "&mlcp;": "⫛",
1902
+ "&mldr;": "…",
1903
+ "&mnplus;": "∓",
1904
+ "&models;": "⊧",
1905
+ "&mopf;": "𝕞",
1906
+ "&mp;": "∓",
1907
+ "&mscr;": "𝓂",
1908
+ "&mstpos;": "∾",
1909
+ "&mu;": "μ",
1910
+ "&multimap;": "⊸",
1911
+ "&mumap;": "⊸",
1912
+ "&nGg;": "⋙̸",
1913
+ "&nGt;": "≫⃒",
1914
+ "&nGtv;": "≫̸",
1915
+ "&nLeftarrow;": "⇍",
1916
+ "&nLeftrightarrow;": "⇎",
1917
+ "&nLl;": "⋘̸",
1918
+ "&nLt;": "≪⃒",
1919
+ "&nLtv;": "≪̸",
1920
+ "&nRightarrow;": "⇏",
1921
+ "&nVDash;": "⊯",
1922
+ "&nVdash;": "⊮",
1923
+ "&nabla;": "∇",
1924
+ "&nacute;": "ń",
1925
+ "&nang;": "∠⃒",
1926
+ "&nap;": "≉",
1927
+ "&napE;": "⩰̸",
1928
+ "&napid;": "≋̸",
1929
+ "&napos;": "ʼn",
1930
+ "&napprox;": "≉",
1931
+ "&natur;": "♮",
1932
+ "&natural;": "♮",
1933
+ "&naturals;": "ℕ",
1934
+ "&nbsp": " ",
1935
+ "&nbsp;": " ",
1936
+ "&nbump;": "≎̸",
1937
+ "&nbumpe;": "≏̸",
1938
+ "&ncap;": "⩃",
1939
+ "&ncaron;": "ň",
1940
+ "&ncedil;": "ņ",
1941
+ "&ncong;": "≇",
1942
+ "&ncongdot;": "⩭̸",
1943
+ "&ncup;": "⩂",
1944
+ "&ncy;": "н",
1945
+ "&ndash;": "–",
1946
+ "&ne;": "≠",
1947
+ "&neArr;": "⇗",
1948
+ "&nearhk;": "⤤",
1949
+ "&nearr;": "↗",
1950
+ "&nearrow;": "↗",
1951
+ "&nedot;": "≐̸",
1952
+ "&nequiv;": "≢",
1953
+ "&nesear;": "⤨",
1954
+ "&nesim;": "≂̸",
1955
+ "&nexist;": "∄",
1956
+ "&nexists;": "∄",
1957
+ "&nfr;": "𝔫",
1958
+ "&ngE;": "≧̸",
1959
+ "&nge;": "≱",
1960
+ "&ngeq;": "≱",
1961
+ "&ngeqq;": "≧̸",
1962
+ "&ngeqslant;": "⩾̸",
1963
+ "&nges;": "⩾̸",
1964
+ "&ngsim;": "≵",
1965
+ "&ngt;": "≯",
1966
+ "&ngtr;": "≯",
1967
+ "&nhArr;": "⇎",
1968
+ "&nharr;": "↮",
1969
+ "&nhpar;": "⫲",
1970
+ "&ni;": "∋",
1971
+ "&nis;": "⋼",
1972
+ "&nisd;": "⋺",
1973
+ "&niv;": "∋",
1974
+ "&njcy;": "њ",
1975
+ "&nlArr;": "⇍",
1976
+ "&nlE;": "≦̸",
1977
+ "&nlarr;": "↚",
1978
+ "&nldr;": "‥",
1979
+ "&nle;": "≰",
1980
+ "&nleftarrow;": "↚",
1981
+ "&nleftrightarrow;": "↮",
1982
+ "&nleq;": "≰",
1983
+ "&nleqq;": "≦̸",
1984
+ "&nleqslant;": "⩽̸",
1985
+ "&nles;": "⩽̸",
1986
+ "&nless;": "≮",
1987
+ "&nlsim;": "≴",
1988
+ "&nlt;": "≮",
1989
+ "&nltri;": "⋪",
1990
+ "&nltrie;": "⋬",
1991
+ "&nmid;": "∤",
1992
+ "&nopf;": "𝕟",
1993
+ "&not": "¬",
1994
+ "&not;": "¬",
1995
+ "&notin;": "∉",
1996
+ "&notinE;": "⋹̸",
1997
+ "&notindot;": "⋵̸",
1998
+ "&notinva;": "∉",
1999
+ "&notinvb;": "⋷",
2000
+ "&notinvc;": "⋶",
2001
+ "&notni;": "∌",
2002
+ "&notniva;": "∌",
2003
+ "&notnivb;": "⋾",
2004
+ "&notnivc;": "⋽",
2005
+ "&npar;": "∦",
2006
+ "&nparallel;": "∦",
2007
+ "&nparsl;": "⫽⃥",
2008
+ "&npart;": "∂̸",
2009
+ "&npolint;": "⨔",
2010
+ "&npr;": "⊀",
2011
+ "&nprcue;": "⋠",
2012
+ "&npre;": "⪯̸",
2013
+ "&nprec;": "⊀",
2014
+ "&npreceq;": "⪯̸",
2015
+ "&nrArr;": "⇏",
2016
+ "&nrarr;": "↛",
2017
+ "&nrarrc;": "⤳̸",
2018
+ "&nrarrw;": "↝̸",
2019
+ "&nrightarrow;": "↛",
2020
+ "&nrtri;": "⋫",
2021
+ "&nrtrie;": "⋭",
2022
+ "&nsc;": "⊁",
2023
+ "&nsccue;": "⋡",
2024
+ "&nsce;": "⪰̸",
2025
+ "&nscr;": "𝓃",
2026
+ "&nshortmid;": "∤",
2027
+ "&nshortparallel;": "∦",
2028
+ "&nsim;": "≁",
2029
+ "&nsime;": "≄",
2030
+ "&nsimeq;": "≄",
2031
+ "&nsmid;": "∤",
2032
+ "&nspar;": "∦",
2033
+ "&nsqsube;": "⋢",
2034
+ "&nsqsupe;": "⋣",
2035
+ "&nsub;": "⊄",
2036
+ "&nsubE;": "⫅̸",
2037
+ "&nsube;": "⊈",
2038
+ "&nsubset;": "⊂⃒",
2039
+ "&nsubseteq;": "⊈",
2040
+ "&nsubseteqq;": "⫅̸",
2041
+ "&nsucc;": "⊁",
2042
+ "&nsucceq;": "⪰̸",
2043
+ "&nsup;": "⊅",
2044
+ "&nsupE;": "⫆̸",
2045
+ "&nsupe;": "⊉",
2046
+ "&nsupset;": "⊃⃒",
2047
+ "&nsupseteq;": "⊉",
2048
+ "&nsupseteqq;": "⫆̸",
2049
+ "&ntgl;": "≹",
2050
+ "&ntilde": "ñ",
2051
+ "&ntilde;": "ñ",
2052
+ "&ntlg;": "≸",
2053
+ "&ntriangleleft;": "⋪",
2054
+ "&ntrianglelefteq;": "⋬",
2055
+ "&ntriangleright;": "⋫",
2056
+ "&ntrianglerighteq;": "⋭",
2057
+ "&nu;": "ν",
2058
+ "&num;": "#",
2059
+ "&numero;": "№",
2060
+ "&numsp;": " ",
2061
+ "&nvDash;": "⊭",
2062
+ "&nvHarr;": "⤄",
2063
+ "&nvap;": "≍⃒",
2064
+ "&nvdash;": "⊬",
2065
+ "&nvge;": "≥⃒",
2066
+ "&nvgt;": ">⃒",
2067
+ "&nvinfin;": "⧞",
2068
+ "&nvlArr;": "⤂",
2069
+ "&nvle;": "≤⃒",
2070
+ "&nvlt;": "<⃒",
2071
+ "&nvltrie;": "⊴⃒",
2072
+ "&nvrArr;": "⤃",
2073
+ "&nvrtrie;": "⊵⃒",
2074
+ "&nvsim;": "∼⃒",
2075
+ "&nwArr;": "⇖",
2076
+ "&nwarhk;": "⤣",
2077
+ "&nwarr;": "↖",
2078
+ "&nwarrow;": "↖",
2079
+ "&nwnear;": "⤧",
2080
+ "&oS;": "Ⓢ",
2081
+ "&oacute": "ó",
2082
+ "&oacute;": "ó",
2083
+ "&oast;": "⊛",
2084
+ "&ocir;": "⊚",
2085
+ "&ocirc": "ô",
2086
+ "&ocirc;": "ô",
2087
+ "&ocy;": "о",
2088
+ "&odash;": "⊝",
2089
+ "&odblac;": "ő",
2090
+ "&odiv;": "⨸",
2091
+ "&odot;": "⊙",
2092
+ "&odsold;": "⦼",
2093
+ "&oelig;": "œ",
2094
+ "&ofcir;": "⦿",
2095
+ "&ofr;": "𝔬",
2096
+ "&ogon;": "˛",
2097
+ "&ograve": "ò",
2098
+ "&ograve;": "ò",
2099
+ "&ogt;": "⧁",
2100
+ "&ohbar;": "⦵",
2101
+ "&ohm;": "Ω",
2102
+ "&oint;": "∮",
2103
+ "&olarr;": "↺",
2104
+ "&olcir;": "⦾",
2105
+ "&olcross;": "⦻",
2106
+ "&oline;": "‾",
2107
+ "&olt;": "⧀",
2108
+ "&omacr;": "ō",
2109
+ "&omega;": "ω",
2110
+ "&omicron;": "ο",
2111
+ "&omid;": "⦶",
2112
+ "&ominus;": "⊖",
2113
+ "&oopf;": "𝕠",
2114
+ "&opar;": "⦷",
2115
+ "&operp;": "⦹",
2116
+ "&oplus;": "⊕",
2117
+ "&or;": "∨",
2118
+ "&orarr;": "↻",
2119
+ "&ord;": "⩝",
2120
+ "&order;": "ℴ",
2121
+ "&orderof;": "ℴ",
2122
+ "&ordf": "ª",
2123
+ "&ordf;": "ª",
2124
+ "&ordm": "º",
2125
+ "&ordm;": "º",
2126
+ "&origof;": "⊶",
2127
+ "&oror;": "⩖",
2128
+ "&orslope;": "⩗",
2129
+ "&orv;": "⩛",
2130
+ "&oscr;": "ℴ",
2131
+ "&oslash": "ø",
2132
+ "&oslash;": "ø",
2133
+ "&osol;": "⊘",
2134
+ "&otilde": "õ",
2135
+ "&otilde;": "õ",
2136
+ "&otimes;": "⊗",
2137
+ "&otimesas;": "⨶",
2138
+ "&ouml": "ö",
2139
+ "&ouml;": "ö",
2140
+ "&ovbar;": "⌽",
2141
+ "&par;": "∥",
2142
+ "&para": "¶",
2143
+ "&para;": "¶",
2144
+ "&parallel;": "∥",
2145
+ "&parsim;": "⫳",
2146
+ "&parsl;": "⫽",
2147
+ "&part;": "∂",
2148
+ "&pcy;": "п",
2149
+ "&percnt;": "%",
2150
+ "&period;": ".",
2151
+ "&permil;": "‰",
2152
+ "&perp;": "⊥",
2153
+ "&pertenk;": "‱",
2154
+ "&pfr;": "𝔭",
2155
+ "&phi;": "φ",
2156
+ "&phiv;": "ϕ",
2157
+ "&phmmat;": "ℳ",
2158
+ "&phone;": "☎",
2159
+ "&pi;": "π",
2160
+ "&pitchfork;": "⋔",
2161
+ "&piv;": "ϖ",
2162
+ "&planck;": "ℏ",
2163
+ "&planckh;": "ℎ",
2164
+ "&plankv;": "ℏ",
2165
+ "&plus;": "+",
2166
+ "&plusacir;": "⨣",
2167
+ "&plusb;": "⊞",
2168
+ "&pluscir;": "⨢",
2169
+ "&plusdo;": "∔",
2170
+ "&plusdu;": "⨥",
2171
+ "&pluse;": "⩲",
2172
+ "&plusmn": "±",
2173
+ "&plusmn;": "±",
2174
+ "&plussim;": "⨦",
2175
+ "&plustwo;": "⨧",
2176
+ "&pm;": "±",
2177
+ "&pointint;": "⨕",
2178
+ "&popf;": "𝕡",
2179
+ "&pound": "£",
2180
+ "&pound;": "£",
2181
+ "&pr;": "≺",
2182
+ "&prE;": "⪳",
2183
+ "&prap;": "⪷",
2184
+ "&prcue;": "≼",
2185
+ "&pre;": "⪯",
2186
+ "&prec;": "≺",
2187
+ "&precapprox;": "⪷",
2188
+ "&preccurlyeq;": "≼",
2189
+ "&preceq;": "⪯",
2190
+ "&precnapprox;": "⪹",
2191
+ "&precneqq;": "⪵",
2192
+ "&precnsim;": "⋨",
2193
+ "&precsim;": "≾",
2194
+ "&prime;": "′",
2195
+ "&primes;": "ℙ",
2196
+ "&prnE;": "⪵",
2197
+ "&prnap;": "⪹",
2198
+ "&prnsim;": "⋨",
2199
+ "&prod;": "∏",
2200
+ "&profalar;": "⌮",
2201
+ "&profline;": "⌒",
2202
+ "&profsurf;": "⌓",
2203
+ "&prop;": "∝",
2204
+ "&propto;": "∝",
2205
+ "&prsim;": "≾",
2206
+ "&prurel;": "⊰",
2207
+ "&pscr;": "𝓅",
2208
+ "&psi;": "ψ",
2209
+ "&puncsp;": " ",
2210
+ "&qfr;": "𝔮",
2211
+ "&qint;": "⨌",
2212
+ "&qopf;": "𝕢",
2213
+ "&qprime;": "⁗",
2214
+ "&qscr;": "𝓆",
2215
+ "&quaternions;": "ℍ",
2216
+ "&quatint;": "⨖",
2217
+ "&quest;": "?",
2218
+ "&questeq;": "≟",
2219
+ "&quot": '"',
2220
+ "&quot;": '"',
2221
+ "&rAarr;": "⇛",
2222
+ "&rArr;": "⇒",
2223
+ "&rAtail;": "⤜",
2224
+ "&rBarr;": "⤏",
2225
+ "&rHar;": "⥤",
2226
+ "&race;": "∽̱",
2227
+ "&racute;": "ŕ",
2228
+ "&radic;": "√",
2229
+ "&raemptyv;": "⦳",
2230
+ "&rang;": "⟩",
2231
+ "&rangd;": "⦒",
2232
+ "&range;": "⦥",
2233
+ "&rangle;": "⟩",
2234
+ "&raquo": "»",
2235
+ "&raquo;": "»",
2236
+ "&rarr;": "→",
2237
+ "&rarrap;": "⥵",
2238
+ "&rarrb;": "⇥",
2239
+ "&rarrbfs;": "⤠",
2240
+ "&rarrc;": "⤳",
2241
+ "&rarrfs;": "⤞",
2242
+ "&rarrhk;": "↪",
2243
+ "&rarrlp;": "↬",
2244
+ "&rarrpl;": "⥅",
2245
+ "&rarrsim;": "⥴",
2246
+ "&rarrtl;": "↣",
2247
+ "&rarrw;": "↝",
2248
+ "&ratail;": "⤚",
2249
+ "&ratio;": "∶",
2250
+ "&rationals;": "ℚ",
2251
+ "&rbarr;": "⤍",
2252
+ "&rbbrk;": "❳",
2253
+ "&rbrace;": "}",
2254
+ "&rbrack;": "]",
2255
+ "&rbrke;": "⦌",
2256
+ "&rbrksld;": "⦎",
2257
+ "&rbrkslu;": "⦐",
2258
+ "&rcaron;": "ř",
2259
+ "&rcedil;": "ŗ",
2260
+ "&rceil;": "⌉",
2261
+ "&rcub;": "}",
2262
+ "&rcy;": "р",
2263
+ "&rdca;": "⤷",
2264
+ "&rdldhar;": "⥩",
2265
+ "&rdquo;": "”",
2266
+ "&rdquor;": "”",
2267
+ "&rdsh;": "↳",
2268
+ "&real;": "ℜ",
2269
+ "&realine;": "ℛ",
2270
+ "&realpart;": "ℜ",
2271
+ "&reals;": "ℝ",
2272
+ "&rect;": "▭",
2273
+ "&reg": "®",
2274
+ "&reg;": "®",
2275
+ "&rfisht;": "⥽",
2276
+ "&rfloor;": "⌋",
2277
+ "&rfr;": "𝔯",
2278
+ "&rhard;": "⇁",
2279
+ "&rharu;": "⇀",
2280
+ "&rharul;": "⥬",
2281
+ "&rho;": "ρ",
2282
+ "&rhov;": "ϱ",
2283
+ "&rightarrow;": "→",
2284
+ "&rightarrowtail;": "↣",
2285
+ "&rightharpoondown;": "⇁",
2286
+ "&rightharpoonup;": "⇀",
2287
+ "&rightleftarrows;": "⇄",
2288
+ "&rightleftharpoons;": "⇌",
2289
+ "&rightrightarrows;": "⇉",
2290
+ "&rightsquigarrow;": "↝",
2291
+ "&rightthreetimes;": "⋌",
2292
+ "&ring;": "˚",
2293
+ "&risingdotseq;": "≓",
2294
+ "&rlarr;": "⇄",
2295
+ "&rlhar;": "⇌",
2296
+ "&rlm;": "‏",
2297
+ "&rmoust;": "⎱",
2298
+ "&rmoustache;": "⎱",
2299
+ "&rnmid;": "⫮",
2300
+ "&roang;": "⟭",
2301
+ "&roarr;": "⇾",
2302
+ "&robrk;": "⟧",
2303
+ "&ropar;": "⦆",
2304
+ "&ropf;": "𝕣",
2305
+ "&roplus;": "⨮",
2306
+ "&rotimes;": "⨵",
2307
+ "&rpar;": ")",
2308
+ "&rpargt;": "⦔",
2309
+ "&rppolint;": "⨒",
2310
+ "&rrarr;": "⇉",
2311
+ "&rsaquo;": "›",
2312
+ "&rscr;": "𝓇",
2313
+ "&rsh;": "↱",
2314
+ "&rsqb;": "]",
2315
+ "&rsquo;": "’",
2316
+ "&rsquor;": "’",
2317
+ "&rthree;": "⋌",
2318
+ "&rtimes;": "⋊",
2319
+ "&rtri;": "▹",
2320
+ "&rtrie;": "⊵",
2321
+ "&rtrif;": "▸",
2322
+ "&rtriltri;": "⧎",
2323
+ "&ruluhar;": "⥨",
2324
+ "&rx;": "℞",
2325
+ "&sacute;": "ś",
2326
+ "&sbquo;": "‚",
2327
+ "&sc;": "≻",
2328
+ "&scE;": "⪴",
2329
+ "&scap;": "⪸",
2330
+ "&scaron;": "š",
2331
+ "&sccue;": "≽",
2332
+ "&sce;": "⪰",
2333
+ "&scedil;": "ş",
2334
+ "&scirc;": "ŝ",
2335
+ "&scnE;": "⪶",
2336
+ "&scnap;": "⪺",
2337
+ "&scnsim;": "⋩",
2338
+ "&scpolint;": "⨓",
2339
+ "&scsim;": "≿",
2340
+ "&scy;": "с",
2341
+ "&sdot;": "⋅",
2342
+ "&sdotb;": "⊡",
2343
+ "&sdote;": "⩦",
2344
+ "&seArr;": "⇘",
2345
+ "&searhk;": "⤥",
2346
+ "&searr;": "↘",
2347
+ "&searrow;": "↘",
2348
+ "&sect": "§",
2349
+ "&sect;": "§",
2350
+ "&semi;": ";",
2351
+ "&seswar;": "⤩",
2352
+ "&setminus;": "∖",
2353
+ "&setmn;": "∖",
2354
+ "&sext;": "✶",
2355
+ "&sfr;": "𝔰",
2356
+ "&sfrown;": "⌢",
2357
+ "&sharp;": "♯",
2358
+ "&shchcy;": "щ",
2359
+ "&shcy;": "ш",
2360
+ "&shortmid;": "∣",
2361
+ "&shortparallel;": "∥",
2362
+ "&shy": "­",
2363
+ "&shy;": "­",
2364
+ "&sigma;": "σ",
2365
+ "&sigmaf;": "ς",
2366
+ "&sigmav;": "ς",
2367
+ "&sim;": "∼",
2368
+ "&simdot;": "⩪",
2369
+ "&sime;": "≃",
2370
+ "&simeq;": "≃",
2371
+ "&simg;": "⪞",
2372
+ "&simgE;": "⪠",
2373
+ "&siml;": "⪝",
2374
+ "&simlE;": "⪟",
2375
+ "&simne;": "≆",
2376
+ "&simplus;": "⨤",
2377
+ "&simrarr;": "⥲",
2378
+ "&slarr;": "←",
2379
+ "&smallsetminus;": "∖",
2380
+ "&smashp;": "⨳",
2381
+ "&smeparsl;": "⧤",
2382
+ "&smid;": "∣",
2383
+ "&smile;": "⌣",
2384
+ "&smt;": "⪪",
2385
+ "&smte;": "⪬",
2386
+ "&smtes;": "⪬︀",
2387
+ "&softcy;": "ь",
2388
+ "&sol;": "/",
2389
+ "&solb;": "⧄",
2390
+ "&solbar;": "⌿",
2391
+ "&sopf;": "𝕤",
2392
+ "&spades;": "♠",
2393
+ "&spadesuit;": "♠",
2394
+ "&spar;": "∥",
2395
+ "&sqcap;": "⊓",
2396
+ "&sqcaps;": "⊓︀",
2397
+ "&sqcup;": "⊔",
2398
+ "&sqcups;": "⊔︀",
2399
+ "&sqsub;": "⊏",
2400
+ "&sqsube;": "⊑",
2401
+ "&sqsubset;": "⊏",
2402
+ "&sqsubseteq;": "⊑",
2403
+ "&sqsup;": "⊐",
2404
+ "&sqsupe;": "⊒",
2405
+ "&sqsupset;": "⊐",
2406
+ "&sqsupseteq;": "⊒",
2407
+ "&squ;": "□",
2408
+ "&square;": "□",
2409
+ "&squarf;": "▪",
2410
+ "&squf;": "▪",
2411
+ "&srarr;": "→",
2412
+ "&sscr;": "𝓈",
2413
+ "&ssetmn;": "∖",
2414
+ "&ssmile;": "⌣",
2415
+ "&sstarf;": "⋆",
2416
+ "&star;": "☆",
2417
+ "&starf;": "★",
2418
+ "&straightepsilon;": "ϵ",
2419
+ "&straightphi;": "ϕ",
2420
+ "&strns;": "¯",
2421
+ "&sub;": "⊂",
2422
+ "&subE;": "⫅",
2423
+ "&subdot;": "⪽",
2424
+ "&sube;": "⊆",
2425
+ "&subedot;": "⫃",
2426
+ "&submult;": "⫁",
2427
+ "&subnE;": "⫋",
2428
+ "&subne;": "⊊",
2429
+ "&subplus;": "⪿",
2430
+ "&subrarr;": "⥹",
2431
+ "&subset;": "⊂",
2432
+ "&subseteq;": "⊆",
2433
+ "&subseteqq;": "⫅",
2434
+ "&subsetneq;": "⊊",
2435
+ "&subsetneqq;": "⫋",
2436
+ "&subsim;": "⫇",
2437
+ "&subsub;": "⫕",
2438
+ "&subsup;": "⫓",
2439
+ "&succ;": "≻",
2440
+ "&succapprox;": "⪸",
2441
+ "&succcurlyeq;": "≽",
2442
+ "&succeq;": "⪰",
2443
+ "&succnapprox;": "⪺",
2444
+ "&succneqq;": "⪶",
2445
+ "&succnsim;": "⋩",
2446
+ "&succsim;": "≿",
2447
+ "&sum;": "∑",
2448
+ "&sung;": "♪",
2449
+ "&sup1": "¹",
2450
+ "&sup1;": "¹",
2451
+ "&sup2": "²",
2452
+ "&sup2;": "²",
2453
+ "&sup3": "³",
2454
+ "&sup3;": "³",
2455
+ "&sup;": "⊃",
2456
+ "&supE;": "⫆",
2457
+ "&supdot;": "⪾",
2458
+ "&supdsub;": "⫘",
2459
+ "&supe;": "⊇",
2460
+ "&supedot;": "⫄",
2461
+ "&suphsol;": "⟉",
2462
+ "&suphsub;": "⫗",
2463
+ "&suplarr;": "⥻",
2464
+ "&supmult;": "⫂",
2465
+ "&supnE;": "⫌",
2466
+ "&supne;": "⊋",
2467
+ "&supplus;": "⫀",
2468
+ "&supset;": "⊃",
2469
+ "&supseteq;": "⊇",
2470
+ "&supseteqq;": "⫆",
2471
+ "&supsetneq;": "⊋",
2472
+ "&supsetneqq;": "⫌",
2473
+ "&supsim;": "⫈",
2474
+ "&supsub;": "⫔",
2475
+ "&supsup;": "⫖",
2476
+ "&swArr;": "⇙",
2477
+ "&swarhk;": "⤦",
2478
+ "&swarr;": "↙",
2479
+ "&swarrow;": "↙",
2480
+ "&swnwar;": "⤪",
2481
+ "&szlig": "ß",
2482
+ "&szlig;": "ß",
2483
+ "&target;": "⌖",
2484
+ "&tau;": "τ",
2485
+ "&tbrk;": "⎴",
2486
+ "&tcaron;": "ť",
2487
+ "&tcedil;": "ţ",
2488
+ "&tcy;": "т",
2489
+ "&tdot;": "⃛",
2490
+ "&telrec;": "⌕",
2491
+ "&tfr;": "𝔱",
2492
+ "&there4;": "∴",
2493
+ "&therefore;": "∴",
2494
+ "&theta;": "θ",
2495
+ "&thetasym;": "ϑ",
2496
+ "&thetav;": "ϑ",
2497
+ "&thickapprox;": "≈",
2498
+ "&thicksim;": "∼",
2499
+ "&thinsp;": " ",
2500
+ "&thkap;": "≈",
2501
+ "&thksim;": "∼",
2502
+ "&thorn": "þ",
2503
+ "&thorn;": "þ",
2504
+ "&tilde;": "˜",
2505
+ "&times": "×",
2506
+ "&times;": "×",
2507
+ "&timesb;": "⊠",
2508
+ "&timesbar;": "⨱",
2509
+ "&timesd;": "⨰",
2510
+ "&tint;": "∭",
2511
+ "&toea;": "⤨",
2512
+ "&top;": "⊤",
2513
+ "&topbot;": "⌶",
2514
+ "&topcir;": "⫱",
2515
+ "&topf;": "𝕥",
2516
+ "&topfork;": "⫚",
2517
+ "&tosa;": "⤩",
2518
+ "&tprime;": "‴",
2519
+ "&trade;": "™",
2520
+ "&triangle;": "▵",
2521
+ "&triangledown;": "▿",
2522
+ "&triangleleft;": "◃",
2523
+ "&trianglelefteq;": "⊴",
2524
+ "&triangleq;": "≜",
2525
+ "&triangleright;": "▹",
2526
+ "&trianglerighteq;": "⊵",
2527
+ "&tridot;": "◬",
2528
+ "&trie;": "≜",
2529
+ "&triminus;": "⨺",
2530
+ "&triplus;": "⨹",
2531
+ "&trisb;": "⧍",
2532
+ "&tritime;": "⨻",
2533
+ "&trpezium;": "⏢",
2534
+ "&tscr;": "𝓉",
2535
+ "&tscy;": "ц",
2536
+ "&tshcy;": "ћ",
2537
+ "&tstrok;": "ŧ",
2538
+ "&twixt;": "≬",
2539
+ "&twoheadleftarrow;": "↞",
2540
+ "&twoheadrightarrow;": "↠",
2541
+ "&uArr;": "⇑",
2542
+ "&uHar;": "⥣",
2543
+ "&uacute": "ú",
2544
+ "&uacute;": "ú",
2545
+ "&uarr;": "↑",
2546
+ "&ubrcy;": "ў",
2547
+ "&ubreve;": "ŭ",
2548
+ "&ucirc": "û",
2549
+ "&ucirc;": "û",
2550
+ "&ucy;": "у",
2551
+ "&udarr;": "⇅",
2552
+ "&udblac;": "ű",
2553
+ "&udhar;": "⥮",
2554
+ "&ufisht;": "⥾",
2555
+ "&ufr;": "𝔲",
2556
+ "&ugrave": "ù",
2557
+ "&ugrave;": "ù",
2558
+ "&uharl;": "↿",
2559
+ "&uharr;": "↾",
2560
+ "&uhblk;": "▀",
2561
+ "&ulcorn;": "⌜",
2562
+ "&ulcorner;": "⌜",
2563
+ "&ulcrop;": "⌏",
2564
+ "&ultri;": "◸",
2565
+ "&umacr;": "ū",
2566
+ "&uml": "¨",
2567
+ "&uml;": "¨",
2568
+ "&uogon;": "ų",
2569
+ "&uopf;": "𝕦",
2570
+ "&uparrow;": "↑",
2571
+ "&updownarrow;": "↕",
2572
+ "&upharpoonleft;": "↿",
2573
+ "&upharpoonright;": "↾",
2574
+ "&uplus;": "⊎",
2575
+ "&upsi;": "υ",
2576
+ "&upsih;": "ϒ",
2577
+ "&upsilon;": "υ",
2578
+ "&upuparrows;": "⇈",
2579
+ "&urcorn;": "⌝",
2580
+ "&urcorner;": "⌝",
2581
+ "&urcrop;": "⌎",
2582
+ "&uring;": "ů",
2583
+ "&urtri;": "◹",
2584
+ "&uscr;": "𝓊",
2585
+ "&utdot;": "⋰",
2586
+ "&utilde;": "ũ",
2587
+ "&utri;": "▵",
2588
+ "&utrif;": "▴",
2589
+ "&uuarr;": "⇈",
2590
+ "&uuml": "ü",
2591
+ "&uuml;": "ü",
2592
+ "&uwangle;": "⦧",
2593
+ "&vArr;": "⇕",
2594
+ "&vBar;": "⫨",
2595
+ "&vBarv;": "⫩",
2596
+ "&vDash;": "⊨",
2597
+ "&vangrt;": "⦜",
2598
+ "&varepsilon;": "ϵ",
2599
+ "&varkappa;": "ϰ",
2600
+ "&varnothing;": "∅",
2601
+ "&varphi;": "ϕ",
2602
+ "&varpi;": "ϖ",
2603
+ "&varpropto;": "∝",
2604
+ "&varr;": "↕",
2605
+ "&varrho;": "ϱ",
2606
+ "&varsigma;": "ς",
2607
+ "&varsubsetneq;": "⊊︀",
2608
+ "&varsubsetneqq;": "⫋︀",
2609
+ "&varsupsetneq;": "⊋︀",
2610
+ "&varsupsetneqq;": "⫌︀",
2611
+ "&vartheta;": "ϑ",
2612
+ "&vartriangleleft;": "⊲",
2613
+ "&vartriangleright;": "⊳",
2614
+ "&vcy;": "в",
2615
+ "&vdash;": "⊢",
2616
+ "&vee;": "∨",
2617
+ "&veebar;": "⊻",
2618
+ "&veeeq;": "≚",
2619
+ "&vellip;": "⋮",
2620
+ "&verbar;": "|",
2621
+ "&vert;": "|",
2622
+ "&vfr;": "𝔳",
2623
+ "&vltri;": "⊲",
2624
+ "&vnsub;": "⊂⃒",
2625
+ "&vnsup;": "⊃⃒",
2626
+ "&vopf;": "𝕧",
2627
+ "&vprop;": "∝",
2628
+ "&vrtri;": "⊳",
2629
+ "&vscr;": "𝓋",
2630
+ "&vsubnE;": "⫋︀",
2631
+ "&vsubne;": "⊊︀",
2632
+ "&vsupnE;": "⫌︀",
2633
+ "&vsupne;": "⊋︀",
2634
+ "&vzigzag;": "⦚",
2635
+ "&wcirc;": "ŵ",
2636
+ "&wedbar;": "⩟",
2637
+ "&wedge;": "∧",
2638
+ "&wedgeq;": "≙",
2639
+ "&weierp;": "℘",
2640
+ "&wfr;": "𝔴",
2641
+ "&wopf;": "𝕨",
2642
+ "&wp;": "℘",
2643
+ "&wr;": "≀",
2644
+ "&wreath;": "≀",
2645
+ "&wscr;": "𝓌",
2646
+ "&xcap;": "⋂",
2647
+ "&xcirc;": "◯",
2648
+ "&xcup;": "⋃",
2649
+ "&xdtri;": "▽",
2650
+ "&xfr;": "𝔵",
2651
+ "&xhArr;": "⟺",
2652
+ "&xharr;": "⟷",
2653
+ "&xi;": "ξ",
2654
+ "&xlArr;": "⟸",
2655
+ "&xlarr;": "⟵",
2656
+ "&xmap;": "⟼",
2657
+ "&xnis;": "⋻",
2658
+ "&xodot;": "⨀",
2659
+ "&xopf;": "𝕩",
2660
+ "&xoplus;": "⨁",
2661
+ "&xotime;": "⨂",
2662
+ "&xrArr;": "⟹",
2663
+ "&xrarr;": "⟶",
2664
+ "&xscr;": "𝓍",
2665
+ "&xsqcup;": "⨆",
2666
+ "&xuplus;": "⨄",
2667
+ "&xutri;": "△",
2668
+ "&xvee;": "⋁",
2669
+ "&xwedge;": "⋀",
2670
+ "&yacute": "ý",
2671
+ "&yacute;": "ý",
2672
+ "&yacy;": "я",
2673
+ "&ycirc;": "ŷ",
2674
+ "&ycy;": "ы",
2675
+ "&yen": "¥",
2676
+ "&yen;": "¥",
2677
+ "&yfr;": "𝔶",
2678
+ "&yicy;": "ї",
2679
+ "&yopf;": "𝕪",
2680
+ "&yscr;": "𝓎",
2681
+ "&yucy;": "ю",
2682
+ "&yuml": "ÿ",
2683
+ "&yuml;": "ÿ",
2684
+ "&zacute;": "ź",
2685
+ "&zcaron;": "ž",
2686
+ "&zcy;": "з",
2687
+ "&zdot;": "ż",
2688
+ "&zeetrf;": "ℨ",
2689
+ "&zeta;": "ζ",
2690
+ "&zfr;": "𝔷",
2691
+ "&zhcy;": "ж",
2692
+ "&zigrarr;": "⇝",
2693
+ "&zopf;": "𝕫",
2694
+ "&zscr;": "𝓏",
2695
+ "&zwj;": "‍",
2696
+ "&zwnj;": "‌"
2697
+ };
2698
+ function hu(s) {
2699
+ return s.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi, (u, r) => {
2700
+ if (typeof M[u] == "string")
2701
+ return M[u];
2702
+ if (r.charAt(0) !== "#" || u.charAt(u.length - 1) !== ";")
2703
+ return u;
2704
+ let t;
2705
+ r.charAt(1) === "x" ? t = parseInt(r.substr(2), 16) : t = parseInt(r.substr(1), 10);
2706
+ let i = "";
2707
+ return t >= 55296 && t <= 57343 || t > 1114111 ? "�" : (t > 65535 && (t -= 65536, i += String.fromCharCode(t >>> 10 & 1023 | 55296), t = 56320 | t & 1023), i += String.fromCharCode(t), i);
2708
+ });
2709
+ }
2710
+ function g(s) {
2711
+ return s.trim().replace(/[<>"'?&]/g, (u) => {
2712
+ let r = u.charCodeAt(0).toString(16);
2713
+ return r.length < 2 && (r = "0" + r), "&#x" + r.toUpperCase() + ";";
2714
+ });
2715
+ }
2716
+ function du(s) {
2717
+ return "<div>" + g(s).replace(/\n/g, "<br />") + "</div>";
2718
+ }
2719
+ function fu(s) {
2720
+ return s = s.replace(/\r?\n/g, "").replace(/<\!\-\-.*?\-\->/gi, " ").replace(/<br\b[^>]*>/gi, `
2721
+ `).replace(/<\/?(p|div|table|tr|td|th)\b[^>]*>/gi, `
2722
+
2723
+ `).replace(/<script\b[^>]*>.*?<\/script\b[^>]*>/gi, " ").replace(/^.*<body\b[^>]*>/i, "").replace(/^.*<\/head\b[^>]*>/i, "").replace(/^.*<\!doctype\b[^>]*>/i, "").replace(/<\/body\b[^>]*>.*$/i, "").replace(/<\/html\b[^>]*>.*$/i, "").replace(/<a\b[^>]*href\s*=\s*["']?([^\s"']+)[^>]*>/gi, " ($1) ").replace(/<\/?(span|em|i|strong|b|u|a)\b[^>]*>/gi, "").replace(/<li\b[^>]*>[\n\u0001\s]*/gi, "* ").replace(/<hr\b[^>]*>/g, `
2724
+ -------------
2725
+ `).replace(/<[^>]*>/g, " ").replace(/\u0001/g, `
2726
+ `).replace(/[ \t]+/g, " ").replace(/^\s+$/gm, "").replace(/\n\n+/g, `
2727
+
2728
+ `).replace(/^\n+/, `
2729
+ `).replace(/\n+$/, `
2730
+ `), s = hu(s), s;
2731
+ }
2732
+ function Q(s) {
2733
+ if (typeof Intl > "u")
2734
+ return s;
2735
+ const u = new Date(s);
2736
+ return isNaN(u.getTime()) ? s : new Intl.DateTimeFormat("default", {
2737
+ year: "numeric",
2738
+ month: "numeric",
2739
+ day: "numeric",
2740
+ hour: "numeric",
2741
+ minute: "numeric",
2742
+ second: "numeric",
2743
+ hour12: !1
2744
+ }).format(u);
2745
+ }
2746
+ function Du(s) {
2747
+ return [].concat(s.name || []).concat(s.name ? `<${s.address}>` : s.address).join(" ");
2748
+ }
2749
+ function v(s) {
2750
+ let u = [], r = (t, i) => {
2751
+ if (i && u.push(", "), t.group) {
2752
+ let n = `${t.name}:`, e = ";";
2753
+ u.push(n), t.group.forEach(r), u.push(e);
2754
+ } else
2755
+ u.push(Du(t));
2756
+ };
2757
+ return s.forEach(r), u.join("");
2758
+ }
2759
+ function Au(s) {
2760
+ return `<a href="mailto:${g(s.address)}" class="postal-email-address">${g(s.name || `<${s.address}>`)}</a>`;
2761
+ }
2762
+ function y(s) {
2763
+ let u = [], r = (t, i) => {
2764
+ if (i && u.push('<span class="postal-email-address-separator">, </span>'), t.group) {
2765
+ let n = `<span class="postal-email-address-group">${g(t.name)}:</span>`, e = '<span class="postal-email-address-group">;</span>';
2766
+ u.push(n), t.group.forEach(r), u.push(e);
2767
+ } else
2768
+ u.push(Au(t));
2769
+ };
2770
+ return s.forEach(r), u.join(" ");
2771
+ }
2772
+ function gu(s, u, r) {
2773
+ s = (s || "").toString(), u = u || 76;
2774
+ let t = 0, i = s.length, n = "", e, a;
2775
+ for (; t < i; ) {
2776
+ if (e = s.substr(t, u), e.length < u) {
2777
+ n += e;
2778
+ break;
2779
+ }
2780
+ if (a = e.match(/^[^\n\r]*(\r?\n|\r)/)) {
2781
+ e = a[0], n += e, t += e.length;
2782
+ continue;
2783
+ } else (a = e.match(/(\s+)[^\s]*$/)) && a[0].length - (a[1] || "").length < e.length ? e = e.substr(0, e.length - (a[0].length - (a[1] || "").length)) : (a = s.substr(t + e.length).match(/^[^\s]+(\s*)/)) && (e = e + a[0].substr(0, a[0].length - 0));
2784
+ n += e, t += e.length, t < i && (n += `\r
2785
+ `);
2786
+ }
2787
+ return n;
2788
+ }
2789
+ function I(s) {
2790
+ let u = [];
2791
+ s.from && u.push({ key: "From", val: v([s.from]) }), s.subject && u.push({ key: "Subject", val: s.subject }), s.date && u.push({ key: "Date", val: Q(s.date) }), s.to && s.to.length && u.push({ key: "To", val: v(s.to) }), s.cc && s.cc.length && u.push({ key: "Cc", val: v(s.cc) }), s.bcc && s.bcc.length && u.push({ key: "Bcc", val: v(s.bcc) });
2792
+ let r = u.map((e) => e.key.length).reduce((e, a) => a > e ? a : e, 0);
2793
+ u = u.flatMap((e) => {
2794
+ let a = r - e.key.length, o = `${e.key}: ${" ".repeat(a)}`, c = `${" ".repeat(e.key.length + 1)} ${" ".repeat(a)}`;
2795
+ return gu(e.val, 80).split(/\r?\n/).map((p) => p.trim()).map((p, f) => `${f ? c : o}${p}`);
2796
+ });
2797
+ let t = u.map((e) => e.length).reduce((e, a) => a > e ? a : e, 0), i = "-".repeat(t);
2798
+ return `
2799
+ ${i}
2800
+ ${u.join(`
2801
+ `)}
2802
+ ${i}
2803
+ `;
2804
+ }
2805
+ function V(s) {
2806
+ let u = [];
2807
+ return s.from && u.push(
2808
+ // through the plural formatter, because `From:` may hold RFC 5322 group syntax
2809
+ // and a group has no address of its own
2810
+ `<div class="postal-email-header-key">From</div><div class="postal-email-header-value">${y([s.from])}</div>`
2811
+ ), s.subject && u.push(
2812
+ `<div class="postal-email-header-key">Subject</div><div class="postal-email-header-value postal-email-header-subject">${g(
2813
+ s.subject
2814
+ )}</div>`
2815
+ ), s.date && u.push(
2816
+ `<div class="postal-email-header-key">Date</div><div class="postal-email-header-value postal-email-header-date" data-date="${g(
2817
+ s.date
2818
+ )}">${g(Q(s.date))}</div>`
2819
+ ), s.to && s.to.length && u.push(
2820
+ `<div class="postal-email-header-key">To</div><div class="postal-email-header-value">${y(s.to)}</div>`
2821
+ ), s.cc && s.cc.length && u.push(
2822
+ `<div class="postal-email-header-key">Cc</div><div class="postal-email-header-value">${y(s.cc)}</div>`
2823
+ ), s.bcc && s.bcc.length && u.push(
2824
+ `<div class="postal-email-header-key">Bcc</div><div class="postal-email-header-value">${y(s.bcc)}</div>`
2825
+ ), `<div class="postal-email-header">${u.length ? '<div class="postal-email-header-row">' : ""}${u.join(
2826
+ `</div>
2827
+ <div class="postal-email-header-row">`
2828
+ )}${u.length ? "</div>" : ""}</div>`;
2829
+ }
2830
+ const G = /\w/, $ = /[^\s]+/g;
2831
+ function mu(s) {
2832
+ $.lastIndex = 0;
2833
+ let u;
2834
+ for (; u = $.exec(s); ) {
2835
+ const r = u[0], t = r.indexOf("@");
2836
+ let i = 0;
2837
+ for (; i < t && !G.test(r.charAt(i)); )
2838
+ i++;
2839
+ if (i >= t)
2840
+ continue;
2841
+ let n = r.length;
2842
+ for (; n > t + 1 && !G.test(r.charAt(n - 1)); )
2843
+ n--;
2844
+ if (!(n <= t + 1))
2845
+ return { index: u.index + i, length: n - i, value: r.substring(i, n) };
2846
+ }
2847
+ return null;
2848
+ }
2849
+ function Cu(s, u) {
2850
+ let r = !1, t = "text", i, n = [], e = {
2851
+ address: [],
2852
+ comment: [],
2853
+ group: [],
2854
+ text: [],
2855
+ textWasQuoted: []
2856
+ // Track which text tokens came from inside quotes
2857
+ }, a, o, c = !1;
2858
+ for (a = 0, o = s.length; a < o; a++) {
2859
+ let l = s[a], p = a ? s[a - 1] : null;
2860
+ if (l.type === "operator")
2861
+ switch (l.value) {
2862
+ case "<":
2863
+ t = "address", c = !1;
2864
+ break;
2865
+ case "(":
2866
+ t = "comment", c = !1;
2867
+ break;
2868
+ case ":":
2869
+ t = "group", r = !0, c = !1;
2870
+ break;
2871
+ case '"':
2872
+ c = !c, t = "text";
2873
+ break;
2874
+ default:
2875
+ t = "text", c = !1;
2876
+ break;
2877
+ }
2878
+ else l.value && (t === "address" && (l.value = l.value.replace(/^[^<]*<\s*/, "")), p && p.noBreak && e[t].length ? (e[t][e[t].length - 1] += l.value, t === "text" && c && (e.textWasQuoted[e.textWasQuoted.length - 1] = !0)) : (e[t].push(l.value), t === "text" && e.textWasQuoted.push(c)));
2879
+ }
2880
+ if (!e.text.length && e.comment.length && (e.text = e.comment, e.comment = []), r) {
2881
+ e.text = e.text.join(" ");
2882
+ let l = [];
2883
+ e.group.length && w(e.group.join(","), { _depth: u + 1 }).forEach((f) => {
2884
+ f.group ? l = l.concat(f.group) : l.push(f);
2885
+ }), n.push({
2886
+ name: C(e.text || i && i.name),
2887
+ group: l
2888
+ });
2889
+ } else {
2890
+ if (!e.address.length && e.text.length) {
2891
+ for (a = e.text.length - 1; a >= 0; a--)
2892
+ if (!e.textWasQuoted[a] && e.text[a].match(/^[^@\s]+@[^@\s]+$/)) {
2893
+ e.address = e.text.splice(a, 1), e.textWasQuoted.splice(a, 1);
2894
+ break;
2895
+ }
2896
+ if (!e.address.length) {
2897
+ for (a = e.text.length - 1; a >= 0; a--)
2898
+ if (!e.textWasQuoted[a]) {
2899
+ const l = mu(e.text[a]);
2900
+ if (l) {
2901
+ e.address = [l.value], e.text[a] = (e.text[a].substring(0, l.index).replace(/\s+$/, "") + " " + e.text[a].substring(l.index + l.length).replace(/^\s+/, "")).trim();
2902
+ break;
2903
+ }
2904
+ e.text[a] = e.text[a].trim();
2905
+ }
2906
+ }
2907
+ }
2908
+ if (!e.text.length && e.comment.length && (e.text = e.comment, e.comment = []), e.address.length > 1 && (e.text = e.text.concat(e.address.splice(1))), e.text = e.text.join(" "), e.address = e.address.join(" "), !e.address && tu(e.text.trim())) {
2909
+ const l = C(e.text);
2910
+ if (/<[^<>]+@[^<>]+>/.test(l)) {
2911
+ const p = w(l);
2912
+ if (p && p.length)
2913
+ return p;
2914
+ }
2915
+ return [{ address: "", name: l }];
2916
+ }
2917
+ i = {
2918
+ address: e.address || e.text || "",
2919
+ name: C(e.text || e.address || "")
2920
+ }, i.address === i.name && ((i.address || "").match(/@/) ? i.name = "" : i.address = ""), n.push(i);
2921
+ }
2922
+ return n;
2923
+ }
2924
+ class Eu {
2925
+ constructor(u) {
2926
+ this.str = (u || "").toString(), this.operatorCurrent = "", this.operatorExpecting = "", this.node = null, this.escaped = !1, this.list = [], this.operators = {
2927
+ '"': '"',
2928
+ "(": ")",
2929
+ "<": ">",
2930
+ ",": "",
2931
+ ":": ";",
2932
+ // Semicolons are not a legal delimiter per the RFC2822 grammar other
2933
+ // than for terminating a group, but they are also not valid for any
2934
+ // other use in this context. Given that some mail clients have
2935
+ // historically allowed the semicolon as a delimiter equivalent to the
2936
+ // comma in their UI, it makes sense to treat them the same as a comma
2937
+ // when used outside of a group.
2938
+ ";": ""
2939
+ };
2940
+ }
2941
+ /**
2942
+ * Tokenizes the original input string
2943
+ *
2944
+ * @return {Array} An array of operator|text tokens
2945
+ */
2946
+ tokenize() {
2947
+ let u = [];
2948
+ for (let r = 0, t = this.str.length; r < t; r++) {
2949
+ let i = this.str.charAt(r), n = r < t - 1 ? this.str.charAt(r + 1) : null;
2950
+ this.checkChar(i, n);
2951
+ }
2952
+ return this.list.forEach((r) => {
2953
+ r.value = (r.value || "").toString().trim(), r.value && u.push(r);
2954
+ }), u;
2955
+ }
2956
+ /**
2957
+ * Checks if a character is an operator or text and acts accordingly
2958
+ *
2959
+ * @param {String} chr Character from the address field
2960
+ */
2961
+ checkChar(u, r) {
2962
+ if (!this.escaped) {
2963
+ if (u === this.operatorExpecting) {
2964
+ this.node = {
2965
+ type: "operator",
2966
+ value: u
2967
+ }, r && ![" ", " ", "\r", `
2968
+ `, ",", ";"].includes(r) && (this.node.noBreak = !0), this.list.push(this.node), this.node = null, this.operatorExpecting = "", this.escaped = !1;
2969
+ return;
2970
+ } else if (!this.operatorExpecting && u in this.operators) {
2971
+ this.node = {
2972
+ type: "operator",
2973
+ value: u
2974
+ }, this.list.push(this.node), this.node = null, this.operatorExpecting = this.operators[u], this.escaped = !1;
2975
+ return;
2976
+ } else if (this.operatorExpecting === '"' && u === "\\") {
2977
+ this.escaped = !0;
2978
+ return;
2979
+ }
2980
+ }
2981
+ this.node || (this.node = {
2982
+ type: "text",
2983
+ value: ""
2984
+ }, this.list.push(this.node)), u === `
2985
+ ` && (u = " "), (u.charCodeAt(0) >= 33 || [" ", " "].includes(u)) && (this.node.value += u), this.escaped = !1;
2986
+ }
2987
+ }
2988
+ const bu = 50;
2989
+ function w(s, u) {
2990
+ u = u || {};
2991
+ let r = u._depth || 0;
2992
+ if (r > bu)
2993
+ return [];
2994
+ let i = new Eu(s).tokenize(), n = [], e = [], a = [];
2995
+ if (i.forEach((o) => {
2996
+ o.type === "operator" && (o.value === "," || o.value === ";") ? (e.length && n.push(e), e = []) : e.push(o);
2997
+ }), e.length && n.push(e), n.forEach((o) => {
2998
+ o = Cu(o, r), o.length && (a = a.concat(o));
2999
+ }), u.flatten) {
3000
+ let o = [], c = (l) => {
3001
+ l.forEach((p) => {
3002
+ if (p.group)
3003
+ return c(p.group);
3004
+ o.push(p);
3005
+ });
3006
+ };
3007
+ return c(a), o;
3008
+ }
3009
+ return a;
3010
+ }
3011
+ function Bu(s) {
3012
+ for (var u = "", r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", t = new Uint8Array(s), i = t.byteLength, n = i % 3, e = i - n, a, o, c, l, p, f = 0; f < e; f = f + 3)
3013
+ p = t[f] << 16 | t[f + 1] << 8 | t[f + 2], a = (p & 16515072) >> 18, o = (p & 258048) >> 12, c = (p & 4032) >> 6, l = p & 63, u += r[a] + r[o] + r[c] + r[l];
3014
+ return n == 1 ? (p = t[e], a = (p & 252) >> 2, o = (p & 3) << 4, u += r[a] + r[o] + "==") : n == 2 && (p = t[e] << 8 | t[e + 1], a = (p & 64512) >> 10, o = (p & 1008) >> 4, c = (p & 15) << 2, u += r[a] + r[o] + r[c] + "="), u;
3015
+ }
3016
+ const wu = 256, vu = 2 * 1024 * 1024, yu = 10;
3017
+ function T(s) {
3018
+ return s.replace(/-(.)/g, (u, r) => r.toUpperCase());
3019
+ }
3020
+ function L(s, u, r) {
3021
+ if (s == null)
3022
+ return u;
3023
+ if (typeof s != "number" || !Number.isInteger(s) || s < 0)
3024
+ throw new TypeError(`${r} must be a non-negative integer`);
3025
+ return s;
3026
+ }
3027
+ class S {
3028
+ // async so that an invalid option rejects the returned promise instead of throwing
3029
+ // synchronously, which would escape a `.catch()` chain
3030
+ static async parse(u, r) {
3031
+ return new S(r).parse(u);
3032
+ }
3033
+ // rfc822NestingDepth is internal state that nested parsers receive from their parent.
3034
+ // It is deliberately a separate argument rather than an option, so that forwarding a
3035
+ // caller supplied options object can not seed it and switch the recursion limit off.
3036
+ constructor(u, r = 0) {
3037
+ this.options = u || {}, this.mimeOptions = {
3038
+ maxNestingDepth: L(this.options.maxNestingDepth, wu, "maxNestingDepth"),
3039
+ maxHeadersSize: L(this.options.maxHeadersSize, vu, "maxHeadersSize")
3040
+ }, this.maxRfc822NestingDepth = L(
3041
+ this.options.maxRfc822NestingDepth,
3042
+ yu,
3043
+ "maxRfc822NestingDepth"
3044
+ ), this.rfc822NestingDepth = r, this.root = this.currentNode = new z({
3045
+ postalMime: this,
3046
+ ...this.mimeOptions
3047
+ }), this.boundaries = [], this.headerSize = 0, this.textContent = {}, this.attachments = [], this.attachmentEncoding = (this.options.attachmentEncoding || "").toString().replace(/[-_\s]/g, "").trim().toLowerCase() || "arraybuffer", this.started = !1;
3048
+ }
3049
+ async finalize() {
3050
+ await this.root.finalize();
3051
+ }
3052
+ async processLine(u, r) {
3053
+ let t = this.boundaries;
3054
+ if (t.length && u.length > 2 && u[0] === 45 && u[1] === 45)
3055
+ for (let i = t.length - 1; i >= 0; i--) {
3056
+ let n = t[i];
3057
+ if (u.length < n.value.length + 2)
3058
+ continue;
3059
+ let e = !0;
3060
+ for (let l = 0; l < n.value.length; l++)
3061
+ if (u[l + 2] !== n.value[l]) {
3062
+ e = !1;
3063
+ break;
3064
+ }
3065
+ if (!e)
3066
+ continue;
3067
+ let a = n.value.length + 2, o = !1;
3068
+ u.length >= n.value.length + 4 && u[n.value.length + 2] === 45 && u[n.value.length + 3] === 45 && (o = !0, a = n.value.length + 4);
3069
+ let c = !0;
3070
+ for (let l = a; l < u.length; l++)
3071
+ if (u[l] !== 32 && u[l] !== 9) {
3072
+ c = !1;
3073
+ break;
3074
+ }
3075
+ if (c)
3076
+ return o ? (await n.node.finalize(), this.currentNode = n.node.parentNode || this.root) : (await n.node.finalizeChildNodes(), this.currentNode = new z({
3077
+ postalMime: this,
3078
+ parentNode: n.node,
3079
+ parentMultipartType: n.node.contentType.multipart,
3080
+ ...this.mimeOptions
3081
+ })), r ? this.finalize() : void 0;
3082
+ }
3083
+ if (this.currentNode.feed(u), r)
3084
+ return this.finalize();
3085
+ }
3086
+ readLine() {
3087
+ let u = this.readPos, r = this.readPos;
3088
+ for (; this.readPos < this.av.length; ) {
3089
+ const t = this.av[this.readPos++];
3090
+ if (t !== 13 && t !== 10 && (r = this.readPos), t === 10)
3091
+ return {
3092
+ bytes: new Uint8Array(this.buf, u, r - u),
3093
+ done: this.readPos >= this.av.length
3094
+ };
3095
+ }
3096
+ return {
3097
+ bytes: new Uint8Array(this.buf, u, r - u),
3098
+ done: this.readPos >= this.av.length
3099
+ };
3100
+ }
3101
+ async processNodeTree() {
3102
+ let u = {}, r = /* @__PURE__ */ new Set(), t = this.textMap = /* @__PURE__ */ new Map(), i = this.forceRfc822Attachments(), n = async (e, a, o) => {
3103
+ var c, l, p, f, b;
3104
+ if (a = a || !1, o = o || !1, e.contentType.multipart)
3105
+ e.contentType.multipart === "alternative" ? a = e : e.contentType.multipart === "related" && (o = e);
3106
+ else {
3107
+ const A = this.isInlineMessageRfc822(e) && !i, m = A && this.rfc822NestingDepth >= this.maxRfc822NestingDepth;
3108
+ if (A && !m) {
3109
+ const h = new S(
3110
+ {
3111
+ // Only the limits are inherited. Options that decide how a part
3112
+ // is classified stay with the parser that was configured.
3113
+ ...this.mimeOptions,
3114
+ maxRfc822NestingDepth: this.maxRfc822NestingDepth,
3115
+ // attachments are encoded by the parent parser, keep raw buffers here
3116
+ attachmentEncoding: "arraybuffer"
3117
+ },
3118
+ this.rfc822NestingDepth + 1
3119
+ );
3120
+ e.subMessage = await h.parse(e.content), t.has(e) || t.set(e, {});
3121
+ let d = t.get(e);
3122
+ (e.subMessage.text || !e.subMessage.html) && (d.plain = d.plain || [], d.plain.push({ type: "subMessage", value: e.subMessage }), r.add("plain")), e.subMessage.html && (d.html = d.html || [], d.html.push({ type: "subMessage", value: e.subMessage }), r.add("html")), h.textMap && h.textMap.forEach((D, K) => {
3123
+ t.set(K, D);
3124
+ });
3125
+ for (let D of e.subMessage.attachments || [])
3126
+ this.attachments.push(D);
3127
+ } else if (this.isInlineTextNode(e)) {
3128
+ let h = e.contentType.parsed.value.substr(e.contentType.parsed.value.indexOf("/") + 1), d = a || e;
3129
+ t.has(d) || t.set(d, {});
3130
+ let D = t.get(d);
3131
+ D[h] = D[h] || [], D[h].push({ type: "text", value: e.getTextContent() }), r.add(h);
3132
+ } else if (e.content) {
3133
+ const h = ((p = (l = (c = e.contentDisposition) == null ? void 0 : c.parsed) == null ? void 0 : l.params) == null ? void 0 : p.filename) || e.contentType.parsed.params.name || null, d = {
3134
+ filename: h ? C(h) : null,
3135
+ mimeType: e.contentType.parsed.value,
3136
+ disposition: ((b = (f = e.contentDisposition) == null ? void 0 : f.parsed) == null ? void 0 : b.value) || null
3137
+ };
3138
+ switch (o && e.contentId && !m && (d.related = !0), m && (d.rfc822DepthExceeded = !0), e.contentDescription && (d.description = C(e.contentDescription)), e.contentId && (d.contentId = e.contentId), e.contentType.parsed.value) {
3139
+ case "text/calendar":
3140
+ case "application/ics": {
3141
+ e.contentType.parsed.params.method && (d.method = e.contentType.parsed.params.method.toString().toUpperCase().trim());
3142
+ const D = e.getTextContent().replace(/\r?\n/g, `
3143
+ `).replace(/\n*$/, `
3144
+ `);
3145
+ d.content = E.encode(D);
3146
+ break;
3147
+ }
3148
+ default:
3149
+ d.content = e.content;
3150
+ }
3151
+ this.attachments.push(d);
3152
+ }
3153
+ }
3154
+ for (let A of e.childNodes)
3155
+ await n(A, a, o);
3156
+ };
3157
+ await n(this.root, !1, !1), t.forEach((e) => {
3158
+ r.forEach((a) => {
3159
+ if (u[a] || (u[a] = []), e[a])
3160
+ e[a].forEach((o) => {
3161
+ switch (o.type) {
3162
+ case "text":
3163
+ u[a].push(o.value);
3164
+ break;
3165
+ case "subMessage":
3166
+ switch (a) {
3167
+ case "html":
3168
+ u[a].push(V(o.value));
3169
+ break;
3170
+ case "plain":
3171
+ u[a].push(I(o.value));
3172
+ break;
3173
+ }
3174
+ break;
3175
+ }
3176
+ });
3177
+ else {
3178
+ let o;
3179
+ switch (a) {
3180
+ case "html":
3181
+ o = "plain";
3182
+ break;
3183
+ case "plain":
3184
+ o = "html";
3185
+ break;
3186
+ }
3187
+ (e[o] || []).forEach((c) => {
3188
+ switch (c.type) {
3189
+ case "text":
3190
+ switch (a) {
3191
+ case "html":
3192
+ u[a].push(du(c.value));
3193
+ break;
3194
+ case "plain":
3195
+ u[a].push(fu(c.value));
3196
+ break;
3197
+ }
3198
+ break;
3199
+ case "subMessage":
3200
+ switch (a) {
3201
+ case "html":
3202
+ u[a].push(V(c.value));
3203
+ break;
3204
+ case "plain":
3205
+ u[a].push(I(c.value));
3206
+ break;
3207
+ }
3208
+ break;
3209
+ }
3210
+ });
3211
+ }
3212
+ });
3213
+ }), Object.keys(u).forEach((e) => {
3214
+ u[e] = u[e].join(`
3215
+ `);
3216
+ }), this.textContent = u;
3217
+ }
3218
+ isInlineTextNode(u) {
3219
+ var r, t, i;
3220
+ if (((t = (r = u.contentDisposition) == null ? void 0 : r.parsed) == null ? void 0 : t.value) === "attachment")
3221
+ return !1;
3222
+ switch ((i = u.contentType.parsed) == null ? void 0 : i.value) {
3223
+ case "text/html":
3224
+ case "text/plain":
3225
+ return !0;
3226
+ case "text/calendar":
3227
+ case "text/csv":
3228
+ default:
3229
+ return !1;
3230
+ }
3231
+ }
3232
+ isInlineMessageRfc822(u) {
3233
+ var t, i, n;
3234
+ return ((t = u.contentType.parsed) == null ? void 0 : t.value) !== "message/rfc822" ? !1 : (((n = (i = u.contentDisposition) == null ? void 0 : i.parsed) == null ? void 0 : n.value) || (this.options.rfc822Attachments ? "attachment" : "inline")) === "inline";
3235
+ }
3236
+ // Check if this is a specially crafted report email where message/rfc822 content should not be inlined
3237
+ forceRfc822Attachments() {
3238
+ if (this.options.forceRfc822Attachments)
3239
+ return !0;
3240
+ let u = !1, r = (t) => {
3241
+ t.contentType.multipart || t.contentType.parsed && ["message/delivery-status", "message/feedback-report"].includes(t.contentType.parsed.value) && (u = !0);
3242
+ for (let i of t.childNodes)
3243
+ r(i);
3244
+ };
3245
+ return r(this.root), u;
3246
+ }
3247
+ async resolveStream(u) {
3248
+ let r = 0, t = [];
3249
+ const i = u.getReader();
3250
+ for (; ; ) {
3251
+ const { done: a, value: o } = await i.read();
3252
+ if (a)
3253
+ break;
3254
+ t.push(o), r += o.length;
3255
+ }
3256
+ const n = new Uint8Array(r);
3257
+ let e = 0;
3258
+ for (let a of t)
3259
+ n.set(a, e), e += a.length;
3260
+ return n;
3261
+ }
3262
+ async parse(u) {
3263
+ var i, n;
3264
+ if (this.started)
3265
+ throw new Error("Can not reuse parser, create a new PostalMime object");
3266
+ for (this.started = !0, u && typeof u.getReader == "function" && (u = await this.resolveStream(u)), u = u || new ArrayBuffer(0), typeof u == "string" && (u = E.encode(u)), (u instanceof Blob || Object.prototype.toString.call(u) === "[object Blob]") && (u = await x(u)), ArrayBuffer.isView(u) && (u = u.buffer.slice(u.byteOffset, u.byteOffset + u.byteLength)), this.buf = u, this.av = new Uint8Array(u), this.readPos = 0; this.readPos < this.av.length; ) {
3267
+ const e = this.readLine();
3268
+ await this.processLine(e.bytes, e.done);
3269
+ }
3270
+ await this.processNodeTree();
3271
+ const r = {
3272
+ headers: this.root.headers.map((e) => ({
3273
+ key: e.key,
3274
+ originalKey: e.originalKey,
3275
+ value: e.value
3276
+ }))
3277
+ };
3278
+ for (const e of ["from", "sender"]) {
3279
+ const a = this.root.headers.find((o) => o.key === e);
3280
+ if (a && a.value) {
3281
+ const o = w(a.value);
3282
+ o && o.length && (r[e] = o[0]);
3283
+ }
3284
+ }
3285
+ for (const e of ["delivered-to", "return-path"]) {
3286
+ const a = this.root.headers.find((o) => o.key === e);
3287
+ if (a && a.value) {
3288
+ const o = w(a.value);
3289
+ if (o && o.length && o[0].address) {
3290
+ const c = T(e);
3291
+ r[c] = o[0].address;
3292
+ }
3293
+ }
3294
+ }
3295
+ for (const e of ["to", "cc", "bcc", "reply-to"]) {
3296
+ const a = this.root.headers.filter((c) => c.key === e);
3297
+ let o = [];
3298
+ if (a.filter((c) => c && c.value).map((c) => w(c.value)).forEach((c) => o = o.concat(c || [])), o && o.length) {
3299
+ const c = T(e);
3300
+ r[c] = o;
3301
+ }
3302
+ }
3303
+ for (const e of ["subject", "message-id", "in-reply-to", "references"]) {
3304
+ const a = this.root.headers.find((o) => o.key === e);
3305
+ if (a && a.value) {
3306
+ const o = T(e);
3307
+ r[o] = C(a.value);
3308
+ }
3309
+ }
3310
+ let t = this.root.headers.find((e) => e.key === "date");
3311
+ if (t) {
3312
+ let e = new Date(t.value);
3313
+ e.toString() === "Invalid Date" ? e = t.value : e = e.toISOString(), r.date = e;
3314
+ }
3315
+ switch ((i = this.textContent) != null && i.html && (r.html = this.textContent.html), (n = this.textContent) != null && n.plain && (r.text = this.textContent.plain), r.attachments = this.attachments, r.headerLines = (this.root.rawHeaderLines || []).slice(), this.attachmentEncoding) {
3316
+ case "arraybuffer":
3317
+ break;
3318
+ case "base64":
3319
+ for (let a of r.attachments || [])
3320
+ a != null && a.content && (a.content = Bu(a.content), a.encoding = "base64");
3321
+ break;
3322
+ case "utf8":
3323
+ let e = new TextDecoder("utf8");
3324
+ for (let a of r.attachments || [])
3325
+ a != null && a.content && (a.content = e.decode(a.content), a.encoding = "utf8");
3326
+ break;
3327
+ default:
3328
+ throw new Error("Unknown attachment encoding");
3329
+ }
3330
+ return r;
3331
+ }
3332
+ }
3333
+ export {
3334
+ w as addressParser,
3335
+ C as decodeWords,
3336
+ S as default
3337
+ };