authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-02-28 13:29:56-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-03-10 17:50:54-07:00
log94daf873354c64602ab564e49a686ce728052b04
tree01b7921decb96b59a80c87e96c9565627263c257
parent40e64245fc5555f29bbb5bb37e3b78d64f9b3c9b

no


2 files changed, 0 insertions(+), 12417 deletions(-)

lib/docs/commonmark.js deleted-10270
......@@ -1,10270 +0,0 @@
1/* commonmark 0.30.0 https://github.com/commonmark/commonmark.js @license BSD3 */
2(function (global, factory) {
3 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
4 typeof define === 'function' && define.amd ? define(['exports'], factory) :
5 (global = global || self, factory(global.commonmark = {}));
6}(this, (function (exports) { 'use strict';
7
8 function isContainer(node) {
9 switch (node._type) {
10 case "document":
11 case "block_quote":
12 case "list":
13 case "item":
14 case "paragraph":
15 case "heading":
16 case "emph":
17 case "strong":
18 case "link":
19 case "image":
20 case "custom_inline":
21 case "custom_block":
22 return true;
23 default:
24 return false;
25 }
26 }
27
28 var resumeAt = function(node, entering) {
29 this.current = node;
30 this.entering = entering === true;
31 };
32
33 var next = function() {
34 var cur = this.current;
35 var entering = this.entering;
36
37 if (cur === null) {
38 return null;
39 }
40
41 var container = isContainer(cur);
42
43 if (entering && container) {
44 if (cur._firstChild) {
45 this.current = cur._firstChild;
46 this.entering = true;
47 } else {
48 // stay on node but exit
49 this.entering = false;
50 }
51 } else if (cur === this.root) {
52 this.current = null;
53 } else if (cur._next === null) {
54 this.current = cur._parent;
55 this.entering = false;
56 } else {
57 this.current = cur._next;
58 this.entering = true;
59 }
60
61 return { entering: entering, node: cur };
62 };
63
64 var NodeWalker = function(root) {
65 return {
66 current: root,
67 root: root,
68 entering: true,
69 next: next,
70 resumeAt: resumeAt
71 };
72 };
73
74 var Node = function(nodeType, sourcepos) {
75 this._type = nodeType;
76 this._parent = null;
77 this._firstChild = null;
78 this._lastChild = null;
79 this._prev = null;
80 this._next = null;
81 this._sourcepos = sourcepos;
82 this._lastLineBlank = false;
83 this._lastLineChecked = false;
84 this._open = true;
85 this._string_content = null;
86 this._literal = null;
87 this._listData = {};
88 this._info = null;
89 this._destination = null;
90 this._title = null;
91 this._isFenced = false;
92 this._fenceChar = null;
93 this._fenceLength = 0;
94 this._fenceOffset = null;
95 this._level = null;
96 this._onEnter = null;
97 this._onExit = null;
98 };
99
100 var proto = Node.prototype;
101
102 Object.defineProperty(proto, "isContainer", {
103 get: function() {
104 return isContainer(this);
105 }
106 });
107
108 Object.defineProperty(proto, "type", {
109 get: function() {
110 return this._type;
111 }
112 });
113
114 Object.defineProperty(proto, "firstChild", {
115 get: function() {
116 return this._firstChild;
117 }
118 });
119
120 Object.defineProperty(proto, "lastChild", {
121 get: function() {
122 return this._lastChild;
123 }
124 });
125
126 Object.defineProperty(proto, "next", {
127 get: function() {
128 return this._next;
129 }
130 });
131
132 Object.defineProperty(proto, "prev", {
133 get: function() {
134 return this._prev;
135 }
136 });
137
138 Object.defineProperty(proto, "parent", {
139 get: function() {
140 return this._parent;
141 }
142 });
143
144 Object.defineProperty(proto, "sourcepos", {
145 get: function() {
146 return this._sourcepos;
147 }
148 });
149
150 Object.defineProperty(proto, "literal", {
151 get: function() {
152 return this._literal;
153 },
154 set: function(s) {
155 this._literal = s;
156 }
157 });
158
159 Object.defineProperty(proto, "destination", {
160 get: function() {
161 return this._destination;
162 },
163 set: function(s) {
164 this._destination = s;
165 }
166 });
167
168 Object.defineProperty(proto, "title", {
169 get: function() {
170 return this._title;
171 },
172 set: function(s) {
173 this._title = s;
174 }
175 });
176
177 Object.defineProperty(proto, "info", {
178 get: function() {
179 return this._info;
180 },
181 set: function(s) {
182 this._info = s;
183 }
184 });
185
186 Object.defineProperty(proto, "level", {
187 get: function() {
188 return this._level;
189 },
190 set: function(s) {
191 this._level = s;
192 }
193 });
194
195 Object.defineProperty(proto, "listType", {
196 get: function() {
197 return this._listData.type;
198 },
199 set: function(t) {
200 this._listData.type = t;
201 }
202 });
203
204 Object.defineProperty(proto, "listTight", {
205 get: function() {
206 return this._listData.tight;
207 },
208 set: function(t) {
209 this._listData.tight = t;
210 }
211 });
212
213 Object.defineProperty(proto, "listStart", {
214 get: function() {
215 return this._listData.start;
216 },
217 set: function(n) {
218 this._listData.start = n;
219 }
220 });
221
222 Object.defineProperty(proto, "listDelimiter", {
223 get: function() {
224 return this._listData.delimiter;
225 },
226 set: function(delim) {
227 this._listData.delimiter = delim;
228 }
229 });
230
231 Object.defineProperty(proto, "onEnter", {
232 get: function() {
233 return this._onEnter;
234 },
235 set: function(s) {
236 this._onEnter = s;
237 }
238 });
239
240 Object.defineProperty(proto, "onExit", {
241 get: function() {
242 return this._onExit;
243 },
244 set: function(s) {
245 this._onExit = s;
246 }
247 });
248
249 Node.prototype.appendChild = function(child) {
250 child.unlink();
251 child._parent = this;
252 if (this._lastChild) {
253 this._lastChild._next = child;
254 child._prev = this._lastChild;
255 this._lastChild = child;
256 } else {
257 this._firstChild = child;
258 this._lastChild = child;
259 }
260 };
261
262 Node.prototype.prependChild = function(child) {
263 child.unlink();
264 child._parent = this;
265 if (this._firstChild) {
266 this._firstChild._prev = child;
267 child._next = this._firstChild;
268 this._firstChild = child;
269 } else {
270 this._firstChild = child;
271 this._lastChild = child;
272 }
273 };
274
275 Node.prototype.unlink = function() {
276 if (this._prev) {
277 this._prev._next = this._next;
278 } else if (this._parent) {
279 this._parent._firstChild = this._next;
280 }
281 if (this._next) {
282 this._next._prev = this._prev;
283 } else if (this._parent) {
284 this._parent._lastChild = this._prev;
285 }
286 this._parent = null;
287 this._next = null;
288 this._prev = null;
289 };
290
291 Node.prototype.insertAfter = function(sibling) {
292 sibling.unlink();
293 sibling._next = this._next;
294 if (sibling._next) {
295 sibling._next._prev = sibling;
296 }
297 sibling._prev = this;
298 this._next = sibling;
299 sibling._parent = this._parent;
300 if (!sibling._next) {
301 sibling._parent._lastChild = sibling;
302 }
303 };
304
305 Node.prototype.insertBefore = function(sibling) {
306 sibling.unlink();
307 sibling._prev = this._prev;
308 if (sibling._prev) {
309 sibling._prev._next = sibling;
310 }
311 sibling._next = this;
312 this._prev = sibling;
313 sibling._parent = this._parent;
314 if (!sibling._prev) {
315 sibling._parent._firstChild = sibling;
316 }
317 };
318
319 Node.prototype.walker = function() {
320 var walker = new NodeWalker(this);
321 return walker;
322 };
323
324 /* Example of use of walker:
325
326 var walker = w.walker();
327 var event;
328
329 while (event = walker.next()) {
330 console.log(event.entering, event.node.type);
331 }
332
333 */
334
335 var encodeCache = {};
336
337
338 // Create a lookup array where anything but characters in `chars` string
339 // and alphanumeric chars is percent-encoded.
340 //
341 function getEncodeCache(exclude) {
342 var i, ch, cache = encodeCache[exclude];
343 if (cache) { return cache; }
344
345 cache = encodeCache[exclude] = [];
346
347 for (i = 0; i < 128; i++) {
348 ch = String.fromCharCode(i);
349
350 if (/^[0-9a-z]$/i.test(ch)) {
351 // always allow unencoded alphanumeric characters
352 cache.push(ch);
353 } else {
354 cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));
355 }
356 }
357
358 for (i = 0; i < exclude.length; i++) {
359 cache[exclude.charCodeAt(i)] = exclude[i];
360 }
361
362 return cache;
363 }
364
365
366 // Encode unsafe characters with percent-encoding, skipping already
367 // encoded sequences.
368 //
369 // - string - string to encode
370 // - exclude - list of characters to ignore (in addition to a-zA-Z0-9)
371 // - keepEscaped - don't encode '%' in a correct escape sequence (default: true)
372 //
373 function encode(string, exclude, keepEscaped) {
374 var i, l, code, nextCode, cache,
375 result = '';
376
377 if (typeof exclude !== 'string') {
378 // encode(string, keepEscaped)
379 keepEscaped = exclude;
380 exclude = encode.defaultChars;
381 }
382
383 if (typeof keepEscaped === 'undefined') {
384 keepEscaped = true;
385 }
386
387 cache = getEncodeCache(exclude);
388
389 for (i = 0, l = string.length; i < l; i++) {
390 code = string.charCodeAt(i);
391
392 if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {
393 if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {
394 result += string.slice(i, i + 3);
395 i += 2;
396 continue;
397 }
398 }
399
400 if (code < 128) {
401 result += cache[code];
402 continue;
403 }
404
405 if (code >= 0xD800 && code <= 0xDFFF) {
406 if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {
407 nextCode = string.charCodeAt(i + 1);
408 if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {
409 result += encodeURIComponent(string[i] + string[i + 1]);
410 i++;
411 continue;
412 }
413 }
414 result += '%EF%BF%BD';
415 continue;
416 }
417
418 result += encodeURIComponent(string[i]);
419 }
420
421 return result;
422 }
423
424 encode.defaultChars = ";/?:@&=+$,-_.!~*'()#";
425 encode.componentChars = "-_.!~*'()";
426
427
428 var encode_1 = encode;
429
430 var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
431
432 function unwrapExports (x) {
433 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
434 }
435
436 function createCommonjsModule(fn, module) {
437 return module = { exports: {} }, fn(module, module.exports), module.exports;
438 }
439
440 function getCjsExportFromNamespace (n) {
441 return n && n['default'] || n;
442 }
443
444 var Aacute = "Á";
445 var aacute = "á";
446 var Abreve = "Ă";
447 var abreve = "ă";
448 var ac = "∾";
449 var acd = "∿";
450 var acE = "∾̳";
451 var Acirc = "Â";
452 var acirc = "â";
453 var acute = "´";
454 var Acy = "А";
455 var acy = "а";
456 var AElig = "Æ";
457 var aelig = "æ";
458 var af = "⁡";
459 var Afr = "𝔄";
460 var afr = "𝔞";
461 var Agrave = "À";
462 var agrave = "à";
463 var alefsym = "ℵ";
464 var aleph = "ℵ";
465 var Alpha = "Α";
466 var alpha = "α";
467 var Amacr = "Ā";
468 var amacr = "ā";
469 var amalg = "⨿";
470 var amp = "&";
471 var AMP = "&";
472 var andand = "⩕";
473 var And = "⩓";
474 var and = "∧";
475 var andd = "⩜";
476 var andslope = "⩘";
477 var andv = "⩚";
478 var ang = "∠";
479 var ange = "⦤";
480 var angle = "∠";
481 var angmsdaa = "⦨";
482 var angmsdab = "⦩";
483 var angmsdac = "⦪";
484 var angmsdad = "⦫";
485 var angmsdae = "⦬";
486 var angmsdaf = "⦭";
487 var angmsdag = "⦮";
488 var angmsdah = "⦯";
489 var angmsd = "∡";
490 var angrt = "∟";
491 var angrtvb = "⊾";
492 var angrtvbd = "⦝";
493 var angsph = "∢";
494 var angst = "Å";
495 var angzarr = "⍼";
496 var Aogon = "Ą";
497 var aogon = "ą";
498 var Aopf = "𝔸";
499 var aopf = "𝕒";
500 var apacir = "⩯";
501 var ap = "≈";
502 var apE = "⩰";
503 var ape = "≊";
504 var apid = "≋";
505 var apos = "'";
506 var ApplyFunction = "⁡";
507 var approx = "≈";
508 var approxeq = "≊";
509 var Aring = "Å";
510 var aring = "å";
511 var Ascr = "𝒜";
512 var ascr = "𝒶";
513 var Assign = "≔";
514 var ast = "*";
515 var asymp = "≈";
516 var asympeq = "≍";
517 var Atilde = "Ã";
518 var atilde = "ã";
519 var Auml = "Ä";
520 var auml = "ä";
521 var awconint = "∳";
522 var awint = "⨑";
523 var backcong = "≌";
524 var backepsilon = "϶";
525 var backprime = "‵";
526 var backsim = "∽";
527 var backsimeq = "⋍";
528 var Backslash = "∖";
529 var Barv = "⫧";
530 var barvee = "⊽";
531 var barwed = "⌅";
532 var Barwed = "⌆";
533 var barwedge = "⌅";
534 var bbrk = "⎵";
535 var bbrktbrk = "⎶";
536 var bcong = "≌";
537 var Bcy = "Б";
538 var bcy = "б";
539 var bdquo = "„";
540 var becaus = "∵";
541 var because = "∵";
542 var Because = "∵";
543 var bemptyv = "⦰";
544 var bepsi = "϶";
545 var bernou = "ℬ";
546 var Bernoullis = "ℬ";
547 var Beta = "Β";
548 var beta = "β";
549 var beth = "ℶ";
550 var between = "≬";
551 var Bfr = "𝔅";
552 var bfr = "𝔟";
553 var bigcap = "⋂";
554 var bigcirc = "◯";
555 var bigcup = "⋃";
556 var bigodot = "⨀";
557 var bigoplus = "⨁";
558 var bigotimes = "⨂";
559 var bigsqcup = "⨆";
560 var bigstar = "★";
561 var bigtriangledown = "▽";
562 var bigtriangleup = "△";
563 var biguplus = "⨄";
564 var bigvee = "⋁";
565 var bigwedge = "⋀";
566 var bkarow = "⤍";
567 var blacklozenge = "⧫";
568 var blacksquare = "▪";
569 var blacktriangle = "▴";
570 var blacktriangledown = "▾";
571 var blacktriangleleft = "◂";
572 var blacktriangleright = "▸";
573 var blank = "␣";
574 var blk12 = "▒";
575 var blk14 = "░";
576 var blk34 = "▓";
577 var block = "█";
578 var bne = "=⃥";
579 var bnequiv = "≡⃥";
580 var bNot = "⫭";
581 var bnot = "⌐";
582 var Bopf = "𝔹";
583 var bopf = "𝕓";
584 var bot = "⊥";
585 var bottom = "⊥";
586 var bowtie = "⋈";
587 var boxbox = "⧉";
588 var boxdl = "┐";
589 var boxdL = "╕";
590 var boxDl = "╖";
591 var boxDL = "╗";
592 var boxdr = "┌";
593 var boxdR = "╒";
594 var boxDr = "╓";
595 var boxDR = "╔";
596 var boxh = "─";
597 var boxH = "═";
598 var boxhd = "┬";
599 var boxHd = "╤";
600 var boxhD = "╥";
601 var boxHD = "╦";
602 var boxhu = "┴";
603 var boxHu = "╧";
604 var boxhU = "╨";
605 var boxHU = "╩";
606 var boxminus = "⊟";
607 var boxplus = "⊞";
608 var boxtimes = "⊠";
609 var boxul = "┘";
610 var boxuL = "╛";
611 var boxUl = "╜";
612 var boxUL = "╝";
613 var boxur = "└";
614 var boxuR = "╘";
615 var boxUr = "╙";
616 var boxUR = "╚";
617 var boxv = "│";
618 var boxV = "║";
619 var boxvh = "┼";
620 var boxvH = "╪";
621 var boxVh = "╫";
622 var boxVH = "╬";
623 var boxvl = "┤";
624 var boxvL = "╡";
625 var boxVl = "╢";
626 var boxVL = "╣";
627 var boxvr = "├";
628 var boxvR = "╞";
629 var boxVr = "╟";
630 var boxVR = "╠";
631 var bprime = "‵";
632 var breve = "˘";
633 var Breve = "˘";
634 var brvbar = "¦";
635 var bscr = "𝒷";
636 var Bscr = "ℬ";
637 var bsemi = "⁏";
638 var bsim = "∽";
639 var bsime = "⋍";
640 var bsolb = "⧅";
641 var bsol = "\\";
642 var bsolhsub = "⟈";
643 var bull = "•";
644 var bullet = "•";
645 var bump = "≎";
646 var bumpE = "⪮";
647 var bumpe = "≏";
648 var Bumpeq = "≎";
649 var bumpeq = "≏";
650 var Cacute = "Ć";
651 var cacute = "ć";
652 var capand = "⩄";
653 var capbrcup = "⩉";
654 var capcap = "⩋";
655 var cap = "∩";
656 var Cap = "⋒";
657 var capcup = "⩇";
658 var capdot = "⩀";
659 var CapitalDifferentialD = "ⅅ";
660 var caps = "∩︀";
661 var caret = "⁁";
662 var caron = "ˇ";
663 var Cayleys = "ℭ";
664 var ccaps = "⩍";
665 var Ccaron = "Č";
666 var ccaron = "č";
667 var Ccedil = "Ç";
668 var ccedil = "ç";
669 var Ccirc = "Ĉ";
670 var ccirc = "ĉ";
671 var Cconint = "∰";
672 var ccups = "⩌";
673 var ccupssm = "⩐";
674 var Cdot = "Ċ";
675 var cdot = "ċ";
676 var cedil = "¸";
677 var Cedilla = "¸";
678 var cemptyv = "⦲";
679 var cent = "¢";
680 var centerdot = "·";
681 var CenterDot = "·";
682 var cfr = "𝔠";
683 var Cfr = "ℭ";
684 var CHcy = "Ч";
685 var chcy = "ч";
686 var check = "✓";
687 var checkmark = "✓";
688 var Chi = "Χ";
689 var chi = "χ";
690 var circ = "ˆ";
691 var circeq = "≗";
692 var circlearrowleft = "↺";
693 var circlearrowright = "↻";
694 var circledast = "⊛";
695 var circledcirc = "⊚";
696 var circleddash = "⊝";
697 var CircleDot = "⊙";
698 var circledR = "®";
699 var circledS = "Ⓢ";
700 var CircleMinus = "⊖";
701 var CirclePlus = "⊕";
702 var CircleTimes = "⊗";
703 var cir = "○";
704 var cirE = "⧃";
705 var cire = "≗";
706 var cirfnint = "⨐";
707 var cirmid = "⫯";
708 var cirscir = "⧂";
709 var ClockwiseContourIntegral = "∲";
710 var CloseCurlyDoubleQuote = "”";
711 var CloseCurlyQuote = "’";
712 var clubs = "♣";
713 var clubsuit = "♣";
714 var colon = ":";
715 var Colon = "∷";
716 var Colone = "⩴";
717 var colone = "≔";
718 var coloneq = "≔";
719 var comma = ",";
720 var commat = "@";
721 var comp = "∁";
722 var compfn = "∘";
723 var complement = "∁";
724 var complexes = "ℂ";
725 var cong = "≅";
726 var congdot = "⩭";
727 var Congruent = "≡";
728 var conint = "∮";
729 var Conint = "∯";
730 var ContourIntegral = "∮";
731 var copf = "𝕔";
732 var Copf = "ℂ";
733 var coprod = "∐";
734 var Coproduct = "∐";
735 var copy = "©";
736 var COPY = "©";
737 var copysr = "℗";
738 var CounterClockwiseContourIntegral = "∳";
739 var crarr = "↵";
740 var cross = "✗";
741 var Cross = "⨯";
742 var Cscr = "𝒞";
743 var cscr = "𝒸";
744 var csub = "⫏";
745 var csube = "⫑";
746 var csup = "⫐";
747 var csupe = "⫒";
748 var ctdot = "⋯";
749 var cudarrl = "⤸";
750 var cudarrr = "⤵";
751 var cuepr = "⋞";
752 var cuesc = "⋟";
753 var cularr = "↶";
754 var cularrp = "⤽";
755 var cupbrcap = "⩈";
756 var cupcap = "⩆";
757 var CupCap = "≍";
758 var cup = "∪";
759 var Cup = "⋓";
760 var cupcup = "⩊";
761 var cupdot = "⊍";
762 var cupor = "⩅";
763 var cups = "∪︀";
764 var curarr = "↷";
765 var curarrm = "⤼";
766 var curlyeqprec = "⋞";
767 var curlyeqsucc = "⋟";
768 var curlyvee = "⋎";
769 var curlywedge = "⋏";
770 var curren = "¤";
771 var curvearrowleft = "↶";
772 var curvearrowright = "↷";
773 var cuvee = "⋎";
774 var cuwed = "⋏";
775 var cwconint = "∲";
776 var cwint = "∱";
777 var cylcty = "⌭";
778 var dagger = "†";
779 var Dagger = "‡";
780 var daleth = "ℸ";
781 var darr = "↓";
782 var Darr = "↡";
783 var dArr = "⇓";
784 var dash = "‐";
785 var Dashv = "⫤";
786 var dashv = "⊣";
787 var dbkarow = "⤏";
788 var dblac = "˝";
789 var Dcaron = "Ď";
790 var dcaron = "ď";
791 var Dcy = "Д";
792 var dcy = "д";
793 var ddagger = "‡";
794 var ddarr = "⇊";
795 var DD = "ⅅ";
796 var dd = "ⅆ";
797 var DDotrahd = "⤑";
798 var ddotseq = "⩷";
799 var deg = "°";
800 var Del = "∇";
801 var Delta = "Δ";
802 var delta = "δ";
803 var demptyv = "⦱";
804 var dfisht = "⥿";
805 var Dfr = "𝔇";
806 var dfr = "𝔡";
807 var dHar = "⥥";
808 var dharl = "⇃";
809 var dharr = "⇂";
810 var DiacriticalAcute = "´";
811 var DiacriticalDot = "˙";
812 var DiacriticalDoubleAcute = "˝";
813 var DiacriticalGrave = "`";
814 var DiacriticalTilde = "˜";
815 var diam = "⋄";
816 var diamond = "⋄";
817 var Diamond = "⋄";
818 var diamondsuit = "♦";
819 var diams = "♦";
820 var die = "¨";
821 var DifferentialD = "ⅆ";
822 var digamma = "ϝ";
823 var disin = "⋲";
824 var div = "÷";
825 var divide = "÷";
826 var divideontimes = "⋇";
827 var divonx = "⋇";
828 var DJcy = "Ђ";
829 var djcy = "ђ";
830 var dlcorn = "⌞";
831 var dlcrop = "⌍";
832 var dollar = "$";
833 var Dopf = "𝔻";
834 var dopf = "𝕕";
835 var Dot = "¨";
836 var dot = "˙";
837 var DotDot = "⃜";
838 var doteq = "≐";
839 var doteqdot = "≑";
840 var DotEqual = "≐";
841 var dotminus = "∸";
842 var dotplus = "∔";
843 var dotsquare = "⊡";
844 var doublebarwedge = "⌆";
845 var DoubleContourIntegral = "∯";
846 var DoubleDot = "¨";
847 var DoubleDownArrow = "⇓";
848 var DoubleLeftArrow = "⇐";
849 var DoubleLeftRightArrow = "⇔";
850 var DoubleLeftTee = "⫤";
851 var DoubleLongLeftArrow = "⟸";
852 var DoubleLongLeftRightArrow = "⟺";
853 var DoubleLongRightArrow = "⟹";
854 var DoubleRightArrow = "⇒";
855 var DoubleRightTee = "⊨";
856 var DoubleUpArrow = "⇑";
857 var DoubleUpDownArrow = "⇕";
858 var DoubleVerticalBar = "∥";
859 var DownArrowBar = "⤓";
860 var downarrow = "↓";
861 var DownArrow = "↓";
862 var Downarrow = "⇓";
863 var DownArrowUpArrow = "⇵";
864 var DownBreve = "̑";
865 var downdownarrows = "⇊";
866 var downharpoonleft = "⇃";
867 var downharpoonright = "⇂";
868 var DownLeftRightVector = "⥐";
869 var DownLeftTeeVector = "⥞";
870 var DownLeftVectorBar = "⥖";
871 var DownLeftVector = "↽";
872 var DownRightTeeVector = "⥟";
873 var DownRightVectorBar = "⥗";
874 var DownRightVector = "⇁";
875 var DownTeeArrow = "↧";
876 var DownTee = "⊤";
877 var drbkarow = "⤐";
878 var drcorn = "⌟";
879 var drcrop = "⌌";
880 var Dscr = "𝒟";
881 var dscr = "𝒹";
882 var DScy = "Ѕ";
883 var dscy = "ѕ";
884 var dsol = "⧶";
885 var Dstrok = "Đ";
886 var dstrok = "đ";
887 var dtdot = "⋱";
888 var dtri = "▿";
889 var dtrif = "▾";
890 var duarr = "⇵";
891 var duhar = "⥯";
892 var dwangle = "⦦";
893 var DZcy = "Џ";
894 var dzcy = "џ";
895 var dzigrarr = "⟿";
896 var Eacute = "É";
897 var eacute = "é";
898 var easter = "⩮";
899 var Ecaron = "Ě";
900 var ecaron = "ě";
901 var Ecirc = "Ê";
902 var ecirc = "ê";
903 var ecir = "≖";
904 var ecolon = "≕";
905 var Ecy = "Э";
906 var ecy = "э";
907 var eDDot = "⩷";
908 var Edot = "Ė";
909 var edot = "ė";
910 var eDot = "≑";
911 var ee = "ⅇ";
912 var efDot = "≒";
913 var Efr = "𝔈";
914 var efr = "𝔢";
915 var eg = "⪚";
916 var Egrave = "È";
917 var egrave = "è";
918 var egs = "⪖";
919 var egsdot = "⪘";
920 var el = "⪙";
921 var Element = "∈";
922 var elinters = "⏧";
923 var ell = "ℓ";
924 var els = "⪕";
925 var elsdot = "⪗";
926 var Emacr = "Ē";
927 var emacr = "ē";
928 var empty = "∅";
929 var emptyset = "∅";
930 var EmptySmallSquare = "◻";
931 var emptyv = "∅";
932 var EmptyVerySmallSquare = "▫";
933 var emsp13 = " ";
934 var emsp14 = " ";
935 var emsp = " ";
936 var ENG = "Ŋ";
937 var eng = "ŋ";
938 var ensp = " ";
939 var Eogon = "Ę";
940 var eogon = "ę";
941 var Eopf = "𝔼";
942 var eopf = "𝕖";
943 var epar = "⋕";
944 var eparsl = "⧣";
945 var eplus = "⩱";
946 var epsi = "ε";
947 var Epsilon = "Ε";
948 var epsilon = "ε";
949 var epsiv = "ϵ";
950 var eqcirc = "≖";
951 var eqcolon = "≕";
952 var eqsim = "≂";
953 var eqslantgtr = "⪖";
954 var eqslantless = "⪕";
955 var Equal = "⩵";
956 var equals = "=";
957 var EqualTilde = "≂";
958 var equest = "≟";
959 var Equilibrium = "⇌";
960 var equiv = "≡";
961 var equivDD = "⩸";
962 var eqvparsl = "⧥";
963 var erarr = "⥱";
964 var erDot = "≓";
965 var escr = "ℯ";
966 var Escr = "ℰ";
967 var esdot = "≐";
968 var Esim = "⩳";
969 var esim = "≂";
970 var Eta = "Η";
971 var eta = "η";
972 var ETH = "Ð";
973 var eth = "ð";
974 var Euml = "Ë";
975 var euml = "ë";
976 var euro = "€";
977 var excl = "!";
978 var exist = "∃";
979 var Exists = "∃";
980 var expectation = "ℰ";
981 var exponentiale = "ⅇ";
982 var ExponentialE = "ⅇ";
983 var fallingdotseq = "≒";
984 var Fcy = "Ф";
985 var fcy = "ф";
986 var female = "♀";
987 var ffilig = "ffi";
988 var fflig = "ff";
989 var ffllig = "ffl";
990 var Ffr = "𝔉";
991 var ffr = "𝔣";
992 var filig = "fi";
993 var FilledSmallSquare = "◼";
994 var FilledVerySmallSquare = "▪";
995 var fjlig = "fj";
996 var flat = "♭";
997 var fllig = "fl";
998 var fltns = "▱";
999 var fnof = "ƒ";
1000 var Fopf = "𝔽";
1001 var fopf = "𝕗";
1002 var forall = "∀";
1003 var ForAll = "∀";
1004 var fork = "⋔";
1005 var forkv = "⫙";
1006 var Fouriertrf = "ℱ";
1007 var fpartint = "⨍";
1008 var frac12 = "½";
1009 var frac13 = "⅓";
1010 var frac14 = "¼";
1011 var frac15 = "⅕";
1012 var frac16 = "⅙";
1013 var frac18 = "⅛";
1014 var frac23 = "⅔";
1015 var frac25 = "⅖";
1016 var frac34 = "¾";
1017 var frac35 = "⅗";
1018 var frac38 = "⅜";
1019 var frac45 = "⅘";
1020 var frac56 = "⅚";
1021 var frac58 = "⅝";
1022 var frac78 = "⅞";
1023 var frasl = "⁄";
1024 var frown = "⌢";
1025 var fscr = "𝒻";
1026 var Fscr = "ℱ";
1027 var gacute = "ǵ";
1028 var Gamma = "Γ";
1029 var gamma = "γ";
1030 var Gammad = "Ϝ";
1031 var gammad = "ϝ";
1032 var gap = "⪆";
1033 var Gbreve = "Ğ";
1034 var gbreve = "ğ";
1035 var Gcedil = "Ģ";
1036 var Gcirc = "Ĝ";
1037 var gcirc = "ĝ";
1038 var Gcy = "Г";
1039 var gcy = "г";
1040 var Gdot = "Ġ";
1041 var gdot = "ġ";
1042 var ge = "≥";
1043 var gE = "≧";
1044 var gEl = "⪌";
1045 var gel = "⋛";
1046 var geq = "≥";
1047 var geqq = "≧";
1048 var geqslant = "⩾";
1049 var gescc = "⪩";
1050 var ges = "⩾";
1051 var gesdot = "⪀";
1052 var gesdoto = "⪂";
1053 var gesdotol = "⪄";
1054 var gesl = "⋛︀";
1055 var gesles = "⪔";
1056 var Gfr = "𝔊";
1057 var gfr = "𝔤";
1058 var gg = "≫";
1059 var Gg = "⋙";
1060 var ggg = "⋙";
1061 var gimel = "ℷ";
1062 var GJcy = "Ѓ";
1063 var gjcy = "ѓ";
1064 var gla = "⪥";
1065 var gl = "≷";
1066 var glE = "⪒";
1067 var glj = "⪤";
1068 var gnap = "⪊";
1069 var gnapprox = "⪊";
1070 var gne = "⪈";
1071 var gnE = "≩";
1072 var gneq = "⪈";
1073 var gneqq = "≩";
1074 var gnsim = "⋧";
1075 var Gopf = "𝔾";
1076 var gopf = "𝕘";
1077 var grave = "`";
1078 var GreaterEqual = "≥";
1079 var GreaterEqualLess = "⋛";
1080 var GreaterFullEqual = "≧";
1081 var GreaterGreater = "⪢";
1082 var GreaterLess = "≷";
1083 var GreaterSlantEqual = "⩾";
1084 var GreaterTilde = "≳";
1085 var Gscr = "𝒢";
1086 var gscr = "ℊ";
1087 var gsim = "≳";
1088 var gsime = "⪎";
1089 var gsiml = "⪐";
1090 var gtcc = "⪧";
1091 var gtcir = "⩺";
1092 var gt = ">";
1093 var GT = ">";
1094 var Gt = "≫";
1095 var gtdot = "⋗";
1096 var gtlPar = "⦕";
1097 var gtquest = "⩼";
1098 var gtrapprox = "⪆";
1099 var gtrarr = "⥸";
1100 var gtrdot = "⋗";
1101 var gtreqless = "⋛";
1102 var gtreqqless = "⪌";
1103 var gtrless = "≷";
1104 var gtrsim = "≳";
1105 var gvertneqq = "≩︀";
1106 var gvnE = "≩︀";
1107 var Hacek = "ˇ";
1108 var hairsp = " ";
1109 var half = "½";
1110 var hamilt = "ℋ";
1111 var HARDcy = "Ъ";
1112 var hardcy = "ъ";
1113 var harrcir = "⥈";
1114 var harr = "↔";
1115 var hArr = "⇔";
1116 var harrw = "↭";
1117 var Hat = "^";
1118 var hbar = "ℏ";
1119 var Hcirc = "Ĥ";
1120 var hcirc = "ĥ";
1121 var hearts = "♥";
1122 var heartsuit = "♥";
1123 var hellip = "…";
1124 var hercon = "⊹";
1125 var hfr = "𝔥";
1126 var Hfr = "ℌ";
1127 var HilbertSpace = "ℋ";
1128 var hksearow = "⤥";
1129 var hkswarow = "⤦";
1130 var hoarr = "⇿";
1131 var homtht = "∻";
1132 var hookleftarrow = "↩";
1133 var hookrightarrow = "↪";
1134 var hopf = "𝕙";
1135 var Hopf = "ℍ";
1136 var horbar = "―";
1137 var HorizontalLine = "─";
1138 var hscr = "𝒽";
1139 var Hscr = "ℋ";
1140 var hslash = "ℏ";
1141 var Hstrok = "Ħ";
1142 var hstrok = "ħ";
1143 var HumpDownHump = "≎";
1144 var HumpEqual = "≏";
1145 var hybull = "⁃";
1146 var hyphen = "‐";
1147 var Iacute = "Í";
1148 var iacute = "í";
1149 var ic = "⁣";
1150 var Icirc = "Î";
1151 var icirc = "î";
1152 var Icy = "И";
1153 var icy = "и";
1154 var Idot = "İ";
1155 var IEcy = "Е";
1156 var iecy = "е";
1157 var iexcl = "¡";
1158 var iff = "⇔";
1159 var ifr = "𝔦";
1160 var Ifr = "ℑ";
1161 var Igrave = "Ì";
1162 var igrave = "ì";
1163 var ii = "ⅈ";
1164 var iiiint = "⨌";
1165 var iiint = "∭";
1166 var iinfin = "⧜";
1167 var iiota = "℩";
1168 var IJlig = "IJ";
1169 var ijlig = "ij";
1170 var Imacr = "Ī";
1171 var imacr = "ī";
1172 var image = "ℑ";
1173 var ImaginaryI = "ⅈ";
1174 var imagline = "ℐ";
1175 var imagpart = "ℑ";
1176 var imath = "ı";
1177 var Im = "ℑ";
1178 var imof = "⊷";
1179 var imped = "Ƶ";
1180 var Implies = "⇒";
1181 var incare = "℅";
1182 var infin = "∞";
1183 var infintie = "⧝";
1184 var inodot = "ı";
1185 var intcal = "⊺";
1186 var int = "∫";
1187 var Int = "∬";
1188 var integers = "ℤ";
1189 var Integral = "∫";
1190 var intercal = "⊺";
1191 var Intersection = "⋂";
1192 var intlarhk = "⨗";
1193 var intprod = "⨼";
1194 var InvisibleComma = "⁣";
1195 var InvisibleTimes = "⁢";
1196 var IOcy = "Ё";
1197 var iocy = "ё";
1198 var Iogon = "Į";
1199 var iogon = "į";
1200 var Iopf = "𝕀";
1201 var iopf = "𝕚";
1202 var Iota = "Ι";
1203 var iota = "ι";
1204 var iprod = "⨼";
1205 var iquest = "¿";
1206 var iscr = "𝒾";
1207 var Iscr = "ℐ";
1208 var isin = "∈";
1209 var isindot = "⋵";
1210 var isinE = "⋹";
1211 var isins = "⋴";
1212 var isinsv = "⋳";
1213 var isinv = "∈";
1214 var it = "⁢";
1215 var Itilde = "Ĩ";
1216 var itilde = "ĩ";
1217 var Iukcy = "І";
1218 var iukcy = "і";
1219 var Iuml = "Ï";
1220 var iuml = "ï";
1221 var Jcirc = "Ĵ";
1222 var jcirc = "ĵ";
1223 var Jcy = "Й";
1224 var jcy = "й";
1225 var Jfr = "𝔍";
1226 var jfr = "𝔧";
1227 var jmath = "ȷ";
1228 var Jopf = "𝕁";
1229 var jopf = "𝕛";
1230 var Jscr = "𝒥";
1231 var jscr = "𝒿";
1232 var Jsercy = "Ј";
1233 var jsercy = "ј";
1234 var Jukcy = "Є";
1235 var jukcy = "є";
1236 var Kappa = "Κ";
1237 var kappa = "κ";
1238 var kappav = "ϰ";
1239 var Kcedil = "Ķ";
1240 var kcedil = "ķ";
1241 var Kcy = "К";
1242 var kcy = "к";
1243 var Kfr = "𝔎";
1244 var kfr = "𝔨";
1245 var kgreen = "ĸ";
1246 var KHcy = "Х";
1247 var khcy = "х";
1248 var KJcy = "Ќ";
1249 var kjcy = "ќ";
1250 var Kopf = "𝕂";
1251 var kopf = "𝕜";
1252 var Kscr = "𝒦";
1253 var kscr = "𝓀";
1254 var lAarr = "⇚";
1255 var Lacute = "Ĺ";
1256 var lacute = "ĺ";
1257 var laemptyv = "⦴";
1258 var lagran = "ℒ";
1259 var Lambda = "Λ";
1260 var lambda = "λ";
1261 var lang = "⟨";
1262 var Lang = "⟪";
1263 var langd = "⦑";
1264 var langle = "⟨";
1265 var lap = "⪅";
1266 var Laplacetrf = "ℒ";
1267 var laquo = "«";
1268 var larrb = "⇤";
1269 var larrbfs = "⤟";
1270 var larr = "←";
1271 var Larr = "↞";
1272 var lArr = "⇐";
1273 var larrfs = "⤝";
1274 var larrhk = "↩";
1275 var larrlp = "↫";
1276 var larrpl = "⤹";
1277 var larrsim = "⥳";
1278 var larrtl = "↢";
1279 var latail = "⤙";
1280 var lAtail = "⤛";
1281 var lat = "⪫";
1282 var late = "⪭";
1283 var lates = "⪭︀";
1284 var lbarr = "⤌";
1285 var lBarr = "⤎";
1286 var lbbrk = "❲";
1287 var lbrace = "{";
1288 var lbrack = "[";
1289 var lbrke = "⦋";
1290 var lbrksld = "⦏";
1291 var lbrkslu = "⦍";
1292 var Lcaron = "Ľ";
1293 var lcaron = "ľ";
1294 var Lcedil = "Ļ";
1295 var lcedil = "ļ";
1296 var lceil = "⌈";
1297 var lcub = "{";
1298 var Lcy = "Л";
1299 var lcy = "л";
1300 var ldca = "⤶";
1301 var ldquo = "“";
1302 var ldquor = "„";
1303 var ldrdhar = "⥧";
1304 var ldrushar = "⥋";
1305 var ldsh = "↲";
1306 var le = "≤";
1307 var lE = "≦";
1308 var LeftAngleBracket = "⟨";
1309 var LeftArrowBar = "⇤";
1310 var leftarrow = "←";
1311 var LeftArrow = "←";
1312 var Leftarrow = "⇐";
1313 var LeftArrowRightArrow = "⇆";
1314 var leftarrowtail = "↢";
1315 var LeftCeiling = "⌈";
1316 var LeftDoubleBracket = "⟦";
1317 var LeftDownTeeVector = "⥡";
1318 var LeftDownVectorBar = "⥙";
1319 var LeftDownVector = "⇃";
1320 var LeftFloor = "⌊";
1321 var leftharpoondown = "↽";
1322 var leftharpoonup = "↼";
1323 var leftleftarrows = "⇇";
1324 var leftrightarrow = "↔";
1325 var LeftRightArrow = "↔";
1326 var Leftrightarrow = "⇔";
1327 var leftrightarrows = "⇆";
1328 var leftrightharpoons = "⇋";
1329 var leftrightsquigarrow = "↭";
1330 var LeftRightVector = "⥎";
1331 var LeftTeeArrow = "↤";
1332 var LeftTee = "⊣";
1333 var LeftTeeVector = "⥚";
1334 var leftthreetimes = "⋋";
1335 var LeftTriangleBar = "⧏";
1336 var LeftTriangle = "⊲";
1337 var LeftTriangleEqual = "⊴";
1338 var LeftUpDownVector = "⥑";
1339 var LeftUpTeeVector = "⥠";
1340 var LeftUpVectorBar = "⥘";
1341 var LeftUpVector = "↿";
1342 var LeftVectorBar = "⥒";
1343 var LeftVector = "↼";
1344 var lEg = "⪋";
1345 var leg = "⋚";
1346 var leq = "≤";
1347 var leqq = "≦";
1348 var leqslant = "⩽";
1349 var lescc = "⪨";
1350 var les = "⩽";
1351 var lesdot = "⩿";
1352 var lesdoto = "⪁";
1353 var lesdotor = "⪃";
1354 var lesg = "⋚︀";
1355 var lesges = "⪓";
1356 var lessapprox = "⪅";
1357 var lessdot = "⋖";
1358 var lesseqgtr = "⋚";
1359 var lesseqqgtr = "⪋";
1360 var LessEqualGreater = "⋚";
1361 var LessFullEqual = "≦";
1362 var LessGreater = "≶";
1363 var lessgtr = "≶";
1364 var LessLess = "⪡";
1365 var lesssim = "≲";
1366 var LessSlantEqual = "⩽";
1367 var LessTilde = "≲";
1368 var lfisht = "⥼";
1369 var lfloor = "⌊";
1370 var Lfr = "𝔏";
1371 var lfr = "𝔩";
1372 var lg = "≶";
1373 var lgE = "⪑";
1374 var lHar = "⥢";
1375 var lhard = "↽";
1376 var lharu = "↼";
1377 var lharul = "⥪";
1378 var lhblk = "▄";
1379 var LJcy = "Љ";
1380 var ljcy = "љ";
1381 var llarr = "⇇";
1382 var ll = "≪";
1383 var Ll = "⋘";
1384 var llcorner = "⌞";
1385 var Lleftarrow = "⇚";
1386 var llhard = "⥫";
1387 var lltri = "◺";
1388 var Lmidot = "Ŀ";
1389 var lmidot = "ŀ";
1390 var lmoustache = "⎰";
1391 var lmoust = "⎰";
1392 var lnap = "⪉";
1393 var lnapprox = "⪉";
1394 var lne = "⪇";
1395 var lnE = "≨";
1396 var lneq = "⪇";
1397 var lneqq = "≨";
1398 var lnsim = "⋦";
1399 var loang = "⟬";
1400 var loarr = "⇽";
1401 var lobrk = "⟦";
1402 var longleftarrow = "⟵";
1403 var LongLeftArrow = "⟵";
1404 var Longleftarrow = "⟸";
1405 var longleftrightarrow = "⟷";
1406 var LongLeftRightArrow = "⟷";
1407 var Longleftrightarrow = "⟺";
1408 var longmapsto = "⟼";
1409 var longrightarrow = "⟶";
1410 var LongRightArrow = "⟶";
1411 var Longrightarrow = "⟹";
1412 var looparrowleft = "↫";
1413 var looparrowright = "↬";
1414 var lopar = "⦅";
1415 var Lopf = "𝕃";
1416 var lopf = "𝕝";
1417 var loplus = "⨭";
1418 var lotimes = "⨴";
1419 var lowast = "∗";
1420 var lowbar = "_";
1421 var LowerLeftArrow = "↙";
1422 var LowerRightArrow = "↘";
1423 var loz = "◊";
1424 var lozenge = "◊";
1425 var lozf = "⧫";
1426 var lpar = "(";
1427 var lparlt = "⦓";
1428 var lrarr = "⇆";
1429 var lrcorner = "⌟";
1430 var lrhar = "⇋";
1431 var lrhard = "⥭";
1432 var lrm = "‎";
1433 var lrtri = "⊿";
1434 var lsaquo = "‹";
1435 var lscr = "𝓁";
1436 var Lscr = "ℒ";
1437 var lsh = "↰";
1438 var Lsh = "↰";
1439 var lsim = "≲";
1440 var lsime = "⪍";
1441 var lsimg = "⪏";
1442 var lsqb = "[";
1443 var lsquo = "‘";
1444 var lsquor = "‚";
1445 var Lstrok = "Ł";
1446 var lstrok = "ł";
1447 var ltcc = "⪦";
1448 var ltcir = "⩹";
1449 var lt = "<";
1450 var LT = "<";
1451 var Lt = "≪";
1452 var ltdot = "⋖";
1453 var lthree = "⋋";
1454 var ltimes = "⋉";
1455 var ltlarr = "⥶";
1456 var ltquest = "⩻";
1457 var ltri = "◃";
1458 var ltrie = "⊴";
1459 var ltrif = "◂";
1460 var ltrPar = "⦖";
1461 var lurdshar = "⥊";
1462 var luruhar = "⥦";
1463 var lvertneqq = "≨︀";
1464 var lvnE = "≨︀";
1465 var macr = "¯";
1466 var male = "♂";
1467 var malt = "✠";
1468 var maltese = "✠";
1469 var map = "↦";
1470 var mapsto = "↦";
1471 var mapstodown = "↧";
1472 var mapstoleft = "↤";
1473 var mapstoup = "↥";
1474 var marker = "▮";
1475 var mcomma = "⨩";
1476 var Mcy = "М";
1477 var mcy = "м";
1478 var mdash = "—";
1479 var mDDot = "∺";
1480 var measuredangle = "∡";
1481 var MediumSpace = " ";
1482 var Mellintrf = "ℳ";
1483 var Mfr = "𝔐";
1484 var mfr = "𝔪";
1485 var mho = "℧";
1486 var micro = "µ";
1487 var midast = "*";
1488 var midcir = "⫰";
1489 var mid = "∣";
1490 var middot = "·";
1491 var minusb = "⊟";
1492 var minus = "−";
1493 var minusd = "∸";
1494 var minusdu = "⨪";
1495 var MinusPlus = "∓";
1496 var mlcp = "⫛";
1497 var mldr = "…";
1498 var mnplus = "∓";
1499 var models = "⊧";
1500 var Mopf = "𝕄";
1501 var mopf = "𝕞";
1502 var mp = "∓";
1503 var mscr = "𝓂";
1504 var Mscr = "ℳ";
1505 var mstpos = "∾";
1506 var Mu = "Μ";
1507 var mu = "μ";
1508 var multimap = "⊸";
1509 var mumap = "⊸";
1510 var nabla = "∇";
1511 var Nacute = "Ń";
1512 var nacute = "ń";
1513 var nang = "∠⃒";
1514 var nap = "≉";
1515 var napE = "⩰̸";
1516 var napid = "≋̸";
1517 var napos = "ʼn";
1518 var napprox = "≉";
1519 var natural = "♮";
1520 var naturals = "ℕ";
1521 var natur = "♮";
1522 var nbsp = " ";
1523 var nbump = "≎̸";
1524 var nbumpe = "≏̸";
1525 var ncap = "⩃";
1526 var Ncaron = "Ň";
1527 var ncaron = "ň";
1528 var Ncedil = "Ņ";
1529 var ncedil = "ņ";
1530 var ncong = "≇";
1531 var ncongdot = "⩭̸";
1532 var ncup = "⩂";
1533 var Ncy = "Н";
1534 var ncy = "н";
1535 var ndash = "–";
1536 var nearhk = "⤤";
1537 var nearr = "↗";
1538 var neArr = "⇗";
1539 var nearrow = "↗";
1540 var ne = "≠";
1541 var nedot = "≐̸";
1542 var NegativeMediumSpace = "​";
1543 var NegativeThickSpace = "​";
1544 var NegativeThinSpace = "​";
1545 var NegativeVeryThinSpace = "​";
1546 var nequiv = "≢";
1547 var nesear = "⤨";
1548 var nesim = "≂̸";
1549 var NestedGreaterGreater = "≫";
1550 var NestedLessLess = "≪";
1551 var NewLine = "\n";
1552 var nexist = "∄";
1553 var nexists = "∄";
1554 var Nfr = "𝔑";
1555 var nfr = "𝔫";
1556 var ngE = "≧̸";
1557 var nge = "≱";
1558 var ngeq = "≱";
1559 var ngeqq = "≧̸";
1560 var ngeqslant = "⩾̸";
1561 var nges = "⩾̸";
1562 var nGg = "⋙̸";
1563 var ngsim = "≵";
1564 var nGt = "≫⃒";
1565 var ngt = "≯";
1566 var ngtr = "≯";
1567 var nGtv = "≫̸";
1568 var nharr = "↮";
1569 var nhArr = "⇎";
1570 var nhpar = "⫲";
1571 var ni = "∋";
1572 var nis = "⋼";
1573 var nisd = "⋺";
1574 var niv = "∋";
1575 var NJcy = "Њ";
1576 var njcy = "њ";
1577 var nlarr = "↚";
1578 var nlArr = "⇍";
1579 var nldr = "‥";
1580 var nlE = "≦̸";
1581 var nle = "≰";
1582 var nleftarrow = "↚";
1583 var nLeftarrow = "⇍";
1584 var nleftrightarrow = "↮";
1585 var nLeftrightarrow = "⇎";
1586 var nleq = "≰";
1587 var nleqq = "≦̸";
1588 var nleqslant = "⩽̸";
1589 var nles = "⩽̸";
1590 var nless = "≮";
1591 var nLl = "⋘̸";
1592 var nlsim = "≴";
1593 var nLt = "≪⃒";
1594 var nlt = "≮";
1595 var nltri = "⋪";
1596 var nltrie = "⋬";
1597 var nLtv = "≪̸";
1598 var nmid = "∤";
1599 var NoBreak = "⁠";
1600 var NonBreakingSpace = " ";
1601 var nopf = "𝕟";
1602 var Nopf = "ℕ";
1603 var Not = "⫬";
1604 var not = "¬";
1605 var NotCongruent = "≢";
1606 var NotCupCap = "≭";
1607 var NotDoubleVerticalBar = "∦";
1608 var NotElement = "∉";
1609 var NotEqual = "≠";
1610 var NotEqualTilde = "≂̸";
1611 var NotExists = "∄";
1612 var NotGreater = "≯";
1613 var NotGreaterEqual = "≱";
1614 var NotGreaterFullEqual = "≧̸";
1615 var NotGreaterGreater = "≫̸";
1616 var NotGreaterLess = "≹";
1617 var NotGreaterSlantEqual = "⩾̸";
1618 var NotGreaterTilde = "≵";
1619 var NotHumpDownHump = "≎̸";
1620 var NotHumpEqual = "≏̸";
1621 var notin = "∉";
1622 var notindot = "⋵̸";
1623 var notinE = "⋹̸";
1624 var notinva = "∉";
1625 var notinvb = "⋷";
1626 var notinvc = "⋶";
1627 var NotLeftTriangleBar = "⧏̸";
1628 var NotLeftTriangle = "⋪";
1629 var NotLeftTriangleEqual = "⋬";
1630 var NotLess = "≮";
1631 var NotLessEqual = "≰";
1632 var NotLessGreater = "≸";
1633 var NotLessLess = "≪̸";
1634 var NotLessSlantEqual = "⩽̸";
1635 var NotLessTilde = "≴";
1636 var NotNestedGreaterGreater = "⪢̸";
1637 var NotNestedLessLess = "⪡̸";
1638 var notni = "∌";
1639 var notniva = "∌";
1640 var notnivb = "⋾";
1641 var notnivc = "⋽";
1642 var NotPrecedes = "⊀";
1643 var NotPrecedesEqual = "⪯̸";
1644 var NotPrecedesSlantEqual = "⋠";
1645 var NotReverseElement = "∌";
1646 var NotRightTriangleBar = "⧐̸";
1647 var NotRightTriangle = "⋫";
1648 var NotRightTriangleEqual = "⋭";
1649 var NotSquareSubset = "⊏̸";
1650 var NotSquareSubsetEqual = "⋢";
1651 var NotSquareSuperset = "⊐̸";
1652 var NotSquareSupersetEqual = "⋣";
1653 var NotSubset = "⊂⃒";
1654 var NotSubsetEqual = "⊈";
1655 var NotSucceeds = "⊁";
1656 var NotSucceedsEqual = "⪰̸";
1657 var NotSucceedsSlantEqual = "⋡";
1658 var NotSucceedsTilde = "≿̸";
1659 var NotSuperset = "⊃⃒";
1660 var NotSupersetEqual = "⊉";
1661 var NotTilde = "≁";
1662 var NotTildeEqual = "≄";
1663 var NotTildeFullEqual = "≇";
1664 var NotTildeTilde = "≉";
1665 var NotVerticalBar = "∤";
1666 var nparallel = "∦";
1667 var npar = "∦";
1668 var nparsl = "⫽⃥";
1669 var npart = "∂̸";
1670 var npolint = "⨔";
1671 var npr = "⊀";
1672 var nprcue = "⋠";
1673 var nprec = "⊀";
1674 var npreceq = "⪯̸";
1675 var npre = "⪯̸";
1676 var nrarrc = "⤳̸";
1677 var nrarr = "↛";
1678 var nrArr = "⇏";
1679 var nrarrw = "↝̸";
1680 var nrightarrow = "↛";
1681 var nRightarrow = "⇏";
1682 var nrtri = "⋫";
1683 var nrtrie = "⋭";
1684 var nsc = "⊁";
1685 var nsccue = "⋡";
1686 var nsce = "⪰̸";
1687 var Nscr = "𝒩";
1688 var nscr = "𝓃";
1689 var nshortmid = "∤";
1690 var nshortparallel = "∦";
1691 var nsim = "≁";
1692 var nsime = "≄";
1693 var nsimeq = "≄";
1694 var nsmid = "∤";
1695 var nspar = "∦";
1696 var nsqsube = "⋢";
1697 var nsqsupe = "⋣";
1698 var nsub = "⊄";
1699 var nsubE = "⫅̸";
1700 var nsube = "⊈";
1701 var nsubset = "⊂⃒";
1702 var nsubseteq = "⊈";
1703 var nsubseteqq = "⫅̸";
1704 var nsucc = "⊁";
1705 var nsucceq = "⪰̸";
1706 var nsup = "⊅";
1707 var nsupE = "⫆̸";
1708 var nsupe = "⊉";
1709 var nsupset = "⊃⃒";
1710 var nsupseteq = "⊉";
1711 var nsupseteqq = "⫆̸";
1712 var ntgl = "≹";
1713 var Ntilde = "Ñ";
1714 var ntilde = "ñ";
1715 var ntlg = "≸";
1716 var ntriangleleft = "⋪";
1717 var ntrianglelefteq = "⋬";
1718 var ntriangleright = "⋫";
1719 var ntrianglerighteq = "⋭";
1720 var Nu = "Ν";
1721 var nu = "ν";
1722 var num = "#";
1723 var numero = "№";
1724 var numsp = " ";
1725 var nvap = "≍⃒";
1726 var nvdash = "⊬";
1727 var nvDash = "⊭";
1728 var nVdash = "⊮";
1729 var nVDash = "⊯";
1730 var nvge = "≥⃒";
1731 var nvgt = ">⃒";
1732 var nvHarr = "⤄";
1733 var nvinfin = "⧞";
1734 var nvlArr = "⤂";
1735 var nvle = "≤⃒";
1736 var nvlt = "<⃒";
1737 var nvltrie = "⊴⃒";
1738 var nvrArr = "⤃";
1739 var nvrtrie = "⊵⃒";
1740 var nvsim = "∼⃒";
1741 var nwarhk = "⤣";
1742 var nwarr = "↖";
1743 var nwArr = "⇖";
1744 var nwarrow = "↖";
1745 var nwnear = "⤧";
1746 var Oacute = "Ó";
1747 var oacute = "ó";
1748 var oast = "⊛";
1749 var Ocirc = "Ô";
1750 var ocirc = "ô";
1751 var ocir = "⊚";
1752 var Ocy = "О";
1753 var ocy = "о";
1754 var odash = "⊝";
1755 var Odblac = "Ő";
1756 var odblac = "ő";
1757 var odiv = "⨸";
1758 var odot = "⊙";
1759 var odsold = "⦼";
1760 var OElig = "Œ";
1761 var oelig = "œ";
1762 var ofcir = "⦿";
1763 var Ofr = "𝔒";
1764 var ofr = "𝔬";
1765 var ogon = "˛";
1766 var Ograve = "Ò";
1767 var ograve = "ò";
1768 var ogt = "⧁";
1769 var ohbar = "⦵";
1770 var ohm = "Ω";
1771 var oint = "∮";
1772 var olarr = "↺";
1773 var olcir = "⦾";
1774 var olcross = "⦻";
1775 var oline = "‾";
1776 var olt = "⧀";
1777 var Omacr = "Ō";
1778 var omacr = "ō";
1779 var Omega = "Ω";
1780 var omega = "ω";
1781 var Omicron = "Ο";
1782 var omicron = "ο";
1783 var omid = "⦶";
1784 var ominus = "⊖";
1785 var Oopf = "𝕆";
1786 var oopf = "𝕠";
1787 var opar = "⦷";
1788 var OpenCurlyDoubleQuote = "“";
1789 var OpenCurlyQuote = "‘";
1790 var operp = "⦹";
1791 var oplus = "⊕";
1792 var orarr = "↻";
1793 var Or = "⩔";
1794 var or = "∨";
1795 var ord = "⩝";
1796 var order = "ℴ";
1797 var orderof = "ℴ";
1798 var ordf = "ª";
1799 var ordm = "º";
1800 var origof = "⊶";
1801 var oror = "⩖";
1802 var orslope = "⩗";
1803 var orv = "⩛";
1804 var oS = "Ⓢ";
1805 var Oscr = "𝒪";
1806 var oscr = "ℴ";
1807 var Oslash = "Ø";
1808 var oslash = "ø";
1809 var osol = "⊘";
1810 var Otilde = "Õ";
1811 var otilde = "õ";
1812 var otimesas = "⨶";
1813 var Otimes = "⨷";
1814 var otimes = "⊗";
1815 var Ouml = "Ö";
1816 var ouml = "ö";
1817 var ovbar = "⌽";
1818 var OverBar = "‾";
1819 var OverBrace = "⏞";
1820 var OverBracket = "⎴";
1821 var OverParenthesis = "⏜";
1822 var para = "¶";
1823 var parallel = "∥";
1824 var par = "∥";
1825 var parsim = "⫳";
1826 var parsl = "⫽";
1827 var part = "∂";
1828 var PartialD = "∂";
1829 var Pcy = "П";
1830 var pcy = "п";
1831 var percnt = "%";
1832 var period = ".";
1833 var permil = "‰";
1834 var perp = "⊥";
1835 var pertenk = "‱";
1836 var Pfr = "𝔓";
1837 var pfr = "𝔭";
1838 var Phi = "Φ";
1839 var phi = "φ";
1840 var phiv = "ϕ";
1841 var phmmat = "ℳ";
1842 var phone = "☎";
1843 var Pi = "Π";
1844 var pi = "π";
1845 var pitchfork = "⋔";
1846 var piv = "ϖ";
1847 var planck = "ℏ";
1848 var planckh = "ℎ";
1849 var plankv = "ℏ";
1850 var plusacir = "⨣";
1851 var plusb = "⊞";
1852 var pluscir = "⨢";
1853 var plus = "+";
1854 var plusdo = "∔";
1855 var plusdu = "⨥";
1856 var pluse = "⩲";
1857 var PlusMinus = "±";
1858 var plusmn = "±";
1859 var plussim = "⨦";
1860 var plustwo = "⨧";
1861 var pm = "±";
1862 var Poincareplane = "ℌ";
1863 var pointint = "⨕";
1864 var popf = "𝕡";
1865 var Popf = "ℙ";
1866 var pound = "£";
1867 var prap = "⪷";
1868 var Pr = "⪻";
1869 var pr = "≺";
1870 var prcue = "≼";
1871 var precapprox = "⪷";
1872 var prec = "≺";
1873 var preccurlyeq = "≼";
1874 var Precedes = "≺";
1875 var PrecedesEqual = "⪯";
1876 var PrecedesSlantEqual = "≼";
1877 var PrecedesTilde = "≾";
1878 var preceq = "⪯";
1879 var precnapprox = "⪹";
1880 var precneqq = "⪵";
1881 var precnsim = "⋨";
1882 var pre = "⪯";
1883 var prE = "⪳";
1884 var precsim = "≾";
1885 var prime = "′";
1886 var Prime = "″";
1887 var primes = "ℙ";
1888 var prnap = "⪹";
1889 var prnE = "⪵";
1890 var prnsim = "⋨";
1891 var prod = "∏";
1892 var Product = "∏";
1893 var profalar = "⌮";
1894 var profline = "⌒";
1895 var profsurf = "⌓";
1896 var prop = "∝";
1897 var Proportional = "∝";
1898 var Proportion = "∷";
1899 var propto = "∝";
1900 var prsim = "≾";
1901 var prurel = "⊰";
1902 var Pscr = "𝒫";
1903 var pscr = "𝓅";
1904 var Psi = "Ψ";
1905 var psi = "ψ";
1906 var puncsp = " ";
1907 var Qfr = "𝔔";
1908 var qfr = "𝔮";
1909 var qint = "⨌";
1910 var qopf = "𝕢";
1911 var Qopf = "ℚ";
1912 var qprime = "⁗";
1913 var Qscr = "𝒬";
1914 var qscr = "𝓆";
1915 var quaternions = "ℍ";
1916 var quatint = "⨖";
1917 var quest = "?";
1918 var questeq = "≟";
1919 var quot = "\"";
1920 var QUOT = "\"";
1921 var rAarr = "⇛";
1922 var race = "∽̱";
1923 var Racute = "Ŕ";
1924 var racute = "ŕ";
1925 var radic = "√";
1926 var raemptyv = "⦳";
1927 var rang = "⟩";
1928 var Rang = "⟫";
1929 var rangd = "⦒";
1930 var range = "⦥";
1931 var rangle = "⟩";
1932 var raquo = "»";
1933 var rarrap = "⥵";
1934 var rarrb = "⇥";
1935 var rarrbfs = "⤠";
1936 var rarrc = "⤳";
1937 var rarr = "→";
1938 var Rarr = "↠";
1939 var rArr = "⇒";
1940 var rarrfs = "⤞";
1941 var rarrhk = "↪";
1942 var rarrlp = "↬";
1943 var rarrpl = "⥅";
1944 var rarrsim = "⥴";
1945 var Rarrtl = "⤖";
1946 var rarrtl = "↣";
1947 var rarrw = "↝";
1948 var ratail = "⤚";
1949 var rAtail = "⤜";
1950 var ratio = "∶";
1951 var rationals = "ℚ";
1952 var rbarr = "⤍";
1953 var rBarr = "⤏";
1954 var RBarr = "⤐";
1955 var rbbrk = "❳";
1956 var rbrace = "}";
1957 var rbrack = "]";
1958 var rbrke = "⦌";
1959 var rbrksld = "⦎";
1960 var rbrkslu = "⦐";
1961 var Rcaron = "Ř";
1962 var rcaron = "ř";
1963 var Rcedil = "Ŗ";
1964 var rcedil = "ŗ";
1965 var rceil = "⌉";
1966 var rcub = "}";
1967 var Rcy = "Р";
1968 var rcy = "р";
1969 var rdca = "⤷";
1970 var rdldhar = "⥩";
1971 var rdquo = "”";
1972 var rdquor = "”";
1973 var rdsh = "↳";
1974 var real = "ℜ";
1975 var realine = "ℛ";
1976 var realpart = "ℜ";
1977 var reals = "ℝ";
1978 var Re = "ℜ";
1979 var rect = "▭";
1980 var reg = "®";
1981 var REG = "®";
1982 var ReverseElement = "∋";
1983 var ReverseEquilibrium = "⇋";
1984 var ReverseUpEquilibrium = "⥯";
1985 var rfisht = "⥽";
1986 var rfloor = "⌋";
1987 var rfr = "𝔯";
1988 var Rfr = "ℜ";
1989 var rHar = "⥤";
1990 var rhard = "⇁";
1991 var rharu = "⇀";
1992 var rharul = "⥬";
1993 var Rho = "Ρ";
1994 var rho = "ρ";
1995 var rhov = "ϱ";
1996 var RightAngleBracket = "⟩";
1997 var RightArrowBar = "⇥";
1998 var rightarrow = "→";
1999 var RightArrow = "→";
2000 var Rightarrow = "⇒";
2001 var RightArrowLeftArrow = "⇄";
2002 var rightarrowtail = "↣";
2003 var RightCeiling = "⌉";
2004 var RightDoubleBracket = "⟧";
2005 var RightDownTeeVector = "⥝";
2006 var RightDownVectorBar = "⥕";
2007 var RightDownVector = "⇂";
2008 var RightFloor = "⌋";
2009 var rightharpoondown = "⇁";
2010 var rightharpoonup = "⇀";
2011 var rightleftarrows = "⇄";
2012 var rightleftharpoons = "⇌";
2013 var rightrightarrows = "⇉";
2014 var rightsquigarrow = "↝";
2015 var RightTeeArrow = "↦";
2016 var RightTee = "⊢";
2017 var RightTeeVector = "⥛";
2018 var rightthreetimes = "⋌";
2019 var RightTriangleBar = "⧐";
2020 var RightTriangle = "⊳";
2021 var RightTriangleEqual = "⊵";
2022 var RightUpDownVector = "⥏";
2023 var RightUpTeeVector = "⥜";
2024 var RightUpVectorBar = "⥔";
2025 var RightUpVector = "↾";
2026 var RightVectorBar = "⥓";
2027 var RightVector = "⇀";
2028 var ring = "˚";
2029 var risingdotseq = "≓";
2030 var rlarr = "⇄";
2031 var rlhar = "⇌";
2032 var rlm = "‏";
2033 var rmoustache = "⎱";
2034 var rmoust = "⎱";
2035 var rnmid = "⫮";
2036 var roang = "⟭";
2037 var roarr = "⇾";
2038 var robrk = "⟧";
2039 var ropar = "⦆";
2040 var ropf = "𝕣";
2041 var Ropf = "ℝ";
2042 var roplus = "⨮";
2043 var rotimes = "⨵";
2044 var RoundImplies = "⥰";
2045 var rpar = ")";
2046 var rpargt = "⦔";
2047 var rppolint = "⨒";
2048 var rrarr = "⇉";
2049 var Rrightarrow = "⇛";
2050 var rsaquo = "›";
2051 var rscr = "𝓇";
2052 var Rscr = "ℛ";
2053 var rsh = "↱";
2054 var Rsh = "↱";
2055 var rsqb = "]";
2056 var rsquo = "’";
2057 var rsquor = "’";
2058 var rthree = "⋌";
2059 var rtimes = "⋊";
2060 var rtri = "▹";
2061 var rtrie = "⊵";
2062 var rtrif = "▸";
2063 var rtriltri = "⧎";
2064 var RuleDelayed = "⧴";
2065 var ruluhar = "⥨";
2066 var rx = "℞";
2067 var Sacute = "Ś";
2068 var sacute = "ś";
2069 var sbquo = "‚";
2070 var scap = "⪸";
2071 var Scaron = "Š";
2072 var scaron = "š";
2073 var Sc = "⪼";
2074 var sc = "≻";
2075 var sccue = "≽";
2076 var sce = "⪰";
2077 var scE = "⪴";
2078 var Scedil = "Ş";
2079 var scedil = "ş";
2080 var Scirc = "Ŝ";
2081 var scirc = "ŝ";
2082 var scnap = "⪺";
2083 var scnE = "⪶";
2084 var scnsim = "⋩";
2085 var scpolint = "⨓";
2086 var scsim = "≿";
2087 var Scy = "С";
2088 var scy = "с";
2089 var sdotb = "⊡";
2090 var sdot = "⋅";
2091 var sdote = "⩦";
2092 var searhk = "⤥";
2093 var searr = "↘";
2094 var seArr = "⇘";
2095 var searrow = "↘";
2096 var sect = "§";
2097 var semi = ";";
2098 var seswar = "⤩";
2099 var setminus = "∖";
2100 var setmn = "∖";
2101 var sext = "✶";
2102 var Sfr = "𝔖";
2103 var sfr = "𝔰";
2104 var sfrown = "⌢";
2105 var sharp = "♯";
2106 var SHCHcy = "Щ";
2107 var shchcy = "щ";
2108 var SHcy = "Ш";
2109 var shcy = "ш";
2110 var ShortDownArrow = "↓";
2111 var ShortLeftArrow = "←";
2112 var shortmid = "∣";
2113 var shortparallel = "∥";
2114 var ShortRightArrow = "→";
2115 var ShortUpArrow = "↑";
2116 var shy = "­";
2117 var Sigma = "Σ";
2118 var sigma = "σ";
2119 var sigmaf = "ς";
2120 var sigmav = "ς";
2121 var sim = "∼";
2122 var simdot = "⩪";
2123 var sime = "≃";
2124 var simeq = "≃";
2125 var simg = "⪞";
2126 var simgE = "⪠";
2127 var siml = "⪝";
2128 var simlE = "⪟";
2129 var simne = "≆";
2130 var simplus = "⨤";
2131 var simrarr = "⥲";
2132 var slarr = "←";
2133 var SmallCircle = "∘";
2134 var smallsetminus = "∖";
2135 var smashp = "⨳";
2136 var smeparsl = "⧤";
2137 var smid = "∣";
2138 var smile = "⌣";
2139 var smt = "⪪";
2140 var smte = "⪬";
2141 var smtes = "⪬︀";
2142 var SOFTcy = "Ь";
2143 var softcy = "ь";
2144 var solbar = "⌿";
2145 var solb = "⧄";
2146 var sol = "/";
2147 var Sopf = "𝕊";
2148 var sopf = "𝕤";
2149 var spades = "♠";
2150 var spadesuit = "♠";
2151 var spar = "∥";
2152 var sqcap = "⊓";
2153 var sqcaps = "⊓︀";
2154 var sqcup = "⊔";
2155 var sqcups = "⊔︀";
2156 var Sqrt = "√";
2157 var sqsub = "⊏";
2158 var sqsube = "⊑";
2159 var sqsubset = "⊏";
2160 var sqsubseteq = "⊑";
2161 var sqsup = "⊐";
2162 var sqsupe = "⊒";
2163 var sqsupset = "⊐";
2164 var sqsupseteq = "⊒";
2165 var square = "□";
2166 var Square = "□";
2167 var SquareIntersection = "⊓";
2168 var SquareSubset = "⊏";
2169 var SquareSubsetEqual = "⊑";
2170 var SquareSuperset = "⊐";
2171 var SquareSupersetEqual = "⊒";
2172 var SquareUnion = "⊔";
2173 var squarf = "▪";
2174 var squ = "□";
2175 var squf = "▪";
2176 var srarr = "→";
2177 var Sscr = "𝒮";
2178 var sscr = "𝓈";
2179 var ssetmn = "∖";
2180 var ssmile = "⌣";
2181 var sstarf = "⋆";
2182 var Star = "⋆";
2183 var star = "☆";
2184 var starf = "★";
2185 var straightepsilon = "ϵ";
2186 var straightphi = "ϕ";
2187 var strns = "¯";
2188 var sub = "⊂";
2189 var Sub = "⋐";
2190 var subdot = "⪽";
2191 var subE = "⫅";
2192 var sube = "⊆";
2193 var subedot = "⫃";
2194 var submult = "⫁";
2195 var subnE = "⫋";
2196 var subne = "⊊";
2197 var subplus = "⪿";
2198 var subrarr = "⥹";
2199 var subset = "⊂";
2200 var Subset = "⋐";
2201 var subseteq = "⊆";
2202 var subseteqq = "⫅";
2203 var SubsetEqual = "⊆";
2204 var subsetneq = "⊊";
2205 var subsetneqq = "⫋";
2206 var subsim = "⫇";
2207 var subsub = "⫕";
2208 var subsup = "⫓";
2209 var succapprox = "⪸";
2210 var succ = "≻";
2211 var succcurlyeq = "≽";
2212 var Succeeds = "≻";
2213 var SucceedsEqual = "⪰";
2214 var SucceedsSlantEqual = "≽";
2215 var SucceedsTilde = "≿";
2216 var succeq = "⪰";
2217 var succnapprox = "⪺";
2218 var succneqq = "⪶";
2219 var succnsim = "⋩";
2220 var succsim = "≿";
2221 var SuchThat = "∋";
2222 var sum = "∑";
2223 var Sum = "∑";
2224 var sung = "♪";
2225 var sup1 = "¹";
2226 var sup2 = "²";
2227 var sup3 = "³";
2228 var sup = "⊃";
2229 var Sup = "⋑";
2230 var supdot = "⪾";
2231 var supdsub = "⫘";
2232 var supE = "⫆";
2233 var supe = "⊇";
2234 var supedot = "⫄";
2235 var Superset = "⊃";
2236 var SupersetEqual = "⊇";
2237 var suphsol = "⟉";
2238 var suphsub = "⫗";
2239 var suplarr = "⥻";
2240 var supmult = "⫂";
2241 var supnE = "⫌";
2242 var supne = "⊋";
2243 var supplus = "⫀";
2244 var supset = "⊃";
2245 var Supset = "⋑";
2246 var supseteq = "⊇";
2247 var supseteqq = "⫆";
2248 var supsetneq = "⊋";
2249 var supsetneqq = "⫌";
2250 var supsim = "⫈";
2251 var supsub = "⫔";
2252 var supsup = "⫖";
2253 var swarhk = "⤦";
2254 var swarr = "↙";
2255 var swArr = "⇙";
2256 var swarrow = "↙";
2257 var swnwar = "⤪";
2258 var szlig = "ß";
2259 var Tab = "\t";
2260 var target = "⌖";
2261 var Tau = "Τ";
2262 var tau = "τ";
2263 var tbrk = "⎴";
2264 var Tcaron = "Ť";
2265 var tcaron = "ť";
2266 var Tcedil = "Ţ";
2267 var tcedil = "ţ";
2268 var Tcy = "Т";
2269 var tcy = "т";
2270 var tdot = "⃛";
2271 var telrec = "⌕";
2272 var Tfr = "𝔗";
2273 var tfr = "𝔱";
2274 var there4 = "∴";
2275 var therefore = "∴";
2276 var Therefore = "∴";
2277 var Theta = "Θ";
2278 var theta = "θ";
2279 var thetasym = "ϑ";
2280 var thetav = "ϑ";
2281 var thickapprox = "≈";
2282 var thicksim = "∼";
2283 var ThickSpace = "  ";
2284 var ThinSpace = " ";
2285 var thinsp = " ";
2286 var thkap = "≈";
2287 var thksim = "∼";
2288 var THORN = "Þ";
2289 var thorn = "þ";
2290 var tilde = "˜";
2291 var Tilde = "∼";
2292 var TildeEqual = "≃";
2293 var TildeFullEqual = "≅";
2294 var TildeTilde = "≈";
2295 var timesbar = "⨱";
2296 var timesb = "⊠";
2297 var times = "×";
2298 var timesd = "⨰";
2299 var tint = "∭";
2300 var toea = "⤨";
2301 var topbot = "⌶";
2302 var topcir = "⫱";
2303 var top = "⊤";
2304 var Topf = "𝕋";
2305 var topf = "𝕥";
2306 var topfork = "⫚";
2307 var tosa = "⤩";
2308 var tprime = "‴";
2309 var trade = "™";
2310 var TRADE = "™";
2311 var triangle = "▵";
2312 var triangledown = "▿";
2313 var triangleleft = "◃";
2314 var trianglelefteq = "⊴";
2315 var triangleq = "≜";
2316 var triangleright = "▹";
2317 var trianglerighteq = "⊵";
2318 var tridot = "◬";
2319 var trie = "≜";
2320 var triminus = "⨺";
2321 var TripleDot = "⃛";
2322 var triplus = "⨹";
2323 var trisb = "⧍";
2324 var tritime = "⨻";
2325 var trpezium = "⏢";
2326 var Tscr = "𝒯";
2327 var tscr = "𝓉";
2328 var TScy = "Ц";
2329 var tscy = "ц";
2330 var TSHcy = "Ћ";
2331 var tshcy = "ћ";
2332 var Tstrok = "Ŧ";
2333 var tstrok = "ŧ";
2334 var twixt = "≬";
2335 var twoheadleftarrow = "↞";
2336 var twoheadrightarrow = "↠";
2337 var Uacute = "Ú";
2338 var uacute = "ú";
2339 var uarr = "↑";
2340 var Uarr = "↟";
2341 var uArr = "⇑";
2342 var Uarrocir = "⥉";
2343 var Ubrcy = "Ў";
2344 var ubrcy = "ў";
2345 var Ubreve = "Ŭ";
2346 var ubreve = "ŭ";
2347 var Ucirc = "Û";
2348 var ucirc = "û";
2349 var Ucy = "У";
2350 var ucy = "у";
2351 var udarr = "⇅";
2352 var Udblac = "Ű";
2353 var udblac = "ű";
2354 var udhar = "⥮";
2355 var ufisht = "⥾";
2356 var Ufr = "𝔘";
2357 var ufr = "𝔲";
2358 var Ugrave = "Ù";
2359 var ugrave = "ù";
2360 var uHar = "⥣";
2361 var uharl = "↿";
2362 var uharr = "↾";
2363 var uhblk = "▀";
2364 var ulcorn = "⌜";
2365 var ulcorner = "⌜";
2366 var ulcrop = "⌏";
2367 var ultri = "◸";
2368 var Umacr = "Ū";
2369 var umacr = "ū";
2370 var uml = "¨";
2371 var UnderBar = "_";
2372 var UnderBrace = "⏟";
2373 var UnderBracket = "⎵";
2374 var UnderParenthesis = "⏝";
2375 var Union = "⋃";
2376 var UnionPlus = "⊎";
2377 var Uogon = "Ų";
2378 var uogon = "ų";
2379 var Uopf = "𝕌";
2380 var uopf = "𝕦";
2381 var UpArrowBar = "⤒";
2382 var uparrow = "↑";
2383 var UpArrow = "↑";
2384 var Uparrow = "⇑";
2385 var UpArrowDownArrow = "⇅";
2386 var updownarrow = "↕";
2387 var UpDownArrow = "↕";
2388 var Updownarrow = "⇕";
2389 var UpEquilibrium = "⥮";
2390 var upharpoonleft = "↿";
2391 var upharpoonright = "↾";
2392 var uplus = "⊎";
2393 var UpperLeftArrow = "↖";
2394 var UpperRightArrow = "↗";
2395 var upsi = "υ";
2396 var Upsi = "ϒ";
2397 var upsih = "ϒ";
2398 var Upsilon = "Υ";
2399 var upsilon = "υ";
2400 var UpTeeArrow = "↥";
2401 var UpTee = "⊥";
2402 var upuparrows = "⇈";
2403 var urcorn = "⌝";
2404 var urcorner = "⌝";
2405 var urcrop = "⌎";
2406 var Uring = "Ů";
2407 var uring = "ů";
2408 var urtri = "◹";
2409 var Uscr = "𝒰";
2410 var uscr = "𝓊";
2411 var utdot = "⋰";
2412 var Utilde = "Ũ";
2413 var utilde = "ũ";
2414 var utri = "▵";
2415 var utrif = "▴";
2416 var uuarr = "⇈";
2417 var Uuml = "Ü";
2418 var uuml = "ü";
2419 var uwangle = "⦧";
2420 var vangrt = "⦜";
2421 var varepsilon = "ϵ";
2422 var varkappa = "ϰ";
2423 var varnothing = "∅";
2424 var varphi = "ϕ";
2425 var varpi = "ϖ";
2426 var varpropto = "∝";
2427 var varr = "↕";
2428 var vArr = "⇕";
2429 var varrho = "ϱ";
2430 var varsigma = "ς";
2431 var varsubsetneq = "⊊︀";
2432 var varsubsetneqq = "⫋︀";
2433 var varsupsetneq = "⊋︀";
2434 var varsupsetneqq = "⫌︀";
2435 var vartheta = "ϑ";
2436 var vartriangleleft = "⊲";
2437 var vartriangleright = "⊳";
2438 var vBar = "⫨";
2439 var Vbar = "⫫";
2440 var vBarv = "⫩";
2441 var Vcy = "В";
2442 var vcy = "в";
2443 var vdash = "⊢";
2444 var vDash = "⊨";
2445 var Vdash = "⊩";
2446 var VDash = "⊫";
2447 var Vdashl = "⫦";
2448 var veebar = "⊻";
2449 var vee = "∨";
2450 var Vee = "⋁";
2451 var veeeq = "≚";
2452 var vellip = "⋮";
2453 var verbar = "|";
2454 var Verbar = "‖";
2455 var vert = "|";
2456 var Vert = "‖";
2457 var VerticalBar = "∣";
2458 var VerticalLine = "|";
2459 var VerticalSeparator = "❘";
2460 var VerticalTilde = "≀";
2461 var VeryThinSpace = " ";
2462 var Vfr = "𝔙";
2463 var vfr = "𝔳";
2464 var vltri = "⊲";
2465 var vnsub = "⊂⃒";
2466 var vnsup = "⊃⃒";
2467 var Vopf = "𝕍";
2468 var vopf = "𝕧";
2469 var vprop = "∝";
2470 var vrtri = "⊳";
2471 var Vscr = "𝒱";
2472 var vscr = "𝓋";
2473 var vsubnE = "⫋︀";
2474 var vsubne = "⊊︀";
2475 var vsupnE = "⫌︀";
2476 var vsupne = "⊋︀";
2477 var Vvdash = "⊪";
2478 var vzigzag = "⦚";
2479 var Wcirc = "Ŵ";
2480 var wcirc = "ŵ";
2481 var wedbar = "⩟";
2482 var wedge = "∧";
2483 var Wedge = "⋀";
2484 var wedgeq = "≙";
2485 var weierp = "℘";
2486 var Wfr = "𝔚";
2487 var wfr = "𝔴";
2488 var Wopf = "𝕎";
2489 var wopf = "𝕨";
2490 var wp = "℘";
2491 var wr = "≀";
2492 var wreath = "≀";
2493 var Wscr = "𝒲";
2494 var wscr = "𝓌";
2495 var xcap = "⋂";
2496 var xcirc = "◯";
2497 var xcup = "⋃";
2498 var xdtri = "▽";
2499 var Xfr = "𝔛";
2500 var xfr = "𝔵";
2501 var xharr = "⟷";
2502 var xhArr = "⟺";
2503 var Xi = "Ξ";
2504 var xi = "ξ";
2505 var xlarr = "⟵";
2506 var xlArr = "⟸";
2507 var xmap = "⟼";
2508 var xnis = "⋻";
2509 var xodot = "⨀";
2510 var Xopf = "𝕏";
2511 var xopf = "𝕩";
2512 var xoplus = "⨁";
2513 var xotime = "⨂";
2514 var xrarr = "⟶";
2515 var xrArr = "⟹";
2516 var Xscr = "𝒳";
2517 var xscr = "𝓍";
2518 var xsqcup = "⨆";
2519 var xuplus = "⨄";
2520 var xutri = "△";
2521 var xvee = "⋁";
2522 var xwedge = "⋀";
2523 var Yacute = "Ý";
2524 var yacute = "ý";
2525 var YAcy = "Я";
2526 var yacy = "я";
2527 var Ycirc = "Ŷ";
2528 var ycirc = "ŷ";
2529 var Ycy = "Ы";
2530 var ycy = "ы";
2531 var yen = "¥";
2532 var Yfr = "𝔜";
2533 var yfr = "𝔶";
2534 var YIcy = "Ї";
2535 var yicy = "ї";
2536 var Yopf = "𝕐";
2537 var yopf = "𝕪";
2538 var Yscr = "𝒴";
2539 var yscr = "𝓎";
2540 var YUcy = "Ю";
2541 var yucy = "ю";
2542 var yuml = "ÿ";
2543 var Yuml = "Ÿ";
2544 var Zacute = "Ź";
2545 var zacute = "ź";
2546 var Zcaron = "Ž";
2547 var zcaron = "ž";
2548 var Zcy = "З";
2549 var zcy = "з";
2550 var Zdot = "Ż";
2551 var zdot = "ż";
2552 var zeetrf = "ℨ";
2553 var ZeroWidthSpace = "​";
2554 var Zeta = "Ζ";
2555 var zeta = "ζ";
2556 var zfr = "𝔷";
2557 var Zfr = "ℨ";
2558 var ZHcy = "Ж";
2559 var zhcy = "ж";
2560 var zigrarr = "⇝";
2561 var zopf = "𝕫";
2562 var Zopf = "ℤ";
2563 var Zscr = "𝒵";
2564 var zscr = "𝓏";
2565 var zwj = "‍";
2566 var zwnj = "‌";
2567 var entities = {
2568 Aacute: Aacute,
2569 aacute: aacute,
2570 Abreve: Abreve,
2571 abreve: abreve,
2572 ac: ac,
2573 acd: acd,
2574 acE: acE,
2575 Acirc: Acirc,
2576 acirc: acirc,
2577 acute: acute,
2578 Acy: Acy,
2579 acy: acy,
2580 AElig: AElig,
2581 aelig: aelig,
2582 af: af,
2583 Afr: Afr,
2584 afr: afr,
2585 Agrave: Agrave,
2586 agrave: agrave,
2587 alefsym: alefsym,
2588 aleph: aleph,
2589 Alpha: Alpha,
2590 alpha: alpha,
2591 Amacr: Amacr,
2592 amacr: amacr,
2593 amalg: amalg,
2594 amp: amp,
2595 AMP: AMP,
2596 andand: andand,
2597 And: And,
2598 and: and,
2599 andd: andd,
2600 andslope: andslope,
2601 andv: andv,
2602 ang: ang,
2603 ange: ange,
2604 angle: angle,
2605 angmsdaa: angmsdaa,
2606 angmsdab: angmsdab,
2607 angmsdac: angmsdac,
2608 angmsdad: angmsdad,
2609 angmsdae: angmsdae,
2610 angmsdaf: angmsdaf,
2611 angmsdag: angmsdag,
2612 angmsdah: angmsdah,
2613 angmsd: angmsd,
2614 angrt: angrt,
2615 angrtvb: angrtvb,
2616 angrtvbd: angrtvbd,
2617 angsph: angsph,
2618 angst: angst,
2619 angzarr: angzarr,
2620 Aogon: Aogon,
2621 aogon: aogon,
2622 Aopf: Aopf,
2623 aopf: aopf,
2624 apacir: apacir,
2625 ap: ap,
2626 apE: apE,
2627 ape: ape,
2628 apid: apid,
2629 apos: apos,
2630 ApplyFunction: ApplyFunction,
2631 approx: approx,
2632 approxeq: approxeq,
2633 Aring: Aring,
2634 aring: aring,
2635 Ascr: Ascr,
2636 ascr: ascr,
2637 Assign: Assign,
2638 ast: ast,
2639 asymp: asymp,
2640 asympeq: asympeq,
2641 Atilde: Atilde,
2642 atilde: atilde,
2643 Auml: Auml,
2644 auml: auml,
2645 awconint: awconint,
2646 awint: awint,
2647 backcong: backcong,
2648 backepsilon: backepsilon,
2649 backprime: backprime,
2650 backsim: backsim,
2651 backsimeq: backsimeq,
2652 Backslash: Backslash,
2653 Barv: Barv,
2654 barvee: barvee,
2655 barwed: barwed,
2656 Barwed: Barwed,
2657 barwedge: barwedge,
2658 bbrk: bbrk,
2659 bbrktbrk: bbrktbrk,
2660 bcong: bcong,
2661 Bcy: Bcy,
2662 bcy: bcy,
2663 bdquo: bdquo,
2664 becaus: becaus,
2665 because: because,
2666 Because: Because,
2667 bemptyv: bemptyv,
2668 bepsi: bepsi,
2669 bernou: bernou,
2670 Bernoullis: Bernoullis,
2671 Beta: Beta,
2672 beta: beta,
2673 beth: beth,
2674 between: between,
2675 Bfr: Bfr,
2676 bfr: bfr,
2677 bigcap: bigcap,
2678 bigcirc: bigcirc,
2679 bigcup: bigcup,
2680 bigodot: bigodot,
2681 bigoplus: bigoplus,
2682 bigotimes: bigotimes,
2683 bigsqcup: bigsqcup,
2684 bigstar: bigstar,
2685 bigtriangledown: bigtriangledown,
2686 bigtriangleup: bigtriangleup,
2687 biguplus: biguplus,
2688 bigvee: bigvee,
2689 bigwedge: bigwedge,
2690 bkarow: bkarow,
2691 blacklozenge: blacklozenge,
2692 blacksquare: blacksquare,
2693 blacktriangle: blacktriangle,
2694 blacktriangledown: blacktriangledown,
2695 blacktriangleleft: blacktriangleleft,
2696 blacktriangleright: blacktriangleright,
2697 blank: blank,
2698 blk12: blk12,
2699 blk14: blk14,
2700 blk34: blk34,
2701 block: block,
2702 bne: bne,
2703 bnequiv: bnequiv,
2704 bNot: bNot,
2705 bnot: bnot,
2706 Bopf: Bopf,
2707 bopf: bopf,
2708 bot: bot,
2709 bottom: bottom,
2710 bowtie: bowtie,
2711 boxbox: boxbox,
2712 boxdl: boxdl,
2713 boxdL: boxdL,
2714 boxDl: boxDl,
2715 boxDL: boxDL,
2716 boxdr: boxdr,
2717 boxdR: boxdR,
2718 boxDr: boxDr,
2719 boxDR: boxDR,
2720 boxh: boxh,
2721 boxH: boxH,
2722 boxhd: boxhd,
2723 boxHd: boxHd,
2724 boxhD: boxhD,
2725 boxHD: boxHD,
2726 boxhu: boxhu,
2727 boxHu: boxHu,
2728 boxhU: boxhU,
2729 boxHU: boxHU,
2730 boxminus: boxminus,
2731 boxplus: boxplus,
2732 boxtimes: boxtimes,
2733 boxul: boxul,
2734 boxuL: boxuL,
2735 boxUl: boxUl,
2736 boxUL: boxUL,
2737 boxur: boxur,
2738 boxuR: boxuR,
2739 boxUr: boxUr,
2740 boxUR: boxUR,
2741 boxv: boxv,
2742 boxV: boxV,
2743 boxvh: boxvh,
2744 boxvH: boxvH,
2745 boxVh: boxVh,
2746 boxVH: boxVH,
2747 boxvl: boxvl,
2748 boxvL: boxvL,
2749 boxVl: boxVl,
2750 boxVL: boxVL,
2751 boxvr: boxvr,
2752 boxvR: boxvR,
2753 boxVr: boxVr,
2754 boxVR: boxVR,
2755 bprime: bprime,
2756 breve: breve,
2757 Breve: Breve,
2758 brvbar: brvbar,
2759 bscr: bscr,
2760 Bscr: Bscr,
2761 bsemi: bsemi,
2762 bsim: bsim,
2763 bsime: bsime,
2764 bsolb: bsolb,
2765 bsol: bsol,
2766 bsolhsub: bsolhsub,
2767 bull: bull,
2768 bullet: bullet,
2769 bump: bump,
2770 bumpE: bumpE,
2771 bumpe: bumpe,
2772 Bumpeq: Bumpeq,
2773 bumpeq: bumpeq,
2774 Cacute: Cacute,
2775 cacute: cacute,
2776 capand: capand,
2777 capbrcup: capbrcup,
2778 capcap: capcap,
2779 cap: cap,
2780 Cap: Cap,
2781 capcup: capcup,
2782 capdot: capdot,
2783 CapitalDifferentialD: CapitalDifferentialD,
2784 caps: caps,
2785 caret: caret,
2786 caron: caron,
2787 Cayleys: Cayleys,
2788 ccaps: ccaps,
2789 Ccaron: Ccaron,
2790 ccaron: ccaron,
2791 Ccedil: Ccedil,
2792 ccedil: ccedil,
2793 Ccirc: Ccirc,
2794 ccirc: ccirc,
2795 Cconint: Cconint,
2796 ccups: ccups,
2797 ccupssm: ccupssm,
2798 Cdot: Cdot,
2799 cdot: cdot,
2800 cedil: cedil,
2801 Cedilla: Cedilla,
2802 cemptyv: cemptyv,
2803 cent: cent,
2804 centerdot: centerdot,
2805 CenterDot: CenterDot,
2806 cfr: cfr,
2807 Cfr: Cfr,
2808 CHcy: CHcy,
2809 chcy: chcy,
2810 check: check,
2811 checkmark: checkmark,
2812 Chi: Chi,
2813 chi: chi,
2814 circ: circ,
2815 circeq: circeq,
2816 circlearrowleft: circlearrowleft,
2817 circlearrowright: circlearrowright,
2818 circledast: circledast,
2819 circledcirc: circledcirc,
2820 circleddash: circleddash,
2821 CircleDot: CircleDot,
2822 circledR: circledR,
2823 circledS: circledS,
2824 CircleMinus: CircleMinus,
2825 CirclePlus: CirclePlus,
2826 CircleTimes: CircleTimes,
2827 cir: cir,
2828 cirE: cirE,
2829 cire: cire,
2830 cirfnint: cirfnint,
2831 cirmid: cirmid,
2832 cirscir: cirscir,
2833 ClockwiseContourIntegral: ClockwiseContourIntegral,
2834 CloseCurlyDoubleQuote: CloseCurlyDoubleQuote,
2835 CloseCurlyQuote: CloseCurlyQuote,
2836 clubs: clubs,
2837 clubsuit: clubsuit,
2838 colon: colon,
2839 Colon: Colon,
2840 Colone: Colone,
2841 colone: colone,
2842 coloneq: coloneq,
2843 comma: comma,
2844 commat: commat,
2845 comp: comp,
2846 compfn: compfn,
2847 complement: complement,
2848 complexes: complexes,
2849 cong: cong,
2850 congdot: congdot,
2851 Congruent: Congruent,
2852 conint: conint,
2853 Conint: Conint,
2854 ContourIntegral: ContourIntegral,
2855 copf: copf,
2856 Copf: Copf,
2857 coprod: coprod,
2858 Coproduct: Coproduct,
2859 copy: copy,
2860 COPY: COPY,
2861 copysr: copysr,
2862 CounterClockwiseContourIntegral: CounterClockwiseContourIntegral,
2863 crarr: crarr,
2864 cross: cross,
2865 Cross: Cross,
2866 Cscr: Cscr,
2867 cscr: cscr,
2868 csub: csub,
2869 csube: csube,
2870 csup: csup,
2871 csupe: csupe,
2872 ctdot: ctdot,
2873 cudarrl: cudarrl,
2874 cudarrr: cudarrr,
2875 cuepr: cuepr,
2876 cuesc: cuesc,
2877 cularr: cularr,
2878 cularrp: cularrp,
2879 cupbrcap: cupbrcap,
2880 cupcap: cupcap,
2881 CupCap: CupCap,
2882 cup: cup,
2883 Cup: Cup,
2884 cupcup: cupcup,
2885 cupdot: cupdot,
2886 cupor: cupor,
2887 cups: cups,
2888 curarr: curarr,
2889 curarrm: curarrm,
2890 curlyeqprec: curlyeqprec,
2891 curlyeqsucc: curlyeqsucc,
2892 curlyvee: curlyvee,
2893 curlywedge: curlywedge,
2894 curren: curren,
2895 curvearrowleft: curvearrowleft,
2896 curvearrowright: curvearrowright,
2897 cuvee: cuvee,
2898 cuwed: cuwed,
2899 cwconint: cwconint,
2900 cwint: cwint,
2901 cylcty: cylcty,
2902 dagger: dagger,
2903 Dagger: Dagger,
2904 daleth: daleth,
2905 darr: darr,
2906 Darr: Darr,
2907 dArr: dArr,
2908 dash: dash,
2909 Dashv: Dashv,
2910 dashv: dashv,
2911 dbkarow: dbkarow,
2912 dblac: dblac,
2913 Dcaron: Dcaron,
2914 dcaron: dcaron,
2915 Dcy: Dcy,
2916 dcy: dcy,
2917 ddagger: ddagger,
2918 ddarr: ddarr,
2919 DD: DD,
2920 dd: dd,
2921 DDotrahd: DDotrahd,
2922 ddotseq: ddotseq,
2923 deg: deg,
2924 Del: Del,
2925 Delta: Delta,
2926 delta: delta,
2927 demptyv: demptyv,
2928 dfisht: dfisht,
2929 Dfr: Dfr,
2930 dfr: dfr,
2931 dHar: dHar,
2932 dharl: dharl,
2933 dharr: dharr,
2934 DiacriticalAcute: DiacriticalAcute,
2935 DiacriticalDot: DiacriticalDot,
2936 DiacriticalDoubleAcute: DiacriticalDoubleAcute,
2937 DiacriticalGrave: DiacriticalGrave,
2938 DiacriticalTilde: DiacriticalTilde,
2939 diam: diam,
2940 diamond: diamond,
2941 Diamond: Diamond,
2942 diamondsuit: diamondsuit,
2943 diams: diams,
2944 die: die,
2945 DifferentialD: DifferentialD,
2946 digamma: digamma,
2947 disin: disin,
2948 div: div,
2949 divide: divide,
2950 divideontimes: divideontimes,
2951 divonx: divonx,
2952 DJcy: DJcy,
2953 djcy: djcy,
2954 dlcorn: dlcorn,
2955 dlcrop: dlcrop,
2956 dollar: dollar,
2957 Dopf: Dopf,
2958 dopf: dopf,
2959 Dot: Dot,
2960 dot: dot,
2961 DotDot: DotDot,
2962 doteq: doteq,
2963 doteqdot: doteqdot,
2964 DotEqual: DotEqual,
2965 dotminus: dotminus,
2966 dotplus: dotplus,
2967 dotsquare: dotsquare,
2968 doublebarwedge: doublebarwedge,
2969 DoubleContourIntegral: DoubleContourIntegral,
2970 DoubleDot: DoubleDot,
2971 DoubleDownArrow: DoubleDownArrow,
2972 DoubleLeftArrow: DoubleLeftArrow,
2973 DoubleLeftRightArrow: DoubleLeftRightArrow,
2974 DoubleLeftTee: DoubleLeftTee,
2975 DoubleLongLeftArrow: DoubleLongLeftArrow,
2976 DoubleLongLeftRightArrow: DoubleLongLeftRightArrow,
2977 DoubleLongRightArrow: DoubleLongRightArrow,
2978 DoubleRightArrow: DoubleRightArrow,
2979 DoubleRightTee: DoubleRightTee,
2980 DoubleUpArrow: DoubleUpArrow,
2981 DoubleUpDownArrow: DoubleUpDownArrow,
2982 DoubleVerticalBar: DoubleVerticalBar,
2983 DownArrowBar: DownArrowBar,
2984 downarrow: downarrow,
2985 DownArrow: DownArrow,
2986 Downarrow: Downarrow,
2987 DownArrowUpArrow: DownArrowUpArrow,
2988 DownBreve: DownBreve,
2989 downdownarrows: downdownarrows,
2990 downharpoonleft: downharpoonleft,
2991 downharpoonright: downharpoonright,
2992 DownLeftRightVector: DownLeftRightVector,
2993 DownLeftTeeVector: DownLeftTeeVector,
2994 DownLeftVectorBar: DownLeftVectorBar,
2995 DownLeftVector: DownLeftVector,
2996 DownRightTeeVector: DownRightTeeVector,
2997 DownRightVectorBar: DownRightVectorBar,
2998 DownRightVector: DownRightVector,
2999 DownTeeArrow: DownTeeArrow,
3000 DownTee: DownTee,
3001 drbkarow: drbkarow,
3002 drcorn: drcorn,
3003 drcrop: drcrop,
3004 Dscr: Dscr,
3005 dscr: dscr,
3006 DScy: DScy,
3007 dscy: dscy,
3008 dsol: dsol,
3009 Dstrok: Dstrok,
3010 dstrok: dstrok,
3011 dtdot: dtdot,
3012 dtri: dtri,
3013 dtrif: dtrif,
3014 duarr: duarr,
3015 duhar: duhar,
3016 dwangle: dwangle,
3017 DZcy: DZcy,
3018 dzcy: dzcy,
3019 dzigrarr: dzigrarr,
3020 Eacute: Eacute,
3021 eacute: eacute,
3022 easter: easter,
3023 Ecaron: Ecaron,
3024 ecaron: ecaron,
3025 Ecirc: Ecirc,
3026 ecirc: ecirc,
3027 ecir: ecir,
3028 ecolon: ecolon,
3029 Ecy: Ecy,
3030 ecy: ecy,
3031 eDDot: eDDot,
3032 Edot: Edot,
3033 edot: edot,
3034 eDot: eDot,
3035 ee: ee,
3036 efDot: efDot,
3037 Efr: Efr,
3038 efr: efr,
3039 eg: eg,
3040 Egrave: Egrave,
3041 egrave: egrave,
3042 egs: egs,
3043 egsdot: egsdot,
3044 el: el,
3045 Element: Element,
3046 elinters: elinters,
3047 ell: ell,
3048 els: els,
3049 elsdot: elsdot,
3050 Emacr: Emacr,
3051 emacr: emacr,
3052 empty: empty,
3053 emptyset: emptyset,
3054 EmptySmallSquare: EmptySmallSquare,
3055 emptyv: emptyv,
3056 EmptyVerySmallSquare: EmptyVerySmallSquare,
3057 emsp13: emsp13,
3058 emsp14: emsp14,
3059 emsp: emsp,
3060 ENG: ENG,
3061 eng: eng,
3062 ensp: ensp,
3063 Eogon: Eogon,
3064 eogon: eogon,
3065 Eopf: Eopf,
3066 eopf: eopf,
3067 epar: epar,
3068 eparsl: eparsl,
3069 eplus: eplus,
3070 epsi: epsi,
3071 Epsilon: Epsilon,
3072 epsilon: epsilon,
3073 epsiv: epsiv,
3074 eqcirc: eqcirc,
3075 eqcolon: eqcolon,
3076 eqsim: eqsim,
3077 eqslantgtr: eqslantgtr,
3078 eqslantless: eqslantless,
3079 Equal: Equal,
3080 equals: equals,
3081 EqualTilde: EqualTilde,
3082 equest: equest,
3083 Equilibrium: Equilibrium,
3084 equiv: equiv,
3085 equivDD: equivDD,
3086 eqvparsl: eqvparsl,
3087 erarr: erarr,
3088 erDot: erDot,
3089 escr: escr,
3090 Escr: Escr,
3091 esdot: esdot,
3092 Esim: Esim,
3093 esim: esim,
3094 Eta: Eta,
3095 eta: eta,
3096 ETH: ETH,
3097 eth: eth,
3098 Euml: Euml,
3099 euml: euml,
3100 euro: euro,
3101 excl: excl,
3102 exist: exist,
3103 Exists: Exists,
3104 expectation: expectation,
3105 exponentiale: exponentiale,
3106 ExponentialE: ExponentialE,
3107 fallingdotseq: fallingdotseq,
3108 Fcy: Fcy,
3109 fcy: fcy,
3110 female: female,
3111 ffilig: ffilig,
3112 fflig: fflig,
3113 ffllig: ffllig,
3114 Ffr: Ffr,
3115 ffr: ffr,
3116 filig: filig,
3117 FilledSmallSquare: FilledSmallSquare,
3118 FilledVerySmallSquare: FilledVerySmallSquare,
3119 fjlig: fjlig,
3120 flat: flat,
3121 fllig: fllig,
3122 fltns: fltns,
3123 fnof: fnof,
3124 Fopf: Fopf,
3125 fopf: fopf,
3126 forall: forall,
3127 ForAll: ForAll,
3128 fork: fork,
3129 forkv: forkv,
3130 Fouriertrf: Fouriertrf,
3131 fpartint: fpartint,
3132 frac12: frac12,
3133 frac13: frac13,
3134 frac14: frac14,
3135 frac15: frac15,
3136 frac16: frac16,
3137 frac18: frac18,
3138 frac23: frac23,
3139 frac25: frac25,
3140 frac34: frac34,
3141 frac35: frac35,
3142 frac38: frac38,
3143 frac45: frac45,
3144 frac56: frac56,
3145 frac58: frac58,
3146 frac78: frac78,
3147 frasl: frasl,
3148 frown: frown,
3149 fscr: fscr,
3150 Fscr: Fscr,
3151 gacute: gacute,
3152 Gamma: Gamma,
3153 gamma: gamma,
3154 Gammad: Gammad,
3155 gammad: gammad,
3156 gap: gap,
3157 Gbreve: Gbreve,
3158 gbreve: gbreve,
3159 Gcedil: Gcedil,
3160 Gcirc: Gcirc,
3161 gcirc: gcirc,
3162 Gcy: Gcy,
3163 gcy: gcy,
3164 Gdot: Gdot,
3165 gdot: gdot,
3166 ge: ge,
3167 gE: gE,
3168 gEl: gEl,
3169 gel: gel,
3170 geq: geq,
3171 geqq: geqq,
3172 geqslant: geqslant,
3173 gescc: gescc,
3174 ges: ges,
3175 gesdot: gesdot,
3176 gesdoto: gesdoto,
3177 gesdotol: gesdotol,
3178 gesl: gesl,
3179 gesles: gesles,
3180 Gfr: Gfr,
3181 gfr: gfr,
3182 gg: gg,
3183 Gg: Gg,
3184 ggg: ggg,
3185 gimel: gimel,
3186 GJcy: GJcy,
3187 gjcy: gjcy,
3188 gla: gla,
3189 gl: gl,
3190 glE: glE,
3191 glj: glj,
3192 gnap: gnap,
3193 gnapprox: gnapprox,
3194 gne: gne,
3195 gnE: gnE,
3196 gneq: gneq,
3197 gneqq: gneqq,
3198 gnsim: gnsim,
3199 Gopf: Gopf,
3200 gopf: gopf,
3201 grave: grave,
3202 GreaterEqual: GreaterEqual,
3203 GreaterEqualLess: GreaterEqualLess,
3204 GreaterFullEqual: GreaterFullEqual,
3205 GreaterGreater: GreaterGreater,
3206 GreaterLess: GreaterLess,
3207 GreaterSlantEqual: GreaterSlantEqual,
3208 GreaterTilde: GreaterTilde,
3209 Gscr: Gscr,
3210 gscr: gscr,
3211 gsim: gsim,
3212 gsime: gsime,
3213 gsiml: gsiml,
3214 gtcc: gtcc,
3215 gtcir: gtcir,
3216 gt: gt,
3217 GT: GT,
3218 Gt: Gt,
3219 gtdot: gtdot,
3220 gtlPar: gtlPar,
3221 gtquest: gtquest,
3222 gtrapprox: gtrapprox,
3223 gtrarr: gtrarr,
3224 gtrdot: gtrdot,
3225 gtreqless: gtreqless,
3226 gtreqqless: gtreqqless,
3227 gtrless: gtrless,
3228 gtrsim: gtrsim,
3229 gvertneqq: gvertneqq,
3230 gvnE: gvnE,
3231 Hacek: Hacek,
3232 hairsp: hairsp,
3233 half: half,
3234 hamilt: hamilt,
3235 HARDcy: HARDcy,
3236 hardcy: hardcy,
3237 harrcir: harrcir,
3238 harr: harr,
3239 hArr: hArr,
3240 harrw: harrw,
3241 Hat: Hat,
3242 hbar: hbar,
3243 Hcirc: Hcirc,
3244 hcirc: hcirc,
3245 hearts: hearts,
3246 heartsuit: heartsuit,
3247 hellip: hellip,
3248 hercon: hercon,
3249 hfr: hfr,
3250 Hfr: Hfr,
3251 HilbertSpace: HilbertSpace,
3252 hksearow: hksearow,
3253 hkswarow: hkswarow,
3254 hoarr: hoarr,
3255 homtht: homtht,
3256 hookleftarrow: hookleftarrow,
3257 hookrightarrow: hookrightarrow,
3258 hopf: hopf,
3259 Hopf: Hopf,
3260 horbar: horbar,
3261 HorizontalLine: HorizontalLine,
3262 hscr: hscr,
3263 Hscr: Hscr,
3264 hslash: hslash,
3265 Hstrok: Hstrok,
3266 hstrok: hstrok,
3267 HumpDownHump: HumpDownHump,
3268 HumpEqual: HumpEqual,
3269 hybull: hybull,
3270 hyphen: hyphen,
3271 Iacute: Iacute,
3272 iacute: iacute,
3273 ic: ic,
3274 Icirc: Icirc,
3275 icirc: icirc,
3276 Icy: Icy,
3277 icy: icy,
3278 Idot: Idot,
3279 IEcy: IEcy,
3280 iecy: iecy,
3281 iexcl: iexcl,
3282 iff: iff,
3283 ifr: ifr,
3284 Ifr: Ifr,
3285 Igrave: Igrave,
3286 igrave: igrave,
3287 ii: ii,
3288 iiiint: iiiint,
3289 iiint: iiint,
3290 iinfin: iinfin,
3291 iiota: iiota,
3292 IJlig: IJlig,
3293 ijlig: ijlig,
3294 Imacr: Imacr,
3295 imacr: imacr,
3296 image: image,
3297 ImaginaryI: ImaginaryI,
3298 imagline: imagline,
3299 imagpart: imagpart,
3300 imath: imath,
3301 Im: Im,
3302 imof: imof,
3303 imped: imped,
3304 Implies: Implies,
3305 incare: incare,
3306 "in": "∈",
3307 infin: infin,
3308 infintie: infintie,
3309 inodot: inodot,
3310 intcal: intcal,
3311 int: int,
3312 Int: Int,
3313 integers: integers,
3314 Integral: Integral,
3315 intercal: intercal,
3316 Intersection: Intersection,
3317 intlarhk: intlarhk,
3318 intprod: intprod,
3319 InvisibleComma: InvisibleComma,
3320 InvisibleTimes: InvisibleTimes,
3321 IOcy: IOcy,
3322 iocy: iocy,
3323 Iogon: Iogon,
3324 iogon: iogon,
3325 Iopf: Iopf,
3326 iopf: iopf,
3327 Iota: Iota,
3328 iota: iota,
3329 iprod: iprod,
3330 iquest: iquest,
3331 iscr: iscr,
3332 Iscr: Iscr,
3333 isin: isin,
3334 isindot: isindot,
3335 isinE: isinE,
3336 isins: isins,
3337 isinsv: isinsv,
3338 isinv: isinv,
3339 it: it,
3340 Itilde: Itilde,
3341 itilde: itilde,
3342 Iukcy: Iukcy,
3343 iukcy: iukcy,
3344 Iuml: Iuml,
3345 iuml: iuml,
3346 Jcirc: Jcirc,
3347 jcirc: jcirc,
3348 Jcy: Jcy,
3349 jcy: jcy,
3350 Jfr: Jfr,
3351 jfr: jfr,
3352 jmath: jmath,
3353 Jopf: Jopf,
3354 jopf: jopf,
3355 Jscr: Jscr,
3356 jscr: jscr,
3357 Jsercy: Jsercy,
3358 jsercy: jsercy,
3359 Jukcy: Jukcy,
3360 jukcy: jukcy,
3361 Kappa: Kappa,
3362 kappa: kappa,
3363 kappav: kappav,
3364 Kcedil: Kcedil,
3365 kcedil: kcedil,
3366 Kcy: Kcy,
3367 kcy: kcy,
3368 Kfr: Kfr,
3369 kfr: kfr,
3370 kgreen: kgreen,
3371 KHcy: KHcy,
3372 khcy: khcy,
3373 KJcy: KJcy,
3374 kjcy: kjcy,
3375 Kopf: Kopf,
3376 kopf: kopf,
3377 Kscr: Kscr,
3378 kscr: kscr,
3379 lAarr: lAarr,
3380 Lacute: Lacute,
3381 lacute: lacute,
3382 laemptyv: laemptyv,
3383 lagran: lagran,
3384 Lambda: Lambda,
3385 lambda: lambda,
3386 lang: lang,
3387 Lang: Lang,
3388 langd: langd,
3389 langle: langle,
3390 lap: lap,
3391 Laplacetrf: Laplacetrf,
3392 laquo: laquo,
3393 larrb: larrb,
3394 larrbfs: larrbfs,
3395 larr: larr,
3396 Larr: Larr,
3397 lArr: lArr,
3398 larrfs: larrfs,
3399 larrhk: larrhk,
3400 larrlp: larrlp,
3401 larrpl: larrpl,
3402 larrsim: larrsim,
3403 larrtl: larrtl,
3404 latail: latail,
3405 lAtail: lAtail,
3406 lat: lat,
3407 late: late,
3408 lates: lates,
3409 lbarr: lbarr,
3410 lBarr: lBarr,
3411 lbbrk: lbbrk,
3412 lbrace: lbrace,
3413 lbrack: lbrack,
3414 lbrke: lbrke,
3415 lbrksld: lbrksld,
3416 lbrkslu: lbrkslu,
3417 Lcaron: Lcaron,
3418 lcaron: lcaron,
3419 Lcedil: Lcedil,
3420 lcedil: lcedil,
3421 lceil: lceil,
3422 lcub: lcub,
3423 Lcy: Lcy,
3424 lcy: lcy,
3425 ldca: ldca,
3426 ldquo: ldquo,
3427 ldquor: ldquor,
3428 ldrdhar: ldrdhar,
3429 ldrushar: ldrushar,
3430 ldsh: ldsh,
3431 le: le,
3432 lE: lE,
3433 LeftAngleBracket: LeftAngleBracket,
3434 LeftArrowBar: LeftArrowBar,
3435 leftarrow: leftarrow,
3436 LeftArrow: LeftArrow,
3437 Leftarrow: Leftarrow,
3438 LeftArrowRightArrow: LeftArrowRightArrow,
3439 leftarrowtail: leftarrowtail,
3440 LeftCeiling: LeftCeiling,
3441 LeftDoubleBracket: LeftDoubleBracket,
3442 LeftDownTeeVector: LeftDownTeeVector,
3443 LeftDownVectorBar: LeftDownVectorBar,
3444 LeftDownVector: LeftDownVector,
3445 LeftFloor: LeftFloor,
3446 leftharpoondown: leftharpoondown,
3447 leftharpoonup: leftharpoonup,
3448 leftleftarrows: leftleftarrows,
3449 leftrightarrow: leftrightarrow,
3450 LeftRightArrow: LeftRightArrow,
3451 Leftrightarrow: Leftrightarrow,
3452 leftrightarrows: leftrightarrows,
3453 leftrightharpoons: leftrightharpoons,
3454 leftrightsquigarrow: leftrightsquigarrow,
3455 LeftRightVector: LeftRightVector,
3456 LeftTeeArrow: LeftTeeArrow,
3457 LeftTee: LeftTee,
3458 LeftTeeVector: LeftTeeVector,
3459 leftthreetimes: leftthreetimes,
3460 LeftTriangleBar: LeftTriangleBar,
3461 LeftTriangle: LeftTriangle,
3462 LeftTriangleEqual: LeftTriangleEqual,
3463 LeftUpDownVector: LeftUpDownVector,
3464 LeftUpTeeVector: LeftUpTeeVector,
3465 LeftUpVectorBar: LeftUpVectorBar,
3466 LeftUpVector: LeftUpVector,
3467 LeftVectorBar: LeftVectorBar,
3468 LeftVector: LeftVector,
3469 lEg: lEg,
3470 leg: leg,
3471 leq: leq,
3472 leqq: leqq,
3473 leqslant: leqslant,
3474 lescc: lescc,
3475 les: les,
3476 lesdot: lesdot,
3477 lesdoto: lesdoto,
3478 lesdotor: lesdotor,
3479 lesg: lesg,
3480 lesges: lesges,
3481 lessapprox: lessapprox,
3482 lessdot: lessdot,
3483 lesseqgtr: lesseqgtr,
3484 lesseqqgtr: lesseqqgtr,
3485 LessEqualGreater: LessEqualGreater,
3486 LessFullEqual: LessFullEqual,
3487 LessGreater: LessGreater,
3488 lessgtr: lessgtr,
3489 LessLess: LessLess,
3490 lesssim: lesssim,
3491 LessSlantEqual: LessSlantEqual,
3492 LessTilde: LessTilde,
3493 lfisht: lfisht,
3494 lfloor: lfloor,
3495 Lfr: Lfr,
3496 lfr: lfr,
3497 lg: lg,
3498 lgE: lgE,
3499 lHar: lHar,
3500 lhard: lhard,
3501 lharu: lharu,
3502 lharul: lharul,
3503 lhblk: lhblk,
3504 LJcy: LJcy,
3505 ljcy: ljcy,
3506 llarr: llarr,
3507 ll: ll,
3508 Ll: Ll,
3509 llcorner: llcorner,
3510 Lleftarrow: Lleftarrow,
3511 llhard: llhard,
3512 lltri: lltri,
3513 Lmidot: Lmidot,
3514 lmidot: lmidot,
3515 lmoustache: lmoustache,
3516 lmoust: lmoust,
3517 lnap: lnap,
3518 lnapprox: lnapprox,
3519 lne: lne,
3520 lnE: lnE,
3521 lneq: lneq,
3522 lneqq: lneqq,
3523 lnsim: lnsim,
3524 loang: loang,
3525 loarr: loarr,
3526 lobrk: lobrk,
3527 longleftarrow: longleftarrow,
3528 LongLeftArrow: LongLeftArrow,
3529 Longleftarrow: Longleftarrow,
3530 longleftrightarrow: longleftrightarrow,
3531 LongLeftRightArrow: LongLeftRightArrow,
3532 Longleftrightarrow: Longleftrightarrow,
3533 longmapsto: longmapsto,
3534 longrightarrow: longrightarrow,
3535 LongRightArrow: LongRightArrow,
3536 Longrightarrow: Longrightarrow,
3537 looparrowleft: looparrowleft,
3538 looparrowright: looparrowright,
3539 lopar: lopar,
3540 Lopf: Lopf,
3541 lopf: lopf,
3542 loplus: loplus,
3543 lotimes: lotimes,
3544 lowast: lowast,
3545 lowbar: lowbar,
3546 LowerLeftArrow: LowerLeftArrow,
3547 LowerRightArrow: LowerRightArrow,
3548 loz: loz,
3549 lozenge: lozenge,
3550 lozf: lozf,
3551 lpar: lpar,
3552 lparlt: lparlt,
3553 lrarr: lrarr,
3554 lrcorner: lrcorner,
3555 lrhar: lrhar,
3556 lrhard: lrhard,
3557 lrm: lrm,
3558 lrtri: lrtri,
3559 lsaquo: lsaquo,
3560 lscr: lscr,
3561 Lscr: Lscr,
3562 lsh: lsh,
3563 Lsh: Lsh,
3564 lsim: lsim,
3565 lsime: lsime,
3566 lsimg: lsimg,
3567 lsqb: lsqb,
3568 lsquo: lsquo,
3569 lsquor: lsquor,
3570 Lstrok: Lstrok,
3571 lstrok: lstrok,
3572 ltcc: ltcc,
3573 ltcir: ltcir,
3574 lt: lt,
3575 LT: LT,
3576 Lt: Lt,
3577 ltdot: ltdot,
3578 lthree: lthree,
3579 ltimes: ltimes,
3580 ltlarr: ltlarr,
3581 ltquest: ltquest,
3582 ltri: ltri,
3583 ltrie: ltrie,
3584 ltrif: ltrif,
3585 ltrPar: ltrPar,
3586 lurdshar: lurdshar,
3587 luruhar: luruhar,
3588 lvertneqq: lvertneqq,
3589 lvnE: lvnE,
3590 macr: macr,
3591 male: male,
3592 malt: malt,
3593 maltese: maltese,
3594 "Map": "⤅",
3595 map: map,
3596 mapsto: mapsto,
3597 mapstodown: mapstodown,
3598 mapstoleft: mapstoleft,
3599 mapstoup: mapstoup,
3600 marker: marker,
3601 mcomma: mcomma,
3602 Mcy: Mcy,
3603 mcy: mcy,
3604 mdash: mdash,
3605 mDDot: mDDot,
3606 measuredangle: measuredangle,
3607 MediumSpace: MediumSpace,
3608 Mellintrf: Mellintrf,
3609 Mfr: Mfr,
3610 mfr: mfr,
3611 mho: mho,
3612 micro: micro,
3613 midast: midast,
3614 midcir: midcir,
3615 mid: mid,
3616 middot: middot,
3617 minusb: minusb,
3618 minus: minus,
3619 minusd: minusd,
3620 minusdu: minusdu,
3621 MinusPlus: MinusPlus,
3622 mlcp: mlcp,
3623 mldr: mldr,
3624 mnplus: mnplus,
3625 models: models,
3626 Mopf: Mopf,
3627 mopf: mopf,
3628 mp: mp,
3629 mscr: mscr,
3630 Mscr: Mscr,
3631 mstpos: mstpos,
3632 Mu: Mu,
3633 mu: mu,
3634 multimap: multimap,
3635 mumap: mumap,
3636 nabla: nabla,
3637 Nacute: Nacute,
3638 nacute: nacute,
3639 nang: nang,
3640 nap: nap,
3641 napE: napE,
3642 napid: napid,
3643 napos: napos,
3644 napprox: napprox,
3645 natural: natural,
3646 naturals: naturals,
3647 natur: natur,
3648 nbsp: nbsp,
3649 nbump: nbump,
3650 nbumpe: nbumpe,
3651 ncap: ncap,
3652 Ncaron: Ncaron,
3653 ncaron: ncaron,
3654 Ncedil: Ncedil,
3655 ncedil: ncedil,
3656 ncong: ncong,
3657 ncongdot: ncongdot,
3658 ncup: ncup,
3659 Ncy: Ncy,
3660 ncy: ncy,
3661 ndash: ndash,
3662 nearhk: nearhk,
3663 nearr: nearr,
3664 neArr: neArr,
3665 nearrow: nearrow,
3666 ne: ne,
3667 nedot: nedot,
3668 NegativeMediumSpace: NegativeMediumSpace,
3669 NegativeThickSpace: NegativeThickSpace,
3670 NegativeThinSpace: NegativeThinSpace,
3671 NegativeVeryThinSpace: NegativeVeryThinSpace,
3672 nequiv: nequiv,
3673 nesear: nesear,
3674 nesim: nesim,
3675 NestedGreaterGreater: NestedGreaterGreater,
3676 NestedLessLess: NestedLessLess,
3677 NewLine: NewLine,
3678 nexist: nexist,
3679 nexists: nexists,
3680 Nfr: Nfr,
3681 nfr: nfr,
3682 ngE: ngE,
3683 nge: nge,
3684 ngeq: ngeq,
3685 ngeqq: ngeqq,
3686 ngeqslant: ngeqslant,
3687 nges: nges,
3688 nGg: nGg,
3689 ngsim: ngsim,
3690 nGt: nGt,
3691 ngt: ngt,
3692 ngtr: ngtr,
3693 nGtv: nGtv,
3694 nharr: nharr,
3695 nhArr: nhArr,
3696 nhpar: nhpar,
3697 ni: ni,
3698 nis: nis,
3699 nisd: nisd,
3700 niv: niv,
3701 NJcy: NJcy,
3702 njcy: njcy,
3703 nlarr: nlarr,
3704 nlArr: nlArr,
3705 nldr: nldr,
3706 nlE: nlE,
3707 nle: nle,
3708 nleftarrow: nleftarrow,
3709 nLeftarrow: nLeftarrow,
3710 nleftrightarrow: nleftrightarrow,
3711 nLeftrightarrow: nLeftrightarrow,
3712 nleq: nleq,
3713 nleqq: nleqq,
3714 nleqslant: nleqslant,
3715 nles: nles,
3716 nless: nless,
3717 nLl: nLl,
3718 nlsim: nlsim,
3719 nLt: nLt,
3720 nlt: nlt,
3721 nltri: nltri,
3722 nltrie: nltrie,
3723 nLtv: nLtv,
3724 nmid: nmid,
3725 NoBreak: NoBreak,
3726 NonBreakingSpace: NonBreakingSpace,
3727 nopf: nopf,
3728 Nopf: Nopf,
3729 Not: Not,
3730 not: not,
3731 NotCongruent: NotCongruent,
3732 NotCupCap: NotCupCap,
3733 NotDoubleVerticalBar: NotDoubleVerticalBar,
3734 NotElement: NotElement,
3735 NotEqual: NotEqual,
3736 NotEqualTilde: NotEqualTilde,
3737 NotExists: NotExists,
3738 NotGreater: NotGreater,
3739 NotGreaterEqual: NotGreaterEqual,
3740 NotGreaterFullEqual: NotGreaterFullEqual,
3741 NotGreaterGreater: NotGreaterGreater,
3742 NotGreaterLess: NotGreaterLess,
3743 NotGreaterSlantEqual: NotGreaterSlantEqual,
3744 NotGreaterTilde: NotGreaterTilde,
3745 NotHumpDownHump: NotHumpDownHump,
3746 NotHumpEqual: NotHumpEqual,
3747 notin: notin,
3748 notindot: notindot,
3749 notinE: notinE,
3750 notinva: notinva,
3751 notinvb: notinvb,
3752 notinvc: notinvc,
3753 NotLeftTriangleBar: NotLeftTriangleBar,
3754 NotLeftTriangle: NotLeftTriangle,
3755 NotLeftTriangleEqual: NotLeftTriangleEqual,
3756 NotLess: NotLess,
3757 NotLessEqual: NotLessEqual,
3758 NotLessGreater: NotLessGreater,
3759 NotLessLess: NotLessLess,
3760 NotLessSlantEqual: NotLessSlantEqual,
3761 NotLessTilde: NotLessTilde,
3762 NotNestedGreaterGreater: NotNestedGreaterGreater,
3763 NotNestedLessLess: NotNestedLessLess,
3764 notni: notni,
3765 notniva: notniva,
3766 notnivb: notnivb,
3767 notnivc: notnivc,
3768 NotPrecedes: NotPrecedes,
3769 NotPrecedesEqual: NotPrecedesEqual,
3770 NotPrecedesSlantEqual: NotPrecedesSlantEqual,
3771 NotReverseElement: NotReverseElement,
3772 NotRightTriangleBar: NotRightTriangleBar,
3773 NotRightTriangle: NotRightTriangle,
3774 NotRightTriangleEqual: NotRightTriangleEqual,
3775 NotSquareSubset: NotSquareSubset,
3776 NotSquareSubsetEqual: NotSquareSubsetEqual,
3777 NotSquareSuperset: NotSquareSuperset,
3778 NotSquareSupersetEqual: NotSquareSupersetEqual,
3779 NotSubset: NotSubset,
3780 NotSubsetEqual: NotSubsetEqual,
3781 NotSucceeds: NotSucceeds,
3782 NotSucceedsEqual: NotSucceedsEqual,
3783 NotSucceedsSlantEqual: NotSucceedsSlantEqual,
3784 NotSucceedsTilde: NotSucceedsTilde,
3785 NotSuperset: NotSuperset,
3786 NotSupersetEqual: NotSupersetEqual,
3787 NotTilde: NotTilde,
3788 NotTildeEqual: NotTildeEqual,
3789 NotTildeFullEqual: NotTildeFullEqual,
3790 NotTildeTilde: NotTildeTilde,
3791 NotVerticalBar: NotVerticalBar,
3792 nparallel: nparallel,
3793 npar: npar,
3794 nparsl: nparsl,
3795 npart: npart,
3796 npolint: npolint,
3797 npr: npr,
3798 nprcue: nprcue,
3799 nprec: nprec,
3800 npreceq: npreceq,
3801 npre: npre,
3802 nrarrc: nrarrc,
3803 nrarr: nrarr,
3804 nrArr: nrArr,
3805 nrarrw: nrarrw,
3806 nrightarrow: nrightarrow,
3807 nRightarrow: nRightarrow,
3808 nrtri: nrtri,
3809 nrtrie: nrtrie,
3810 nsc: nsc,
3811 nsccue: nsccue,
3812 nsce: nsce,
3813 Nscr: Nscr,
3814 nscr: nscr,
3815 nshortmid: nshortmid,
3816 nshortparallel: nshortparallel,
3817 nsim: nsim,
3818 nsime: nsime,
3819 nsimeq: nsimeq,
3820 nsmid: nsmid,
3821 nspar: nspar,
3822 nsqsube: nsqsube,
3823 nsqsupe: nsqsupe,
3824 nsub: nsub,
3825 nsubE: nsubE,
3826 nsube: nsube,
3827 nsubset: nsubset,
3828 nsubseteq: nsubseteq,
3829 nsubseteqq: nsubseteqq,
3830 nsucc: nsucc,
3831 nsucceq: nsucceq,
3832 nsup: nsup,
3833 nsupE: nsupE,
3834 nsupe: nsupe,
3835 nsupset: nsupset,
3836 nsupseteq: nsupseteq,
3837 nsupseteqq: nsupseteqq,
3838 ntgl: ntgl,
3839 Ntilde: Ntilde,
3840 ntilde: ntilde,
3841 ntlg: ntlg,
3842 ntriangleleft: ntriangleleft,
3843 ntrianglelefteq: ntrianglelefteq,
3844 ntriangleright: ntriangleright,
3845 ntrianglerighteq: ntrianglerighteq,
3846 Nu: Nu,
3847 nu: nu,
3848 num: num,
3849 numero: numero,
3850 numsp: numsp,
3851 nvap: nvap,
3852 nvdash: nvdash,
3853 nvDash: nvDash,
3854 nVdash: nVdash,
3855 nVDash: nVDash,
3856 nvge: nvge,
3857 nvgt: nvgt,
3858 nvHarr: nvHarr,
3859 nvinfin: nvinfin,
3860 nvlArr: nvlArr,
3861 nvle: nvle,
3862 nvlt: nvlt,
3863 nvltrie: nvltrie,
3864 nvrArr: nvrArr,
3865 nvrtrie: nvrtrie,
3866 nvsim: nvsim,
3867 nwarhk: nwarhk,
3868 nwarr: nwarr,
3869 nwArr: nwArr,
3870 nwarrow: nwarrow,
3871 nwnear: nwnear,
3872 Oacute: Oacute,
3873 oacute: oacute,
3874 oast: oast,
3875 Ocirc: Ocirc,
3876 ocirc: ocirc,
3877 ocir: ocir,
3878 Ocy: Ocy,
3879 ocy: ocy,
3880 odash: odash,
3881 Odblac: Odblac,
3882 odblac: odblac,
3883 odiv: odiv,
3884 odot: odot,
3885 odsold: odsold,
3886 OElig: OElig,
3887 oelig: oelig,
3888 ofcir: ofcir,
3889 Ofr: Ofr,
3890 ofr: ofr,
3891 ogon: ogon,
3892 Ograve: Ograve,
3893 ograve: ograve,
3894 ogt: ogt,
3895 ohbar: ohbar,
3896 ohm: ohm,
3897 oint: oint,
3898 olarr: olarr,
3899 olcir: olcir,
3900 olcross: olcross,
3901 oline: oline,
3902 olt: olt,
3903 Omacr: Omacr,
3904 omacr: omacr,
3905 Omega: Omega,
3906 omega: omega,
3907 Omicron: Omicron,
3908 omicron: omicron,
3909 omid: omid,
3910 ominus: ominus,
3911 Oopf: Oopf,
3912 oopf: oopf,
3913 opar: opar,
3914 OpenCurlyDoubleQuote: OpenCurlyDoubleQuote,
3915 OpenCurlyQuote: OpenCurlyQuote,
3916 operp: operp,
3917 oplus: oplus,
3918 orarr: orarr,
3919 Or: Or,
3920 or: or,
3921 ord: ord,
3922 order: order,
3923 orderof: orderof,
3924 ordf: ordf,
3925 ordm: ordm,
3926 origof: origof,
3927 oror: oror,
3928 orslope: orslope,
3929 orv: orv,
3930 oS: oS,
3931 Oscr: Oscr,
3932 oscr: oscr,
3933 Oslash: Oslash,
3934 oslash: oslash,
3935 osol: osol,
3936 Otilde: Otilde,
3937 otilde: otilde,
3938 otimesas: otimesas,
3939 Otimes: Otimes,
3940 otimes: otimes,
3941 Ouml: Ouml,
3942 ouml: ouml,
3943 ovbar: ovbar,
3944 OverBar: OverBar,
3945 OverBrace: OverBrace,
3946 OverBracket: OverBracket,
3947 OverParenthesis: OverParenthesis,
3948 para: para,
3949 parallel: parallel,
3950 par: par,
3951 parsim: parsim,
3952 parsl: parsl,
3953 part: part,
3954 PartialD: PartialD,
3955 Pcy: Pcy,
3956 pcy: pcy,
3957 percnt: percnt,
3958 period: period,
3959 permil: permil,
3960 perp: perp,
3961 pertenk: pertenk,
3962 Pfr: Pfr,
3963 pfr: pfr,
3964 Phi: Phi,
3965 phi: phi,
3966 phiv: phiv,
3967 phmmat: phmmat,
3968 phone: phone,
3969 Pi: Pi,
3970 pi: pi,
3971 pitchfork: pitchfork,
3972 piv: piv,
3973 planck: planck,
3974 planckh: planckh,
3975 plankv: plankv,
3976 plusacir: plusacir,
3977 plusb: plusb,
3978 pluscir: pluscir,
3979 plus: plus,
3980 plusdo: plusdo,
3981 plusdu: plusdu,
3982 pluse: pluse,
3983 PlusMinus: PlusMinus,
3984 plusmn: plusmn,
3985 plussim: plussim,
3986 plustwo: plustwo,
3987 pm: pm,
3988 Poincareplane: Poincareplane,
3989 pointint: pointint,
3990 popf: popf,
3991 Popf: Popf,
3992 pound: pound,
3993 prap: prap,
3994 Pr: Pr,
3995 pr: pr,
3996 prcue: prcue,
3997 precapprox: precapprox,
3998 prec: prec,
3999 preccurlyeq: preccurlyeq,
4000 Precedes: Precedes,
4001 PrecedesEqual: PrecedesEqual,
4002 PrecedesSlantEqual: PrecedesSlantEqual,
4003 PrecedesTilde: PrecedesTilde,
4004 preceq: preceq,
4005 precnapprox: precnapprox,
4006 precneqq: precneqq,
4007 precnsim: precnsim,
4008 pre: pre,
4009 prE: prE,
4010 precsim: precsim,
4011 prime: prime,
4012 Prime: Prime,
4013 primes: primes,
4014 prnap: prnap,
4015 prnE: prnE,
4016 prnsim: prnsim,
4017 prod: prod,
4018 Product: Product,
4019 profalar: profalar,
4020 profline: profline,
4021 profsurf: profsurf,
4022 prop: prop,
4023 Proportional: Proportional,
4024 Proportion: Proportion,
4025 propto: propto,
4026 prsim: prsim,
4027 prurel: prurel,
4028 Pscr: Pscr,
4029 pscr: pscr,
4030 Psi: Psi,
4031 psi: psi,
4032 puncsp: puncsp,
4033 Qfr: Qfr,
4034 qfr: qfr,
4035 qint: qint,
4036 qopf: qopf,
4037 Qopf: Qopf,
4038 qprime: qprime,
4039 Qscr: Qscr,
4040 qscr: qscr,
4041 quaternions: quaternions,
4042 quatint: quatint,
4043 quest: quest,
4044 questeq: questeq,
4045 quot: quot,
4046 QUOT: QUOT,
4047 rAarr: rAarr,
4048 race: race,
4049 Racute: Racute,
4050 racute: racute,
4051 radic: radic,
4052 raemptyv: raemptyv,
4053 rang: rang,
4054 Rang: Rang,
4055 rangd: rangd,
4056 range: range,
4057 rangle: rangle,
4058 raquo: raquo,
4059 rarrap: rarrap,
4060 rarrb: rarrb,
4061 rarrbfs: rarrbfs,
4062 rarrc: rarrc,
4063 rarr: rarr,
4064 Rarr: Rarr,
4065 rArr: rArr,
4066 rarrfs: rarrfs,
4067 rarrhk: rarrhk,
4068 rarrlp: rarrlp,
4069 rarrpl: rarrpl,
4070 rarrsim: rarrsim,
4071 Rarrtl: Rarrtl,
4072 rarrtl: rarrtl,
4073 rarrw: rarrw,
4074 ratail: ratail,
4075 rAtail: rAtail,
4076 ratio: ratio,
4077 rationals: rationals,
4078 rbarr: rbarr,
4079 rBarr: rBarr,
4080 RBarr: RBarr,
4081 rbbrk: rbbrk,
4082 rbrace: rbrace,
4083 rbrack: rbrack,
4084 rbrke: rbrke,
4085 rbrksld: rbrksld,
4086 rbrkslu: rbrkslu,
4087 Rcaron: Rcaron,
4088 rcaron: rcaron,
4089 Rcedil: Rcedil,
4090 rcedil: rcedil,
4091 rceil: rceil,
4092 rcub: rcub,
4093 Rcy: Rcy,
4094 rcy: rcy,
4095 rdca: rdca,
4096 rdldhar: rdldhar,
4097 rdquo: rdquo,
4098 rdquor: rdquor,
4099 rdsh: rdsh,
4100 real: real,
4101 realine: realine,
4102 realpart: realpart,
4103 reals: reals,
4104 Re: Re,
4105 rect: rect,
4106 reg: reg,
4107 REG: REG,
4108 ReverseElement: ReverseElement,
4109 ReverseEquilibrium: ReverseEquilibrium,
4110 ReverseUpEquilibrium: ReverseUpEquilibrium,
4111 rfisht: rfisht,
4112 rfloor: rfloor,
4113 rfr: rfr,
4114 Rfr: Rfr,
4115 rHar: rHar,
4116 rhard: rhard,
4117 rharu: rharu,
4118 rharul: rharul,
4119 Rho: Rho,
4120 rho: rho,
4121 rhov: rhov,
4122 RightAngleBracket: RightAngleBracket,
4123 RightArrowBar: RightArrowBar,
4124 rightarrow: rightarrow,
4125 RightArrow: RightArrow,
4126 Rightarrow: Rightarrow,
4127 RightArrowLeftArrow: RightArrowLeftArrow,
4128 rightarrowtail: rightarrowtail,
4129 RightCeiling: RightCeiling,
4130 RightDoubleBracket: RightDoubleBracket,
4131 RightDownTeeVector: RightDownTeeVector,
4132 RightDownVectorBar: RightDownVectorBar,
4133 RightDownVector: RightDownVector,
4134 RightFloor: RightFloor,
4135 rightharpoondown: rightharpoondown,
4136 rightharpoonup: rightharpoonup,
4137 rightleftarrows: rightleftarrows,
4138 rightleftharpoons: rightleftharpoons,
4139 rightrightarrows: rightrightarrows,
4140 rightsquigarrow: rightsquigarrow,
4141 RightTeeArrow: RightTeeArrow,
4142 RightTee: RightTee,
4143 RightTeeVector: RightTeeVector,
4144 rightthreetimes: rightthreetimes,
4145 RightTriangleBar: RightTriangleBar,
4146 RightTriangle: RightTriangle,
4147 RightTriangleEqual: RightTriangleEqual,
4148 RightUpDownVector: RightUpDownVector,
4149 RightUpTeeVector: RightUpTeeVector,
4150 RightUpVectorBar: RightUpVectorBar,
4151 RightUpVector: RightUpVector,
4152 RightVectorBar: RightVectorBar,
4153 RightVector: RightVector,
4154 ring: ring,
4155 risingdotseq: risingdotseq,
4156 rlarr: rlarr,
4157 rlhar: rlhar,
4158 rlm: rlm,
4159 rmoustache: rmoustache,
4160 rmoust: rmoust,
4161 rnmid: rnmid,
4162 roang: roang,
4163 roarr: roarr,
4164 robrk: robrk,
4165 ropar: ropar,
4166 ropf: ropf,
4167 Ropf: Ropf,
4168 roplus: roplus,
4169 rotimes: rotimes,
4170 RoundImplies: RoundImplies,
4171 rpar: rpar,
4172 rpargt: rpargt,
4173 rppolint: rppolint,
4174 rrarr: rrarr,
4175 Rrightarrow: Rrightarrow,
4176 rsaquo: rsaquo,
4177 rscr: rscr,
4178 Rscr: Rscr,
4179 rsh: rsh,
4180 Rsh: Rsh,
4181 rsqb: rsqb,
4182 rsquo: rsquo,
4183 rsquor: rsquor,
4184 rthree: rthree,
4185 rtimes: rtimes,
4186 rtri: rtri,
4187 rtrie: rtrie,
4188 rtrif: rtrif,
4189 rtriltri: rtriltri,
4190 RuleDelayed: RuleDelayed,
4191 ruluhar: ruluhar,
4192 rx: rx,
4193 Sacute: Sacute,
4194 sacute: sacute,
4195 sbquo: sbquo,
4196 scap: scap,
4197 Scaron: Scaron,
4198 scaron: scaron,
4199 Sc: Sc,
4200 sc: sc,
4201 sccue: sccue,
4202 sce: sce,
4203 scE: scE,
4204 Scedil: Scedil,
4205 scedil: scedil,
4206 Scirc: Scirc,
4207 scirc: scirc,
4208 scnap: scnap,
4209 scnE: scnE,
4210 scnsim: scnsim,
4211 scpolint: scpolint,
4212 scsim: scsim,
4213 Scy: Scy,
4214 scy: scy,
4215 sdotb: sdotb,
4216 sdot: sdot,
4217 sdote: sdote,
4218 searhk: searhk,
4219 searr: searr,
4220 seArr: seArr,
4221 searrow: searrow,
4222 sect: sect,
4223 semi: semi,
4224 seswar: seswar,
4225 setminus: setminus,
4226 setmn: setmn,
4227 sext: sext,
4228 Sfr: Sfr,
4229 sfr: sfr,
4230 sfrown: sfrown,
4231 sharp: sharp,
4232 SHCHcy: SHCHcy,
4233 shchcy: shchcy,
4234 SHcy: SHcy,
4235 shcy: shcy,
4236 ShortDownArrow: ShortDownArrow,
4237 ShortLeftArrow: ShortLeftArrow,
4238 shortmid: shortmid,
4239 shortparallel: shortparallel,
4240 ShortRightArrow: ShortRightArrow,
4241 ShortUpArrow: ShortUpArrow,
4242 shy: shy,
4243 Sigma: Sigma,
4244 sigma: sigma,
4245 sigmaf: sigmaf,
4246 sigmav: sigmav,
4247 sim: sim,
4248 simdot: simdot,
4249 sime: sime,
4250 simeq: simeq,
4251 simg: simg,
4252 simgE: simgE,
4253 siml: siml,
4254 simlE: simlE,
4255 simne: simne,
4256 simplus: simplus,
4257 simrarr: simrarr,
4258 slarr: slarr,
4259 SmallCircle: SmallCircle,
4260 smallsetminus: smallsetminus,
4261 smashp: smashp,
4262 smeparsl: smeparsl,
4263 smid: smid,
4264 smile: smile,
4265 smt: smt,
4266 smte: smte,
4267 smtes: smtes,
4268 SOFTcy: SOFTcy,
4269 softcy: softcy,
4270 solbar: solbar,
4271 solb: solb,
4272 sol: sol,
4273 Sopf: Sopf,
4274 sopf: sopf,
4275 spades: spades,
4276 spadesuit: spadesuit,
4277 spar: spar,
4278 sqcap: sqcap,
4279 sqcaps: sqcaps,
4280 sqcup: sqcup,
4281 sqcups: sqcups,
4282 Sqrt: Sqrt,
4283 sqsub: sqsub,
4284 sqsube: sqsube,
4285 sqsubset: sqsubset,
4286 sqsubseteq: sqsubseteq,
4287 sqsup: sqsup,
4288 sqsupe: sqsupe,
4289 sqsupset: sqsupset,
4290 sqsupseteq: sqsupseteq,
4291 square: square,
4292 Square: Square,
4293 SquareIntersection: SquareIntersection,
4294 SquareSubset: SquareSubset,
4295 SquareSubsetEqual: SquareSubsetEqual,
4296 SquareSuperset: SquareSuperset,
4297 SquareSupersetEqual: SquareSupersetEqual,
4298 SquareUnion: SquareUnion,
4299 squarf: squarf,
4300 squ: squ,
4301 squf: squf,
4302 srarr: srarr,
4303 Sscr: Sscr,
4304 sscr: sscr,
4305 ssetmn: ssetmn,
4306 ssmile: ssmile,
4307 sstarf: sstarf,
4308 Star: Star,
4309 star: star,
4310 starf: starf,
4311 straightepsilon: straightepsilon,
4312 straightphi: straightphi,
4313 strns: strns,
4314 sub: sub,
4315 Sub: Sub,
4316 subdot: subdot,
4317 subE: subE,
4318 sube: sube,
4319 subedot: subedot,
4320 submult: submult,
4321 subnE: subnE,
4322 subne: subne,
4323 subplus: subplus,
4324 subrarr: subrarr,
4325 subset: subset,
4326 Subset: Subset,
4327 subseteq: subseteq,
4328 subseteqq: subseteqq,
4329 SubsetEqual: SubsetEqual,
4330 subsetneq: subsetneq,
4331 subsetneqq: subsetneqq,
4332 subsim: subsim,
4333 subsub: subsub,
4334 subsup: subsup,
4335 succapprox: succapprox,
4336 succ: succ,
4337 succcurlyeq: succcurlyeq,
4338 Succeeds: Succeeds,
4339 SucceedsEqual: SucceedsEqual,
4340 SucceedsSlantEqual: SucceedsSlantEqual,
4341 SucceedsTilde: SucceedsTilde,
4342 succeq: succeq,
4343 succnapprox: succnapprox,
4344 succneqq: succneqq,
4345 succnsim: succnsim,
4346 succsim: succsim,
4347 SuchThat: SuchThat,
4348 sum: sum,
4349 Sum: Sum,
4350 sung: sung,
4351 sup1: sup1,
4352 sup2: sup2,
4353 sup3: sup3,
4354 sup: sup,
4355 Sup: Sup,
4356 supdot: supdot,
4357 supdsub: supdsub,
4358 supE: supE,
4359 supe: supe,
4360 supedot: supedot,
4361 Superset: Superset,
4362 SupersetEqual: SupersetEqual,
4363 suphsol: suphsol,
4364 suphsub: suphsub,
4365 suplarr: suplarr,
4366 supmult: supmult,
4367 supnE: supnE,
4368 supne: supne,
4369 supplus: supplus,
4370 supset: supset,
4371 Supset: Supset,
4372 supseteq: supseteq,
4373 supseteqq: supseteqq,
4374 supsetneq: supsetneq,
4375 supsetneqq: supsetneqq,
4376 supsim: supsim,
4377 supsub: supsub,
4378 supsup: supsup,
4379 swarhk: swarhk,
4380 swarr: swarr,
4381 swArr: swArr,
4382 swarrow: swarrow,
4383 swnwar: swnwar,
4384 szlig: szlig,
4385 Tab: Tab,
4386 target: target,
4387 Tau: Tau,
4388 tau: tau,
4389 tbrk: tbrk,
4390 Tcaron: Tcaron,
4391 tcaron: tcaron,
4392 Tcedil: Tcedil,
4393 tcedil: tcedil,
4394 Tcy: Tcy,
4395 tcy: tcy,
4396 tdot: tdot,
4397 telrec: telrec,
4398 Tfr: Tfr,
4399 tfr: tfr,
4400 there4: there4,
4401 therefore: therefore,
4402 Therefore: Therefore,
4403 Theta: Theta,
4404 theta: theta,
4405 thetasym: thetasym,
4406 thetav: thetav,
4407 thickapprox: thickapprox,
4408 thicksim: thicksim,
4409 ThickSpace: ThickSpace,
4410 ThinSpace: ThinSpace,
4411 thinsp: thinsp,
4412 thkap: thkap,
4413 thksim: thksim,
4414 THORN: THORN,
4415 thorn: thorn,
4416 tilde: tilde,
4417 Tilde: Tilde,
4418 TildeEqual: TildeEqual,
4419 TildeFullEqual: TildeFullEqual,
4420 TildeTilde: TildeTilde,
4421 timesbar: timesbar,
4422 timesb: timesb,
4423 times: times,
4424 timesd: timesd,
4425 tint: tint,
4426 toea: toea,
4427 topbot: topbot,
4428 topcir: topcir,
4429 top: top,
4430 Topf: Topf,
4431 topf: topf,
4432 topfork: topfork,
4433 tosa: tosa,
4434 tprime: tprime,
4435 trade: trade,
4436 TRADE: TRADE,
4437 triangle: triangle,
4438 triangledown: triangledown,
4439 triangleleft: triangleleft,
4440 trianglelefteq: trianglelefteq,
4441 triangleq: triangleq,
4442 triangleright: triangleright,
4443 trianglerighteq: trianglerighteq,
4444 tridot: tridot,
4445 trie: trie,
4446 triminus: triminus,
4447 TripleDot: TripleDot,
4448 triplus: triplus,
4449 trisb: trisb,
4450 tritime: tritime,
4451 trpezium: trpezium,
4452 Tscr: Tscr,
4453 tscr: tscr,
4454 TScy: TScy,
4455 tscy: tscy,
4456 TSHcy: TSHcy,
4457 tshcy: tshcy,
4458 Tstrok: Tstrok,
4459 tstrok: tstrok,
4460 twixt: twixt,
4461 twoheadleftarrow: twoheadleftarrow,
4462 twoheadrightarrow: twoheadrightarrow,
4463 Uacute: Uacute,
4464 uacute: uacute,
4465 uarr: uarr,
4466 Uarr: Uarr,
4467 uArr: uArr,
4468 Uarrocir: Uarrocir,
4469 Ubrcy: Ubrcy,
4470 ubrcy: ubrcy,
4471 Ubreve: Ubreve,
4472 ubreve: ubreve,
4473 Ucirc: Ucirc,
4474 ucirc: ucirc,
4475 Ucy: Ucy,
4476 ucy: ucy,
4477 udarr: udarr,
4478 Udblac: Udblac,
4479 udblac: udblac,
4480 udhar: udhar,
4481 ufisht: ufisht,
4482 Ufr: Ufr,
4483 ufr: ufr,
4484 Ugrave: Ugrave,
4485 ugrave: ugrave,
4486 uHar: uHar,
4487 uharl: uharl,
4488 uharr: uharr,
4489 uhblk: uhblk,
4490 ulcorn: ulcorn,
4491 ulcorner: ulcorner,
4492 ulcrop: ulcrop,
4493 ultri: ultri,
4494 Umacr: Umacr,
4495 umacr: umacr,
4496 uml: uml,
4497 UnderBar: UnderBar,
4498 UnderBrace: UnderBrace,
4499 UnderBracket: UnderBracket,
4500 UnderParenthesis: UnderParenthesis,
4501 Union: Union,
4502 UnionPlus: UnionPlus,
4503 Uogon: Uogon,
4504 uogon: uogon,
4505 Uopf: Uopf,
4506 uopf: uopf,
4507 UpArrowBar: UpArrowBar,
4508 uparrow: uparrow,
4509 UpArrow: UpArrow,
4510 Uparrow: Uparrow,
4511 UpArrowDownArrow: UpArrowDownArrow,
4512 updownarrow: updownarrow,
4513 UpDownArrow: UpDownArrow,
4514 Updownarrow: Updownarrow,
4515 UpEquilibrium: UpEquilibrium,
4516 upharpoonleft: upharpoonleft,
4517 upharpoonright: upharpoonright,
4518 uplus: uplus,
4519 UpperLeftArrow: UpperLeftArrow,
4520 UpperRightArrow: UpperRightArrow,
4521 upsi: upsi,
4522 Upsi: Upsi,
4523 upsih: upsih,
4524 Upsilon: Upsilon,
4525 upsilon: upsilon,
4526 UpTeeArrow: UpTeeArrow,
4527 UpTee: UpTee,
4528 upuparrows: upuparrows,
4529 urcorn: urcorn,
4530 urcorner: urcorner,
4531 urcrop: urcrop,
4532 Uring: Uring,
4533 uring: uring,
4534 urtri: urtri,
4535 Uscr: Uscr,
4536 uscr: uscr,
4537 utdot: utdot,
4538 Utilde: Utilde,
4539 utilde: utilde,
4540 utri: utri,
4541 utrif: utrif,
4542 uuarr: uuarr,
4543 Uuml: Uuml,
4544 uuml: uuml,
4545 uwangle: uwangle,
4546 vangrt: vangrt,
4547 varepsilon: varepsilon,
4548 varkappa: varkappa,
4549 varnothing: varnothing,
4550 varphi: varphi,
4551 varpi: varpi,
4552 varpropto: varpropto,
4553 varr: varr,
4554 vArr: vArr,
4555 varrho: varrho,
4556 varsigma: varsigma,
4557 varsubsetneq: varsubsetneq,
4558 varsubsetneqq: varsubsetneqq,
4559 varsupsetneq: varsupsetneq,
4560 varsupsetneqq: varsupsetneqq,
4561 vartheta: vartheta,
4562 vartriangleleft: vartriangleleft,
4563 vartriangleright: vartriangleright,
4564 vBar: vBar,
4565 Vbar: Vbar,
4566 vBarv: vBarv,
4567 Vcy: Vcy,
4568 vcy: vcy,
4569 vdash: vdash,
4570 vDash: vDash,
4571 Vdash: Vdash,
4572 VDash: VDash,
4573 Vdashl: Vdashl,
4574 veebar: veebar,
4575 vee: vee,
4576 Vee: Vee,
4577 veeeq: veeeq,
4578 vellip: vellip,
4579 verbar: verbar,
4580 Verbar: Verbar,
4581 vert: vert,
4582 Vert: Vert,
4583 VerticalBar: VerticalBar,
4584 VerticalLine: VerticalLine,
4585 VerticalSeparator: VerticalSeparator,
4586 VerticalTilde: VerticalTilde,
4587 VeryThinSpace: VeryThinSpace,
4588 Vfr: Vfr,
4589 vfr: vfr,
4590 vltri: vltri,
4591 vnsub: vnsub,
4592 vnsup: vnsup,
4593 Vopf: Vopf,
4594 vopf: vopf,
4595 vprop: vprop,
4596 vrtri: vrtri,
4597 Vscr: Vscr,
4598 vscr: vscr,
4599 vsubnE: vsubnE,
4600 vsubne: vsubne,
4601 vsupnE: vsupnE,
4602 vsupne: vsupne,
4603 Vvdash: Vvdash,
4604 vzigzag: vzigzag,
4605 Wcirc: Wcirc,
4606 wcirc: wcirc,
4607 wedbar: wedbar,
4608 wedge: wedge,
4609 Wedge: Wedge,
4610 wedgeq: wedgeq,
4611 weierp: weierp,
4612 Wfr: Wfr,
4613 wfr: wfr,
4614 Wopf: Wopf,
4615 wopf: wopf,
4616 wp: wp,
4617 wr: wr,
4618 wreath: wreath,
4619 Wscr: Wscr,
4620 wscr: wscr,
4621 xcap: xcap,
4622 xcirc: xcirc,
4623 xcup: xcup,
4624 xdtri: xdtri,
4625 Xfr: Xfr,
4626 xfr: xfr,
4627 xharr: xharr,
4628 xhArr: xhArr,
4629 Xi: Xi,
4630 xi: xi,
4631 xlarr: xlarr,
4632 xlArr: xlArr,
4633 xmap: xmap,
4634 xnis: xnis,
4635 xodot: xodot,
4636 Xopf: Xopf,
4637 xopf: xopf,
4638 xoplus: xoplus,
4639 xotime: xotime,
4640 xrarr: xrarr,
4641 xrArr: xrArr,
4642 Xscr: Xscr,
4643 xscr: xscr,
4644 xsqcup: xsqcup,
4645 xuplus: xuplus,
4646 xutri: xutri,
4647 xvee: xvee,
4648 xwedge: xwedge,
4649 Yacute: Yacute,
4650 yacute: yacute,
4651 YAcy: YAcy,
4652 yacy: yacy,
4653 Ycirc: Ycirc,
4654 ycirc: ycirc,
4655 Ycy: Ycy,
4656 ycy: ycy,
4657 yen: yen,
4658 Yfr: Yfr,
4659 yfr: yfr,
4660 YIcy: YIcy,
4661 yicy: yicy,
4662 Yopf: Yopf,
4663 yopf: yopf,
4664 Yscr: Yscr,
4665 yscr: yscr,
4666 YUcy: YUcy,
4667 yucy: yucy,
4668 yuml: yuml,
4669 Yuml: Yuml,
4670 Zacute: Zacute,
4671 zacute: zacute,
4672 Zcaron: Zcaron,
4673 zcaron: zcaron,
4674 Zcy: Zcy,
4675 zcy: zcy,
4676 Zdot: Zdot,
4677 zdot: zdot,
4678 zeetrf: zeetrf,
4679 ZeroWidthSpace: ZeroWidthSpace,
4680 Zeta: Zeta,
4681 zeta: zeta,
4682 zfr: zfr,
4683 Zfr: Zfr,
4684 ZHcy: ZHcy,
4685 zhcy: zhcy,
4686 zigrarr: zigrarr,
4687 zopf: zopf,
4688 Zopf: Zopf,
4689 Zscr: Zscr,
4690 zscr: zscr,
4691 zwj: zwj,
4692 zwnj: zwnj
4693 };
4694
4695 var entities$1 = /*#__PURE__*/Object.freeze({
4696 __proto__: null,
4697 Aacute: Aacute,
4698 aacute: aacute,
4699 Abreve: Abreve,
4700 abreve: abreve,
4701 ac: ac,
4702 acd: acd,
4703 acE: acE,
4704 Acirc: Acirc,
4705 acirc: acirc,
4706 acute: acute,
4707 Acy: Acy,
4708 acy: acy,
4709 AElig: AElig,
4710 aelig: aelig,
4711 af: af,
4712 Afr: Afr,
4713 afr: afr,
4714 Agrave: Agrave,
4715 agrave: agrave,
4716 alefsym: alefsym,
4717 aleph: aleph,
4718 Alpha: Alpha,
4719 alpha: alpha,
4720 Amacr: Amacr,
4721 amacr: amacr,
4722 amalg: amalg,
4723 amp: amp,
4724 AMP: AMP,
4725 andand: andand,
4726 And: And,
4727 and: and,
4728 andd: andd,
4729 andslope: andslope,
4730 andv: andv,
4731 ang: ang,
4732 ange: ange,
4733 angle: angle,
4734 angmsdaa: angmsdaa,
4735 angmsdab: angmsdab,
4736 angmsdac: angmsdac,
4737 angmsdad: angmsdad,
4738 angmsdae: angmsdae,
4739 angmsdaf: angmsdaf,
4740 angmsdag: angmsdag,
4741 angmsdah: angmsdah,
4742 angmsd: angmsd,
4743 angrt: angrt,
4744 angrtvb: angrtvb,
4745 angrtvbd: angrtvbd,
4746 angsph: angsph,
4747 angst: angst,
4748 angzarr: angzarr,
4749 Aogon: Aogon,
4750 aogon: aogon,
4751 Aopf: Aopf,
4752 aopf: aopf,
4753 apacir: apacir,
4754 ap: ap,
4755 apE: apE,
4756 ape: ape,
4757 apid: apid,
4758 apos: apos,
4759 ApplyFunction: ApplyFunction,
4760 approx: approx,
4761 approxeq: approxeq,
4762 Aring: Aring,
4763 aring: aring,
4764 Ascr: Ascr,
4765 ascr: ascr,
4766 Assign: Assign,
4767 ast: ast,
4768 asymp: asymp,
4769 asympeq: asympeq,
4770 Atilde: Atilde,
4771 atilde: atilde,
4772 Auml: Auml,
4773 auml: auml,
4774 awconint: awconint,
4775 awint: awint,
4776 backcong: backcong,
4777 backepsilon: backepsilon,
4778 backprime: backprime,
4779 backsim: backsim,
4780 backsimeq: backsimeq,
4781 Backslash: Backslash,
4782 Barv: Barv,
4783 barvee: barvee,
4784 barwed: barwed,
4785 Barwed: Barwed,
4786 barwedge: barwedge,
4787 bbrk: bbrk,
4788 bbrktbrk: bbrktbrk,
4789 bcong: bcong,
4790 Bcy: Bcy,
4791 bcy: bcy,
4792 bdquo: bdquo,
4793 becaus: becaus,
4794 because: because,
4795 Because: Because,
4796 bemptyv: bemptyv,
4797 bepsi: bepsi,
4798 bernou: bernou,
4799 Bernoullis: Bernoullis,
4800 Beta: Beta,
4801 beta: beta,
4802 beth: beth,
4803 between: between,
4804 Bfr: Bfr,
4805 bfr: bfr,
4806 bigcap: bigcap,
4807 bigcirc: bigcirc,
4808 bigcup: bigcup,
4809 bigodot: bigodot,
4810 bigoplus: bigoplus,
4811 bigotimes: bigotimes,
4812 bigsqcup: bigsqcup,
4813 bigstar: bigstar,
4814 bigtriangledown: bigtriangledown,
4815 bigtriangleup: bigtriangleup,
4816 biguplus: biguplus,
4817 bigvee: bigvee,
4818 bigwedge: bigwedge,
4819 bkarow: bkarow,
4820 blacklozenge: blacklozenge,
4821 blacksquare: blacksquare,
4822 blacktriangle: blacktriangle,
4823 blacktriangledown: blacktriangledown,
4824 blacktriangleleft: blacktriangleleft,
4825 blacktriangleright: blacktriangleright,
4826 blank: blank,
4827 blk12: blk12,
4828 blk14: blk14,
4829 blk34: blk34,
4830 block: block,
4831 bne: bne,
4832 bnequiv: bnequiv,
4833 bNot: bNot,
4834 bnot: bnot,
4835 Bopf: Bopf,
4836 bopf: bopf,
4837 bot: bot,
4838 bottom: bottom,
4839 bowtie: bowtie,
4840 boxbox: boxbox,
4841 boxdl: boxdl,
4842 boxdL: boxdL,
4843 boxDl: boxDl,
4844 boxDL: boxDL,
4845 boxdr: boxdr,
4846 boxdR: boxdR,
4847 boxDr: boxDr,
4848 boxDR: boxDR,
4849 boxh: boxh,
4850 boxH: boxH,
4851 boxhd: boxhd,
4852 boxHd: boxHd,
4853 boxhD: boxhD,
4854 boxHD: boxHD,
4855 boxhu: boxhu,
4856 boxHu: boxHu,
4857 boxhU: boxhU,
4858 boxHU: boxHU,
4859 boxminus: boxminus,
4860 boxplus: boxplus,
4861 boxtimes: boxtimes,
4862 boxul: boxul,
4863 boxuL: boxuL,
4864 boxUl: boxUl,
4865 boxUL: boxUL,
4866 boxur: boxur,
4867 boxuR: boxuR,
4868 boxUr: boxUr,
4869 boxUR: boxUR,
4870 boxv: boxv,
4871 boxV: boxV,
4872 boxvh: boxvh,
4873 boxvH: boxvH,
4874 boxVh: boxVh,
4875 boxVH: boxVH,
4876 boxvl: boxvl,
4877 boxvL: boxvL,
4878 boxVl: boxVl,
4879 boxVL: boxVL,
4880 boxvr: boxvr,
4881 boxvR: boxvR,
4882 boxVr: boxVr,
4883 boxVR: boxVR,
4884 bprime: bprime,
4885 breve: breve,
4886 Breve: Breve,
4887 brvbar: brvbar,
4888 bscr: bscr,
4889 Bscr: Bscr,
4890 bsemi: bsemi,
4891 bsim: bsim,
4892 bsime: bsime,
4893 bsolb: bsolb,
4894 bsol: bsol,
4895 bsolhsub: bsolhsub,
4896 bull: bull,
4897 bullet: bullet,
4898 bump: bump,
4899 bumpE: bumpE,
4900 bumpe: bumpe,
4901 Bumpeq: Bumpeq,
4902 bumpeq: bumpeq,
4903 Cacute: Cacute,
4904 cacute: cacute,
4905 capand: capand,
4906 capbrcup: capbrcup,
4907 capcap: capcap,
4908 cap: cap,
4909 Cap: Cap,
4910 capcup: capcup,
4911 capdot: capdot,
4912 CapitalDifferentialD: CapitalDifferentialD,
4913 caps: caps,
4914 caret: caret,
4915 caron: caron,
4916 Cayleys: Cayleys,
4917 ccaps: ccaps,
4918 Ccaron: Ccaron,
4919 ccaron: ccaron,
4920 Ccedil: Ccedil,
4921 ccedil: ccedil,
4922 Ccirc: Ccirc,
4923 ccirc: ccirc,
4924 Cconint: Cconint,
4925 ccups: ccups,
4926 ccupssm: ccupssm,
4927 Cdot: Cdot,
4928 cdot: cdot,
4929 cedil: cedil,
4930 Cedilla: Cedilla,
4931 cemptyv: cemptyv,
4932 cent: cent,
4933 centerdot: centerdot,
4934 CenterDot: CenterDot,
4935 cfr: cfr,
4936 Cfr: Cfr,
4937 CHcy: CHcy,
4938 chcy: chcy,
4939 check: check,
4940 checkmark: checkmark,
4941 Chi: Chi,
4942 chi: chi,
4943 circ: circ,
4944 circeq: circeq,
4945 circlearrowleft: circlearrowleft,
4946 circlearrowright: circlearrowright,
4947 circledast: circledast,
4948 circledcirc: circledcirc,
4949 circleddash: circleddash,
4950 CircleDot: CircleDot,
4951 circledR: circledR,
4952 circledS: circledS,
4953 CircleMinus: CircleMinus,
4954 CirclePlus: CirclePlus,
4955 CircleTimes: CircleTimes,
4956 cir: cir,
4957 cirE: cirE,
4958 cire: cire,
4959 cirfnint: cirfnint,
4960 cirmid: cirmid,
4961 cirscir: cirscir,
4962 ClockwiseContourIntegral: ClockwiseContourIntegral,
4963 CloseCurlyDoubleQuote: CloseCurlyDoubleQuote,
4964 CloseCurlyQuote: CloseCurlyQuote,
4965 clubs: clubs,
4966 clubsuit: clubsuit,
4967 colon: colon,
4968 Colon: Colon,
4969 Colone: Colone,
4970 colone: colone,
4971 coloneq: coloneq,
4972 comma: comma,
4973 commat: commat,
4974 comp: comp,
4975 compfn: compfn,
4976 complement: complement,
4977 complexes: complexes,
4978 cong: cong,
4979 congdot: congdot,
4980 Congruent: Congruent,
4981 conint: conint,
4982 Conint: Conint,
4983 ContourIntegral: ContourIntegral,
4984 copf: copf,
4985 Copf: Copf,
4986 coprod: coprod,
4987 Coproduct: Coproduct,
4988 copy: copy,
4989 COPY: COPY,
4990 copysr: copysr,
4991 CounterClockwiseContourIntegral: CounterClockwiseContourIntegral,
4992 crarr: crarr,
4993 cross: cross,
4994 Cross: Cross,
4995 Cscr: Cscr,
4996 cscr: cscr,
4997 csub: csub,
4998 csube: csube,
4999 csup: csup,
5000 csupe: csupe,
5001 ctdot: ctdot,
5002 cudarrl: cudarrl,
5003 cudarrr: cudarrr,
5004 cuepr: cuepr,
5005 cuesc: cuesc,
5006 cularr: cularr,
5007 cularrp: cularrp,
5008 cupbrcap: cupbrcap,
5009 cupcap: cupcap,
5010 CupCap: CupCap,
5011 cup: cup,
5012 Cup: Cup,
5013 cupcup: cupcup,
5014 cupdot: cupdot,
5015 cupor: cupor,
5016 cups: cups,
5017 curarr: curarr,
5018 curarrm: curarrm,
5019 curlyeqprec: curlyeqprec,
5020 curlyeqsucc: curlyeqsucc,
5021 curlyvee: curlyvee,
5022 curlywedge: curlywedge,
5023 curren: curren,
5024 curvearrowleft: curvearrowleft,
5025 curvearrowright: curvearrowright,
5026 cuvee: cuvee,
5027 cuwed: cuwed,
5028 cwconint: cwconint,
5029 cwint: cwint,
5030 cylcty: cylcty,
5031 dagger: dagger,
5032 Dagger: Dagger,
5033 daleth: daleth,
5034 darr: darr,
5035 Darr: Darr,
5036 dArr: dArr,
5037 dash: dash,
5038 Dashv: Dashv,
5039 dashv: dashv,
5040 dbkarow: dbkarow,
5041 dblac: dblac,
5042 Dcaron: Dcaron,
5043 dcaron: dcaron,
5044 Dcy: Dcy,
5045 dcy: dcy,
5046 ddagger: ddagger,
5047 ddarr: ddarr,
5048 DD: DD,
5049 dd: dd,
5050 DDotrahd: DDotrahd,
5051 ddotseq: ddotseq,
5052 deg: deg,
5053 Del: Del,
5054 Delta: Delta,
5055 delta: delta,
5056 demptyv: demptyv,
5057 dfisht: dfisht,
5058 Dfr: Dfr,
5059 dfr: dfr,
5060 dHar: dHar,
5061 dharl: dharl,
5062 dharr: dharr,
5063 DiacriticalAcute: DiacriticalAcute,
5064 DiacriticalDot: DiacriticalDot,
5065 DiacriticalDoubleAcute: DiacriticalDoubleAcute,
5066 DiacriticalGrave: DiacriticalGrave,
5067 DiacriticalTilde: DiacriticalTilde,
5068 diam: diam,
5069 diamond: diamond,
5070 Diamond: Diamond,
5071 diamondsuit: diamondsuit,
5072 diams: diams,
5073 die: die,
5074 DifferentialD: DifferentialD,
5075 digamma: digamma,
5076 disin: disin,
5077 div: div,
5078 divide: divide,
5079 divideontimes: divideontimes,
5080 divonx: divonx,
5081 DJcy: DJcy,
5082 djcy: djcy,
5083 dlcorn: dlcorn,
5084 dlcrop: dlcrop,
5085 dollar: dollar,
5086 Dopf: Dopf,
5087 dopf: dopf,
5088 Dot: Dot,
5089 dot: dot,
5090 DotDot: DotDot,
5091 doteq: doteq,
5092 doteqdot: doteqdot,
5093 DotEqual: DotEqual,
5094 dotminus: dotminus,
5095 dotplus: dotplus,
5096 dotsquare: dotsquare,
5097 doublebarwedge: doublebarwedge,
5098 DoubleContourIntegral: DoubleContourIntegral,
5099 DoubleDot: DoubleDot,
5100 DoubleDownArrow: DoubleDownArrow,
5101 DoubleLeftArrow: DoubleLeftArrow,
5102 DoubleLeftRightArrow: DoubleLeftRightArrow,
5103 DoubleLeftTee: DoubleLeftTee,
5104 DoubleLongLeftArrow: DoubleLongLeftArrow,
5105 DoubleLongLeftRightArrow: DoubleLongLeftRightArrow,
5106 DoubleLongRightArrow: DoubleLongRightArrow,
5107 DoubleRightArrow: DoubleRightArrow,
5108 DoubleRightTee: DoubleRightTee,
5109 DoubleUpArrow: DoubleUpArrow,
5110 DoubleUpDownArrow: DoubleUpDownArrow,
5111 DoubleVerticalBar: DoubleVerticalBar,
5112 DownArrowBar: DownArrowBar,
5113 downarrow: downarrow,
5114 DownArrow: DownArrow,
5115 Downarrow: Downarrow,
5116 DownArrowUpArrow: DownArrowUpArrow,
5117 DownBreve: DownBreve,
5118 downdownarrows: downdownarrows,
5119 downharpoonleft: downharpoonleft,
5120 downharpoonright: downharpoonright,
5121 DownLeftRightVector: DownLeftRightVector,
5122 DownLeftTeeVector: DownLeftTeeVector,
5123 DownLeftVectorBar: DownLeftVectorBar,
5124 DownLeftVector: DownLeftVector,
5125 DownRightTeeVector: DownRightTeeVector,
5126 DownRightVectorBar: DownRightVectorBar,
5127 DownRightVector: DownRightVector,
5128 DownTeeArrow: DownTeeArrow,
5129 DownTee: DownTee,
5130 drbkarow: drbkarow,
5131 drcorn: drcorn,
5132 drcrop: drcrop,
5133 Dscr: Dscr,
5134 dscr: dscr,
5135 DScy: DScy,
5136 dscy: dscy,
5137 dsol: dsol,
5138 Dstrok: Dstrok,
5139 dstrok: dstrok,
5140 dtdot: dtdot,
5141 dtri: dtri,
5142 dtrif: dtrif,
5143 duarr: duarr,
5144 duhar: duhar,
5145 dwangle: dwangle,
5146 DZcy: DZcy,
5147 dzcy: dzcy,
5148 dzigrarr: dzigrarr,
5149 Eacute: Eacute,
5150 eacute: eacute,
5151 easter: easter,
5152 Ecaron: Ecaron,
5153 ecaron: ecaron,
5154 Ecirc: Ecirc,
5155 ecirc: ecirc,
5156 ecir: ecir,
5157 ecolon: ecolon,
5158 Ecy: Ecy,
5159 ecy: ecy,
5160 eDDot: eDDot,
5161 Edot: Edot,
5162 edot: edot,
5163 eDot: eDot,
5164 ee: ee,
5165 efDot: efDot,
5166 Efr: Efr,
5167 efr: efr,
5168 eg: eg,
5169 Egrave: Egrave,
5170 egrave: egrave,
5171 egs: egs,
5172 egsdot: egsdot,
5173 el: el,
5174 Element: Element,
5175 elinters: elinters,
5176 ell: ell,
5177 els: els,
5178 elsdot: elsdot,
5179 Emacr: Emacr,
5180 emacr: emacr,
5181 empty: empty,
5182 emptyset: emptyset,
5183 EmptySmallSquare: EmptySmallSquare,
5184 emptyv: emptyv,
5185 EmptyVerySmallSquare: EmptyVerySmallSquare,
5186 emsp13: emsp13,
5187 emsp14: emsp14,
5188 emsp: emsp,
5189 ENG: ENG,
5190 eng: eng,
5191 ensp: ensp,
5192 Eogon: Eogon,
5193 eogon: eogon,
5194 Eopf: Eopf,
5195 eopf: eopf,
5196 epar: epar,
5197 eparsl: eparsl,
5198 eplus: eplus,
5199 epsi: epsi,
5200 Epsilon: Epsilon,
5201 epsilon: epsilon,
5202 epsiv: epsiv,
5203 eqcirc: eqcirc,
5204 eqcolon: eqcolon,
5205 eqsim: eqsim,
5206 eqslantgtr: eqslantgtr,
5207 eqslantless: eqslantless,
5208 Equal: Equal,
5209 equals: equals,
5210 EqualTilde: EqualTilde,
5211 equest: equest,
5212 Equilibrium: Equilibrium,
5213 equiv: equiv,
5214 equivDD: equivDD,
5215 eqvparsl: eqvparsl,
5216 erarr: erarr,
5217 erDot: erDot,
5218 escr: escr,
5219 Escr: Escr,
5220 esdot: esdot,
5221 Esim: Esim,
5222 esim: esim,
5223 Eta: Eta,
5224 eta: eta,
5225 ETH: ETH,
5226 eth: eth,
5227 Euml: Euml,
5228 euml: euml,
5229 euro: euro,
5230 excl: excl,
5231 exist: exist,
5232 Exists: Exists,
5233 expectation: expectation,
5234 exponentiale: exponentiale,
5235 ExponentialE: ExponentialE,
5236 fallingdotseq: fallingdotseq,
5237 Fcy: Fcy,
5238 fcy: fcy,
5239 female: female,
5240 ffilig: ffilig,
5241 fflig: fflig,
5242 ffllig: ffllig,
5243 Ffr: Ffr,
5244 ffr: ffr,
5245 filig: filig,
5246 FilledSmallSquare: FilledSmallSquare,
5247 FilledVerySmallSquare: FilledVerySmallSquare,
5248 fjlig: fjlig,
5249 flat: flat,
5250 fllig: fllig,
5251 fltns: fltns,
5252 fnof: fnof,
5253 Fopf: Fopf,
5254 fopf: fopf,
5255 forall: forall,
5256 ForAll: ForAll,
5257 fork: fork,
5258 forkv: forkv,
5259 Fouriertrf: Fouriertrf,
5260 fpartint: fpartint,
5261 frac12: frac12,
5262 frac13: frac13,
5263 frac14: frac14,
5264 frac15: frac15,
5265 frac16: frac16,
5266 frac18: frac18,
5267 frac23: frac23,
5268 frac25: frac25,
5269 frac34: frac34,
5270 frac35: frac35,
5271 frac38: frac38,
5272 frac45: frac45,
5273 frac56: frac56,
5274 frac58: frac58,
5275 frac78: frac78,
5276 frasl: frasl,
5277 frown: frown,
5278 fscr: fscr,
5279 Fscr: Fscr,
5280 gacute: gacute,
5281 Gamma: Gamma,
5282 gamma: gamma,
5283 Gammad: Gammad,
5284 gammad: gammad,
5285 gap: gap,
5286 Gbreve: Gbreve,
5287 gbreve: gbreve,
5288 Gcedil: Gcedil,
5289 Gcirc: Gcirc,
5290 gcirc: gcirc,
5291 Gcy: Gcy,
5292 gcy: gcy,
5293 Gdot: Gdot,
5294 gdot: gdot,
5295 ge: ge,
5296 gE: gE,
5297 gEl: gEl,
5298 gel: gel,
5299 geq: geq,
5300 geqq: geqq,
5301 geqslant: geqslant,
5302 gescc: gescc,
5303 ges: ges,
5304 gesdot: gesdot,
5305 gesdoto: gesdoto,
5306 gesdotol: gesdotol,
5307 gesl: gesl,
5308 gesles: gesles,
5309 Gfr: Gfr,
5310 gfr: gfr,
5311 gg: gg,
5312 Gg: Gg,
5313 ggg: ggg,
5314 gimel: gimel,
5315 GJcy: GJcy,
5316 gjcy: gjcy,
5317 gla: gla,
5318 gl: gl,
5319 glE: glE,
5320 glj: glj,
5321 gnap: gnap,
5322 gnapprox: gnapprox,
5323 gne: gne,
5324 gnE: gnE,
5325 gneq: gneq,
5326 gneqq: gneqq,
5327 gnsim: gnsim,
5328 Gopf: Gopf,
5329 gopf: gopf,
5330 grave: grave,
5331 GreaterEqual: GreaterEqual,
5332 GreaterEqualLess: GreaterEqualLess,
5333 GreaterFullEqual: GreaterFullEqual,
5334 GreaterGreater: GreaterGreater,
5335 GreaterLess: GreaterLess,
5336 GreaterSlantEqual: GreaterSlantEqual,
5337 GreaterTilde: GreaterTilde,
5338 Gscr: Gscr,
5339 gscr: gscr,
5340 gsim: gsim,
5341 gsime: gsime,
5342 gsiml: gsiml,
5343 gtcc: gtcc,
5344 gtcir: gtcir,
5345 gt: gt,
5346 GT: GT,
5347 Gt: Gt,
5348 gtdot: gtdot,
5349 gtlPar: gtlPar,
5350 gtquest: gtquest,
5351 gtrapprox: gtrapprox,
5352 gtrarr: gtrarr,
5353 gtrdot: gtrdot,
5354 gtreqless: gtreqless,
5355 gtreqqless: gtreqqless,
5356 gtrless: gtrless,
5357 gtrsim: gtrsim,
5358 gvertneqq: gvertneqq,
5359 gvnE: gvnE,
5360 Hacek: Hacek,
5361 hairsp: hairsp,
5362 half: half,
5363 hamilt: hamilt,
5364 HARDcy: HARDcy,
5365 hardcy: hardcy,
5366 harrcir: harrcir,
5367 harr: harr,
5368 hArr: hArr,
5369 harrw: harrw,
5370 Hat: Hat,
5371 hbar: hbar,
5372 Hcirc: Hcirc,
5373 hcirc: hcirc,
5374 hearts: hearts,
5375 heartsuit: heartsuit,
5376 hellip: hellip,
5377 hercon: hercon,
5378 hfr: hfr,
5379 Hfr: Hfr,
5380 HilbertSpace: HilbertSpace,
5381 hksearow: hksearow,
5382 hkswarow: hkswarow,
5383 hoarr: hoarr,
5384 homtht: homtht,
5385 hookleftarrow: hookleftarrow,
5386 hookrightarrow: hookrightarrow,
5387 hopf: hopf,
5388 Hopf: Hopf,
5389 horbar: horbar,
5390 HorizontalLine: HorizontalLine,
5391 hscr: hscr,
5392 Hscr: Hscr,
5393 hslash: hslash,
5394 Hstrok: Hstrok,
5395 hstrok: hstrok,
5396 HumpDownHump: HumpDownHump,
5397 HumpEqual: HumpEqual,
5398 hybull: hybull,
5399 hyphen: hyphen,
5400 Iacute: Iacute,
5401 iacute: iacute,
5402 ic: ic,
5403 Icirc: Icirc,
5404 icirc: icirc,
5405 Icy: Icy,
5406 icy: icy,
5407 Idot: Idot,
5408 IEcy: IEcy,
5409 iecy: iecy,
5410 iexcl: iexcl,
5411 iff: iff,
5412 ifr: ifr,
5413 Ifr: Ifr,
5414 Igrave: Igrave,
5415 igrave: igrave,
5416 ii: ii,
5417 iiiint: iiiint,
5418 iiint: iiint,
5419 iinfin: iinfin,
5420 iiota: iiota,
5421 IJlig: IJlig,
5422 ijlig: ijlig,
5423 Imacr: Imacr,
5424 imacr: imacr,
5425 image: image,
5426 ImaginaryI: ImaginaryI,
5427 imagline: imagline,
5428 imagpart: imagpart,
5429 imath: imath,
5430 Im: Im,
5431 imof: imof,
5432 imped: imped,
5433 Implies: Implies,
5434 incare: incare,
5435 infin: infin,
5436 infintie: infintie,
5437 inodot: inodot,
5438 intcal: intcal,
5439 int: int,
5440 Int: Int,
5441 integers: integers,
5442 Integral: Integral,
5443 intercal: intercal,
5444 Intersection: Intersection,
5445 intlarhk: intlarhk,
5446 intprod: intprod,
5447 InvisibleComma: InvisibleComma,
5448 InvisibleTimes: InvisibleTimes,
5449 IOcy: IOcy,
5450 iocy: iocy,
5451 Iogon: Iogon,
5452 iogon: iogon,
5453 Iopf: Iopf,
5454 iopf: iopf,
5455 Iota: Iota,
5456 iota: iota,
5457 iprod: iprod,
5458 iquest: iquest,
5459 iscr: iscr,
5460 Iscr: Iscr,
5461 isin: isin,
5462 isindot: isindot,
5463 isinE: isinE,
5464 isins: isins,
5465 isinsv: isinsv,
5466 isinv: isinv,
5467 it: it,
5468 Itilde: Itilde,
5469 itilde: itilde,
5470 Iukcy: Iukcy,
5471 iukcy: iukcy,
5472 Iuml: Iuml,
5473 iuml: iuml,
5474 Jcirc: Jcirc,
5475 jcirc: jcirc,
5476 Jcy: Jcy,
5477 jcy: jcy,
5478 Jfr: Jfr,
5479 jfr: jfr,
5480 jmath: jmath,
5481 Jopf: Jopf,
5482 jopf: jopf,
5483 Jscr: Jscr,
5484 jscr: jscr,
5485 Jsercy: Jsercy,
5486 jsercy: jsercy,
5487 Jukcy: Jukcy,
5488 jukcy: jukcy,
5489 Kappa: Kappa,
5490 kappa: kappa,
5491 kappav: kappav,
5492 Kcedil: Kcedil,
5493 kcedil: kcedil,
5494 Kcy: Kcy,
5495 kcy: kcy,
5496 Kfr: Kfr,
5497 kfr: kfr,
5498 kgreen: kgreen,
5499 KHcy: KHcy,
5500 khcy: khcy,
5501 KJcy: KJcy,
5502 kjcy: kjcy,
5503 Kopf: Kopf,
5504 kopf: kopf,
5505 Kscr: Kscr,
5506 kscr: kscr,
5507 lAarr: lAarr,
5508 Lacute: Lacute,
5509 lacute: lacute,
5510 laemptyv: laemptyv,
5511 lagran: lagran,
5512 Lambda: Lambda,
5513 lambda: lambda,
5514 lang: lang,
5515 Lang: Lang,
5516 langd: langd,
5517 langle: langle,
5518 lap: lap,
5519 Laplacetrf: Laplacetrf,
5520 laquo: laquo,
5521 larrb: larrb,
5522 larrbfs: larrbfs,
5523 larr: larr,
5524 Larr: Larr,
5525 lArr: lArr,
5526 larrfs: larrfs,
5527 larrhk: larrhk,
5528 larrlp: larrlp,
5529 larrpl: larrpl,
5530 larrsim: larrsim,
5531 larrtl: larrtl,
5532 latail: latail,
5533 lAtail: lAtail,
5534 lat: lat,
5535 late: late,
5536 lates: lates,
5537 lbarr: lbarr,
5538 lBarr: lBarr,
5539 lbbrk: lbbrk,
5540 lbrace: lbrace,
5541 lbrack: lbrack,
5542 lbrke: lbrke,
5543 lbrksld: lbrksld,
5544 lbrkslu: lbrkslu,
5545 Lcaron: Lcaron,
5546 lcaron: lcaron,
5547 Lcedil: Lcedil,
5548 lcedil: lcedil,
5549 lceil: lceil,
5550 lcub: lcub,
5551 Lcy: Lcy,
5552 lcy: lcy,
5553 ldca: ldca,
5554 ldquo: ldquo,
5555 ldquor: ldquor,
5556 ldrdhar: ldrdhar,
5557 ldrushar: ldrushar,
5558 ldsh: ldsh,
5559 le: le,
5560 lE: lE,
5561 LeftAngleBracket: LeftAngleBracket,
5562 LeftArrowBar: LeftArrowBar,
5563 leftarrow: leftarrow,
5564 LeftArrow: LeftArrow,
5565 Leftarrow: Leftarrow,
5566 LeftArrowRightArrow: LeftArrowRightArrow,
5567 leftarrowtail: leftarrowtail,
5568 LeftCeiling: LeftCeiling,
5569 LeftDoubleBracket: LeftDoubleBracket,
5570 LeftDownTeeVector: LeftDownTeeVector,
5571 LeftDownVectorBar: LeftDownVectorBar,
5572 LeftDownVector: LeftDownVector,
5573 LeftFloor: LeftFloor,
5574 leftharpoondown: leftharpoondown,
5575 leftharpoonup: leftharpoonup,
5576 leftleftarrows: leftleftarrows,
5577 leftrightarrow: leftrightarrow,
5578 LeftRightArrow: LeftRightArrow,
5579 Leftrightarrow: Leftrightarrow,
5580 leftrightarrows: leftrightarrows,
5581 leftrightharpoons: leftrightharpoons,
5582 leftrightsquigarrow: leftrightsquigarrow,
5583 LeftRightVector: LeftRightVector,
5584 LeftTeeArrow: LeftTeeArrow,
5585 LeftTee: LeftTee,
5586 LeftTeeVector: LeftTeeVector,
5587 leftthreetimes: leftthreetimes,
5588 LeftTriangleBar: LeftTriangleBar,
5589 LeftTriangle: LeftTriangle,
5590 LeftTriangleEqual: LeftTriangleEqual,
5591 LeftUpDownVector: LeftUpDownVector,
5592 LeftUpTeeVector: LeftUpTeeVector,
5593 LeftUpVectorBar: LeftUpVectorBar,
5594 LeftUpVector: LeftUpVector,
5595 LeftVectorBar: LeftVectorBar,
5596 LeftVector: LeftVector,
5597 lEg: lEg,
5598 leg: leg,
5599 leq: leq,
5600 leqq: leqq,
5601 leqslant: leqslant,
5602 lescc: lescc,
5603 les: les,
5604 lesdot: lesdot,
5605 lesdoto: lesdoto,
5606 lesdotor: lesdotor,
5607 lesg: lesg,
5608 lesges: lesges,
5609 lessapprox: lessapprox,
5610 lessdot: lessdot,
5611 lesseqgtr: lesseqgtr,
5612 lesseqqgtr: lesseqqgtr,
5613 LessEqualGreater: LessEqualGreater,
5614 LessFullEqual: LessFullEqual,
5615 LessGreater: LessGreater,
5616 lessgtr: lessgtr,
5617 LessLess: LessLess,
5618 lesssim: lesssim,
5619 LessSlantEqual: LessSlantEqual,
5620 LessTilde: LessTilde,
5621 lfisht: lfisht,
5622 lfloor: lfloor,
5623 Lfr: Lfr,
5624 lfr: lfr,
5625 lg: lg,
5626 lgE: lgE,
5627 lHar: lHar,
5628 lhard: lhard,
5629 lharu: lharu,
5630 lharul: lharul,
5631 lhblk: lhblk,
5632 LJcy: LJcy,
5633 ljcy: ljcy,
5634 llarr: llarr,
5635 ll: ll,
5636 Ll: Ll,
5637 llcorner: llcorner,
5638 Lleftarrow: Lleftarrow,
5639 llhard: llhard,
5640 lltri: lltri,
5641 Lmidot: Lmidot,
5642 lmidot: lmidot,
5643 lmoustache: lmoustache,
5644 lmoust: lmoust,
5645 lnap: lnap,
5646 lnapprox: lnapprox,
5647 lne: lne,
5648 lnE: lnE,
5649 lneq: lneq,
5650 lneqq: lneqq,
5651 lnsim: lnsim,
5652 loang: loang,
5653 loarr: loarr,
5654 lobrk: lobrk,
5655 longleftarrow: longleftarrow,
5656 LongLeftArrow: LongLeftArrow,
5657 Longleftarrow: Longleftarrow,
5658 longleftrightarrow: longleftrightarrow,
5659 LongLeftRightArrow: LongLeftRightArrow,
5660 Longleftrightarrow: Longleftrightarrow,
5661 longmapsto: longmapsto,
5662 longrightarrow: longrightarrow,
5663 LongRightArrow: LongRightArrow,
5664 Longrightarrow: Longrightarrow,
5665 looparrowleft: looparrowleft,
5666 looparrowright: looparrowright,
5667 lopar: lopar,
5668 Lopf: Lopf,
5669 lopf: lopf,
5670 loplus: loplus,
5671 lotimes: lotimes,
5672 lowast: lowast,
5673 lowbar: lowbar,
5674 LowerLeftArrow: LowerLeftArrow,
5675 LowerRightArrow: LowerRightArrow,
5676 loz: loz,
5677 lozenge: lozenge,
5678 lozf: lozf,
5679 lpar: lpar,
5680 lparlt: lparlt,
5681 lrarr: lrarr,
5682 lrcorner: lrcorner,
5683 lrhar: lrhar,
5684 lrhard: lrhard,
5685 lrm: lrm,
5686 lrtri: lrtri,
5687 lsaquo: lsaquo,
5688 lscr: lscr,
5689 Lscr: Lscr,
5690 lsh: lsh,
5691 Lsh: Lsh,
5692 lsim: lsim,
5693 lsime: lsime,
5694 lsimg: lsimg,
5695 lsqb: lsqb,
5696 lsquo: lsquo,
5697 lsquor: lsquor,
5698 Lstrok: Lstrok,
5699 lstrok: lstrok,
5700 ltcc: ltcc,
5701 ltcir: ltcir,
5702 lt: lt,
5703 LT: LT,
5704 Lt: Lt,
5705 ltdot: ltdot,
5706 lthree: lthree,
5707 ltimes: ltimes,
5708 ltlarr: ltlarr,
5709 ltquest: ltquest,
5710 ltri: ltri,
5711 ltrie: ltrie,
5712 ltrif: ltrif,
5713 ltrPar: ltrPar,
5714 lurdshar: lurdshar,
5715 luruhar: luruhar,
5716 lvertneqq: lvertneqq,
5717 lvnE: lvnE,
5718 macr: macr,
5719 male: male,
5720 malt: malt,
5721 maltese: maltese,
5722 map: map,
5723 mapsto: mapsto,
5724 mapstodown: mapstodown,
5725 mapstoleft: mapstoleft,
5726 mapstoup: mapstoup,
5727 marker: marker,
5728 mcomma: mcomma,
5729 Mcy: Mcy,
5730 mcy: mcy,
5731 mdash: mdash,
5732 mDDot: mDDot,
5733 measuredangle: measuredangle,
5734 MediumSpace: MediumSpace,
5735 Mellintrf: Mellintrf,
5736 Mfr: Mfr,
5737 mfr: mfr,
5738 mho: mho,
5739 micro: micro,
5740 midast: midast,
5741 midcir: midcir,
5742 mid: mid,
5743 middot: middot,
5744 minusb: minusb,
5745 minus: minus,
5746 minusd: minusd,
5747 minusdu: minusdu,
5748 MinusPlus: MinusPlus,
5749 mlcp: mlcp,
5750 mldr: mldr,
5751 mnplus: mnplus,
5752 models: models,
5753 Mopf: Mopf,
5754 mopf: mopf,
5755 mp: mp,
5756 mscr: mscr,
5757 Mscr: Mscr,
5758 mstpos: mstpos,
5759 Mu: Mu,
5760 mu: mu,
5761 multimap: multimap,
5762 mumap: mumap,
5763 nabla: nabla,
5764 Nacute: Nacute,
5765 nacute: nacute,
5766 nang: nang,
5767 nap: nap,
5768 napE: napE,
5769 napid: napid,
5770 napos: napos,
5771 napprox: napprox,
5772 natural: natural,
5773 naturals: naturals,
5774 natur: natur,
5775 nbsp: nbsp,
5776 nbump: nbump,
5777 nbumpe: nbumpe,
5778 ncap: ncap,
5779 Ncaron: Ncaron,
5780 ncaron: ncaron,
5781 Ncedil: Ncedil,
5782 ncedil: ncedil,
5783 ncong: ncong,
5784 ncongdot: ncongdot,
5785 ncup: ncup,
5786 Ncy: Ncy,
5787 ncy: ncy,
5788 ndash: ndash,
5789 nearhk: nearhk,
5790 nearr: nearr,
5791 neArr: neArr,
5792 nearrow: nearrow,
5793 ne: ne,
5794 nedot: nedot,
5795 NegativeMediumSpace: NegativeMediumSpace,
5796 NegativeThickSpace: NegativeThickSpace,
5797 NegativeThinSpace: NegativeThinSpace,
5798 NegativeVeryThinSpace: NegativeVeryThinSpace,
5799 nequiv: nequiv,
5800 nesear: nesear,
5801 nesim: nesim,
5802 NestedGreaterGreater: NestedGreaterGreater,
5803 NestedLessLess: NestedLessLess,
5804 NewLine: NewLine,
5805 nexist: nexist,
5806 nexists: nexists,
5807 Nfr: Nfr,
5808 nfr: nfr,
5809 ngE: ngE,
5810 nge: nge,
5811 ngeq: ngeq,
5812 ngeqq: ngeqq,
5813 ngeqslant: ngeqslant,
5814 nges: nges,
5815 nGg: nGg,
5816 ngsim: ngsim,
5817 nGt: nGt,
5818 ngt: ngt,
5819 ngtr: ngtr,
5820 nGtv: nGtv,
5821 nharr: nharr,
5822 nhArr: nhArr,
5823 nhpar: nhpar,
5824 ni: ni,
5825 nis: nis,
5826 nisd: nisd,
5827 niv: niv,
5828 NJcy: NJcy,
5829 njcy: njcy,
5830 nlarr: nlarr,
5831 nlArr: nlArr,
5832 nldr: nldr,
5833 nlE: nlE,
5834 nle: nle,
5835 nleftarrow: nleftarrow,
5836 nLeftarrow: nLeftarrow,
5837 nleftrightarrow: nleftrightarrow,
5838 nLeftrightarrow: nLeftrightarrow,
5839 nleq: nleq,
5840 nleqq: nleqq,
5841 nleqslant: nleqslant,
5842 nles: nles,
5843 nless: nless,
5844 nLl: nLl,
5845 nlsim: nlsim,
5846 nLt: nLt,
5847 nlt: nlt,
5848 nltri: nltri,
5849 nltrie: nltrie,
5850 nLtv: nLtv,
5851 nmid: nmid,
5852 NoBreak: NoBreak,
5853 NonBreakingSpace: NonBreakingSpace,
5854 nopf: nopf,
5855 Nopf: Nopf,
5856 Not: Not,
5857 not: not,
5858 NotCongruent: NotCongruent,
5859 NotCupCap: NotCupCap,
5860 NotDoubleVerticalBar: NotDoubleVerticalBar,
5861 NotElement: NotElement,
5862 NotEqual: NotEqual,
5863 NotEqualTilde: NotEqualTilde,
5864 NotExists: NotExists,
5865 NotGreater: NotGreater,
5866 NotGreaterEqual: NotGreaterEqual,
5867 NotGreaterFullEqual: NotGreaterFullEqual,
5868 NotGreaterGreater: NotGreaterGreater,
5869 NotGreaterLess: NotGreaterLess,
5870 NotGreaterSlantEqual: NotGreaterSlantEqual,
5871 NotGreaterTilde: NotGreaterTilde,
5872 NotHumpDownHump: NotHumpDownHump,
5873 NotHumpEqual: NotHumpEqual,
5874 notin: notin,
5875 notindot: notindot,
5876 notinE: notinE,
5877 notinva: notinva,
5878 notinvb: notinvb,
5879 notinvc: notinvc,
5880 NotLeftTriangleBar: NotLeftTriangleBar,
5881 NotLeftTriangle: NotLeftTriangle,
5882 NotLeftTriangleEqual: NotLeftTriangleEqual,
5883 NotLess: NotLess,
5884 NotLessEqual: NotLessEqual,
5885 NotLessGreater: NotLessGreater,
5886 NotLessLess: NotLessLess,
5887 NotLessSlantEqual: NotLessSlantEqual,
5888 NotLessTilde: NotLessTilde,
5889 NotNestedGreaterGreater: NotNestedGreaterGreater,
5890 NotNestedLessLess: NotNestedLessLess,
5891 notni: notni,
5892 notniva: notniva,
5893 notnivb: notnivb,
5894 notnivc: notnivc,
5895 NotPrecedes: NotPrecedes,
5896 NotPrecedesEqual: NotPrecedesEqual,
5897 NotPrecedesSlantEqual: NotPrecedesSlantEqual,
5898 NotReverseElement: NotReverseElement,
5899 NotRightTriangleBar: NotRightTriangleBar,
5900 NotRightTriangle: NotRightTriangle,
5901 NotRightTriangleEqual: NotRightTriangleEqual,
5902 NotSquareSubset: NotSquareSubset,
5903 NotSquareSubsetEqual: NotSquareSubsetEqual,
5904 NotSquareSuperset: NotSquareSuperset,
5905 NotSquareSupersetEqual: NotSquareSupersetEqual,
5906 NotSubset: NotSubset,
5907 NotSubsetEqual: NotSubsetEqual,
5908 NotSucceeds: NotSucceeds,
5909 NotSucceedsEqual: NotSucceedsEqual,
5910 NotSucceedsSlantEqual: NotSucceedsSlantEqual,
5911 NotSucceedsTilde: NotSucceedsTilde,
5912 NotSuperset: NotSuperset,
5913 NotSupersetEqual: NotSupersetEqual,
5914 NotTilde: NotTilde,
5915 NotTildeEqual: NotTildeEqual,
5916 NotTildeFullEqual: NotTildeFullEqual,
5917 NotTildeTilde: NotTildeTilde,
5918 NotVerticalBar: NotVerticalBar,
5919 nparallel: nparallel,
5920 npar: npar,
5921 nparsl: nparsl,
5922 npart: npart,
5923 npolint: npolint,
5924 npr: npr,
5925 nprcue: nprcue,
5926 nprec: nprec,
5927 npreceq: npreceq,
5928 npre: npre,
5929 nrarrc: nrarrc,
5930 nrarr: nrarr,
5931 nrArr: nrArr,
5932 nrarrw: nrarrw,
5933 nrightarrow: nrightarrow,
5934 nRightarrow: nRightarrow,
5935 nrtri: nrtri,
5936 nrtrie: nrtrie,
5937 nsc: nsc,
5938 nsccue: nsccue,
5939 nsce: nsce,
5940 Nscr: Nscr,
5941 nscr: nscr,
5942 nshortmid: nshortmid,
5943 nshortparallel: nshortparallel,
5944 nsim: nsim,
5945 nsime: nsime,
5946 nsimeq: nsimeq,
5947 nsmid: nsmid,
5948 nspar: nspar,
5949 nsqsube: nsqsube,
5950 nsqsupe: nsqsupe,
5951 nsub: nsub,
5952 nsubE: nsubE,
5953 nsube: nsube,
5954 nsubset: nsubset,
5955 nsubseteq: nsubseteq,
5956 nsubseteqq: nsubseteqq,
5957 nsucc: nsucc,
5958 nsucceq: nsucceq,
5959 nsup: nsup,
5960 nsupE: nsupE,
5961 nsupe: nsupe,
5962 nsupset: nsupset,
5963 nsupseteq: nsupseteq,
5964 nsupseteqq: nsupseteqq,
5965 ntgl: ntgl,
5966 Ntilde: Ntilde,
5967 ntilde: ntilde,
5968 ntlg: ntlg,
5969 ntriangleleft: ntriangleleft,
5970 ntrianglelefteq: ntrianglelefteq,
5971 ntriangleright: ntriangleright,
5972 ntrianglerighteq: ntrianglerighteq,
5973 Nu: Nu,
5974 nu: nu,
5975 num: num,
5976 numero: numero,
5977 numsp: numsp,
5978 nvap: nvap,
5979 nvdash: nvdash,
5980 nvDash: nvDash,
5981 nVdash: nVdash,
5982 nVDash: nVDash,
5983 nvge: nvge,
5984 nvgt: nvgt,
5985 nvHarr: nvHarr,
5986 nvinfin: nvinfin,
5987 nvlArr: nvlArr,
5988 nvle: nvle,
5989 nvlt: nvlt,
5990 nvltrie: nvltrie,
5991 nvrArr: nvrArr,
5992 nvrtrie: nvrtrie,
5993 nvsim: nvsim,
5994 nwarhk: nwarhk,
5995 nwarr: nwarr,
5996 nwArr: nwArr,
5997 nwarrow: nwarrow,
5998 nwnear: nwnear,
5999 Oacute: Oacute,
6000 oacute: oacute,
6001 oast: oast,
6002 Ocirc: Ocirc,
6003 ocirc: ocirc,
6004 ocir: ocir,
6005 Ocy: Ocy,
6006 ocy: ocy,
6007 odash: odash,
6008 Odblac: Odblac,
6009 odblac: odblac,
6010 odiv: odiv,
6011 odot: odot,
6012 odsold: odsold,
6013 OElig: OElig,
6014 oelig: oelig,
6015 ofcir: ofcir,
6016 Ofr: Ofr,
6017 ofr: ofr,
6018 ogon: ogon,
6019 Ograve: Ograve,
6020 ograve: ograve,
6021 ogt: ogt,
6022 ohbar: ohbar,
6023 ohm: ohm,
6024 oint: oint,
6025 olarr: olarr,
6026 olcir: olcir,
6027 olcross: olcross,
6028 oline: oline,
6029 olt: olt,
6030 Omacr: Omacr,
6031 omacr: omacr,
6032 Omega: Omega,
6033 omega: omega,
6034 Omicron: Omicron,
6035 omicron: omicron,
6036 omid: omid,
6037 ominus: ominus,
6038 Oopf: Oopf,
6039 oopf: oopf,
6040 opar: opar,
6041 OpenCurlyDoubleQuote: OpenCurlyDoubleQuote,
6042 OpenCurlyQuote: OpenCurlyQuote,
6043 operp: operp,
6044 oplus: oplus,
6045 orarr: orarr,
6046 Or: Or,
6047 or: or,
6048 ord: ord,
6049 order: order,
6050 orderof: orderof,
6051 ordf: ordf,
6052 ordm: ordm,
6053 origof: origof,
6054 oror: oror,
6055 orslope: orslope,
6056 orv: orv,
6057 oS: oS,
6058 Oscr: Oscr,
6059 oscr: oscr,
6060 Oslash: Oslash,
6061 oslash: oslash,
6062 osol: osol,
6063 Otilde: Otilde,
6064 otilde: otilde,
6065 otimesas: otimesas,
6066 Otimes: Otimes,
6067 otimes: otimes,
6068 Ouml: Ouml,
6069 ouml: ouml,
6070 ovbar: ovbar,
6071 OverBar: OverBar,
6072 OverBrace: OverBrace,
6073 OverBracket: OverBracket,
6074 OverParenthesis: OverParenthesis,
6075 para: para,
6076 parallel: parallel,
6077 par: par,
6078 parsim: parsim,
6079 parsl: parsl,
6080 part: part,
6081 PartialD: PartialD,
6082 Pcy: Pcy,
6083 pcy: pcy,
6084 percnt: percnt,
6085 period: period,
6086 permil: permil,
6087 perp: perp,
6088 pertenk: pertenk,
6089 Pfr: Pfr,
6090 pfr: pfr,
6091 Phi: Phi,
6092 phi: phi,
6093 phiv: phiv,
6094 phmmat: phmmat,
6095 phone: phone,
6096 Pi: Pi,
6097 pi: pi,
6098 pitchfork: pitchfork,
6099 piv: piv,
6100 planck: planck,
6101 planckh: planckh,
6102 plankv: plankv,
6103 plusacir: plusacir,
6104 plusb: plusb,
6105 pluscir: pluscir,
6106 plus: plus,
6107 plusdo: plusdo,
6108 plusdu: plusdu,
6109 pluse: pluse,
6110 PlusMinus: PlusMinus,
6111 plusmn: plusmn,
6112 plussim: plussim,
6113 plustwo: plustwo,
6114 pm: pm,
6115 Poincareplane: Poincareplane,
6116 pointint: pointint,
6117 popf: popf,
6118 Popf: Popf,
6119 pound: pound,
6120 prap: prap,
6121 Pr: Pr,
6122 pr: pr,
6123 prcue: prcue,
6124 precapprox: precapprox,
6125 prec: prec,
6126 preccurlyeq: preccurlyeq,
6127 Precedes: Precedes,
6128 PrecedesEqual: PrecedesEqual,
6129 PrecedesSlantEqual: PrecedesSlantEqual,
6130 PrecedesTilde: PrecedesTilde,
6131 preceq: preceq,
6132 precnapprox: precnapprox,
6133 precneqq: precneqq,
6134 precnsim: precnsim,
6135 pre: pre,
6136 prE: prE,
6137 precsim: precsim,
6138 prime: prime,
6139 Prime: Prime,
6140 primes: primes,
6141 prnap: prnap,
6142 prnE: prnE,
6143 prnsim: prnsim,
6144 prod: prod,
6145 Product: Product,
6146 profalar: profalar,
6147 profline: profline,
6148 profsurf: profsurf,
6149 prop: prop,
6150 Proportional: Proportional,
6151 Proportion: Proportion,
6152 propto: propto,
6153 prsim: prsim,
6154 prurel: prurel,
6155 Pscr: Pscr,
6156 pscr: pscr,
6157 Psi: Psi,
6158 psi: psi,
6159 puncsp: puncsp,
6160 Qfr: Qfr,
6161 qfr: qfr,
6162 qint: qint,
6163 qopf: qopf,
6164 Qopf: Qopf,
6165 qprime: qprime,
6166 Qscr: Qscr,
6167 qscr: qscr,
6168 quaternions: quaternions,
6169 quatint: quatint,
6170 quest: quest,
6171 questeq: questeq,
6172 quot: quot,
6173 QUOT: QUOT,
6174 rAarr: rAarr,
6175 race: race,
6176 Racute: Racute,
6177 racute: racute,
6178 radic: radic,
6179 raemptyv: raemptyv,
6180 rang: rang,
6181 Rang: Rang,
6182 rangd: rangd,
6183 range: range,
6184 rangle: rangle,
6185 raquo: raquo,
6186 rarrap: rarrap,
6187 rarrb: rarrb,
6188 rarrbfs: rarrbfs,
6189 rarrc: rarrc,
6190 rarr: rarr,
6191 Rarr: Rarr,
6192 rArr: rArr,
6193 rarrfs: rarrfs,
6194 rarrhk: rarrhk,
6195 rarrlp: rarrlp,
6196 rarrpl: rarrpl,
6197 rarrsim: rarrsim,
6198 Rarrtl: Rarrtl,
6199 rarrtl: rarrtl,
6200 rarrw: rarrw,
6201 ratail: ratail,
6202 rAtail: rAtail,
6203 ratio: ratio,
6204 rationals: rationals,
6205 rbarr: rbarr,
6206 rBarr: rBarr,
6207 RBarr: RBarr,
6208 rbbrk: rbbrk,
6209 rbrace: rbrace,
6210 rbrack: rbrack,
6211 rbrke: rbrke,
6212 rbrksld: rbrksld,
6213 rbrkslu: rbrkslu,
6214 Rcaron: Rcaron,
6215 rcaron: rcaron,
6216 Rcedil: Rcedil,
6217 rcedil: rcedil,
6218 rceil: rceil,
6219 rcub: rcub,
6220 Rcy: Rcy,
6221 rcy: rcy,
6222 rdca: rdca,
6223 rdldhar: rdldhar,
6224 rdquo: rdquo,
6225 rdquor: rdquor,
6226 rdsh: rdsh,
6227 real: real,
6228 realine: realine,
6229 realpart: realpart,
6230 reals: reals,
6231 Re: Re,
6232 rect: rect,
6233 reg: reg,
6234 REG: REG,
6235 ReverseElement: ReverseElement,
6236 ReverseEquilibrium: ReverseEquilibrium,
6237 ReverseUpEquilibrium: ReverseUpEquilibrium,
6238 rfisht: rfisht,
6239 rfloor: rfloor,
6240 rfr: rfr,
6241 Rfr: Rfr,
6242 rHar: rHar,
6243 rhard: rhard,
6244 rharu: rharu,
6245 rharul: rharul,
6246 Rho: Rho,
6247 rho: rho,
6248 rhov: rhov,
6249 RightAngleBracket: RightAngleBracket,
6250 RightArrowBar: RightArrowBar,
6251 rightarrow: rightarrow,
6252 RightArrow: RightArrow,
6253 Rightarrow: Rightarrow,
6254 RightArrowLeftArrow: RightArrowLeftArrow,
6255 rightarrowtail: rightarrowtail,
6256 RightCeiling: RightCeiling,
6257 RightDoubleBracket: RightDoubleBracket,
6258 RightDownTeeVector: RightDownTeeVector,
6259 RightDownVectorBar: RightDownVectorBar,
6260 RightDownVector: RightDownVector,
6261 RightFloor: RightFloor,
6262 rightharpoondown: rightharpoondown,
6263 rightharpoonup: rightharpoonup,
6264 rightleftarrows: rightleftarrows,
6265 rightleftharpoons: rightleftharpoons,
6266 rightrightarrows: rightrightarrows,
6267 rightsquigarrow: rightsquigarrow,
6268 RightTeeArrow: RightTeeArrow,
6269 RightTee: RightTee,
6270 RightTeeVector: RightTeeVector,
6271 rightthreetimes: rightthreetimes,
6272 RightTriangleBar: RightTriangleBar,
6273 RightTriangle: RightTriangle,
6274 RightTriangleEqual: RightTriangleEqual,
6275 RightUpDownVector: RightUpDownVector,
6276 RightUpTeeVector: RightUpTeeVector,
6277 RightUpVectorBar: RightUpVectorBar,
6278 RightUpVector: RightUpVector,
6279 RightVectorBar: RightVectorBar,
6280 RightVector: RightVector,
6281 ring: ring,
6282 risingdotseq: risingdotseq,
6283 rlarr: rlarr,
6284 rlhar: rlhar,
6285 rlm: rlm,
6286 rmoustache: rmoustache,
6287 rmoust: rmoust,
6288 rnmid: rnmid,
6289 roang: roang,
6290 roarr: roarr,
6291 robrk: robrk,
6292 ropar: ropar,
6293 ropf: ropf,
6294 Ropf: Ropf,
6295 roplus: roplus,
6296 rotimes: rotimes,
6297 RoundImplies: RoundImplies,
6298 rpar: rpar,
6299 rpargt: rpargt,
6300 rppolint: rppolint,
6301 rrarr: rrarr,
6302 Rrightarrow: Rrightarrow,
6303 rsaquo: rsaquo,
6304 rscr: rscr,
6305 Rscr: Rscr,
6306 rsh: rsh,
6307 Rsh: Rsh,
6308 rsqb: rsqb,
6309 rsquo: rsquo,
6310 rsquor: rsquor,
6311 rthree: rthree,
6312 rtimes: rtimes,
6313 rtri: rtri,
6314 rtrie: rtrie,
6315 rtrif: rtrif,
6316 rtriltri: rtriltri,
6317 RuleDelayed: RuleDelayed,
6318 ruluhar: ruluhar,
6319 rx: rx,
6320 Sacute: Sacute,
6321 sacute: sacute,
6322 sbquo: sbquo,
6323 scap: scap,
6324 Scaron: Scaron,
6325 scaron: scaron,
6326 Sc: Sc,
6327 sc: sc,
6328 sccue: sccue,
6329 sce: sce,
6330 scE: scE,
6331 Scedil: Scedil,
6332 scedil: scedil,
6333 Scirc: Scirc,
6334 scirc: scirc,
6335 scnap: scnap,
6336 scnE: scnE,
6337 scnsim: scnsim,
6338 scpolint: scpolint,
6339 scsim: scsim,
6340 Scy: Scy,
6341 scy: scy,
6342 sdotb: sdotb,
6343 sdot: sdot,
6344 sdote: sdote,
6345 searhk: searhk,
6346 searr: searr,
6347 seArr: seArr,
6348 searrow: searrow,
6349 sect: sect,
6350 semi: semi,
6351 seswar: seswar,
6352 setminus: setminus,
6353 setmn: setmn,
6354 sext: sext,
6355 Sfr: Sfr,
6356 sfr: sfr,
6357 sfrown: sfrown,
6358 sharp: sharp,
6359 SHCHcy: SHCHcy,
6360 shchcy: shchcy,
6361 SHcy: SHcy,
6362 shcy: shcy,
6363 ShortDownArrow: ShortDownArrow,
6364 ShortLeftArrow: ShortLeftArrow,
6365 shortmid: shortmid,
6366 shortparallel: shortparallel,
6367 ShortRightArrow: ShortRightArrow,
6368 ShortUpArrow: ShortUpArrow,
6369 shy: shy,
6370 Sigma: Sigma,
6371 sigma: sigma,
6372 sigmaf: sigmaf,
6373 sigmav: sigmav,
6374 sim: sim,
6375 simdot: simdot,
6376 sime: sime,
6377 simeq: simeq,
6378 simg: simg,
6379 simgE: simgE,
6380 siml: siml,
6381 simlE: simlE,
6382 simne: simne,
6383 simplus: simplus,
6384 simrarr: simrarr,
6385 slarr: slarr,
6386 SmallCircle: SmallCircle,
6387 smallsetminus: smallsetminus,
6388 smashp: smashp,
6389 smeparsl: smeparsl,
6390 smid: smid,
6391 smile: smile,
6392 smt: smt,
6393 smte: smte,
6394 smtes: smtes,
6395 SOFTcy: SOFTcy,
6396 softcy: softcy,
6397 solbar: solbar,
6398 solb: solb,
6399 sol: sol,
6400 Sopf: Sopf,
6401 sopf: sopf,
6402 spades: spades,
6403 spadesuit: spadesuit,
6404 spar: spar,
6405 sqcap: sqcap,
6406 sqcaps: sqcaps,
6407 sqcup: sqcup,
6408 sqcups: sqcups,
6409 Sqrt: Sqrt,
6410 sqsub: sqsub,
6411 sqsube: sqsube,
6412 sqsubset: sqsubset,
6413 sqsubseteq: sqsubseteq,
6414 sqsup: sqsup,
6415 sqsupe: sqsupe,
6416 sqsupset: sqsupset,
6417 sqsupseteq: sqsupseteq,
6418 square: square,
6419 Square: Square,
6420 SquareIntersection: SquareIntersection,
6421 SquareSubset: SquareSubset,
6422 SquareSubsetEqual: SquareSubsetEqual,
6423 SquareSuperset: SquareSuperset,
6424 SquareSupersetEqual: SquareSupersetEqual,
6425 SquareUnion: SquareUnion,
6426 squarf: squarf,
6427 squ: squ,
6428 squf: squf,
6429 srarr: srarr,
6430 Sscr: Sscr,
6431 sscr: sscr,
6432 ssetmn: ssetmn,
6433 ssmile: ssmile,
6434 sstarf: sstarf,
6435 Star: Star,
6436 star: star,
6437 starf: starf,
6438 straightepsilon: straightepsilon,
6439 straightphi: straightphi,
6440 strns: strns,
6441 sub: sub,
6442 Sub: Sub,
6443 subdot: subdot,
6444 subE: subE,
6445 sube: sube,
6446 subedot: subedot,
6447 submult: submult,
6448 subnE: subnE,
6449 subne: subne,
6450 subplus: subplus,
6451 subrarr: subrarr,
6452 subset: subset,
6453 Subset: Subset,
6454 subseteq: subseteq,
6455 subseteqq: subseteqq,
6456 SubsetEqual: SubsetEqual,
6457 subsetneq: subsetneq,
6458 subsetneqq: subsetneqq,
6459 subsim: subsim,
6460 subsub: subsub,
6461 subsup: subsup,
6462 succapprox: succapprox,
6463 succ: succ,
6464 succcurlyeq: succcurlyeq,
6465 Succeeds: Succeeds,
6466 SucceedsEqual: SucceedsEqual,
6467 SucceedsSlantEqual: SucceedsSlantEqual,
6468 SucceedsTilde: SucceedsTilde,
6469 succeq: succeq,
6470 succnapprox: succnapprox,
6471 succneqq: succneqq,
6472 succnsim: succnsim,
6473 succsim: succsim,
6474 SuchThat: SuchThat,
6475 sum: sum,
6476 Sum: Sum,
6477 sung: sung,
6478 sup1: sup1,
6479 sup2: sup2,
6480 sup3: sup3,
6481 sup: sup,
6482 Sup: Sup,
6483 supdot: supdot,
6484 supdsub: supdsub,
6485 supE: supE,
6486 supe: supe,
6487 supedot: supedot,
6488 Superset: Superset,
6489 SupersetEqual: SupersetEqual,
6490 suphsol: suphsol,
6491 suphsub: suphsub,
6492 suplarr: suplarr,
6493 supmult: supmult,
6494 supnE: supnE,
6495 supne: supne,
6496 supplus: supplus,
6497 supset: supset,
6498 Supset: Supset,
6499 supseteq: supseteq,
6500 supseteqq: supseteqq,
6501 supsetneq: supsetneq,
6502 supsetneqq: supsetneqq,
6503 supsim: supsim,
6504 supsub: supsub,
6505 supsup: supsup,
6506 swarhk: swarhk,
6507 swarr: swarr,
6508 swArr: swArr,
6509 swarrow: swarrow,
6510 swnwar: swnwar,
6511 szlig: szlig,
6512 Tab: Tab,
6513 target: target,
6514 Tau: Tau,
6515 tau: tau,
6516 tbrk: tbrk,
6517 Tcaron: Tcaron,
6518 tcaron: tcaron,
6519 Tcedil: Tcedil,
6520 tcedil: tcedil,
6521 Tcy: Tcy,
6522 tcy: tcy,
6523 tdot: tdot,
6524 telrec: telrec,
6525 Tfr: Tfr,
6526 tfr: tfr,
6527 there4: there4,
6528 therefore: therefore,
6529 Therefore: Therefore,
6530 Theta: Theta,
6531 theta: theta,
6532 thetasym: thetasym,
6533 thetav: thetav,
6534 thickapprox: thickapprox,
6535 thicksim: thicksim,
6536 ThickSpace: ThickSpace,
6537 ThinSpace: ThinSpace,
6538 thinsp: thinsp,
6539 thkap: thkap,
6540 thksim: thksim,
6541 THORN: THORN,
6542 thorn: thorn,
6543 tilde: tilde,
6544 Tilde: Tilde,
6545 TildeEqual: TildeEqual,
6546 TildeFullEqual: TildeFullEqual,
6547 TildeTilde: TildeTilde,
6548 timesbar: timesbar,
6549 timesb: timesb,
6550 times: times,
6551 timesd: timesd,
6552 tint: tint,
6553 toea: toea,
6554 topbot: topbot,
6555 topcir: topcir,
6556 top: top,
6557 Topf: Topf,
6558 topf: topf,
6559 topfork: topfork,
6560 tosa: tosa,
6561 tprime: tprime,
6562 trade: trade,
6563 TRADE: TRADE,
6564 triangle: triangle,
6565 triangledown: triangledown,
6566 triangleleft: triangleleft,
6567 trianglelefteq: trianglelefteq,
6568 triangleq: triangleq,
6569 triangleright: triangleright,
6570 trianglerighteq: trianglerighteq,
6571 tridot: tridot,
6572 trie: trie,
6573 triminus: triminus,
6574 TripleDot: TripleDot,
6575 triplus: triplus,
6576 trisb: trisb,
6577 tritime: tritime,
6578 trpezium: trpezium,
6579 Tscr: Tscr,
6580 tscr: tscr,
6581 TScy: TScy,
6582 tscy: tscy,
6583 TSHcy: TSHcy,
6584 tshcy: tshcy,
6585 Tstrok: Tstrok,
6586 tstrok: tstrok,
6587 twixt: twixt,
6588 twoheadleftarrow: twoheadleftarrow,
6589 twoheadrightarrow: twoheadrightarrow,
6590 Uacute: Uacute,
6591 uacute: uacute,
6592 uarr: uarr,
6593 Uarr: Uarr,
6594 uArr: uArr,
6595 Uarrocir: Uarrocir,
6596 Ubrcy: Ubrcy,
6597 ubrcy: ubrcy,
6598 Ubreve: Ubreve,
6599 ubreve: ubreve,
6600 Ucirc: Ucirc,
6601 ucirc: ucirc,
6602 Ucy: Ucy,
6603 ucy: ucy,
6604 udarr: udarr,
6605 Udblac: Udblac,
6606 udblac: udblac,
6607 udhar: udhar,
6608 ufisht: ufisht,
6609 Ufr: Ufr,
6610 ufr: ufr,
6611 Ugrave: Ugrave,
6612 ugrave: ugrave,
6613 uHar: uHar,
6614 uharl: uharl,
6615 uharr: uharr,
6616 uhblk: uhblk,
6617 ulcorn: ulcorn,
6618 ulcorner: ulcorner,
6619 ulcrop: ulcrop,
6620 ultri: ultri,
6621 Umacr: Umacr,
6622 umacr: umacr,
6623 uml: uml,
6624 UnderBar: UnderBar,
6625 UnderBrace: UnderBrace,
6626 UnderBracket: UnderBracket,
6627 UnderParenthesis: UnderParenthesis,
6628 Union: Union,
6629 UnionPlus: UnionPlus,
6630 Uogon: Uogon,
6631 uogon: uogon,
6632 Uopf: Uopf,
6633 uopf: uopf,
6634 UpArrowBar: UpArrowBar,
6635 uparrow: uparrow,
6636 UpArrow: UpArrow,
6637 Uparrow: Uparrow,
6638 UpArrowDownArrow: UpArrowDownArrow,
6639 updownarrow: updownarrow,
6640 UpDownArrow: UpDownArrow,
6641 Updownarrow: Updownarrow,
6642 UpEquilibrium: UpEquilibrium,
6643 upharpoonleft: upharpoonleft,
6644 upharpoonright: upharpoonright,
6645 uplus: uplus,
6646 UpperLeftArrow: UpperLeftArrow,
6647 UpperRightArrow: UpperRightArrow,
6648 upsi: upsi,
6649 Upsi: Upsi,
6650 upsih: upsih,
6651 Upsilon: Upsilon,
6652 upsilon: upsilon,
6653 UpTeeArrow: UpTeeArrow,
6654 UpTee: UpTee,
6655 upuparrows: upuparrows,
6656 urcorn: urcorn,
6657 urcorner: urcorner,
6658 urcrop: urcrop,
6659 Uring: Uring,
6660 uring: uring,
6661 urtri: urtri,
6662 Uscr: Uscr,
6663 uscr: uscr,
6664 utdot: utdot,
6665 Utilde: Utilde,
6666 utilde: utilde,
6667 utri: utri,
6668 utrif: utrif,
6669 uuarr: uuarr,
6670 Uuml: Uuml,
6671 uuml: uuml,
6672 uwangle: uwangle,
6673 vangrt: vangrt,
6674 varepsilon: varepsilon,
6675 varkappa: varkappa,
6676 varnothing: varnothing,
6677 varphi: varphi,
6678 varpi: varpi,
6679 varpropto: varpropto,
6680 varr: varr,
6681 vArr: vArr,
6682 varrho: varrho,
6683 varsigma: varsigma,
6684 varsubsetneq: varsubsetneq,
6685 varsubsetneqq: varsubsetneqq,
6686 varsupsetneq: varsupsetneq,
6687 varsupsetneqq: varsupsetneqq,
6688 vartheta: vartheta,
6689 vartriangleleft: vartriangleleft,
6690 vartriangleright: vartriangleright,
6691 vBar: vBar,
6692 Vbar: Vbar,
6693 vBarv: vBarv,
6694 Vcy: Vcy,
6695 vcy: vcy,
6696 vdash: vdash,
6697 vDash: vDash,
6698 Vdash: Vdash,
6699 VDash: VDash,
6700 Vdashl: Vdashl,
6701 veebar: veebar,
6702 vee: vee,
6703 Vee: Vee,
6704 veeeq: veeeq,
6705 vellip: vellip,
6706 verbar: verbar,
6707 Verbar: Verbar,
6708 vert: vert,
6709 Vert: Vert,
6710 VerticalBar: VerticalBar,
6711 VerticalLine: VerticalLine,
6712 VerticalSeparator: VerticalSeparator,
6713 VerticalTilde: VerticalTilde,
6714 VeryThinSpace: VeryThinSpace,
6715 Vfr: Vfr,
6716 vfr: vfr,
6717 vltri: vltri,
6718 vnsub: vnsub,
6719 vnsup: vnsup,
6720 Vopf: Vopf,
6721 vopf: vopf,
6722 vprop: vprop,
6723 vrtri: vrtri,
6724 Vscr: Vscr,
6725 vscr: vscr,
6726 vsubnE: vsubnE,
6727 vsubne: vsubne,
6728 vsupnE: vsupnE,
6729 vsupne: vsupne,
6730 Vvdash: Vvdash,
6731 vzigzag: vzigzag,
6732 Wcirc: Wcirc,
6733 wcirc: wcirc,
6734 wedbar: wedbar,
6735 wedge: wedge,
6736 Wedge: Wedge,
6737 wedgeq: wedgeq,
6738 weierp: weierp,
6739 Wfr: Wfr,
6740 wfr: wfr,
6741 Wopf: Wopf,
6742 wopf: wopf,
6743 wp: wp,
6744 wr: wr,
6745 wreath: wreath,
6746 Wscr: Wscr,
6747 wscr: wscr,
6748 xcap: xcap,
6749 xcirc: xcirc,
6750 xcup: xcup,
6751 xdtri: xdtri,
6752 Xfr: Xfr,
6753 xfr: xfr,
6754 xharr: xharr,
6755 xhArr: xhArr,
6756 Xi: Xi,
6757 xi: xi,
6758 xlarr: xlarr,
6759 xlArr: xlArr,
6760 xmap: xmap,
6761 xnis: xnis,
6762 xodot: xodot,
6763 Xopf: Xopf,
6764 xopf: xopf,
6765 xoplus: xoplus,
6766 xotime: xotime,
6767 xrarr: xrarr,
6768 xrArr: xrArr,
6769 Xscr: Xscr,
6770 xscr: xscr,
6771 xsqcup: xsqcup,
6772 xuplus: xuplus,
6773 xutri: xutri,
6774 xvee: xvee,
6775 xwedge: xwedge,
6776 Yacute: Yacute,
6777 yacute: yacute,
6778 YAcy: YAcy,
6779 yacy: yacy,
6780 Ycirc: Ycirc,
6781 ycirc: ycirc,
6782 Ycy: Ycy,
6783 ycy: ycy,
6784 yen: yen,
6785 Yfr: Yfr,
6786 yfr: yfr,
6787 YIcy: YIcy,
6788 yicy: yicy,
6789 Yopf: Yopf,
6790 yopf: yopf,
6791 Yscr: Yscr,
6792 yscr: yscr,
6793 YUcy: YUcy,
6794 yucy: yucy,
6795 yuml: yuml,
6796 Yuml: Yuml,
6797 Zacute: Zacute,
6798 zacute: zacute,
6799 Zcaron: Zcaron,
6800 zcaron: zcaron,
6801 Zcy: Zcy,
6802 zcy: zcy,
6803 Zdot: Zdot,
6804 zdot: zdot,
6805 zeetrf: zeetrf,
6806 ZeroWidthSpace: ZeroWidthSpace,
6807 Zeta: Zeta,
6808 zeta: zeta,
6809 zfr: zfr,
6810 Zfr: Zfr,
6811 ZHcy: ZHcy,
6812 zhcy: zhcy,
6813 zigrarr: zigrarr,
6814 zopf: zopf,
6815 Zopf: Zopf,
6816 Zscr: Zscr,
6817 zscr: zscr,
6818 zwj: zwj,
6819 zwnj: zwnj,
6820 'default': entities
6821 });
6822
6823 var Aacute$1 = "Á";
6824 var aacute$1 = "á";
6825 var Acirc$1 = "Â";
6826 var acirc$1 = "â";
6827 var acute$1 = "´";
6828 var AElig$1 = "Æ";
6829 var aelig$1 = "æ";
6830 var Agrave$1 = "À";
6831 var agrave$1 = "à";
6832 var amp$1 = "&";
6833 var AMP$1 = "&";
6834 var Aring$1 = "Å";
6835 var aring$1 = "å";
6836 var Atilde$1 = "Ã";
6837 var atilde$1 = "ã";
6838 var Auml$1 = "Ä";
6839 var auml$1 = "ä";
6840 var brvbar$1 = "¦";
6841 var Ccedil$1 = "Ç";
6842 var ccedil$1 = "ç";
6843 var cedil$1 = "¸";
6844 var cent$1 = "¢";
6845 var copy$1 = "©";
6846 var COPY$1 = "©";
6847 var curren$1 = "¤";
6848 var deg$1 = "°";
6849 var divide$1 = "÷";
6850 var Eacute$1 = "É";
6851 var eacute$1 = "é";
6852 var Ecirc$1 = "Ê";
6853 var ecirc$1 = "ê";
6854 var Egrave$1 = "È";
6855 var egrave$1 = "è";
6856 var ETH$1 = "Ð";
6857 var eth$1 = "ð";
6858 var Euml$1 = "Ë";
6859 var euml$1 = "ë";
6860 var frac12$1 = "½";
6861 var frac14$1 = "¼";
6862 var frac34$1 = "¾";
6863 var gt$1 = ">";
6864 var GT$1 = ">";
6865 var Iacute$1 = "Í";
6866 var iacute$1 = "í";
6867 var Icirc$1 = "Î";
6868 var icirc$1 = "î";
6869 var iexcl$1 = "¡";
6870 var Igrave$1 = "Ì";
6871 var igrave$1 = "ì";
6872 var iquest$1 = "¿";
6873 var Iuml$1 = "Ï";
6874 var iuml$1 = "ï";
6875 var laquo$1 = "«";
6876 var lt$1 = "<";
6877 var LT$1 = "<";
6878 var macr$1 = "¯";
6879 var micro$1 = "µ";
6880 var middot$1 = "·";
6881 var nbsp$1 = " ";
6882 var not$1 = "¬";
6883 var Ntilde$1 = "Ñ";
6884 var ntilde$1 = "ñ";
6885 var Oacute$1 = "Ó";
6886 var oacute$1 = "ó";
6887 var Ocirc$1 = "Ô";
6888 var ocirc$1 = "ô";
6889 var Ograve$1 = "Ò";
6890 var ograve$1 = "ò";
6891 var ordf$1 = "ª";
6892 var ordm$1 = "º";
6893 var Oslash$1 = "Ø";
6894 var oslash$1 = "ø";
6895 var Otilde$1 = "Õ";
6896 var otilde$1 = "õ";
6897 var Ouml$1 = "Ö";
6898 var ouml$1 = "ö";
6899 var para$1 = "¶";
6900 var plusmn$1 = "±";
6901 var pound$1 = "£";
6902 var quot$1 = "\"";
6903 var QUOT$1 = "\"";
6904 var raquo$1 = "»";
6905 var reg$1 = "®";
6906 var REG$1 = "®";
6907 var sect$1 = "§";
6908 var shy$1 = "­";
6909 var sup1$1 = "¹";
6910 var sup2$1 = "²";
6911 var sup3$1 = "³";
6912 var szlig$1 = "ß";
6913 var THORN$1 = "Þ";
6914 var thorn$1 = "þ";
6915 var times$1 = "×";
6916 var Uacute$1 = "Ú";
6917 var uacute$1 = "ú";
6918 var Ucirc$1 = "Û";
6919 var ucirc$1 = "û";
6920 var Ugrave$1 = "Ù";
6921 var ugrave$1 = "ù";
6922 var uml$1 = "¨";
6923 var Uuml$1 = "Ü";
6924 var uuml$1 = "ü";
6925 var Yacute$1 = "Ý";
6926 var yacute$1 = "ý";
6927 var yen$1 = "¥";
6928 var yuml$1 = "ÿ";
6929 var legacy = {
6930 Aacute: Aacute$1,
6931 aacute: aacute$1,
6932 Acirc: Acirc$1,
6933 acirc: acirc$1,
6934 acute: acute$1,
6935 AElig: AElig$1,
6936 aelig: aelig$1,
6937 Agrave: Agrave$1,
6938 agrave: agrave$1,
6939 amp: amp$1,
6940 AMP: AMP$1,
6941 Aring: Aring$1,
6942 aring: aring$1,
6943 Atilde: Atilde$1,
6944 atilde: atilde$1,
6945 Auml: Auml$1,
6946 auml: auml$1,
6947 brvbar: brvbar$1,
6948 Ccedil: Ccedil$1,
6949 ccedil: ccedil$1,
6950 cedil: cedil$1,
6951 cent: cent$1,
6952 copy: copy$1,
6953 COPY: COPY$1,
6954 curren: curren$1,
6955 deg: deg$1,
6956 divide: divide$1,
6957 Eacute: Eacute$1,
6958 eacute: eacute$1,
6959 Ecirc: Ecirc$1,
6960 ecirc: ecirc$1,
6961 Egrave: Egrave$1,
6962 egrave: egrave$1,
6963 ETH: ETH$1,
6964 eth: eth$1,
6965 Euml: Euml$1,
6966 euml: euml$1,
6967 frac12: frac12$1,
6968 frac14: frac14$1,
6969 frac34: frac34$1,
6970 gt: gt$1,
6971 GT: GT$1,
6972 Iacute: Iacute$1,
6973 iacute: iacute$1,
6974 Icirc: Icirc$1,
6975 icirc: icirc$1,
6976 iexcl: iexcl$1,
6977 Igrave: Igrave$1,
6978 igrave: igrave$1,
6979 iquest: iquest$1,
6980 Iuml: Iuml$1,
6981 iuml: iuml$1,
6982 laquo: laquo$1,
6983 lt: lt$1,
6984 LT: LT$1,
6985 macr: macr$1,
6986 micro: micro$1,
6987 middot: middot$1,
6988 nbsp: nbsp$1,
6989 not: not$1,
6990 Ntilde: Ntilde$1,
6991 ntilde: ntilde$1,
6992 Oacute: Oacute$1,
6993 oacute: oacute$1,
6994 Ocirc: Ocirc$1,
6995 ocirc: ocirc$1,
6996 Ograve: Ograve$1,
6997 ograve: ograve$1,
6998 ordf: ordf$1,
6999 ordm: ordm$1,
7000 Oslash: Oslash$1,
7001 oslash: oslash$1,
7002 Otilde: Otilde$1,
7003 otilde: otilde$1,
7004 Ouml: Ouml$1,
7005 ouml: ouml$1,
7006 para: para$1,
7007 plusmn: plusmn$1,
7008 pound: pound$1,
7009 quot: quot$1,
7010 QUOT: QUOT$1,
7011 raquo: raquo$1,
7012 reg: reg$1,
7013 REG: REG$1,
7014 sect: sect$1,
7015 shy: shy$1,
7016 sup1: sup1$1,
7017 sup2: sup2$1,
7018 sup3: sup3$1,
7019 szlig: szlig$1,
7020 THORN: THORN$1,
7021 thorn: thorn$1,
7022 times: times$1,
7023 Uacute: Uacute$1,
7024 uacute: uacute$1,
7025 Ucirc: Ucirc$1,
7026 ucirc: ucirc$1,
7027 Ugrave: Ugrave$1,
7028 ugrave: ugrave$1,
7029 uml: uml$1,
7030 Uuml: Uuml$1,
7031 uuml: uuml$1,
7032 Yacute: Yacute$1,
7033 yacute: yacute$1,
7034 yen: yen$1,
7035 yuml: yuml$1
7036 };
7037
7038 var legacy$1 = /*#__PURE__*/Object.freeze({
7039 __proto__: null,
7040 Aacute: Aacute$1,
7041 aacute: aacute$1,
7042 Acirc: Acirc$1,
7043 acirc: acirc$1,
7044 acute: acute$1,
7045 AElig: AElig$1,
7046 aelig: aelig$1,
7047 Agrave: Agrave$1,
7048 agrave: agrave$1,
7049 amp: amp$1,
7050 AMP: AMP$1,
7051 Aring: Aring$1,
7052 aring: aring$1,
7053 Atilde: Atilde$1,
7054 atilde: atilde$1,
7055 Auml: Auml$1,
7056 auml: auml$1,
7057 brvbar: brvbar$1,
7058 Ccedil: Ccedil$1,
7059 ccedil: ccedil$1,
7060 cedil: cedil$1,
7061 cent: cent$1,
7062 copy: copy$1,
7063 COPY: COPY$1,
7064 curren: curren$1,
7065 deg: deg$1,
7066 divide: divide$1,
7067 Eacute: Eacute$1,
7068 eacute: eacute$1,
7069 Ecirc: Ecirc$1,
7070 ecirc: ecirc$1,
7071 Egrave: Egrave$1,
7072 egrave: egrave$1,
7073 ETH: ETH$1,
7074 eth: eth$1,
7075 Euml: Euml$1,
7076 euml: euml$1,
7077 frac12: frac12$1,
7078 frac14: frac14$1,
7079 frac34: frac34$1,
7080 gt: gt$1,
7081 GT: GT$1,
7082 Iacute: Iacute$1,
7083 iacute: iacute$1,
7084 Icirc: Icirc$1,
7085 icirc: icirc$1,
7086 iexcl: iexcl$1,
7087 Igrave: Igrave$1,
7088 igrave: igrave$1,
7089 iquest: iquest$1,
7090 Iuml: Iuml$1,
7091 iuml: iuml$1,
7092 laquo: laquo$1,
7093 lt: lt$1,
7094 LT: LT$1,
7095 macr: macr$1,
7096 micro: micro$1,
7097 middot: middot$1,
7098 nbsp: nbsp$1,
7099 not: not$1,
7100 Ntilde: Ntilde$1,
7101 ntilde: ntilde$1,
7102 Oacute: Oacute$1,
7103 oacute: oacute$1,
7104 Ocirc: Ocirc$1,
7105 ocirc: ocirc$1,
7106 Ograve: Ograve$1,
7107 ograve: ograve$1,
7108 ordf: ordf$1,
7109 ordm: ordm$1,
7110 Oslash: Oslash$1,
7111 oslash: oslash$1,
7112 Otilde: Otilde$1,
7113 otilde: otilde$1,
7114 Ouml: Ouml$1,
7115 ouml: ouml$1,
7116 para: para$1,
7117 plusmn: plusmn$1,
7118 pound: pound$1,
7119 quot: quot$1,
7120 QUOT: QUOT$1,
7121 raquo: raquo$1,
7122 reg: reg$1,
7123 REG: REG$1,
7124 sect: sect$1,
7125 shy: shy$1,
7126 sup1: sup1$1,
7127 sup2: sup2$1,
7128 sup3: sup3$1,
7129 szlig: szlig$1,
7130 THORN: THORN$1,
7131 thorn: thorn$1,
7132 times: times$1,
7133 Uacute: Uacute$1,
7134 uacute: uacute$1,
7135 Ucirc: Ucirc$1,
7136 ucirc: ucirc$1,
7137 Ugrave: Ugrave$1,
7138 ugrave: ugrave$1,
7139 uml: uml$1,
7140 Uuml: Uuml$1,
7141 uuml: uuml$1,
7142 Yacute: Yacute$1,
7143 yacute: yacute$1,
7144 yen: yen$1,
7145 yuml: yuml$1,
7146 'default': legacy
7147 });
7148
7149 var amp$2 = "&";
7150 var apos$1 = "'";
7151 var gt$2 = ">";
7152 var lt$2 = "<";
7153 var quot$2 = "\"";
7154 var xml = {
7155 amp: amp$2,
7156 apos: apos$1,
7157 gt: gt$2,
7158 lt: lt$2,
7159 quot: quot$2
7160 };
7161
7162 var xml$1 = /*#__PURE__*/Object.freeze({
7163 __proto__: null,
7164 amp: amp$2,
7165 apos: apos$1,
7166 gt: gt$2,
7167 lt: lt$2,
7168 quot: quot$2,
7169 'default': xml
7170 });
7171
7172 var decode = {
7173 "0": 65533,
7174 "128": 8364,
7175 "130": 8218,
7176 "131": 402,
7177 "132": 8222,
7178 "133": 8230,
7179 "134": 8224,
7180 "135": 8225,
7181 "136": 710,
7182 "137": 8240,
7183 "138": 352,
7184 "139": 8249,
7185 "140": 338,
7186 "142": 381,
7187 "145": 8216,
7188 "146": 8217,
7189 "147": 8220,
7190 "148": 8221,
7191 "149": 8226,
7192 "150": 8211,
7193 "151": 8212,
7194 "152": 732,
7195 "153": 8482,
7196 "154": 353,
7197 "155": 8250,
7198 "156": 339,
7199 "158": 382,
7200 "159": 376
7201 };
7202
7203 var decode$1 = /*#__PURE__*/Object.freeze({
7204 __proto__: null,
7205 'default': decode
7206 });
7207
7208 var require$$0 = getCjsExportFromNamespace(decode$1);
7209
7210 var decode_codepoint = createCommonjsModule(function (module, exports) {
7211 var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
7212 return (mod && mod.__esModule) ? mod : { "default": mod };
7213 };
7214 Object.defineProperty(exports, "__esModule", { value: true });
7215 var decode_json_1 = __importDefault(require$$0);
7216 // modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
7217 function decodeCodePoint(codePoint) {
7218 if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
7219 return "\uFFFD";
7220 }
7221 if (codePoint in decode_json_1.default) {
7222 codePoint = decode_json_1.default[codePoint];
7223 }
7224 var output = "";
7225 if (codePoint > 0xffff) {
7226 codePoint -= 0x10000;
7227 output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
7228 codePoint = 0xdc00 | (codePoint & 0x3ff);
7229 }
7230 output += String.fromCharCode(codePoint);
7231 return output;
7232 }
7233 exports.default = decodeCodePoint;
7234 });
7235
7236 unwrapExports(decode_codepoint);
7237
7238 var require$$1 = getCjsExportFromNamespace(entities$1);
7239
7240 var require$$1$1 = getCjsExportFromNamespace(legacy$1);
7241
7242 var require$$0$1 = getCjsExportFromNamespace(xml$1);
7243
7244 var decode$2 = createCommonjsModule(function (module, exports) {
7245 var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
7246 return (mod && mod.__esModule) ? mod : { "default": mod };
7247 };
7248 Object.defineProperty(exports, "__esModule", { value: true });
7249 exports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;
7250 var entities_json_1 = __importDefault(require$$1);
7251 var legacy_json_1 = __importDefault(require$$1$1);
7252 var xml_json_1 = __importDefault(require$$0$1);
7253 var decode_codepoint_1 = __importDefault(decode_codepoint);
7254 exports.decodeXML = getStrictDecoder(xml_json_1.default);
7255 exports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);
7256 function getStrictDecoder(map) {
7257 var keys = Object.keys(map).join("|");
7258 var replace = getReplacer(map);
7259 keys += "|#[xX][\\da-fA-F]+|#\\d+";
7260 var re = new RegExp("&(?:" + keys + ");", "g");
7261 return function (str) { return String(str).replace(re, replace); };
7262 }
7263 var sorter = function (a, b) { return (a < b ? 1 : -1); };
7264 exports.decodeHTML = (function () {
7265 var legacy = Object.keys(legacy_json_1.default).sort(sorter);
7266 var keys = Object.keys(entities_json_1.default).sort(sorter);
7267 for (var i = 0, j = 0; i < keys.length; i++) {
7268 if (legacy[j] === keys[i]) {
7269 keys[i] += ";?";
7270 j++;
7271 }
7272 else {
7273 keys[i] += ";";
7274 }
7275 }
7276 var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g");
7277 var replace = getReplacer(entities_json_1.default);
7278 function replacer(str) {
7279 if (str.substr(-1) !== ";")
7280 str += ";";
7281 return replace(str);
7282 }
7283 //TODO consider creating a merged map
7284 return function (str) { return String(str).replace(re, replacer); };
7285 })();
7286 function getReplacer(map) {
7287 return function replace(str) {
7288 if (str.charAt(1) === "#") {
7289 var secondChar = str.charAt(2);
7290 if (secondChar === "X" || secondChar === "x") {
7291 return decode_codepoint_1.default(parseInt(str.substr(3), 16));
7292 }
7293 return decode_codepoint_1.default(parseInt(str.substr(2), 10));
7294 }
7295 return map[str.slice(1, -1)];
7296 };
7297 }
7298 });
7299
7300 unwrapExports(decode$2);
7301 var decode_1 = decode$2.decodeHTML;
7302 var decode_2 = decode$2.decodeHTMLStrict;
7303 var decode_3 = decode$2.decodeXML;
7304
7305 var encode$1 = createCommonjsModule(function (module, exports) {
7306 var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
7307 return (mod && mod.__esModule) ? mod : { "default": mod };
7308 };
7309 Object.defineProperty(exports, "__esModule", { value: true });
7310 exports.escape = exports.encodeHTML = exports.encodeXML = void 0;
7311 var xml_json_1 = __importDefault(require$$0$1);
7312 var inverseXML = getInverseObj(xml_json_1.default);
7313 var xmlReplacer = getInverseReplacer(inverseXML);
7314 exports.encodeXML = getInverse(inverseXML, xmlReplacer);
7315 var entities_json_1 = __importDefault(require$$1);
7316 var inverseHTML = getInverseObj(entities_json_1.default);
7317 var htmlReplacer = getInverseReplacer(inverseHTML);
7318 exports.encodeHTML = getInverse(inverseHTML, htmlReplacer);
7319 function getInverseObj(obj) {
7320 return Object.keys(obj)
7321 .sort()
7322 .reduce(function (inverse, name) {
7323 inverse[obj[name]] = "&" + name + ";";
7324 return inverse;
7325 }, {});
7326 }
7327 function getInverseReplacer(inverse) {
7328 var single = [];
7329 var multiple = [];
7330 for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {
7331 var k = _a[_i];
7332 if (k.length === 1) {
7333 // Add value to single array
7334 single.push("\\" + k);
7335 }
7336 else {
7337 // Add value to multiple array
7338 multiple.push(k);
7339 }
7340 }
7341 // Add ranges to single characters.
7342 single.sort();
7343 for (var start = 0; start < single.length - 1; start++) {
7344 // Find the end of a run of characters
7345 var end = start;
7346 while (end < single.length - 1 &&
7347 single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {
7348 end += 1;
7349 }
7350 var count = 1 + end - start;
7351 // We want to replace at least three characters
7352 if (count < 3)
7353 continue;
7354 single.splice(start, count, single[start] + "-" + single[end]);
7355 }
7356 multiple.unshift("[" + single.join("") + "]");
7357 return new RegExp(multiple.join("|"), "g");
7358 }
7359 var reNonASCII = /(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g;
7360 function singleCharReplacer(c) {
7361 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
7362 return "&#x" + c.codePointAt(0).toString(16).toUpperCase() + ";";
7363 }
7364 function getInverse(inverse, re) {
7365 return function (data) {
7366 return data
7367 .replace(re, function (name) { return inverse[name]; })
7368 .replace(reNonASCII, singleCharReplacer);
7369 };
7370 }
7371 var reXmlChars = getInverseReplacer(inverseXML);
7372 function escape(data) {
7373 return data
7374 .replace(reXmlChars, singleCharReplacer)
7375 .replace(reNonASCII, singleCharReplacer);
7376 }
7377 exports.escape = escape;
7378 });
7379
7380 unwrapExports(encode$1);
7381 var encode_1$1 = encode$1.escape;
7382 var encode_2 = encode$1.encodeHTML;
7383 var encode_3 = encode$1.encodeXML;
7384
7385 var lib = createCommonjsModule(function (module, exports) {
7386 Object.defineProperty(exports, "__esModule", { value: true });
7387 exports.encode = exports.decodeStrict = exports.decode = void 0;
7388
7389
7390 /**
7391 * Decodes a string with entities.
7392 *
7393 * @param data String to decode.
7394 * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.
7395 */
7396 function decode(data, level) {
7397 return (!level || level <= 0 ? decode$2.decodeXML : decode$2.decodeHTML)(data);
7398 }
7399 exports.decode = decode;
7400 /**
7401 * Decodes a string with entities. Does not allow missing trailing semicolons for entities.
7402 *
7403 * @param data String to decode.
7404 * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.
7405 */
7406 function decodeStrict(data, level) {
7407 return (!level || level <= 0 ? decode$2.decodeXML : decode$2.decodeHTMLStrict)(data);
7408 }
7409 exports.decodeStrict = decodeStrict;
7410 /**
7411 * Encodes a string with entities.
7412 *
7413 * @param data String to encode.
7414 * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.
7415 */
7416 function encode(data, level) {
7417 return (!level || level <= 0 ? encode$1.encodeXML : encode$1.encodeHTML)(data);
7418 }
7419 exports.encode = encode;
7420 var encode_2 = encode$1;
7421 Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function () { return encode_2.encodeXML; } });
7422 Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
7423 Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return encode_2.escape; } });
7424 // Legacy aliases
7425 Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
7426 Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
7427 var decode_2 = decode$2;
7428 Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function () { return decode_2.decodeXML; } });
7429 Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
7430 Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
7431 // Legacy aliases
7432 Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
7433 Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
7434 Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
7435 Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
7436 Object.defineProperty(exports, "decodeXMLStrict", { enumerable: true, get: function () { return decode_2.decodeXML; } });
7437 });
7438
7439 unwrapExports(lib);
7440 var lib_1 = lib.encode;
7441 var lib_2 = lib.decodeStrict;
7442 var lib_3 = lib.decode;
7443 var lib_4 = lib.encodeXML;
7444 var lib_5 = lib.encodeHTML;
7445 var lib_6 = lib.encodeHTML4;
7446 var lib_7 = lib.encodeHTML5;
7447 var lib_8 = lib.decodeXML;
7448 var lib_9 = lib.decodeHTML;
7449 var lib_10 = lib.decodeHTMLStrict;
7450 var lib_11 = lib.decodeHTML4;
7451 var lib_12 = lib.decodeHTML5;
7452 var lib_13 = lib.decodeHTML4Strict;
7453 var lib_14 = lib.decodeHTML5Strict;
7454 var lib_15 = lib.decodeXMLStrict;
7455
7456 var C_BACKSLASH = 92;
7457
7458 var ENTITY = "&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});";
7459
7460 var TAGNAME = "[A-Za-z][A-Za-z0-9-]*";
7461 var ATTRIBUTENAME = "[a-zA-Z_:][a-zA-Z0-9:._-]*";
7462 var UNQUOTEDVALUE = "[^\"'=<>`\\x00-\\x20]+";
7463 var SINGLEQUOTEDVALUE = "'[^']*'";
7464 var DOUBLEQUOTEDVALUE = '"[^"]*"';
7465 var ATTRIBUTEVALUE =
7466 "(?:" +
7467 UNQUOTEDVALUE +
7468 "|" +
7469 SINGLEQUOTEDVALUE +
7470 "|" +
7471 DOUBLEQUOTEDVALUE +
7472 ")";
7473 var ATTRIBUTEVALUESPEC = "(?:" + "\\s*=" + "\\s*" + ATTRIBUTEVALUE + ")";
7474 var ATTRIBUTE = "(?:" + "\\s+" + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + "?)";
7475 var OPENTAG = "<" + TAGNAME + ATTRIBUTE + "*" + "\\s*/?>";
7476 var CLOSETAG = "</" + TAGNAME + "\\s*[>]";
7477 var HTMLCOMMENT = "<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->";
7478 var PROCESSINGINSTRUCTION = "[<][?][\\s\\S]*?[?][>]";
7479 var DECLARATION = "<![A-Z]+" + "\\s+[^>]*>";
7480 var CDATA = "<!\\[CDATA\\[[\\s\\S]*?\\]\\]>";
7481 var HTMLTAG =
7482 "(?:" +
7483 OPENTAG +
7484 "|" +
7485 CLOSETAG +
7486 "|" +
7487 HTMLCOMMENT +
7488 "|" +
7489 PROCESSINGINSTRUCTION +
7490 "|" +
7491 DECLARATION +
7492 "|" +
7493 CDATA +
7494 ")";
7495 var reHtmlTag = new RegExp("^" + HTMLTAG);
7496
7497 var reBackslashOrAmp = /[\\&]/;
7498
7499 var ESCAPABLE = "[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]";
7500
7501 var reEntityOrEscapedChar = new RegExp("\\\\" + ESCAPABLE + "|" + ENTITY, "gi");
7502
7503 var XMLSPECIAL = '[&<>"]';
7504
7505 var reXmlSpecial = new RegExp(XMLSPECIAL, "g");
7506
7507 var unescapeChar = function(s) {
7508 if (s.charCodeAt(0) === C_BACKSLASH) {
7509 return s.charAt(1);
7510 } else {
7511 return lib_9(s);
7512 }
7513 };
7514
7515 // Replace entities and backslash escapes with literal characters.
7516 var unescapeString = function(s) {
7517 if (reBackslashOrAmp.test(s)) {
7518 return s.replace(reEntityOrEscapedChar, unescapeChar);
7519 } else {
7520 return s;
7521 }
7522 };
7523
7524 var normalizeURI = function(uri) {
7525 try {
7526 return encode_1(uri);
7527 } catch (err) {
7528 return uri;
7529 }
7530 };
7531
7532 var replaceUnsafeChar = function(s) {
7533 switch (s) {
7534 case "&":
7535 return "&amp;";
7536 case "<":
7537 return "&lt;";
7538 case ">":
7539 return "&gt;";
7540 case '"':
7541 return "&quot;";
7542 default:
7543 return s;
7544 }
7545 };
7546
7547 var escapeXml = function(s) {
7548 if (reXmlSpecial.test(s)) {
7549 return s.replace(reXmlSpecial, replaceUnsafeChar);
7550 } else {
7551 return s;
7552 }
7553 };
7554
7555 // derived from https://github.com/mathiasbynens/String.fromCodePoint
7556 /*! http://mths.be/fromcodepoint v0.2.1 by @mathias */
7557
7558 var _fromCodePoint;
7559
7560 function fromCodePoint(_) {
7561 return _fromCodePoint(_);
7562 }
7563
7564 if (String.fromCodePoint) {
7565 _fromCodePoint = function(_) {
7566 try {
7567 return String.fromCodePoint(_);
7568 } catch (e) {
7569 if (e instanceof RangeError) {
7570 return String.fromCharCode(0xfffd);
7571 }
7572 throw e;
7573 }
7574 };
7575 } else {
7576 var stringFromCharCode = String.fromCharCode;
7577 var floor = Math.floor;
7578 _fromCodePoint = function() {
7579 var MAX_SIZE = 0x4000;
7580 var codeUnits = [];
7581 var highSurrogate;
7582 var lowSurrogate;
7583 var index = -1;
7584 var length = arguments.length;
7585 if (!length) {
7586 return "";
7587 }
7588 var result = "";
7589 while (++index < length) {
7590 var codePoint = Number(arguments[index]);
7591 if (
7592 !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
7593 codePoint < 0 || // not a valid Unicode code point
7594 codePoint > 0x10ffff || // not a valid Unicode code point
7595 floor(codePoint) !== codePoint // not an integer
7596 ) {
7597 return String.fromCharCode(0xfffd);
7598 }
7599 if (codePoint <= 0xffff) {
7600 // BMP code point
7601 codeUnits.push(codePoint);
7602 } else {
7603 // Astral code point; split in surrogate halves
7604 // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
7605 codePoint -= 0x10000;
7606 highSurrogate = (codePoint >> 10) + 0xd800;
7607 lowSurrogate = (codePoint % 0x400) + 0xdc00;
7608 codeUnits.push(highSurrogate, lowSurrogate);
7609 }
7610 if (index + 1 === length || codeUnits.length > MAX_SIZE) {
7611 result += stringFromCharCode.apply(null, codeUnits);
7612 codeUnits.length = 0;
7613 }
7614 }
7615 return result;
7616 };
7617 }
7618
7619 /*! http://mths.be/repeat v0.2.0 by @mathias */
7620 if (!String.prototype.repeat) {
7621 (function() {
7622 var defineProperty = (function() {
7623 // IE 8 only supports `Object.defineProperty` on DOM elements
7624 try {
7625 var object = {};
7626 var $defineProperty = Object.defineProperty;
7627 var result = $defineProperty(object, object, object) && $defineProperty;
7628 } catch(error) {}
7629 return result;
7630 }());
7631 var repeat = function(count) {
7632 if (this == null) {
7633 throw TypeError();
7634 }
7635 var string = String(this);
7636 // `ToInteger`
7637 var n = count ? Number(count) : 0;
7638 if (n != n) { // better `isNaN`
7639 n = 0;
7640 }
7641 // Account for out-of-bounds indices
7642 if (n < 0 || n == Infinity) {
7643 throw RangeError();
7644 }
7645 var result = '';
7646 while (n) {
7647 if (n % 2 == 1) {
7648 result += string;
7649 }
7650 if (n > 1) {
7651 string += string;
7652 }
7653 n >>= 1;
7654 }
7655 return result;
7656 };
7657 if (defineProperty) {
7658 defineProperty(String.prototype, 'repeat', {
7659 'value': repeat,
7660 'configurable': true,
7661 'writable': true
7662 });
7663 } else {
7664 String.prototype.repeat = repeat;
7665 }
7666 }());
7667 }
7668
7669 var normalizeURI$1 = normalizeURI;
7670 var unescapeString$1 = unescapeString;
7671
7672 // Constants for character codes:
7673
7674 var C_NEWLINE = 10;
7675 var C_ASTERISK = 42;
7676 var C_UNDERSCORE = 95;
7677 var C_BACKTICK = 96;
7678 var C_OPEN_BRACKET = 91;
7679 var C_CLOSE_BRACKET = 93;
7680 var C_LESSTHAN = 60;
7681 var C_BANG = 33;
7682 var C_BACKSLASH$1 = 92;
7683 var C_AMPERSAND = 38;
7684 var C_OPEN_PAREN = 40;
7685 var C_CLOSE_PAREN = 41;
7686 var C_COLON = 58;
7687 var C_SINGLEQUOTE = 39;
7688 var C_DOUBLEQUOTE = 34;
7689
7690 // Some regexps used in inline parser:
7691
7692 var ESCAPABLE$1 = ESCAPABLE;
7693 var ESCAPED_CHAR = "\\\\" + ESCAPABLE$1;
7694
7695 var ENTITY$1 = ENTITY;
7696 var reHtmlTag$1 = reHtmlTag;
7697
7698 var rePunctuation = new RegExp(
7699 /^[!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/
7700 );
7701
7702 var reLinkTitle = new RegExp(
7703 '^(?:"(' +
7704 ESCAPED_CHAR +
7705 '|[^"\\x00])*"' +
7706 "|" +
7707 "'(" +
7708 ESCAPED_CHAR +
7709 "|[^'\\x00])*'" +
7710 "|" +
7711 "\\((" +
7712 ESCAPED_CHAR +
7713 "|[^()\\x00])*\\))"
7714 );
7715
7716 var reLinkDestinationBraces = /^(?:<(?:[^<>\n\\\x00]|\\.)*>)/;
7717
7718 var reEscapable = new RegExp("^" + ESCAPABLE$1);
7719
7720 var reEntityHere = new RegExp("^" + ENTITY$1, "i");
7721
7722 var reTicks = /`+/;
7723
7724 var reTicksHere = /^`+/;
7725
7726 var reEllipses = /\.\.\./g;
7727
7728 var reDash = /--+/g;
7729
7730 var reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;
7731
7732 var reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/i;
7733
7734 var reSpnl = /^ *(?:\n *)?/;
7735
7736 var reWhitespaceChar = /^[ \t\n\x0b\x0c\x0d]/;
7737
7738 var reUnicodeWhitespaceChar = /^\s/;
7739
7740 var reFinalSpace = / *$/;
7741
7742 var reInitialSpace = /^ */;
7743
7744 var reSpaceAtEndOfLine = /^ *(?:\n|$)/;
7745
7746 var reLinkLabel = /^\[(?:[^\\\[\]]|\\.){0,1000}\]/s;
7747
7748 // Matches a string of non-special characters.
7749 var reMain = /^[^\n`\[\]\\!<&*_'"]+/m;
7750
7751 var text = function(s) {
7752 var node = new Node("text");
7753 node._literal = s;
7754 return node;
7755 };
7756
7757 // normalize a reference in reference link (remove []s, trim,
7758 // collapse internal space, unicode case fold.
7759 // See commonmark/commonmark.js#168.
7760 var normalizeReference = function(string) {
7761 return string
7762 .slice(1, string.length - 1)
7763 .trim()
7764 .replace(/[ \t\r\n]+/, " ")
7765 .toLowerCase()
7766 .toUpperCase();
7767 };
7768
7769 // INLINE PARSER
7770
7771 // These are methods of an InlineParser object, defined below.
7772 // An InlineParser keeps track of a subject (a string to be
7773 // parsed) and a position in that subject.
7774
7775 // If re matches at current position in the subject, advance
7776 // position in subject and return the match; otherwise return null.
7777 var match = function(re) {
7778 var m = re.exec(this.subject.slice(this.pos));
7779 if (m === null) {
7780 return null;
7781 } else {
7782 this.pos += m.index + m[0].length;
7783 return m[0];
7784 }
7785 };
7786
7787 // Returns the code for the character at the current subject position, or -1
7788 // there are no more characters.
7789 var peek = function() {
7790 if (this.pos < this.subject.length) {
7791 return this.subject.charCodeAt(this.pos);
7792 } else {
7793 return -1;
7794 }
7795 };
7796
7797 // Parse zero or more space characters, including at most one newline
7798 var spnl = function() {
7799 this.match(reSpnl);
7800 return true;
7801 };
7802
7803 // All of the parsers below try to match something at the current position
7804 // in the subject. If they succeed in matching anything, they
7805 // return the inline matched, advancing the subject.
7806
7807 // Attempt to parse backticks, adding either a backtick code span or a
7808 // literal sequence of backticks.
7809 var parseBackticks = function(block) {
7810 var ticks = this.match(reTicksHere);
7811 if (ticks === null) {
7812 return false;
7813 }
7814 var afterOpenTicks = this.pos;
7815 var matched;
7816 var node;
7817 var contents;
7818 while ((matched = this.match(reTicks)) !== null) {
7819 if (matched === ticks) {
7820 node = new Node("code");
7821 contents = this.subject
7822 .slice(afterOpenTicks, this.pos - ticks.length)
7823 .replace(/\n/gm, " ");
7824 if (
7825 contents.length > 0 &&
7826 contents.match(/[^ ]/) !== null &&
7827 contents[0] == " " &&
7828 contents[contents.length - 1] == " "
7829 ) {
7830 node._literal = contents.slice(1, contents.length - 1);
7831 } else {
7832 node._literal = contents;
7833 }
7834 const doc = this.options.autoDoc;
7835 if (doc) {
7836 const decl_hash = doc.detectDeclPath(contents);
7837 if (decl_hash) {
7838 var l = new Node("link");
7839 l.destination = decl_hash;
7840 l.appendChild(node);
7841 node = l;
7842 }
7843 }
7844 block.appendChild(node);
7845 return true;
7846 }
7847 }
7848 // If we got here, we didn't match a closing backtick sequence.
7849 this.pos = afterOpenTicks;
7850 block.appendChild(text(ticks));
7851 return true;
7852 };
7853
7854 // Parse a backslash-escaped special character, adding either the escaped
7855 // character, a hard line break (if the backslash is followed by a newline),
7856 // or a literal backslash to the block's children. Assumes current character
7857 // is a backslash.
7858 var parseBackslash = function(block) {
7859 var subj = this.subject;
7860 var node;
7861 this.pos += 1;
7862 if (this.peek() === C_NEWLINE) {
7863 this.pos += 1;
7864 node = new Node("linebreak");
7865 block.appendChild(node);
7866 } else if (reEscapable.test(subj.charAt(this.pos))) {
7867 block.appendChild(text(subj.charAt(this.pos)));
7868 this.pos += 1;
7869 } else {
7870 block.appendChild(text("\\"));
7871 }
7872 return true;
7873 };
7874
7875 // Attempt to parse an autolink (URL or email in pointy brackets).
7876 var parseAutolink = function(block) {
7877 var m;
7878 var dest;
7879 var node;
7880 if ((m = this.match(reEmailAutolink))) {
7881 dest = m.slice(1, m.length - 1);
7882 node = new Node("link");
7883 node._destination = normalizeURI$1("mailto:" + dest);
7884 node._title = "";
7885 node.appendChild(text(dest));
7886 block.appendChild(node);
7887 return true;
7888 } else if ((m = this.match(reAutolink))) {
7889 dest = m.slice(1, m.length - 1);
7890 node = new Node("link");
7891 node._destination = normalizeURI$1(dest);
7892 node._title = "";
7893 node.appendChild(text(dest));
7894 block.appendChild(node);
7895 return true;
7896 } else {
7897 return false;
7898 }
7899 };
7900
7901 // Attempt to parse a raw HTML tag.
7902 var parseHtmlTag = function(block) {
7903 var m = this.match(reHtmlTag$1);
7904 if (m === null) {
7905 return false;
7906 } else {
7907 var node = new Node("html_inline");
7908 node._literal = m;
7909 block.appendChild(node);
7910 return true;
7911 }
7912 };
7913
7914 // Scan a sequence of characters with code cc, and return information about
7915 // the number of delimiters and whether they are positioned such that
7916 // they can open and/or close emphasis or strong emphasis. A utility
7917 // function for strong/emph parsing.
7918 var scanDelims = function(cc) {
7919 var numdelims = 0;
7920 var char_before, char_after, cc_after;
7921 var startpos = this.pos;
7922 var left_flanking, right_flanking, can_open, can_close;
7923 var after_is_whitespace,
7924 after_is_punctuation,
7925 before_is_whitespace,
7926 before_is_punctuation;
7927
7928 if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {
7929 numdelims++;
7930 this.pos++;
7931 } else {
7932 while (this.peek() === cc) {
7933 numdelims++;
7934 this.pos++;
7935 }
7936 }
7937
7938 if (numdelims === 0) {
7939 return null;
7940 }
7941
7942 char_before = startpos === 0 ? "\n" : this.subject.charAt(startpos - 1);
7943
7944 cc_after = this.peek();
7945 if (cc_after === -1) {
7946 char_after = "\n";
7947 } else {
7948 char_after = fromCodePoint(cc_after);
7949 }
7950
7951 after_is_whitespace = reUnicodeWhitespaceChar.test(char_after);
7952 after_is_punctuation = rePunctuation.test(char_after);
7953 before_is_whitespace = reUnicodeWhitespaceChar.test(char_before);
7954 before_is_punctuation = rePunctuation.test(char_before);
7955
7956 left_flanking =
7957 !after_is_whitespace &&
7958 (!after_is_punctuation ||
7959 before_is_whitespace ||
7960 before_is_punctuation);
7961 right_flanking =
7962 !before_is_whitespace &&
7963 (!before_is_punctuation || after_is_whitespace || after_is_punctuation);
7964 if (cc === C_UNDERSCORE) {
7965 can_open = left_flanking && (!right_flanking || before_is_punctuation);
7966 can_close = right_flanking && (!left_flanking || after_is_punctuation);
7967 } else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {
7968 can_open = left_flanking && !right_flanking;
7969 can_close = right_flanking;
7970 } else {
7971 can_open = left_flanking;
7972 can_close = right_flanking;
7973 }
7974 this.pos = startpos;
7975 return { numdelims: numdelims, can_open: can_open, can_close: can_close };
7976 };
7977
7978 // Handle a delimiter marker for emphasis or a quote.
7979 var handleDelim = function(cc, block) {
7980 var res = this.scanDelims(cc);
7981 if (!res) {
7982 return false;
7983 }
7984 var numdelims = res.numdelims;
7985 var startpos = this.pos;
7986 var contents;
7987
7988 this.pos += numdelims;
7989 if (cc === C_SINGLEQUOTE) {
7990 contents = "\u2019";
7991 } else if (cc === C_DOUBLEQUOTE) {
7992 contents = "\u201C";
7993 } else {
7994 contents = this.subject.slice(startpos, this.pos);
7995 }
7996 var node = text(contents);
7997 block.appendChild(node);
7998
7999 // Add entry to stack for this opener
8000 if (
8001 (res.can_open || res.can_close) &&
8002 (this.options.smart || (cc !== C_SINGLEQUOTE && cc !== C_DOUBLEQUOTE))
8003 ) {
8004 this.delimiters = {
8005 cc: cc,
8006 numdelims: numdelims,
8007 origdelims: numdelims,
8008 node: node,
8009 previous: this.delimiters,
8010 next: null,
8011 can_open: res.can_open,
8012 can_close: res.can_close
8013 };
8014 if (this.delimiters.previous !== null) {
8015 this.delimiters.previous.next = this.delimiters;
8016 }
8017 }
8018
8019 return true;
8020 };
8021
8022 var removeDelimiter = function(delim) {
8023 if (delim.previous !== null) {
8024 delim.previous.next = delim.next;
8025 }
8026 if (delim.next === null) {
8027 // top of stack
8028 this.delimiters = delim.previous;
8029 } else {
8030 delim.next.previous = delim.previous;
8031 }
8032 };
8033
8034 var removeDelimitersBetween = function(bottom, top) {
8035 if (bottom.next !== top) {
8036 bottom.next = top;
8037 top.previous = bottom;
8038 }
8039 };
8040
8041 var processEmphasis = function(stack_bottom) {
8042 var opener, closer, old_closer;
8043 var opener_inl, closer_inl;
8044 var tempstack;
8045 var use_delims;
8046 var tmp, next;
8047 var opener_found;
8048 var openers_bottom = [];
8049 var openers_bottom_index;
8050 var odd_match = false;
8051
8052 for (var i = 0; i < 8; i++) {
8053 openers_bottom[i] = stack_bottom;
8054 }
8055 // find first closer above stack_bottom:
8056 closer = this.delimiters;
8057 while (closer !== null && closer.previous !== stack_bottom) {
8058 closer = closer.previous;
8059 }
8060 // move forward, looking for closers, and handling each
8061 while (closer !== null) {
8062 var closercc = closer.cc;
8063 if (!closer.can_close) {
8064 closer = closer.next;
8065 } else {
8066 // found emphasis closer. now look back for first matching opener:
8067 opener = closer.previous;
8068 opener_found = false;
8069 switch (closercc) {
8070 case C_SINGLEQUOTE:
8071 openers_bottom_index = 0;
8072 break;
8073 case C_DOUBLEQUOTE:
8074 openers_bottom_index = 1;
8075 break;
8076 case C_UNDERSCORE:
8077 openers_bottom_index = 2;
8078 break;
8079 case C_ASTERISK:
8080 openers_bottom_index = 3 + (closer.can_open ? 3 : 0)
8081 + (closer.origdelims % 3);
8082 break;
8083 }
8084 while (
8085 opener !== null &&
8086 opener !== stack_bottom &&
8087 opener !== openers_bottom[openers_bottom_index]
8088 ) {
8089 odd_match =
8090 (closer.can_open || opener.can_close) &&
8091 closer.origdelims % 3 !== 0 &&
8092 (opener.origdelims + closer.origdelims) % 3 === 0;
8093 if (opener.cc === closer.cc && opener.can_open && !odd_match) {
8094 opener_found = true;
8095 break;
8096 }
8097 opener = opener.previous;
8098 }
8099 old_closer = closer;
8100
8101 if (closercc === C_ASTERISK || closercc === C_UNDERSCORE) {
8102 if (!opener_found) {
8103 closer = closer.next;
8104 } else {
8105 // calculate actual number of delimiters used from closer
8106 use_delims =
8107 closer.numdelims >= 2 && opener.numdelims >= 2 ? 2 : 1;
8108
8109 opener_inl = opener.node;
8110 closer_inl = closer.node;
8111
8112 // remove used delimiters from stack elts and inlines
8113 opener.numdelims -= use_delims;
8114 closer.numdelims -= use_delims;
8115 opener_inl._literal = opener_inl._literal.slice(
8116 0,
8117 opener_inl._literal.length - use_delims
8118 );
8119 closer_inl._literal = closer_inl._literal.slice(
8120 0,
8121 closer_inl._literal.length - use_delims
8122 );
8123
8124 // build contents for new emph element
8125 var emph = new Node(use_delims === 1 ? "emph" : "strong");
8126
8127 tmp = opener_inl._next;
8128 while (tmp && tmp !== closer_inl) {
8129 next = tmp._next;
8130 tmp.unlink();
8131 emph.appendChild(tmp);
8132 tmp = next;
8133 }
8134
8135 opener_inl.insertAfter(emph);
8136
8137 // remove elts between opener and closer in delimiters stack
8138 removeDelimitersBetween(opener, closer);
8139
8140 // if opener has 0 delims, remove it and the inline
8141 if (opener.numdelims === 0) {
8142 opener_inl.unlink();
8143 this.removeDelimiter(opener);
8144 }
8145
8146 if (closer.numdelims === 0) {
8147 closer_inl.unlink();
8148 tempstack = closer.next;
8149 this.removeDelimiter(closer);
8150 closer = tempstack;
8151 }
8152 }
8153 } else if (closercc === C_SINGLEQUOTE) {
8154 closer.node._literal = "\u2019";
8155 if (opener_found) {
8156 opener.node._literal = "\u2018";
8157 }
8158 closer = closer.next;
8159 } else if (closercc === C_DOUBLEQUOTE) {
8160 closer.node._literal = "\u201D";
8161 if (opener_found) {
8162 opener.node.literal = "\u201C";
8163 }
8164 closer = closer.next;
8165 }
8166 if (!opener_found) {
8167 // Set lower bound for future searches for openers:
8168 openers_bottom[openers_bottom_index] =
8169 old_closer.previous;
8170 if (!old_closer.can_open) {
8171 // We can remove a closer that can't be an opener,
8172 // once we've seen there's no matching opener:
8173 this.removeDelimiter(old_closer);
8174 }
8175 }
8176 }
8177 }
8178
8179 // remove all delimiters
8180 while (this.delimiters !== null && this.delimiters !== stack_bottom) {
8181 this.removeDelimiter(this.delimiters);
8182 }
8183 };
8184
8185 // Attempt to parse link title (sans quotes), returning the string
8186 // or null if no match.
8187 var parseLinkTitle = function() {
8188 var title = this.match(reLinkTitle);
8189 if (title === null) {
8190 return null;
8191 } else {
8192 // chop off quotes from title and unescape:
8193 return unescapeString$1(title.substr(1, title.length - 2));
8194 }
8195 };
8196
8197 // Attempt to parse link destination, returning the string or
8198 // null if no match.
8199 var parseLinkDestination = function() {
8200 var res = this.match(reLinkDestinationBraces);
8201 if (res === null) {
8202 if (this.peek() === C_LESSTHAN) {
8203 return null;
8204 }
8205 // TODO handrolled parser; res should be null or the string
8206 var savepos = this.pos;
8207 var openparens = 0;
8208 var c;
8209 while ((c = this.peek()) !== -1) {
8210 if (
8211 c === C_BACKSLASH$1 &&
8212 reEscapable.test(this.subject.charAt(this.pos + 1))
8213 ) {
8214 this.pos += 1;
8215 if (this.peek() !== -1) {
8216 this.pos += 1;
8217 }
8218 } else if (c === C_OPEN_PAREN) {
8219 this.pos += 1;
8220 openparens += 1;
8221 } else if (c === C_CLOSE_PAREN) {
8222 if (openparens < 1) {
8223 break;
8224 } else {
8225 this.pos += 1;
8226 openparens -= 1;
8227 }
8228 } else if (reWhitespaceChar.exec(fromCodePoint(c)) !== null) {
8229 break;
8230 } else {
8231 this.pos += 1;
8232 }
8233 }
8234 if (this.pos === savepos && c !== C_CLOSE_PAREN) {
8235 return null;
8236 }
8237 if (openparens !== 0) {
8238 return null;
8239 }
8240 res = this.subject.substr(savepos, this.pos - savepos);
8241 return normalizeURI$1(unescapeString$1(res));
8242 } else {
8243 // chop off surrounding <..>:
8244 return normalizeURI$1(unescapeString$1(res.substr(1, res.length - 2)));
8245 }
8246 };
8247
8248 // Attempt to parse a link label, returning number of characters parsed.
8249 var parseLinkLabel = function() {
8250 var m = this.match(reLinkLabel);
8251 if (m === null || m.length > 1001) {
8252 return 0;
8253 } else {
8254 return m.length;
8255 }
8256 };
8257
8258 // Add open bracket to delimiter stack and add a text node to block's children.
8259 var parseOpenBracket = function(block) {
8260 var startpos = this.pos;
8261 this.pos += 1;
8262
8263 var node = text("[");
8264 block.appendChild(node);
8265
8266 // Add entry to stack for this opener
8267 this.addBracket(node, startpos, false);
8268 return true;
8269 };
8270
8271 // IF next character is [, and ! delimiter to delimiter stack and
8272 // add a text node to block's children. Otherwise just add a text node.
8273 var parseBang = function(block) {
8274 var startpos = this.pos;
8275 this.pos += 1;
8276 if (this.peek() === C_OPEN_BRACKET) {
8277 this.pos += 1;
8278
8279 var node = text("![");
8280 block.appendChild(node);
8281
8282 // Add entry to stack for this opener
8283 this.addBracket(node, startpos + 1, true);
8284 } else {
8285 block.appendChild(text("!"));
8286 }
8287 return true;
8288 };
8289
8290 // Try to match close bracket against an opening in the delimiter
8291 // stack. Add either a link or image, or a plain [ character,
8292 // to block's children. If there is a matching delimiter,
8293 // remove it from the delimiter stack.
8294 var parseCloseBracket = function(block) {
8295 var startpos;
8296 var is_image;
8297 var dest;
8298 var title;
8299 var matched = false;
8300 var reflabel;
8301 var opener;
8302
8303 this.pos += 1;
8304 startpos = this.pos;
8305
8306 // get last [ or ![
8307 opener = this.brackets;
8308
8309 if (opener === null) {
8310 // no matched opener, just return a literal
8311 block.appendChild(text("]"));
8312 return true;
8313 }
8314
8315 if (!opener.active) {
8316 // no matched opener, just return a literal
8317 block.appendChild(text("]"));
8318 // take opener off brackets stack
8319 this.removeBracket();
8320 return true;
8321 }
8322
8323 // If we got here, open is a potential opener
8324 is_image = opener.image;
8325
8326 // Check to see if we have a link/image
8327
8328 var savepos = this.pos;
8329
8330 // Inline link?
8331 if (this.peek() === C_OPEN_PAREN) {
8332 this.pos++;
8333 if (
8334 this.spnl() &&
8335 (dest = this.parseLinkDestination()) !== null &&
8336 this.spnl() &&
8337 // make sure there's a space before the title:
8338 ((reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&
8339 (title = this.parseLinkTitle())) ||
8340 true) &&
8341 this.spnl() &&
8342 this.peek() === C_CLOSE_PAREN
8343 ) {
8344 this.pos += 1;
8345 matched = true;
8346 } else {
8347 this.pos = savepos;
8348 }
8349 }
8350
8351 if (!matched) {
8352 // Next, see if there's a link label
8353 var beforelabel = this.pos;
8354 var n = this.parseLinkLabel();
8355 if (n > 2) {
8356 reflabel = this.subject.slice(beforelabel, beforelabel + n);
8357 } else if (!opener.bracketAfter) {
8358 // Empty or missing second label means to use the first label as the reference.
8359 // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it.
8360 reflabel = this.subject.slice(opener.index, startpos);
8361 }
8362 if (n === 0) {
8363 // If shortcut reference link, rewind before spaces we skipped.
8364 this.pos = savepos;
8365 }
8366
8367 if (reflabel) {
8368 // lookup rawlabel in refmap
8369 var link = this.refmap[normalizeReference(reflabel)];
8370 if (link) {
8371 dest = link.destination;
8372 title = link.title;
8373 matched = true;
8374 }
8375 }
8376 }
8377
8378 if (matched) {
8379 var node = new Node(is_image ? "image" : "link");
8380 node._destination = dest;
8381 node._title = title || "";
8382
8383 var tmp, next;
8384 tmp = opener.node._next;
8385 while (tmp) {
8386 next = tmp._next;
8387 tmp.unlink();
8388 node.appendChild(tmp);
8389 tmp = next;
8390 }
8391 block.appendChild(node);
8392 this.processEmphasis(opener.previousDelimiter);
8393 this.removeBracket();
8394 opener.node.unlink();
8395
8396 // We remove this bracket and processEmphasis will remove later delimiters.
8397 // Now, for a link, we also deactivate earlier link openers.
8398 // (no links in links)
8399 if (!is_image) {
8400 opener = this.brackets;
8401 while (opener !== null) {
8402 if (!opener.image) {
8403 opener.active = false; // deactivate this opener
8404 }
8405 opener = opener.previous;
8406 }
8407 }
8408
8409 return true;
8410 } else {
8411 // no match
8412
8413 this.removeBracket(); // remove this opener from stack
8414 this.pos = startpos;
8415 block.appendChild(text("]"));
8416 return true;
8417 }
8418 };
8419
8420 var addBracket = function(node, index, image) {
8421 if (this.brackets !== null) {
8422 this.brackets.bracketAfter = true;
8423 }
8424 this.brackets = {
8425 node: node,
8426 previous: this.brackets,
8427 previousDelimiter: this.delimiters,
8428 index: index,
8429 image: image,
8430 active: true
8431 };
8432 };
8433
8434 var removeBracket = function() {
8435 this.brackets = this.brackets.previous;
8436 };
8437
8438 // Attempt to parse an entity.
8439 var parseEntity = function(block) {
8440 var m;
8441 if ((m = this.match(reEntityHere))) {
8442 block.appendChild(text(lib_9(m)));
8443 return true;
8444 } else {
8445 return false;
8446 }
8447 };
8448
8449 // Parse a run of ordinary characters, or a single character with
8450 // a special meaning in markdown, as a plain string.
8451 var parseString = function(block) {
8452 var m;
8453 if ((m = this.match(reMain))) {
8454 if (this.options.smart) {
8455 block.appendChild(
8456 text(
8457 m
8458 .replace(reEllipses, "\u2026")
8459 .replace(reDash, function(chars) {
8460 var enCount = 0;
8461 var emCount = 0;
8462 if (chars.length % 3 === 0) {
8463 // If divisible by 3, use all em dashes
8464 emCount = chars.length / 3;
8465 } else if (chars.length % 2 === 0) {
8466 // If divisible by 2, use all en dashes
8467 enCount = chars.length / 2;
8468 } else if (chars.length % 3 === 2) {
8469 // If 2 extra dashes, use en dash for last 2; em dashes for rest
8470 enCount = 1;
8471 emCount = (chars.length - 2) / 3;
8472 } else {
8473 // Use en dashes for last 4 hyphens; em dashes for rest
8474 enCount = 2;
8475 emCount = (chars.length - 4) / 3;
8476 }
8477 return (
8478 "\u2014".repeat(emCount) +
8479 "\u2013".repeat(enCount)
8480 );
8481 })
8482 )
8483 );
8484 } else {
8485 block.appendChild(text(m));
8486 }
8487 return true;
8488 } else {
8489 return false;
8490 }
8491 };
8492
8493 // Parse a newline. If it was preceded by two spaces, return a hard
8494 // line break; otherwise a soft line break.
8495 var parseNewline = function(block) {
8496 this.pos += 1; // assume we're at a \n
8497 // check previous node for trailing spaces
8498 var lastc = block._lastChild;
8499 if (
8500 lastc &&
8501 lastc.type === "text" &&
8502 lastc._literal[lastc._literal.length - 1] === " "
8503 ) {
8504 var hardbreak = lastc._literal[lastc._literal.length - 2] === " ";
8505 lastc._literal = lastc._literal.replace(reFinalSpace, "");
8506 block.appendChild(new Node(hardbreak ? "linebreak" : "softbreak"));
8507 } else {
8508 block.appendChild(new Node("softbreak"));
8509 }
8510 this.match(reInitialSpace); // gobble leading spaces in next line
8511 return true;
8512 };
8513
8514 // Attempt to parse a link reference, modifying refmap.
8515 var parseReference = function(s, refmap) {
8516 this.subject = s;
8517 this.pos = 0;
8518 var rawlabel;
8519 var dest;
8520 var title;
8521 var matchChars;
8522 var startpos = this.pos;
8523
8524 // label:
8525 matchChars = this.parseLinkLabel();
8526 if (matchChars === 0) {
8527 return 0;
8528 } else {
8529 rawlabel = this.subject.substr(0, matchChars);
8530 }
8531
8532 // colon:
8533 if (this.peek() === C_COLON) {
8534 this.pos++;
8535 } else {
8536 this.pos = startpos;
8537 return 0;
8538 }
8539
8540 // link url
8541 this.spnl();
8542
8543 dest = this.parseLinkDestination();
8544 if (dest === null) {
8545 this.pos = startpos;
8546 return 0;
8547 }
8548
8549 var beforetitle = this.pos;
8550 this.spnl();
8551 if (this.pos !== beforetitle) {
8552 title = this.parseLinkTitle();
8553 }
8554 if (title === null) {
8555 title = "";
8556 // rewind before spaces
8557 this.pos = beforetitle;
8558 }
8559
8560 // make sure we're at line end:
8561 var atLineEnd = true;
8562 if (this.match(reSpaceAtEndOfLine) === null) {
8563 if (title === "") {
8564 atLineEnd = false;
8565 } else {
8566 // the potential title we found is not at the line end,
8567 // but it could still be a legal link reference if we
8568 // discard the title
8569 title = "";
8570 // rewind before spaces
8571 this.pos = beforetitle;
8572 // and instead check if the link URL is at the line end
8573 atLineEnd = this.match(reSpaceAtEndOfLine) !== null;
8574 }
8575 }
8576
8577 if (!atLineEnd) {
8578 this.pos = startpos;
8579 return 0;
8580 }
8581
8582 var normlabel = normalizeReference(rawlabel);
8583 if (normlabel === "") {
8584 // label must contain non-whitespace characters
8585 this.pos = startpos;
8586 return 0;
8587 }
8588
8589 if (!refmap[normlabel]) {
8590 refmap[normlabel] = { destination: dest, title: title };
8591 }
8592 return this.pos - startpos;
8593 };
8594
8595 // Parse the next inline element in subject, advancing subject position.
8596 // On success, add the result to block's children and return true.
8597 // On failure, return false.
8598 var parseInline = function(block) {
8599 var res = false;
8600 var c = this.peek();
8601 if (c === -1) {
8602 return false;
8603 }
8604 switch (c) {
8605 case C_NEWLINE:
8606 res = this.parseNewline(block);
8607 break;
8608 case C_BACKSLASH$1:
8609 res = this.parseBackslash(block);
8610 break;
8611 case C_BACKTICK:
8612 res = this.parseBackticks(block);
8613 break;
8614 case C_ASTERISK:
8615 case C_UNDERSCORE:
8616 res = this.handleDelim(c, block);
8617 break;
8618 case C_SINGLEQUOTE:
8619 case C_DOUBLEQUOTE:
8620 res = this.options.smart && this.handleDelim(c, block);
8621 break;
8622 case C_OPEN_BRACKET:
8623 res = this.parseOpenBracket(block);
8624 break;
8625 case C_BANG:
8626 res = this.parseBang(block);
8627 break;
8628 case C_CLOSE_BRACKET:
8629 res = this.parseCloseBracket(block);
8630 break;
8631 case C_LESSTHAN:
8632 res = this.parseAutolink(block) || this.parseHtmlTag(block);
8633 break;
8634 case C_AMPERSAND:
8635 res = this.parseEntity(block);
8636 break;
8637 default:
8638 res = this.parseString(block);
8639 break;
8640 }
8641 if (!res) {
8642 this.pos += 1;
8643 block.appendChild(text(fromCodePoint(c)));
8644 }
8645
8646 return true;
8647 };
8648
8649 // Parse string content in block into inline children,
8650 // using refmap to resolve references.
8651 var parseInlines = function(block) {
8652 this.subject = block._string_content.trim();
8653 this.pos = 0;
8654 this.delimiters = null;
8655 this.brackets = null;
8656 while (this.parseInline(block)) {}
8657 block._string_content = null; // allow raw string to be garbage collected
8658 this.processEmphasis(null);
8659 };
8660
8661 // The InlineParser object.
8662 function InlineParser(options) {
8663 return {
8664 subject: "",
8665 delimiters: null, // used by handleDelim method
8666 brackets: null,
8667 pos: 0,
8668 refmap: {},
8669 match: match,
8670 peek: peek,
8671 spnl: spnl,
8672 parseBackticks: parseBackticks,
8673 parseBackslash: parseBackslash,
8674 parseAutolink: parseAutolink,
8675 parseHtmlTag: parseHtmlTag,
8676 scanDelims: scanDelims,
8677 handleDelim: handleDelim,
8678 parseLinkTitle: parseLinkTitle,
8679 parseLinkDestination: parseLinkDestination,
8680 parseLinkLabel: parseLinkLabel,
8681 parseOpenBracket: parseOpenBracket,
8682 parseBang: parseBang,
8683 parseCloseBracket: parseCloseBracket,
8684 addBracket: addBracket,
8685 removeBracket: removeBracket,
8686 parseEntity: parseEntity,
8687 parseString: parseString,
8688 parseNewline: parseNewline,
8689 parseReference: parseReference,
8690 parseInline: parseInline,
8691 processEmphasis: processEmphasis,
8692 removeDelimiter: removeDelimiter,
8693 options: options || {},
8694 parse: parseInlines
8695 };
8696 }
8697
8698 var CODE_INDENT = 4;
8699
8700 var C_TAB = 9;
8701 var C_NEWLINE$1 = 10;
8702 var C_GREATERTHAN = 62;
8703 var C_LESSTHAN$1 = 60;
8704 var C_SPACE = 32;
8705 var C_OPEN_BRACKET$1 = 91;
8706
8707 var reHtmlBlockOpen = [
8708 /./, // dummy for 0
8709 /^<(?:script|pre|textarea|style)(?:\s|>|$)/i,
8710 /^<!--/,
8711 /^<[?]/,
8712 /^<![A-Z]/,
8713 /^<!\[CDATA\[/,
8714 /^<[/]?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[123456]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|[/]?[>]|$)/i,
8715 new RegExp("^(?:" + OPENTAG + "|" + CLOSETAG + ")\\s*$", "i")
8716 ];
8717
8718 var reHtmlBlockClose = [
8719 /./, // dummy for 0
8720 /<\/(?:script|pre|textarea|style)>/i,
8721 /-->/,
8722 /\?>/,
8723 />/,
8724 /\]\]>/
8725 ];
8726
8727 var reThematicBreak = /^(?:\*[ \t]*){3,}$|^(?:_[ \t]*){3,}$|^(?:-[ \t]*){3,}$/;
8728
8729 var reMaybeSpecial = /^[#`~*+_=<>0-9-]/;
8730
8731 var reNonSpace = /[^ \t\f\v\r\n]/;
8732
8733 var reBulletListMarker = /^[*+-]/;
8734
8735 var reOrderedListMarker = /^(\d{1,9})([.)])/;
8736
8737 var reATXHeadingMarker = /^#{1,6}(?:[ \t]+|$)/;
8738
8739 var reCodeFence = /^`{3,}(?!.*`)|^~{3,}/;
8740
8741 var reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;
8742
8743 var reSetextHeadingLine = /^(?:=+|-+)[ \t]*$/;
8744
8745 var reLineEnding = /\r\n|\n|\r/;
8746
8747 // Returns true if string contains only space characters.
8748 var isBlank = function(s) {
8749 return !reNonSpace.test(s);
8750 };
8751
8752 var isSpaceOrTab = function(c) {
8753 return c === C_SPACE || c === C_TAB;
8754 };
8755
8756 var peek$1 = function(ln, pos) {
8757 if (pos < ln.length) {
8758 return ln.charCodeAt(pos);
8759 } else {
8760 return -1;
8761 }
8762 };
8763
8764 // DOC PARSER
8765
8766 // These are methods of a Parser object, defined below.
8767
8768 // Returns true if block ends with a blank line, descending if needed
8769 // into lists and sublists.
8770 var endsWithBlankLine = function(block) {
8771 while (block) {
8772 if (block._lastLineBlank) {
8773 return true;
8774 }
8775 var t = block.type;
8776 if (!block._lastLineChecked && (t === "list" || t === "item")) {
8777 block._lastLineChecked = true;
8778 block = block._lastChild;
8779 } else {
8780 block._lastLineChecked = true;
8781 break;
8782 }
8783 }
8784 return false;
8785 };
8786
8787 // Add a line to the block at the tip. We assume the tip
8788 // can accept lines -- that check should be done before calling this.
8789 var addLine = function() {
8790 if (this.partiallyConsumedTab) {
8791 this.offset += 1; // skip over tab
8792 // add space characters:
8793 var charsToTab = 4 - (this.column % 4);
8794 this.tip._string_content += " ".repeat(charsToTab);
8795 }
8796 this.tip._string_content += this.currentLine.slice(this.offset) + "\n";
8797 };
8798
8799 // Add block of type tag as a child of the tip. If the tip can't
8800 // accept children, close and finalize it and try its parent,
8801 // and so on til we find a block that can accept children.
8802 var addChild = function(tag, offset) {
8803 while (!this.blocks[this.tip.type].canContain(tag)) {
8804 this.finalize(this.tip, this.lineNumber - 1);
8805 }
8806
8807 var column_number = offset + 1; // offset 0 = column 1
8808 var newBlock = new Node(tag, [
8809 [this.lineNumber, column_number],
8810 [0, 0]
8811 ]);
8812 newBlock._string_content = "";
8813 this.tip.appendChild(newBlock);
8814 this.tip = newBlock;
8815 return newBlock;
8816 };
8817
8818 // Parse a list marker and return data on the marker (type,
8819 // start, delimiter, bullet character, padding) or null.
8820 var parseListMarker = function(parser, container) {
8821 var rest = parser.currentLine.slice(parser.nextNonspace);
8822 var match;
8823 var nextc;
8824 var spacesStartCol;
8825 var spacesStartOffset;
8826 var data = {
8827 type: null,
8828 tight: true, // lists are tight by default
8829 bulletChar: null,
8830 start: null,
8831 delimiter: null,
8832 padding: null,
8833 markerOffset: parser.indent
8834 };
8835 if (parser.indent >= 4) {
8836 return null;
8837 }
8838 if ((match = rest.match(reBulletListMarker))) {
8839 data.type = "bullet";
8840 data.bulletChar = match[0][0];
8841 } else if (
8842 (match = rest.match(reOrderedListMarker)) &&
8843 (container.type !== "paragraph" || match[1] == 1)
8844 ) {
8845 data.type = "ordered";
8846 data.start = parseInt(match[1]);
8847 data.delimiter = match[2];
8848 } else {
8849 return null;
8850 }
8851 // make sure we have spaces after
8852 nextc = peek$1(parser.currentLine, parser.nextNonspace + match[0].length);
8853 if (!(nextc === -1 || nextc === C_TAB || nextc === C_SPACE)) {
8854 return null;
8855 }
8856
8857 // if it interrupts paragraph, make sure first line isn't blank
8858 if (
8859 container.type === "paragraph" &&
8860 !parser.currentLine
8861 .slice(parser.nextNonspace + match[0].length)
8862 .match(reNonSpace)
8863 ) {
8864 return null;
8865 }
8866
8867 // we've got a match! advance offset and calculate padding
8868 parser.advanceNextNonspace(); // to start of marker
8869 parser.advanceOffset(match[0].length, true); // to end of marker
8870 spacesStartCol = parser.column;
8871 spacesStartOffset = parser.offset;
8872 do {
8873 parser.advanceOffset(1, true);
8874 nextc = peek$1(parser.currentLine, parser.offset);
8875 } while (parser.column - spacesStartCol < 5 && isSpaceOrTab(nextc));
8876 var blank_item = peek$1(parser.currentLine, parser.offset) === -1;
8877 var spaces_after_marker = parser.column - spacesStartCol;
8878 if (spaces_after_marker >= 5 || spaces_after_marker < 1 || blank_item) {
8879 data.padding = match[0].length + 1;
8880 parser.column = spacesStartCol;
8881 parser.offset = spacesStartOffset;
8882 if (isSpaceOrTab(peek$1(parser.currentLine, parser.offset))) {
8883 parser.advanceOffset(1, true);
8884 }
8885 } else {
8886 data.padding = match[0].length + spaces_after_marker;
8887 }
8888 return data;
8889 };
8890
8891 // Returns true if the two list items are of the same type,
8892 // with the same delimiter and bullet character. This is used
8893 // in agglomerating list items into lists.
8894 var listsMatch = function(list_data, item_data) {
8895 return (
8896 list_data.type === item_data.type &&
8897 list_data.delimiter === item_data.delimiter &&
8898 list_data.bulletChar === item_data.bulletChar
8899 );
8900 };
8901
8902 // Finalize and close any unmatched blocks.
8903 var closeUnmatchedBlocks = function() {
8904 if (!this.allClosed) {
8905 // finalize any blocks not matched
8906 while (this.oldtip !== this.lastMatchedContainer) {
8907 var parent = this.oldtip._parent;
8908 this.finalize(this.oldtip, this.lineNumber - 1);
8909 this.oldtip = parent;
8910 }
8911 this.allClosed = true;
8912 }
8913 };
8914
8915 // 'finalize' is run when the block is closed.
8916 // 'continue' is run to check whether the block is continuing
8917 // at a certain line and offset (e.g. whether a block quote
8918 // contains a `>`. It returns 0 for matched, 1 for not matched,
8919 // and 2 for "we've dealt with this line completely, go to next."
8920 var blocks = {
8921 document: {
8922 continue: function() {
8923 return 0;
8924 },
8925 finalize: function() {
8926 return;
8927 },
8928 canContain: function(t) {
8929 return t !== "item";
8930 },
8931 acceptsLines: false
8932 },
8933 list: {
8934 continue: function() {
8935 return 0;
8936 },
8937 finalize: function(parser, block) {
8938 var item = block._firstChild;
8939 while (item) {
8940 // check for non-final list item ending with blank line:
8941 if (endsWithBlankLine(item) && item._next) {
8942 block._listData.tight = false;
8943 break;
8944 }
8945 // recurse into children of list item, to see if there are
8946 // spaces between any of them:
8947 var subitem = item._firstChild;
8948 while (subitem) {
8949 if (
8950 endsWithBlankLine(subitem) &&
8951 (item._next || subitem._next)
8952 ) {
8953 block._listData.tight = false;
8954 break;
8955 }
8956 subitem = subitem._next;
8957 }
8958 item = item._next;
8959 }
8960 },
8961 canContain: function(t) {
8962 return t === "item";
8963 },
8964 acceptsLines: false
8965 },
8966 block_quote: {
8967 continue: function(parser) {
8968 var ln = parser.currentLine;
8969 if (
8970 !parser.indented &&
8971 peek$1(ln, parser.nextNonspace) === C_GREATERTHAN
8972 ) {
8973 parser.advanceNextNonspace();
8974 parser.advanceOffset(1, false);
8975 if (isSpaceOrTab(peek$1(ln, parser.offset))) {
8976 parser.advanceOffset(1, true);
8977 }
8978 } else {
8979 return 1;
8980 }
8981 return 0;
8982 },
8983 finalize: function() {
8984 return;
8985 },
8986 canContain: function(t) {
8987 return t !== "item";
8988 },
8989 acceptsLines: false
8990 },
8991 item: {
8992 continue: function(parser, container) {
8993 if (parser.blank) {
8994 if (container._firstChild == null) {
8995 // Blank line after empty list item
8996 return 1;
8997 } else {
8998 parser.advanceNextNonspace();
8999 }
9000 } else if (
9001 parser.indent >=
9002 container._listData.markerOffset + container._listData.padding
9003 ) {
9004 parser.advanceOffset(
9005 container._listData.markerOffset +
9006 container._listData.padding,
9007 true
9008 );
9009 } else {
9010 return 1;
9011 }
9012 return 0;
9013 },
9014 finalize: function() {
9015 return;
9016 },
9017 canContain: function(t) {
9018 return t !== "item";
9019 },
9020 acceptsLines: false
9021 },
9022 heading: {
9023 continue: function() {
9024 // a heading can never container > 1 line, so fail to match:
9025 return 1;
9026 },
9027 finalize: function() {
9028 return;
9029 },
9030 canContain: function() {
9031 return false;
9032 },
9033 acceptsLines: false
9034 },
9035 thematic_break: {
9036 continue: function() {
9037 // a thematic break can never container > 1 line, so fail to match:
9038 return 1;
9039 },
9040 finalize: function() {
9041 return;
9042 },
9043 canContain: function() {
9044 return false;
9045 },
9046 acceptsLines: false
9047 },
9048 code_block: {
9049 continue: function(parser, container) {
9050 var ln = parser.currentLine;
9051 var indent = parser.indent;
9052 if (container._isFenced) {
9053 // fenced
9054 var match =
9055 indent <= 3 &&
9056 ln.charAt(parser.nextNonspace) === container._fenceChar &&
9057 ln.slice(parser.nextNonspace).match(reClosingCodeFence);
9058 if (match && match[0].length >= container._fenceLength) {
9059 // closing fence - we're at end of line, so we can return
9060 parser.lastLineLength =
9061 parser.offset + indent + match[0].length;
9062 parser.finalize(container, parser.lineNumber);
9063 return 2;
9064 } else {
9065 // skip optional spaces of fence offset
9066 var i = container._fenceOffset;
9067 while (i > 0 && isSpaceOrTab(peek$1(ln, parser.offset))) {
9068 parser.advanceOffset(1, true);
9069 i--;
9070 }
9071 }
9072 } else {
9073 // indented
9074 if (indent >= CODE_INDENT) {
9075 parser.advanceOffset(CODE_INDENT, true);
9076 } else if (parser.blank) {
9077 parser.advanceNextNonspace();
9078 } else {
9079 return 1;
9080 }
9081 }
9082 return 0;
9083 },
9084 finalize: function(parser, block) {
9085 if (block._isFenced) {
9086 // fenced
9087 // first line becomes info string
9088 var content = block._string_content;
9089 var newlinePos = content.indexOf("\n");
9090 var firstLine = content.slice(0, newlinePos);
9091 var rest = content.slice(newlinePos + 1);
9092 block.info = unescapeString(firstLine.trim());
9093 block._literal = rest;
9094 } else {
9095 // indented
9096 block._literal = block._string_content.replace(
9097 /(\n *)+$/,
9098 "\n"
9099 );
9100 }
9101 block._string_content = null; // allow GC
9102 },
9103 canContain: function() {
9104 return false;
9105 },
9106 acceptsLines: true
9107 },
9108 html_block: {
9109 continue: function(parser, container) {
9110 return parser.blank &&
9111 (container._htmlBlockType === 6 ||
9112 container._htmlBlockType === 7)
9113 ? 1
9114 : 0;
9115 },
9116 finalize: function(parser, block) {
9117 block._literal = block._string_content.replace(/(\n *)+$/, "");
9118 block._string_content = null; // allow GC
9119 },
9120 canContain: function() {
9121 return false;
9122 },
9123 acceptsLines: true
9124 },
9125 paragraph: {
9126 continue: function(parser) {
9127 return parser.blank ? 1 : 0;
9128 },
9129 finalize: function(parser, block) {
9130 var pos;
9131 var hasReferenceDefs = false;
9132
9133 // try parsing the beginning as link reference definitions:
9134 while (
9135 peek$1(block._string_content, 0) === C_OPEN_BRACKET$1 &&
9136 (pos = parser.inlineParser.parseReference(
9137 block._string_content,
9138 parser.refmap
9139 ))
9140 ) {
9141 block._string_content = block._string_content.slice(pos);
9142 hasReferenceDefs = true;
9143 }
9144 if (hasReferenceDefs && isBlank(block._string_content)) {
9145 block.unlink();
9146 }
9147 },
9148 canContain: function() {
9149 return false;
9150 },
9151 acceptsLines: true
9152 }
9153 };
9154
9155 // block start functions. Return values:
9156 // 0 = no match
9157 // 1 = matched container, keep going
9158 // 2 = matched leaf, no more block starts
9159 var blockStarts = [
9160 // block quote
9161 function(parser) {
9162 if (
9163 !parser.indented &&
9164 peek$1(parser.currentLine, parser.nextNonspace) === C_GREATERTHAN
9165 ) {
9166 parser.advanceNextNonspace();
9167 parser.advanceOffset(1, false);
9168 // optional following space
9169 if (isSpaceOrTab(peek$1(parser.currentLine, parser.offset))) {
9170 parser.advanceOffset(1, true);
9171 }
9172 parser.closeUnmatchedBlocks();
9173 parser.addChild("block_quote", parser.nextNonspace);
9174 return 1;
9175 } else {
9176 return 0;
9177 }
9178 },
9179
9180 // ATX heading
9181 function(parser) {
9182 var match;
9183 if (
9184 !parser.indented &&
9185 (match = parser.currentLine
9186 .slice(parser.nextNonspace)
9187 .match(reATXHeadingMarker))
9188 ) {
9189 parser.advanceNextNonspace();
9190 parser.advanceOffset(match[0].length, false);
9191 parser.closeUnmatchedBlocks();
9192 var container = parser.addChild("heading", parser.nextNonspace);
9193 container.level = match[0].trim().length; // number of #s
9194 // remove trailing ###s:
9195 container._string_content = parser.currentLine
9196 .slice(parser.offset)
9197 .replace(/^[ \t]*#+[ \t]*$/, "")
9198 .replace(/[ \t]+#+[ \t]*$/, "");
9199 parser.advanceOffset(parser.currentLine.length - parser.offset);
9200 return 2;
9201 } else {
9202 return 0;
9203 }
9204 },
9205
9206 // Fenced code block
9207 function(parser) {
9208 var match;
9209 if (
9210 !parser.indented &&
9211 (match = parser.currentLine
9212 .slice(parser.nextNonspace)
9213 .match(reCodeFence))
9214 ) {
9215 var fenceLength = match[0].length;
9216 parser.closeUnmatchedBlocks();
9217 var container = parser.addChild("code_block", parser.nextNonspace);
9218 container._isFenced = true;
9219 container._fenceLength = fenceLength;
9220 container._fenceChar = match[0][0];
9221 container._fenceOffset = parser.indent;
9222 parser.advanceNextNonspace();
9223 parser.advanceOffset(fenceLength, false);
9224 return 2;
9225 } else {
9226 return 0;
9227 }
9228 },
9229
9230 // HTML block
9231 function(parser, container) {
9232 if (
9233 !parser.indented &&
9234 peek$1(parser.currentLine, parser.nextNonspace) === C_LESSTHAN$1
9235 ) {
9236 var s = parser.currentLine.slice(parser.nextNonspace);
9237 var blockType;
9238
9239 for (blockType = 1; blockType <= 7; blockType++) {
9240 if (
9241 reHtmlBlockOpen[blockType].test(s) &&
9242 (blockType < 7 || (container.type !== "paragraph" &&
9243 !(!parser.allClosed && !parser.blank &&
9244 parser.tip.type === "paragraph") // maybe lazy
9245 ))
9246 ) {
9247 parser.closeUnmatchedBlocks();
9248 // We don't adjust parser.offset;
9249 // spaces are part of the HTML block:
9250 var b = parser.addChild("html_block", parser.offset);
9251 b._htmlBlockType = blockType;
9252 return 2;
9253 }
9254 }
9255 }
9256
9257 return 0;
9258 },
9259
9260 // Setext heading
9261 function(parser, container) {
9262 var match;
9263 if (
9264 !parser.indented &&
9265 container.type === "paragraph" &&
9266 (match = parser.currentLine
9267 .slice(parser.nextNonspace)
9268 .match(reSetextHeadingLine))
9269 ) {
9270 parser.closeUnmatchedBlocks();
9271 // resolve reference link definitiosn
9272 var pos;
9273 while (
9274 peek$1(container._string_content, 0) === C_OPEN_BRACKET$1 &&
9275 (pos = parser.inlineParser.parseReference(
9276 container._string_content,
9277 parser.refmap
9278 ))
9279 ) {
9280 container._string_content = container._string_content.slice(
9281 pos
9282 );
9283 }
9284 if (container._string_content.length > 0) {
9285 var heading = new Node("heading", container.sourcepos);
9286 heading.level = match[0][0] === "=" ? 1 : 2;
9287 heading._string_content = container._string_content;
9288 container.insertAfter(heading);
9289 container.unlink();
9290 parser.tip = heading;
9291 parser.advanceOffset(
9292 parser.currentLine.length - parser.offset,
9293 false
9294 );
9295 return 2;
9296 } else {
9297 return 0;
9298 }
9299 } else {
9300 return 0;
9301 }
9302 },
9303
9304 // thematic break
9305 function(parser) {
9306 if (
9307 !parser.indented &&
9308 reThematicBreak.test(parser.currentLine.slice(parser.nextNonspace))
9309 ) {
9310 parser.closeUnmatchedBlocks();
9311 parser.addChild("thematic_break", parser.nextNonspace);
9312 parser.advanceOffset(
9313 parser.currentLine.length - parser.offset,
9314 false
9315 );
9316 return 2;
9317 } else {
9318 return 0;
9319 }
9320 },
9321
9322 // list item
9323 function(parser, container) {
9324 var data;
9325
9326 if (
9327 (!parser.indented || container.type === "list") &&
9328 (data = parseListMarker(parser, container))
9329 ) {
9330 parser.closeUnmatchedBlocks();
9331
9332 // add the list if needed
9333 if (
9334 parser.tip.type !== "list" ||
9335 !listsMatch(container._listData, data)
9336 ) {
9337 container = parser.addChild("list", parser.nextNonspace);
9338 container._listData = data;
9339 }
9340
9341 // add the list item
9342 container = parser.addChild("item", parser.nextNonspace);
9343 container._listData = data;
9344 return 1;
9345 } else {
9346 return 0;
9347 }
9348 },
9349
9350 // indented code block
9351 function(parser) {
9352 if (
9353 parser.indented &&
9354 parser.tip.type !== "paragraph" &&
9355 !parser.blank
9356 ) {
9357 // indented code
9358 parser.advanceOffset(CODE_INDENT, true);
9359 parser.closeUnmatchedBlocks();
9360 parser.addChild("code_block", parser.offset);
9361 return 2;
9362 } else {
9363 return 0;
9364 }
9365 }
9366 ];
9367
9368 var advanceOffset = function(count, columns) {
9369 var currentLine = this.currentLine;
9370 var charsToTab, charsToAdvance;
9371 var c;
9372 while (count > 0 && (c = currentLine[this.offset])) {
9373 if (c === "\t") {
9374 charsToTab = 4 - (this.column % 4);
9375 if (columns) {
9376 this.partiallyConsumedTab = charsToTab > count;
9377 charsToAdvance = charsToTab > count ? count : charsToTab;
9378 this.column += charsToAdvance;
9379 this.offset += this.partiallyConsumedTab ? 0 : 1;
9380 count -= charsToAdvance;
9381 } else {
9382 this.partiallyConsumedTab = false;
9383 this.column += charsToTab;
9384 this.offset += 1;
9385 count -= 1;
9386 }
9387 } else {
9388 this.partiallyConsumedTab = false;
9389 this.offset += 1;
9390 this.column += 1; // assume ascii; block starts are ascii
9391 count -= 1;
9392 }
9393 }
9394 };
9395
9396 var advanceNextNonspace = function() {
9397 this.offset = this.nextNonspace;
9398 this.column = this.nextNonspaceColumn;
9399 this.partiallyConsumedTab = false;
9400 };
9401
9402 var findNextNonspace = function() {
9403 var currentLine = this.currentLine;
9404 var i = this.offset;
9405 var cols = this.column;
9406 var c;
9407
9408 while ((c = currentLine.charAt(i)) !== "") {
9409 if (c === " ") {
9410 i++;
9411 cols++;
9412 } else if (c === "\t") {
9413 i++;
9414 cols += 4 - (cols % 4);
9415 } else {
9416 break;
9417 }
9418 }
9419 this.blank = c === "\n" || c === "\r" || c === "";
9420 this.nextNonspace = i;
9421 this.nextNonspaceColumn = cols;
9422 this.indent = this.nextNonspaceColumn - this.column;
9423 this.indented = this.indent >= CODE_INDENT;
9424 };
9425
9426 // Analyze a line of text and update the document appropriately.
9427 // We parse markdown text by calling this on each line of input,
9428 // then finalizing the document.
9429 var incorporateLine = function(ln) {
9430 var all_matched = true;
9431 var t;
9432
9433 var container = this.doc;
9434 this.oldtip = this.tip;
9435 this.offset = 0;
9436 this.column = 0;
9437 this.blank = false;
9438 this.partiallyConsumedTab = false;
9439 this.lineNumber += 1;
9440
9441 // replace NUL characters for security
9442 if (ln.indexOf("\u0000") !== -1) {
9443 ln = ln.replace(/\0/g, "\uFFFD");
9444 }
9445
9446 this.currentLine = ln;
9447
9448 // For each containing block, try to parse the associated line start.
9449 // Bail out on failure: container will point to the last matching block.
9450 // Set all_matched to false if not all containers match.
9451 var lastChild;
9452 while ((lastChild = container._lastChild) && lastChild._open) {
9453 container = lastChild;
9454
9455 this.findNextNonspace();
9456
9457 switch (this.blocks[container.type].continue(this, container)) {
9458 case 0: // we've matched, keep going
9459 break;
9460 case 1: // we've failed to match a block
9461 all_matched = false;
9462 break;
9463 case 2: // we've hit end of line for fenced code close and can return
9464 return;
9465 default:
9466 throw "continue returned illegal value, must be 0, 1, or 2";
9467 }
9468 if (!all_matched) {
9469 container = container._parent; // back up to last matching block
9470 break;
9471 }
9472 }
9473
9474 this.allClosed = container === this.oldtip;
9475 this.lastMatchedContainer = container;
9476
9477 var matchedLeaf =
9478 container.type !== "paragraph" && blocks[container.type].acceptsLines;
9479 var starts = this.blockStarts;
9480 var startsLen = starts.length;
9481 // Unless last matched container is a code block, try new container starts,
9482 // adding children to the last matched container:
9483 while (!matchedLeaf) {
9484 this.findNextNonspace();
9485
9486 // this is a little performance optimization:
9487 if (
9488 !this.indented &&
9489 !reMaybeSpecial.test(ln.slice(this.nextNonspace))
9490 ) {
9491 this.advanceNextNonspace();
9492 break;
9493 }
9494
9495 var i = 0;
9496 while (i < startsLen) {
9497 var res = starts[i](this, container);
9498 if (res === 1) {
9499 container = this.tip;
9500 break;
9501 } else if (res === 2) {
9502 container = this.tip;
9503 matchedLeaf = true;
9504 break;
9505 } else {
9506 i++;
9507 }
9508 }
9509
9510 if (i === startsLen) {
9511 // nothing matched
9512 this.advanceNextNonspace();
9513 break;
9514 }
9515 }
9516
9517 // What remains at the offset is a text line. Add the text to the
9518 // appropriate container.
9519
9520 // First check for a lazy paragraph continuation:
9521 if (!this.allClosed && !this.blank && this.tip.type === "paragraph") {
9522 // lazy paragraph continuation
9523 this.addLine();
9524 } else {
9525 // not a lazy continuation
9526
9527 // finalize any blocks not matched
9528 this.closeUnmatchedBlocks();
9529 if (this.blank && container.lastChild) {
9530 container.lastChild._lastLineBlank = true;
9531 }
9532
9533 t = container.type;
9534
9535 // Block quote lines are never blank as they start with >
9536 // and we don't count blanks in fenced code for purposes of tight/loose
9537 // lists or breaking out of lists. We also don't set _lastLineBlank
9538 // on an empty list item, or if we just closed a fenced block.
9539 var lastLineBlank =
9540 this.blank &&
9541 !(
9542 t === "block_quote" ||
9543 (t === "code_block" && container._isFenced) ||
9544 (t === "item" &&
9545 !container._firstChild &&
9546 container.sourcepos[0][0] === this.lineNumber)
9547 );
9548
9549 // propagate lastLineBlank up through parents:
9550 var cont = container;
9551 while (cont) {
9552 cont._lastLineBlank = lastLineBlank;
9553 cont = cont._parent;
9554 }
9555
9556 if (this.blocks[t].acceptsLines) {
9557 this.addLine();
9558 // if HtmlBlock, check for end condition
9559 if (
9560 t === "html_block" &&
9561 container._htmlBlockType >= 1 &&
9562 container._htmlBlockType <= 5 &&
9563 reHtmlBlockClose[container._htmlBlockType].test(
9564 this.currentLine.slice(this.offset)
9565 )
9566 ) {
9567 this.lastLineLength = ln.length;
9568 this.finalize(container, this.lineNumber);
9569 }
9570 } else if (this.offset < ln.length && !this.blank) {
9571 // create paragraph container for line
9572 container = this.addChild("paragraph", this.offset);
9573 this.advanceNextNonspace();
9574 this.addLine();
9575 }
9576 }
9577 this.lastLineLength = ln.length;
9578 };
9579
9580 // Finalize a block. Close it and do any necessary postprocessing,
9581 // e.g. creating string_content from strings, setting the 'tight'
9582 // or 'loose' status of a list, and parsing the beginnings
9583 // of paragraphs for reference definitions. Reset the tip to the
9584 // parent of the closed block.
9585 var finalize = function(block, lineNumber) {
9586 var above = block._parent;
9587 block._open = false;
9588 block.sourcepos[1] = [lineNumber, this.lastLineLength];
9589
9590 this.blocks[block.type].finalize(this, block);
9591
9592 this.tip = above;
9593 };
9594
9595 // Walk through a block & children recursively, parsing string content
9596 // into inline content where appropriate.
9597 var processInlines = function(block) {
9598 var node, event, t;
9599 var walker = block.walker();
9600 this.inlineParser.refmap = this.refmap;
9601 this.inlineParser.options = this.options;
9602 while ((event = walker.next())) {
9603 node = event.node;
9604 t = node.type;
9605 if (!event.entering && (t === "paragraph" || t === "heading")) {
9606 this.inlineParser.parse(node);
9607 }
9608 }
9609 };
9610
9611 var Document = function() {
9612 var doc = new Node("document", [
9613 [1, 1],
9614 [0, 0]
9615 ]);
9616 return doc;
9617 };
9618
9619 // The main parsing function. Returns a parsed document AST.
9620 var parse = function(input) {
9621 this.doc = new Document();
9622 this.tip = this.doc;
9623 this.refmap = {};
9624 this.lineNumber = 0;
9625 this.lastLineLength = 0;
9626 this.offset = 0;
9627 this.column = 0;
9628 this.lastMatchedContainer = this.doc;
9629 this.currentLine = "";
9630 if (this.options.time) {
9631 console.time("preparing input");
9632 }
9633 var lines = input.split(reLineEnding);
9634 var len = lines.length;
9635 if (input.charCodeAt(input.length - 1) === C_NEWLINE$1) {
9636 // ignore last blank line created by final newline
9637 len -= 1;
9638 }
9639 if (this.options.time) {
9640 console.timeEnd("preparing input");
9641 }
9642 if (this.options.time) {
9643 console.time("block parsing");
9644 }
9645 for (var i = 0; i < len; i++) {
9646 this.incorporateLine(lines[i]);
9647 }
9648 while (this.tip) {
9649 this.finalize(this.tip, len);
9650 }
9651 if (this.options.time) {
9652 console.timeEnd("block parsing");
9653 }
9654 if (this.options.time) {
9655 console.time("inline parsing");
9656 }
9657 this.processInlines(this.doc);
9658 if (this.options.time) {
9659 console.timeEnd("inline parsing");
9660 }
9661 return this.doc;
9662 };
9663
9664 // The Parser object.
9665 function Parser(options) {
9666 return {
9667 doc: new Document(),
9668 blocks: blocks,
9669 blockStarts: blockStarts,
9670 tip: this.doc,
9671 oldtip: this.doc,
9672 currentLine: "",
9673 lineNumber: 0,
9674 offset: 0,
9675 column: 0,
9676 nextNonspace: 0,
9677 nextNonspaceColumn: 0,
9678 indent: 0,
9679 indented: false,
9680 blank: false,
9681 partiallyConsumedTab: false,
9682 allClosed: true,
9683 lastMatchedContainer: this.doc,
9684 refmap: {},
9685 lastLineLength: 0,
9686 inlineParser: new InlineParser(options),
9687 findNextNonspace: findNextNonspace,
9688 advanceOffset: advanceOffset,
9689 advanceNextNonspace: advanceNextNonspace,
9690 addLine: addLine,
9691 addChild: addChild,
9692 incorporateLine: incorporateLine,
9693 finalize: finalize,
9694 processInlines: processInlines,
9695 closeUnmatchedBlocks: closeUnmatchedBlocks,
9696 parse: parse,
9697 options: options || {}
9698 };
9699 }
9700
9701 function Renderer() {}
9702
9703 /**
9704 * Walks the AST and calls member methods for each Node type.
9705 *
9706 * @param ast {Node} The root of the abstract syntax tree.
9707 */
9708 function render(ast) {
9709 var walker = ast.walker(),
9710 event,
9711 type;
9712
9713 this.buffer = "";
9714 this.lastOut = "\n";
9715 this.heading_count = 0;
9716
9717 while ((event = walker.next())) {
9718 type = event.node.type;
9719 if (this[type]) {
9720 this[type](event.node, event.entering);
9721 }
9722 }
9723 return this.buffer;
9724 }
9725
9726 /**
9727 * Concatenate a literal string to the buffer.
9728 *
9729 * @param str {String} The string to concatenate.
9730 */
9731 function lit(str) {
9732 this.buffer += str;
9733 this.lastOut = str;
9734 }
9735
9736 /**
9737 * Output a newline to the buffer.
9738 */
9739 function cr() {
9740 if (this.lastOut !== "\n") {
9741 this.lit("\n");
9742 }
9743 }
9744
9745 /**
9746 * Concatenate a string to the buffer possibly escaping the content.
9747 *
9748 * Concrete renderer implementations should override this method.
9749 *
9750 * @param str {String} The string to concatenate.
9751 */
9752 function out(str) {
9753 this.lit(str);
9754 }
9755
9756 /**
9757 * Escape a string for the target renderer.
9758 *
9759 * Abstract function that should be implemented by concrete
9760 * renderer implementations.
9761 *
9762 * @param str {String} The string to escape.
9763 */
9764 function esc(str) {
9765 return str;
9766 }
9767
9768 Renderer.prototype.render = render;
9769 Renderer.prototype.out = out;
9770 Renderer.prototype.lit = lit;
9771 Renderer.prototype.cr = cr;
9772 Renderer.prototype.esc = esc;
9773
9774 var reUnsafeProtocol = /^javascript:|vbscript:|file:|data:/i;
9775 var reSafeDataProtocol = /^data:image\/(?:png|gif|jpeg|webp)/i;
9776
9777 var potentiallyUnsafe = function(url) {
9778 return reUnsafeProtocol.test(url) && !reSafeDataProtocol.test(url);
9779 };
9780
9781 // Helper function to produce an HTML tag.
9782 function tag(name, attrs, selfclosing) {
9783 if (this.disableTags > 0) {
9784 return;
9785 }
9786 this.buffer += "<" + name;
9787 if (attrs && attrs.length > 0) {
9788 var i = 0;
9789 var attrib;
9790 while ((attrib = attrs[i]) !== undefined) {
9791 this.buffer += " " + attrib[0] + '="' + attrib[1] + '"';
9792 i++;
9793 }
9794 }
9795 if (selfclosing) {
9796 this.buffer += " /";
9797 }
9798 this.buffer += ">";
9799 this.lastOut = ">";
9800 }
9801
9802 function HtmlRenderer(options) {
9803 options = options || {};
9804 // by default, soft breaks are rendered as newlines in HTML
9805 options.softbreak = options.softbreak || "\n";
9806 // set to "<br />" to make them hard breaks
9807 // set to " " if you want to ignore line wrapping in source
9808 this.esc = options.esc || escapeXml;
9809 // escape html with a custom function
9810 // else use escapeXml
9811
9812 this.disableTags = 0;
9813 this.lastOut = "\n";
9814 this.options = options;
9815 }
9816
9817 /* Node methods */
9818
9819 function text$1(node) {
9820 this.out(node.literal);
9821 }
9822
9823 function softbreak() {
9824 this.lit(this.options.softbreak);
9825 }
9826
9827 function linebreak() {
9828 this.tag("br", [], true);
9829 this.cr();
9830 }
9831
9832 function link(node, entering) {
9833 var attrs = this.attrs(node);
9834 if (entering) {
9835 if (!(this.options.safe && potentiallyUnsafe(node.destination))) {
9836 attrs.push(["href", this.esc(node.destination)]);
9837 }
9838 if (node.title) {
9839 attrs.push(["title", this.esc(node.title)]);
9840 }
9841 this.tag("a", attrs);
9842 } else {
9843 this.tag("/a");
9844 }
9845 }
9846
9847 function image$1(node, entering) {
9848 if (entering) {
9849 if (this.disableTags === 0) {
9850 if (this.options.safe && potentiallyUnsafe(node.destination)) {
9851 this.lit('<img src="" alt="');
9852 } else {
9853 this.lit('<img src="' + this.esc(node.destination) + '" alt="');
9854 }
9855 }
9856 this.disableTags += 1;
9857 } else {
9858 this.disableTags -= 1;
9859 if (this.disableTags === 0) {
9860 if (node.title) {
9861 this.lit('" title="' + this.esc(node.title));
9862 }
9863 this.lit('" />');
9864 }
9865 }
9866 }
9867
9868 function emph(node, entering) {
9869 this.tag(entering ? "em" : "/em");
9870 }
9871
9872 function strong(node, entering) {
9873 this.tag(entering ? "strong" : "/strong");
9874 }
9875
9876 function paragraph(node, entering) {
9877 var grandparent = node.parent.parent,
9878 attrs = this.attrs(node);
9879 if (grandparent !== null && grandparent.type === "list") {
9880 if (grandparent.listTight) {
9881 return;
9882 }
9883 }
9884 if (entering) {
9885 this.cr();
9886 this.tag("p", attrs);
9887 } else {
9888 this.tag("/p");
9889 this.cr();
9890 }
9891 }
9892
9893 function heading(node, entering) {
9894 var tagname = "h" + node.level,
9895 attrs = this.attrs(node);
9896 if (entering) {
9897 if (node.level != 1) {
9898 attrs.push(["id", ":" + this.heading_count]);
9899 this.heading_count += 1;
9900 }
9901 this.cr();
9902 this.tag(tagname, attrs);
9903 } else {
9904 this.tag("/" + tagname);
9905 this.cr();
9906 }
9907 }
9908
9909 function code(node) {
9910 this.tag("code");
9911 this.out(node.literal);
9912 this.tag("/code");
9913 }
9914
9915 function code_block(node) {
9916 var info_words = node.info ? node.info.split(/\s+/) : [],
9917 attrs = this.attrs(node);
9918 if (info_words.length > 0 && info_words[0].length > 0) {
9919 attrs.push(["class", "language-" + this.esc(info_words[0])]);
9920 }
9921 this.cr();
9922 this.tag("pre");
9923 this.tag("code", attrs);
9924 this.out(node.literal);
9925 this.tag("/code");
9926 this.tag("/pre");
9927 this.cr();
9928 }
9929
9930 function thematic_break(node) {
9931 var attrs = this.attrs(node);
9932 this.cr();
9933 this.tag("hr", attrs, true);
9934 this.cr();
9935 }
9936
9937 function block_quote(node, entering) {
9938 var attrs = this.attrs(node);
9939 if (entering) {
9940 this.cr();
9941 this.tag("blockquote", attrs);
9942 this.cr();
9943 } else {
9944 this.cr();
9945 this.tag("/blockquote");
9946 this.cr();
9947 }
9948 }
9949
9950 function list(node, entering) {
9951 var tagname = node.listType === "bullet" ? "ul" : "ol",
9952 attrs = this.attrs(node);
9953
9954 if (entering) {
9955 var start = node.listStart;
9956 if (start !== null && start !== 1) {
9957 attrs.push(["start", start.toString()]);
9958 }
9959 this.cr();
9960 this.tag(tagname, attrs);
9961 this.cr();
9962 } else {
9963 this.cr();
9964 this.tag("/" + tagname);
9965 this.cr();
9966 }
9967 }
9968
9969 function item(node, entering) {
9970 var attrs = this.attrs(node);
9971 if (entering) {
9972 this.tag("li", attrs);
9973 } else {
9974 this.tag("/li");
9975 this.cr();
9976 }
9977 }
9978
9979 function html_inline(node) {
9980 if (this.options.safe) {
9981 this.lit("<!-- raw HTML omitted -->");
9982 } else {
9983 this.lit(node.literal);
9984 }
9985 }
9986
9987 function html_block(node) {
9988 this.cr();
9989 if (this.options.safe) {
9990 this.lit("<!-- raw HTML omitted -->");
9991 } else {
9992 this.lit(node.literal);
9993 }
9994 this.cr();
9995 }
9996
9997 function custom_inline(node, entering) {
9998 if (entering && node.onEnter) {
9999 this.lit(node.onEnter);
10000 } else if (!entering && node.onExit) {
10001 this.lit(node.onExit);
10002 }
10003 }
10004
10005 function custom_block(node, entering) {
10006 this.cr();
10007 if (entering && node.onEnter) {
10008 this.lit(node.onEnter);
10009 } else if (!entering && node.onExit) {
10010 this.lit(node.onExit);
10011 }
10012 this.cr();
10013 }
10014
10015 /* Helper methods */
10016
10017 function out$1(s) {
10018 this.lit(this.esc(s));
10019 }
10020
10021 function attrs(node) {
10022 var att = [];
10023 if (this.options.sourcepos) {
10024 var pos = node.sourcepos;
10025 if (pos) {
10026 att.push([
10027 "data-sourcepos",
10028 String(pos[0][0]) +
10029 ":" +
10030 String(pos[0][1]) +
10031 "-" +
10032 String(pos[1][0]) +
10033 ":" +
10034 String(pos[1][1])
10035 ]);
10036 }
10037 }
10038 return att;
10039 }
10040
10041 // quick browser-compatible inheritance
10042 HtmlRenderer.prototype = Object.create(Renderer.prototype);
10043
10044 HtmlRenderer.prototype.text = text$1;
10045 HtmlRenderer.prototype.html_inline = html_inline;
10046 HtmlRenderer.prototype.html_block = html_block;
10047 HtmlRenderer.prototype.softbreak = softbreak;
10048 HtmlRenderer.prototype.linebreak = linebreak;
10049 HtmlRenderer.prototype.link = link;
10050 HtmlRenderer.prototype.image = image$1;
10051 HtmlRenderer.prototype.emph = emph;
10052 HtmlRenderer.prototype.strong = strong;
10053 HtmlRenderer.prototype.paragraph = paragraph;
10054 HtmlRenderer.prototype.heading = heading;
10055 HtmlRenderer.prototype.code = code;
10056 HtmlRenderer.prototype.code_block = code_block;
10057 HtmlRenderer.prototype.thematic_break = thematic_break;
10058 HtmlRenderer.prototype.block_quote = block_quote;
10059 HtmlRenderer.prototype.list = list;
10060 HtmlRenderer.prototype.item = item;
10061 HtmlRenderer.prototype.custom_inline = custom_inline;
10062 HtmlRenderer.prototype.custom_block = custom_block;
10063
10064 HtmlRenderer.prototype.esc = escapeXml;
10065
10066 HtmlRenderer.prototype.out = out$1;
10067 HtmlRenderer.prototype.tag = tag;
10068 HtmlRenderer.prototype.attrs = attrs;
10069
10070 var reXMLTag = /\<[^>]*\>/;
10071
10072 function toTagName(s) {
10073 return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
10074 }
10075
10076 function XmlRenderer(options) {
10077 options = options || {};
10078
10079 this.disableTags = 0;
10080 this.lastOut = "\n";
10081
10082 this.indentLevel = 0;
10083 this.indent = " ";
10084
10085 this.esc = options.esc || escapeXml;
10086 // escape html with a custom function
10087 // else use escapeXml
10088
10089 this.options = options;
10090 }
10091
10092 function render$1(ast) {
10093 this.buffer = "";
10094
10095 var attrs;
10096 var tagname;
10097 var walker = ast.walker();
10098 var event, node, entering;
10099 var container;
10100 var selfClosing;
10101 var nodetype;
10102
10103 var options = this.options;
10104
10105 if (options.time) {
10106 console.time("rendering");
10107 }
10108
10109 this.buffer += '<?xml version="1.0" encoding="UTF-8"?>\n';
10110 this.buffer += '<!DOCTYPE document SYSTEM "CommonMark.dtd">\n';
10111
10112 while ((event = walker.next())) {
10113 entering = event.entering;
10114 node = event.node;
10115 nodetype = node.type;
10116
10117 container = node.isContainer;
10118
10119 selfClosing =
10120 nodetype === "thematic_break" ||
10121 nodetype === "linebreak" ||
10122 nodetype === "softbreak";
10123
10124 tagname = toTagName(nodetype);
10125
10126 if (entering) {
10127 attrs = [];
10128
10129 switch (nodetype) {
10130 case "document":
10131 attrs.push(["xmlns", "http://commonmark.org/xml/1.0"]);
10132 break;
10133 case "list":
10134 if (node.listType !== null) {
10135 attrs.push(["type", node.listType.toLowerCase()]);
10136 }
10137 if (node.listStart !== null) {
10138 attrs.push(["start", String(node.listStart)]);
10139 }
10140 if (node.listTight !== null) {
10141 attrs.push([
10142 "tight",
10143 node.listTight ? "true" : "false"
10144 ]);
10145 }
10146 var delim = node.listDelimiter;
10147 if (delim !== null) {
10148 var delimword = "";
10149 if (delim === ".") {
10150 delimword = "period";
10151 } else {
10152 delimword = "paren";
10153 }
10154 attrs.push(["delimiter", delimword]);
10155 }
10156 break;
10157 case "code_block":
10158 if (node.info) {
10159 attrs.push(["info", node.info]);
10160 }
10161 break;
10162 case "heading":
10163 attrs.push(["level", String(node.level)]);
10164 break;
10165 case "link":
10166 case "image":
10167 attrs.push(["destination", node.destination]);
10168 attrs.push(["title", node.title]);
10169 break;
10170 case "custom_inline":
10171 case "custom_block":
10172 attrs.push(["on_enter", node.onEnter]);
10173 attrs.push(["on_exit", node.onExit]);
10174 break;
10175 }
10176 if (options.sourcepos) {
10177 var pos = node.sourcepos;
10178 if (pos) {
10179 attrs.push([
10180 "sourcepos",
10181 String(pos[0][0]) +
10182 ":" +
10183 String(pos[0][1]) +
10184 "-" +
10185 String(pos[1][0]) +
10186 ":" +
10187 String(pos[1][1])
10188 ]);
10189 }
10190 }
10191
10192 this.cr();
10193 this.out(this.tag(tagname, attrs, selfClosing));
10194 if (container) {
10195 this.indentLevel += 1;
10196 } else if (!container && !selfClosing) {
10197 var lit = node.literal;
10198 if (lit) {
10199 this.out(this.esc(lit));
10200 }
10201 this.out(this.tag("/" + tagname));
10202 }
10203 } else {
10204 this.indentLevel -= 1;
10205 this.cr();
10206 this.out(this.tag("/" + tagname));
10207 }
10208 }
10209 if (options.time) {
10210 console.timeEnd("rendering");
10211 }
10212 this.buffer += "\n";
10213 return this.buffer;
10214 }
10215
10216 function out$2(s) {
10217 if (this.disableTags > 0) {
10218 this.buffer += s.replace(reXMLTag, "");
10219 } else {
10220 this.buffer += s;
10221 }
10222 this.lastOut = s;
10223 }
10224
10225 function cr$1() {
10226 if (this.lastOut !== "\n") {
10227 this.buffer += "\n";
10228 this.lastOut = "\n";
10229 for (var i = this.indentLevel; i > 0; i--) {
10230 this.buffer += this.indent;
10231 }
10232 }
10233 }
10234
10235 // Helper function to produce an XML tag.
10236 function tag$1(name, attrs, selfclosing) {
10237 var result = "<" + name;
10238 if (attrs && attrs.length > 0) {
10239 var i = 0;
10240 var attrib;
10241 while ((attrib = attrs[i]) !== undefined) {
10242 result += " " + attrib[0] + '="' + this.esc(attrib[1]) + '"';
10243 i++;
10244 }
10245 }
10246 if (selfclosing) {
10247 result += " /";
10248 }
10249 result += ">";
10250 return result;
10251 }
10252
10253 // quick browser-compatible inheritance
10254 XmlRenderer.prototype = Object.create(Renderer.prototype);
10255
10256 XmlRenderer.prototype.render = render$1;
10257 XmlRenderer.prototype.out = out$2;
10258 XmlRenderer.prototype.cr = cr$1;
10259 XmlRenderer.prototype.tag = tag$1;
10260 XmlRenderer.prototype.esc = escapeXml;
10261
10262 exports.HtmlRenderer = HtmlRenderer;
10263 exports.Node = Node;
10264 exports.Parser = Parser;
10265 exports.Renderer = Renderer;
10266 exports.XmlRenderer = XmlRenderer;
10267
10268 Object.defineProperty(exports, '__esModule', { value: true });
10269
10270})));
lib/docs/ziglexer.js deleted-2147
......@@ -1,2147 +0,0 @@
1'use strict';
2
3const Tag = {
4 whitespace: "whitespace",
5 invalid: "invalid",
6 identifier: "identifier",
7 string_literal: "string_literal",
8 multiline_string_literal_line: "multiline_string_literal_line",
9 char_literal: "char_literal",
10 eof: "eof",
11 builtin: "builtin",
12 number_literal: "number_literal",
13 doc_comment: "doc_comment",
14 container_doc_comment: "container_doc_comment",
15 line_comment: "line_comment",
16 invalid_periodasterisks: "invalid_periodasterisks",
17 bang: "bang",
18 pipe: "pipe",
19 pipe_pipe: "pipe_pipe",
20 pipe_equal: "pipe_equal",
21 equal: "equal",
22 equal_equal: "equal_equal",
23 equal_angle_bracket_right: "equal_angle_bracket_right",
24 bang_equal: "bang_equal",
25 l_paren: "l_paren",
26 r_paren: "r_paren",
27 semicolon: "semicolon",
28 percent: "percent",
29 percent_equal: "percent_equal",
30 l_brace: "l_brace",
31 r_brace: "r_brace",
32 l_bracket: "l_bracket",
33 r_bracket: "r_bracket",
34 period: "period",
35 period_asterisk: "period_asterisk",
36 ellipsis2: "ellipsis2",
37 ellipsis3: "ellipsis3",
38 caret: "caret",
39 caret_equal: "caret_equal",
40 plus: "plus",
41 plus_plus: "plus_plus",
42 plus_equal: "plus_equal",
43 plus_percent: "plus_percent",
44 plus_percent_equal: "plus_percent_equal",
45 plus_pipe: "plus_pipe",
46 plus_pipe_equal: "plus_pipe_equal",
47 minus: "minus",
48 minus_equal: "minus_equal",
49 minus_percent: "minus_percent",
50 minus_percent_equal: "minus_percent_equal",
51 minus_pipe: "minus_pipe",
52 minus_pipe_equal: "minus_pipe_equal",
53 asterisk: "asterisk",
54 asterisk_equal: "asterisk_equal",
55 asterisk_asterisk: "asterisk_asterisk",
56 asterisk_percent: "asterisk_percent",
57 asterisk_percent_equal: "asterisk_percent_equal",
58 asterisk_pipe: "asterisk_pipe",
59 asterisk_pipe_equal: "asterisk_pipe_equal",
60 arrow: "arrow",
61 colon: "colon",
62 slash: "slash",
63 slash_equal: "slash_equal",
64 comma: "comma",
65 ampersand: "ampersand",
66 ampersand_equal: "ampersand_equal",
67 question_mark: "question_mark",
68 angle_bracket_left: "angle_bracket_left",
69 angle_bracket_left_equal: "angle_bracket_left_equal",
70 angle_bracket_angle_bracket_left: "angle_bracket_angle_bracket_left",
71 angle_bracket_angle_bracket_left_equal: "angle_bracket_angle_bracket_left_equal",
72 angle_bracket_angle_bracket_left_pipe: "angle_bracket_angle_bracket_left_pipe",
73 angle_bracket_angle_bracket_left_pipe_equal: "angle_bracket_angle_bracket_left_pipe_equal",
74 angle_bracket_right: "angle_bracket_right",
75 angle_bracket_right_equal: "angle_bracket_right_equal",
76 angle_bracket_angle_bracket_right: "angle_bracket_angle_bracket_right",
77 angle_bracket_angle_bracket_right_equal: "angle_bracket_angle_bracket_right_equal",
78 tilde: "tilde",
79 keyword_addrspace: "keyword_addrspace",
80 keyword_align: "keyword_align",
81 keyword_allowzero: "keyword_allowzero",
82 keyword_and: "keyword_and",
83 keyword_anyframe: "keyword_anyframe",
84 keyword_anytype: "keyword_anytype",
85 keyword_asm: "keyword_asm",
86 keyword_async: "keyword_async",
87 keyword_await: "keyword_await",
88 keyword_break: "keyword_break",
89 keyword_callconv: "keyword_callconv",
90 keyword_catch: "keyword_catch",
91 keyword_comptime: "keyword_comptime",
92 keyword_const: "keyword_const",
93 keyword_continue: "keyword_continue",
94 keyword_defer: "keyword_defer",
95 keyword_else: "keyword_else",
96 keyword_enum: "keyword_enum",
97 keyword_errdefer: "keyword_errdefer",
98 keyword_error: "keyword_error",
99 keyword_export: "keyword_export",
100 keyword_extern: "keyword_extern",
101 keyword_fn: "keyword_fn",
102 keyword_for: "keyword_for",
103 keyword_if: "keyword_if",
104 keyword_inline: "keyword_inline",
105 keyword_noalias: "keyword_noalias",
106 keyword_noinline: "keyword_noinline",
107 keyword_nosuspend: "keyword_nosuspend",
108 keyword_opaque: "keyword_opaque",
109 keyword_or: "keyword_or",
110 keyword_orelse: "keyword_orelse",
111 keyword_packed: "keyword_packed",
112 keyword_pub: "keyword_pub",
113 keyword_resume: "keyword_resume",
114 keyword_return: "keyword_return",
115 keyword_linksection: "keyword_linksection",
116 keyword_struct: "keyword_struct",
117 keyword_suspend: "keyword_suspend",
118 keyword_switch: "keyword_switch",
119 keyword_test: "keyword_test",
120 keyword_threadlocal: "keyword_threadlocal",
121 keyword_try: "keyword_try",
122 keyword_union: "keyword_union",
123 keyword_unreachable: "keyword_unreachable",
124 keyword_usingnamespace: "keyword_usingnamespace",
125 keyword_var: "keyword_var",
126 keyword_volatile: "keyword_volatile",
127 keyword_while: "keyword_while"
128}
129
130const Tok = {
131 const: { src: "const", tag: Tag.keyword_const },
132 var: { src: "var", tag: Tag.keyword_var },
133 colon: { src: ":", tag: Tag.colon },
134 eql: { src: "=", tag: Tag.equals },
135 space: { src: " ", tag: Tag.whitespace },
136 tab: { src: " ", tag: Tag.whitespace },
137 enter: { src: "\n", tag: Tag.whitespace },
138 semi: { src: ";", tag: Tag.semicolon },
139 l_bracket: { src: "[", tag: Tag.l_bracket },
140 r_bracket: { src: "]", tag: Tag.r_bracket },
141 l_brace: { src: "{", tag: Tag.l_brace },
142 r_brace: { src: "}", tag: Tag.r_brace },
143 l_paren: { src: "(", tag: Tag.l_paren },
144 r_paren: { src: ")", tag: Tag.r_paren },
145 period: { src: ".", tag: Tag.period },
146 comma: { src: ",", tag: Tag.comma },
147 question_mark: { src: "?", tag: Tag.question_mark },
148 asterisk: { src: "*", tag: Tag.asterisk },
149 identifier: (name) => { return { src: name, tag: Tag.identifier } },
150};
151
152
153const State = {
154 start: 0,
155 identifier: 1,
156 builtin: 2,
157 string_literal: 3,
158 string_literal_backslash: 4,
159 multiline_string_literal_line: 5,
160 char_literal: 6,
161 char_literal_backslash: 7,
162 char_literal_hex_escape: 8,
163 char_literal_unicode_escape_saw_u: 9,
164 char_literal_unicode_escape: 10,
165 char_literal_unicode_invalid: 11,
166 char_literal_unicode: 12,
167 char_literal_end: 13,
168 backslash: 14,
169 equal: 15,
170 bang: 16,
171 pipe: 17,
172 minus: 18,
173 minus_percent: 19,
174 minus_pipe: 20,
175 asterisk: 21,
176 asterisk_percent: 22,
177 asterisk_pipe: 23,
178 slash: 24,
179 line_comment_start: 25,
180 line_comment: 26,
181 doc_comment_start: 27,
182 doc_comment: 28,
183 int: 29,
184 int_exponent: 30,
185 int_period: 31,
186 float: 32,
187 float_exponent: 33,
188 ampersand: 34,
189 caret: 35,
190 percent: 36,
191 plus: 37,
192 plus_percent: 38,
193 plus_pipe: 39,
194 angle_bracket_left: 40,
195 angle_bracket_angle_bracket_left: 41,
196 angle_bracket_angle_bracket_left_pipe: 42,
197 angle_bracket_right: 43,
198 angle_bracket_angle_bracket_right: 44,
199 period: 45,
200 period_2: 46,
201 period_asterisk: 47,
202 saw_at_sign: 48,
203 whitespace: 49,
204}
205
206const keywords = {
207 "addrspace": Tag.keyword_addrspace,
208 "align": Tag.keyword_align,
209 "allowzero": Tag.keyword_allowzero,
210 "and": Tag.keyword_and,
211 "anyframe": Tag.keyword_anyframe,
212 "anytype": Tag.keyword_anytype,
213 "asm": Tag.keyword_asm,
214 "async": Tag.keyword_async,
215 "await": Tag.keyword_await,
216 "break": Tag.keyword_break,
217 "callconv": Tag.keyword_callconv,
218 "catch": Tag.keyword_catch,
219 "comptime": Tag.keyword_comptime,
220 "const": Tag.keyword_const,
221 "continue": Tag.keyword_continue,
222 "defer": Tag.keyword_defer,
223 "else": Tag.keyword_else,
224 "enum": Tag.keyword_enum,
225 "errdefer": Tag.keyword_errdefer,
226 "error": Tag.keyword_error,
227 "export": Tag.keyword_export,
228 "extern": Tag.keyword_extern,
229 "fn": Tag.keyword_fn,
230 "for": Tag.keyword_for,
231 "if": Tag.keyword_if,
232 "inline": Tag.keyword_inline,
233 "noalias": Tag.keyword_noalias,
234 "noinline": Tag.keyword_noinline,
235 "nosuspend": Tag.keyword_nosuspend,
236 "opaque": Tag.keyword_opaque,
237 "or": Tag.keyword_or,
238 "orelse": Tag.keyword_orelse,
239 "packed": Tag.keyword_packed,
240 "pub": Tag.keyword_pub,
241 "resume": Tag.keyword_resume,
242 "return": Tag.keyword_return,
243 "linksection": Tag.keyword_linksection,
244 "struct": Tag.keyword_struct,
245 "suspend": Tag.keyword_suspend,
246 "switch": Tag.keyword_switch,
247 "test": Tag.keyword_test,
248 "threadlocal": Tag.keyword_threadlocal,
249 "try": Tag.keyword_try,
250 "union": Tag.keyword_union,
251 "unreachable": Tag.keyword_unreachable,
252 "usingnamespace": Tag.keyword_usingnamespace,
253 "var": Tag.keyword_var,
254 "volatile": Tag.keyword_volatile,
255 "while": Tag.keyword_while,
256};
257
258function make_token(tag, start, end) {
259 return {
260 tag: tag,
261 loc: {
262 start: start,
263 end: end
264 }
265 }
266
267}
268
269function dump_tokens(tokens, raw_source) {
270
271 //TODO: this is not very fast
272 function find_tag_key(tag) {
273 for (const [key, value] of Object.entries(Tag)) {
274 if (value == tag) return key;
275 }
276 }
277
278 for (let i = 0; i < tokens.length; i++) {
279 const tok = tokens[i];
280 const z = raw_source.substring(tok.loc.start, tok.loc.end).toLowerCase();
281 console.log(`${find_tag_key(tok.tag)} "${tok.tag}" '${z}'`)
282 }
283}
284
285function* Tokenizer(raw_source) {
286 let tokenizer = new InnerTokenizer(raw_source);
287 while (true) {
288 let t = tokenizer.next();
289 if (t.tag == Tag.eof)
290 return;
291
292 t.src = raw_source.slice(t.loc.start, t.loc.end);
293
294 yield t;
295 }
296
297}
298function InnerTokenizer(raw_source) {
299 this.index = 0;
300 this.flag = false;
301
302 this.seen_escape_digits = undefined;
303 this.remaining_code_units = undefined;
304
305 this.next = () => {
306 let state = State.start;
307
308 var result = {
309 tag: -1,
310 loc: {
311 start: this.index,
312 end: undefined,
313 },
314 src: undefined,
315 };
316
317 //having a while (true) loop seems like a bad idea the loop should never
318 //take more iterations than twice the length of the source code
319 const MAX_ITERATIONS = raw_source.length * 2;
320 let iterations = 0;
321
322 while (iterations <= MAX_ITERATIONS) {
323
324 if (this.flag) {
325 return make_token(Tag.eof, this.index - 2, this.index - 2);
326 }
327 iterations += 1; // avoid death loops
328
329 var c = raw_source[this.index];
330
331 if (c === undefined) {
332 c = ' '; // push the last token
333 this.flag = true;
334 }
335
336 switch (state) {
337 case State.start:
338 switch (c) {
339 case 0: {
340 if (this.index != raw_source.length) {
341 result.tag = Tag.invalid;
342 result.loc.start = this.index;
343 this.index += 1;
344 result.loc.end = this.index;
345 return result;
346 }
347 result.loc.end = this.index;
348 return result;
349 }
350 case ' ':
351 case '\n':
352 case '\t':
353 case '\r': {
354 state = State.whitespace;
355 result.tag = Tag.whitespace;
356 result.loc.start = this.index;
357 break;
358 }
359 case '"': {
360 state = State.string_literal;
361 result.tag = Tag.string_literal;
362 break;
363 }
364 case '\'': {
365 state = State.char_literal;
366 break;
367 }
368 case 'a':
369 case 'b':
370 case 'c':
371 case 'd':
372 case 'e':
373 case 'f':
374 case 'g':
375 case 'h':
376 case 'i':
377 case 'j':
378 case 'k':
379 case 'l':
380 case 'm':
381 case 'n':
382 case 'o':
383 case 'p':
384 case 'q':
385 case 'r':
386 case 's':
387 case 't':
388 case 'u':
389 case 'v':
390 case 'w':
391 case 'x':
392 case 'y':
393 case 'z':
394 case 'A':
395 case 'B':
396 case 'C':
397 case 'D':
398 case 'E':
399 case 'F':
400 case 'G':
401 case 'H':
402 case 'I':
403 case 'J':
404 case 'K':
405 case 'L':
406 case 'M':
407 case 'N':
408 case 'O':
409 case 'P':
410 case 'Q':
411 case 'R':
412 case 'S':
413 case 'T':
414 case 'U':
415 case 'V':
416 case 'W':
417 case 'X':
418 case 'Y':
419 case 'Z':
420 case '_': {
421 state = State.identifier;
422 result.tag = Tag.identifier;
423 break;
424 }
425 case '@': {
426 state = State.saw_at_sign;
427 break;
428 }
429 case '=': {
430 state = State.equal;
431 break;
432 }
433 case '!': {
434 state = State.bang;
435 break;
436 }
437 case '|': {
438 state = State.pipe;
439 break;
440 }
441 case '(': {
442 result.tag = Tag.l_paren;
443 this.index += 1;
444 result.loc.end = this.index;
445
446 return result;
447
448 }
449 case ')': {
450 result.tag = Tag.r_paren;
451 this.index += 1; result.loc.end = this.index;
452 return result;
453
454 }
455 case '[': {
456 result.tag = Tag.l_bracket;
457 this.index += 1; result.loc.end = this.index;
458 return result;
459
460 }
461 case ']': {
462 result.tag = Tag.r_bracket;
463 this.index += 1; result.loc.end = this.index;
464 return result;
465
466 }
467 case ';': {
468 result.tag = Tag.semicolon;
469 this.index += 1; result.loc.end = this.index;
470 return result;
471
472 }
473 case ',': {
474 result.tag = Tag.comma;
475 this.index += 1; result.loc.end = this.index;
476 return result;
477
478 }
479 case '?': {
480 result.tag = Tag.question_mark;
481 this.index += 1; result.loc.end = this.index;
482 return result;
483
484 }
485 case ':': {
486 result.tag = Tag.colon;
487 this.index += 1; result.loc.end = this.index;
488 return result;
489
490 }
491 case '%': {
492 state = State.percent; break;
493 }
494 case '*': {
495 state = State.asterisk; break;
496 }
497 case '+': {
498 state = State.plus; break;
499 }
500 case '<': {
501 state = State.angle_bracket_left; break;
502 }
503 case '>': {
504 state = State.angle_bracket_right; break;
505 }
506 case '^': {
507 state = State.caret; break;
508 }
509 case '\\': {
510 state = State.backslash;
511 result.tag = Tag.multiline_string_literal_line; break;
512 }
513 case '{': {
514 result.tag = Tag.l_brace;
515 this.index += 1; result.loc.end = this.index;
516 return result;
517
518 }
519 case '}': {
520 result.tag = Tag.r_brace;
521 this.index += 1; result.loc.end = this.index;
522 return result;
523
524 }
525 case '~': {
526 result.tag = Tag.tilde;
527 this.index += 1; result.loc.end = this.index;
528 return result;
529
530 }
531 case '.': {
532 state = State.period; break;
533 }
534 case '-': {
535 state = State.minus; break;
536 }
537 case '/': {
538 state = State.slash; break;
539 }
540 case '&': {
541 state = State.ampersand; break;
542 }
543 case '0':
544 case '1':
545 case '2':
546 case '3':
547 case '4':
548 case '5':
549 case '6':
550 case '7':
551 case '8':
552 case '9':
553 {
554 state = State.int;
555 result.tag = Tag.number_literal; break;
556 }
557 default: {
558 result.tag = Tag.invalid;
559 result.loc.end = this.index;
560 this.index += 1;
561 return result;
562 }
563 }
564 break;
565 case State.saw_at_sign:
566 switch (c) {
567 case '"': {
568 result.tag = Tag.identifier;
569 state = State.string_literal; break;
570 }
571 case 'a':
572 case 'b':
573 case 'c':
574 case 'd':
575 case 'e':
576 case 'f':
577 case 'g':
578 case 'h':
579 case 'i':
580 case 'j':
581 case 'k':
582 case 'l':
583 case 'm':
584 case 'n':
585 case 'o':
586 case 'p':
587 case 'q':
588 case 'r':
589 case 's':
590 case 't':
591 case 'u':
592 case 'v':
593 case 'w':
594 case 'x':
595 case 'y':
596 case 'z':
597 case 'A':
598 case 'B':
599 case 'C':
600 case 'D':
601 case 'E':
602 case 'F':
603 case 'G':
604 case 'H':
605 case 'I':
606 case 'J':
607 case 'K':
608 case 'L':
609 case 'M':
610 case 'N':
611 case 'O':
612 case 'P':
613 case 'Q':
614 case 'R':
615 case 'S':
616 case 'T':
617 case 'U':
618 case 'V':
619 case 'W':
620 case 'X':
621 case 'Y':
622 case 'Z':
623 case '_': {
624 state = State.builtin;
625 result.tag = Tag.builtin;
626 break;
627 }
628 default: {
629 result.tag = Tag.invalid;
630 result.loc.end = this.index;
631 return result;
632 }
633 }
634 break;
635 case State.ampersand:
636 switch (c) {
637 case '=': {
638 result.tag = Tag.ampersand_equal;
639 this.index += 1; result.loc.end = this.index;
640 return result;
641 }
642 default: {
643 result.tag = Tag.ampersand; result.loc.end = this.index;
644 return result;
645 }
646 }
647 break;
648 case State.asterisk: switch (c) {
649 case '=': {
650 result.tag = Tag.asterisk_equal;
651 this.index += 1; result.loc.end = this.index;
652 return result;
653 }
654 case '*': {
655 result.tag = Tag.asterisk_asterisk;
656 this.index += 1; result.loc.end = this.index;
657 return result;
658 }
659 case '%': {
660 state = State.asterisk_percent; break;
661 }
662 case '|': {
663 state = State.asterisk_pipe; break;
664 }
665 default: {
666 result.tag = Tag.asterisk;
667 result.loc.end = this.index;
668 return result;
669 }
670 }
671 break;
672 case State.asterisk_percent:
673 switch (c) {
674 case '=': {
675 result.tag = Tag.asterisk_percent_equal;
676 this.index += 1; result.loc.end = this.index;
677 return result;
678 }
679 default: {
680 result.tag = Tag.asterisk_percent;
681 result.loc.end = this.index;
682 return result;
683 }
684 }
685 break;
686 case State.asterisk_pipe:
687 switch (c) {
688 case '=': {
689 result.tag = Tag.asterisk_pipe_equal;
690 this.index += 1; result.loc.end = this.index;
691 return result;
692 }
693 default: {
694 result.tag = Tag.asterisk_pipe; result.loc.end = this.index;
695 return result;
696 }
697 }
698 break;
699 case State.percent:
700 switch (c) {
701 case '=': {
702 result.tag = Tag.percent_equal;
703 this.index += 1; result.loc.end = this.index;
704 return result;
705 }
706 default: {
707 result.tag = Tag.percent; result.loc.end = this.index;
708 return result;
709 }
710 }
711 break;
712 case State.plus:
713 switch (c) {
714 case '=': {
715 result.tag = Tag.plus_equal;
716 this.index += 1; result.loc.end = this.index;
717 return result;
718 }
719 case '+': {
720 result.tag = Tag.plus_plus;
721 this.index += 1; result.loc.end = this.index;
722 return result;
723 }
724 case '%': {
725 state = State.plus_percent; break;
726 }
727 case '|': {
728 state = State.plus_pipe; break;
729 }
730 default: {
731 result.tag = Tag.plus; result.loc.end = this.index;
732 return result;
733 }
734 }
735 break;
736 case State.plus_percent:
737 switch (c) {
738 case '=': {
739 result.tag = Tag.plus_percent_equal;
740 this.index += 1; result.loc.end = this.index;
741 return result;
742 }
743 default: {
744 result.tag = Tag.plus_percent; result.loc.end = this.index;
745 return result;
746 }
747 }
748 break;
749 case State.plus_pipe:
750 switch (c) {
751 case '=': {
752 result.tag = Tag.plus_pipe_equal;
753 this.index += 1; result.loc.end = this.index;
754 return result;
755 }
756 default: {
757 result.tag = Tag.plus_pipe; result.loc.end = this.index;
758 return result;
759 }
760 }
761 break;
762 case State.caret:
763 switch (c) {
764 case '=': {
765 result.tag = Tag.caret_equal;
766 this.index += 1; result.loc.end = this.index;
767 return result;
768 }
769 default: {
770 result.tag = Tag.caret; result.loc.end = this.index;
771 return result;
772 }
773 }
774 break;
775 case State.identifier:
776 switch (c) {
777 case 'a':
778 case 'b':
779 case 'c':
780 case 'd':
781 case 'e':
782 case 'f':
783 case 'g':
784 case 'h':
785 case 'i':
786 case 'j':
787 case 'k':
788 case 'l':
789 case 'm':
790 case 'n':
791 case 'o':
792 case 'p':
793 case 'q':
794 case 'r':
795 case 's':
796 case 't':
797 case 'u':
798 case 'v':
799 case 'w':
800 case 'x':
801 case 'y':
802 case 'z':
803 case 'A':
804 case 'B':
805 case 'C':
806 case 'D':
807 case 'E':
808 case 'F':
809 case 'G':
810 case 'H':
811 case 'I':
812 case 'J':
813 case 'K':
814 case 'L':
815 case 'M':
816 case 'N':
817 case 'O':
818 case 'P':
819 case 'Q':
820 case 'R':
821 case 'S':
822 case 'T':
823 case 'U':
824 case 'V':
825 case 'W':
826 case 'X':
827 case 'Y':
828 case 'Z':
829 case '_':
830 case '0':
831 case '1':
832 case '2':
833 case '3':
834 case '4':
835 case '5':
836 case '6':
837 case '7':
838 case '8':
839 case '9': break;
840 default: {
841 // if (Token.getKeyword(buffer[result.loc.start..this.index])) | tag | {
842 const z = raw_source.substring(result.loc.start, this.index);
843 if (z in keywords) {
844 result.tag = keywords[z];
845 }
846 result.loc.end = this.index;
847 return result;
848 }
849
850
851 }
852 break;
853 case State.builtin: switch (c) {
854 case 'a':
855 case 'b':
856 case 'c':
857 case 'd':
858 case 'e':
859 case 'f':
860 case 'g':
861 case 'h':
862 case 'i':
863 case 'j':
864 case 'k':
865 case 'l':
866 case 'm':
867 case 'n':
868 case 'o':
869 case 'p':
870 case 'q':
871 case 'r':
872 case 's':
873 case 't':
874 case 'u':
875 case 'v':
876 case 'w':
877 case 'x':
878 case 'y':
879 case 'z':
880 case 'A':
881 case 'B':
882 case 'C':
883 case 'D':
884 case 'E':
885 case 'F':
886 case 'G':
887 case 'H':
888 case 'I':
889 case 'J':
890 case 'K':
891 case 'L':
892 case 'M':
893 case 'N':
894 case 'O':
895 case 'P':
896 case 'Q':
897 case 'R':
898 case 'S':
899 case 'T':
900 case 'U':
901 case 'V':
902 case 'W':
903 case 'X':
904 case 'Y':
905 case 'Z':
906 case '_':
907 case '0':
908 case '1':
909 case '2':
910 case '3':
911 case '4':
912 case '5':
913 case '6':
914 case '7':
915 case '8':
916 case '9': break;
917 default: result.loc.end = this.index;
918 return result;
919 }
920 break;
921 case State.backslash:
922 switch (c) {
923 case '\\': {
924 state = State.multiline_string_literal_line;
925 break;
926 }
927 default: {
928 result.tag = Tag.invalid;
929 result.loc.end = this.index;
930 return result;
931 }
932 }
933 break;
934 case State.string_literal:
935 switch (c) {
936 case '\\': {
937 state = State.string_literal_backslash; break;
938 }
939 case '"': {
940 this.index += 1;
941 result.loc.end = this.index;
942
943 return result;
944 }
945 case 0: {
946 //TODO: PORT
947 // if (this.index == buffer.len) {
948 // result.tag = .invalid;
949 // break;
950 // } else {
951 // checkLiteralCharacter();
952 // }
953 result.loc.end = this.index;
954 return result;
955 }
956 case '\n': {
957 result.tag = Tag.invalid;
958 result.loc.end = this.index;
959 return result;
960 }
961 //TODO: PORT
962 //default: checkLiteralCharacter(),
963 }
964 break;
965 case State.string_literal_backslash:
966 switch (c) {
967 case 0:
968 case '\n': {
969 result.tag = Tag.invalid;
970 result.loc.end = this.index;
971 return result;
972 }
973 default: {
974 state = State.string_literal; break;
975 }
976 }
977 break;
978 case State.char_literal: switch (c) {
979 case 0: {
980 result.tag = Tag.invalid;
981 result.loc.end = this.index;
982 return result;
983 }
984 case '\\': {
985 state = State.char_literal_backslash;
986 break;
987 }
988 //TODO: PORT
989 // '\'', 0x80...0xbf, 0xf8...0xff => {
990 // result.tag = .invalid;
991 // break;
992 // },
993 // 0xc0...0xdf => { // 110xxxxx
994 // this.remaining_code_units = 1;
995 // state = .char_literal_unicode;
996 // },
997 // 0xe0...0xef => { // 1110xxxx
998 // this.remaining_code_units = 2;
999 // state = .char_literal_unicode;
1000 // },
1001 // 0xf0...0xf7 => { // 11110xxx
1002 // this.remaining_code_units = 3;
1003 // state = .char_literal_unicode;
1004 // },
1005
1006 // case 0x80:
1007 // case 0x81:
1008 // case 0x82:
1009 // case 0x83:
1010 // case 0x84:
1011 // case 0x85:
1012 // case 0x86:
1013 // case 0x87:
1014 // case 0x88:
1015 // case 0x89:
1016 // case 0x8a:
1017 // case 0x8b:
1018 // case 0x8c:
1019 // case 0x8d:
1020 // case 0x8e:
1021 // case 0x8f:
1022 // case 0x90:
1023 // case 0x91:
1024 // case 0x92:
1025 // case 0x93:
1026 // case 0x94:
1027 // case 0x95:
1028 // case 0x96:
1029 // case 0x97:
1030 // case 0x98:
1031 // case 0x99:
1032 // case 0x9a:
1033 // case 0x9b:
1034 // case 0x9c:
1035 // case 0x9d:
1036 // case 0x9e:
1037 // case 0x9f:
1038 // case 0xa0:
1039 // case 0xa1:
1040 // case 0xa2:
1041 // case 0xa3:
1042 // case 0xa4:
1043 // case 0xa5:
1044 // case 0xa6:
1045 // case 0xa7:
1046 // case 0xa8:
1047 // case 0xa9:
1048 // case 0xaa:
1049 // case 0xab:
1050 // case 0xac:
1051 // case 0xad:
1052 // case 0xae:
1053 // case 0xaf:
1054 // case 0xb0:
1055 // case 0xb1:
1056 // case 0xb2:
1057 // case 0xb3:
1058 // case 0xb4:
1059 // case 0xb5:
1060 // case 0xb6:
1061 // case 0xb7:
1062 // case 0xb8:
1063 // case 0xb9:
1064 // case 0xba:
1065 // case 0xbb:
1066 // case 0xbc:
1067 // case 0xbd:
1068 // case 0xbe:
1069 // case 0xbf:
1070 // case 0xf8:
1071 // case 0xf9:
1072 // case 0xfa:
1073 // case 0xfb:
1074 // case 0xfc:
1075 // case 0xfd:
1076 // case 0xfe:
1077 // case 0xff:
1078 // result.tag = .invalid;
1079 // break;
1080 // case 0xc0:
1081 // case 0xc1:
1082 // case 0xc2:
1083 // case 0xc3:
1084 // case 0xc4:
1085 // case 0xc5:
1086 // case 0xc6:
1087 // case 0xc7:
1088 // case 0xc8:
1089 // case 0xc9:
1090 // case 0xca:
1091 // case 0xcb:
1092 // case 0xcc:
1093 // case 0xcd:
1094 // case 0xce:
1095 // case 0xcf:
1096 // case 0xd0:
1097 // case 0xd1:
1098 // case 0xd2:
1099 // case 0xd3:
1100 // case 0xd4:
1101 // case 0xd5:
1102 // case 0xd6:
1103 // case 0xd7:
1104 // case 0xd8:
1105 // case 0xd9:
1106 // case 0xda:
1107 // case 0xdb:
1108 // case 0xdc:
1109 // case 0xdd:
1110 // case 0xde:
1111 // case 0xdf:
1112 // this.remaining_code_units = 1;
1113 // state = .char_literal_unicode;
1114 // case 0xe0:
1115 // case 0xe1:
1116 // case 0xe2:
1117 // case 0xe3:
1118 // case 0xe4:
1119 // case 0xe5:
1120 // case 0xe6:
1121 // case 0xe7:
1122 // case 0xe8:
1123 // case 0xe9:
1124 // case 0xea:
1125 // case 0xeb:
1126 // case 0xec:
1127 // case 0xed:
1128 // case 0xee:
1129 // case 0xef:
1130 // this.remaining_code_units = 2;
1131 // state = .char_literal_unicode;
1132 // case 0xf0:
1133 // case 0xf1:
1134 // case 0xf2:
1135 // case 0xf3:
1136 // case 0xf4:
1137 // case 0xf5:
1138 // case 0xf6:
1139 // case 0xf7:
1140 // this.remaining_code_units = 3;
1141 // state = .char_literal_unicode;
1142
1143 case '\n': {
1144 result.tag = Tag.invalid;
1145 result.loc.end = this.index;
1146 return result;
1147 }
1148 default: {
1149 state = State.char_literal_end; break;
1150 }
1151 }
1152 break;
1153 case State.char_literal_backslash:
1154 switch (c) {
1155 case 0:
1156 case '\n': {
1157 result.tag = Tag.invalid;
1158 result.loc.end = this.index;
1159 return result;
1160 }
1161 case 'x': {
1162 state = State.char_literal_hex_escape;
1163 this.seen_escape_digits = 0; break;
1164 }
1165 case 'u': {
1166 state = State.char_literal_unicode_escape_saw_u; break;
1167 }
1168 default: {
1169 state = State.char_literal_end; break;
1170 }
1171 }
1172 break;
1173 case State.char_literal_hex_escape:
1174 switch (c) {
1175 case '0':
1176 case '1':
1177 case '2':
1178 case '3':
1179 case '4':
1180 case '5':
1181 case '6':
1182 case '7':
1183 case '8':
1184 case '9':
1185 case 'a':
1186 case 'b':
1187 case 'c':
1188 case 'd':
1189 case 'e':
1190 case 'f':
1191 case 'A':
1192 case 'B':
1193 case 'C':
1194 case 'D':
1195 case 'E':
1196 case 'F': {
1197 this.seen_escape_digits += 1;
1198 if (this.seen_escape_digits == 2) {
1199 state = State.char_literal_end;
1200 } break;
1201 }
1202 default: {
1203 result.tag = Tag.invalid;
1204 esult.loc.end = this.index;
1205 return result;
1206 }
1207 }
1208 break;
1209 case State.char_literal_unicode_escape_saw_u:
1210 switch (c) {
1211 case 0: {
1212 result.tag = Tag.invalid;
1213 result.loc.end = this.index;
1214 return result;
1215 }
1216 case '{': {
1217 state = State.char_literal_unicode_escape; break;
1218 }
1219 default: {
1220 result.tag = Tag.invalid;
1221 state = State.char_literal_unicode_invalid; break;
1222 }
1223 }
1224 break;
1225 case State.char_literal_unicode_escape:
1226 switch (c) {
1227 case 0: {
1228 result.tag = Tag.invalid;
1229 result.loc.end = this.index;
1230 return result;
1231 }
1232 case '0':
1233 case '1':
1234 case '2':
1235 case '3':
1236 case '4':
1237 case '5':
1238 case '6':
1239 case '7':
1240 case '8':
1241 case '9':
1242 case 'a':
1243 case 'b':
1244 case 'c':
1245 case 'd':
1246 case 'e':
1247 case 'f':
1248 case 'A':
1249 case 'B':
1250 case 'C':
1251 case 'D':
1252 case 'E':
1253 case 'F': break;
1254 case '}': {
1255 state = State.char_literal_end; // too many/few digits handled later
1256 break;
1257 }
1258 default: {
1259 result.tag = Tag.invalid;
1260 state = State.char_literal_unicode_invalid; break;
1261 }
1262 }
1263 break;
1264 case State.char_literal_unicode_invalid:
1265 switch (c) {
1266 // Keep consuming characters until an obvious stopping point.
1267 // This consolidates e.g. `u{0ab1Q}` into a single invalid token
1268 // instead of creating the tokens `u{0ab1`, `Q`, `}`
1269 case 'a':
1270 case 'b':
1271 case 'c':
1272 case 'd':
1273 case 'e':
1274 case 'f':
1275 case 'g':
1276 case 'h':
1277 case 'i':
1278 case 'j':
1279 case 'k':
1280 case 'l':
1281 case 'm':
1282 case 'n':
1283 case 'o':
1284 case 'p':
1285 case 'q':
1286 case 'r':
1287 case 's':
1288 case 't':
1289 case 'u':
1290 case 'v':
1291 case 'w':
1292 case 'x':
1293 case 'y':
1294 case 'z':
1295 case 'A':
1296 case 'B':
1297 case 'C':
1298 case 'D':
1299 case 'E':
1300 case 'F':
1301 case 'G':
1302 case 'H':
1303 case 'I':
1304 case 'J':
1305 case 'K':
1306 case 'L':
1307 case 'M':
1308 case 'N':
1309 case 'O':
1310 case 'P':
1311 case 'Q':
1312 case 'R':
1313 case 'S':
1314 case 'T':
1315 case 'U':
1316 case 'V':
1317 case 'W':
1318 case 'X':
1319 case 'Y':
1320 case 'Z':
1321 case '}':
1322 case '0':
1323 case '1':
1324 case '2':
1325 case '3':
1326 case '4':
1327 case '5':
1328 case '6':
1329 case '7':
1330 case '8':
1331 case '9': break;
1332 default: break;
1333 }
1334 break;
1335 case State.char_literal_end:
1336 switch (c) {
1337 case '\'': {
1338 result.tag = Tag.char_literal;
1339 this.index += 1;
1340 result.loc.end = this.index;
1341 return result;
1342 }
1343 default: {
1344 result.tag = Tag.invalid;
1345 result.loc.end = this.index;
1346 return result;
1347 }
1348 }
1349 break;
1350 case State.char_literal_unicode:
1351 switch (c) {
1352 // 0x80...0xbf => {
1353 // this.remaining_code_units -= 1;
1354 // if (this.remaining_code_units == 0) {
1355 // state = .char_literal_end;
1356 // }
1357 // },
1358 default: {
1359 result.tag = Tag.invalid;
1360 result.loc.end = this.index;
1361 return result;
1362 }
1363 }
1364 break;
1365 case State.multiline_string_literal_line:
1366 switch (c) {
1367 case 0:
1368 result.loc.end = this.index;
1369 return result;
1370 case '\n': {
1371
1372 this.index += 1;
1373 result.loc.end = this.index;
1374 return result;
1375 }
1376 case '\t': break;
1377 //TODO: PORT
1378 //default: checkLiteralCharacter(),
1379
1380 }
1381 break;
1382 case State.bang:
1383 switch (c) {
1384 case '=': {
1385 result.tag = Tag.bang_equal;
1386 this.index += 1;
1387 result.loc.end = this.index;
1388 return result;
1389 }
1390 default: {
1391 result.tag = Tag.bang;
1392 result.loc.end = this.index;
1393 return result;
1394 }
1395 }
1396 break;
1397 case State.pipe:
1398 switch (c) {
1399 case '=': {
1400 result.tag = Tag.pipe_equal;
1401 this.index += 1;
1402 result.loc.end = this.index;
1403 return result;
1404 }
1405 case '|': {
1406 result.tag = Tag.pipe_pipe;
1407 this.index += 1;
1408 result.loc.end = this.index;
1409 return result;
1410 }
1411 default: {
1412 result.tag = Tag.pipe;
1413 result.loc.end = this.index;
1414 return result;
1415 }
1416 }
1417 break;
1418 case State.equal: switch (c) {
1419 case '=': {
1420 result.tag = Tag.equal_equal;
1421 this.index += 1;
1422 result.loc.end = this.index;
1423 return result;
1424 }
1425 case '>': {
1426 result.tag = Tag.equal_angle_bracket_right;
1427 this.index += 1;
1428 result.loc.end = this.index;
1429 return result;
1430 }
1431 default: {
1432 result.tag = Tag.equal;
1433 result.loc.end = this.index;
1434 return result;
1435 }
1436 }
1437 break;
1438 case State.minus: switch (c) {
1439 case '>': {
1440 result.tag = Tag.arrow;
1441 this.index += 1;
1442 result.loc.end = this.index;
1443 return result;
1444 }
1445 case '=': {
1446 result.tag = Tag.minus_equal;
1447 this.index += 1;
1448 result.loc.end = this.index;
1449 return result;
1450 }
1451 case '%': {
1452 state = State.minus_percent; break;
1453 }
1454 case '|': {
1455 state = State.minus_pipe; break;
1456 }
1457 default: {
1458 result.tag = Tag.minus;
1459 result.loc.end = this.index;
1460 return result;
1461 }
1462 }
1463 break;
1464 case State.minus_percent:
1465 switch (c) {
1466 case '=': {
1467 result.tag = Tag.minus_percent_equal;
1468 this.index += 1;
1469 result.loc.end = this.index;
1470 return result;
1471 }
1472 default: {
1473 result.tag = Tag.minus_percent;
1474 result.loc.end = this.index;
1475 return result;
1476 }
1477 }
1478 break;
1479 case State.minus_pipe:
1480 switch (c) {
1481 case '=': {
1482 result.tag = Tag.minus_pipe_equal;
1483 this.index += 1;
1484 result.loc.end = this.index;
1485 return result;
1486 }
1487 default: {
1488 result.tag = Tag.minus_pipe;
1489 result.loc.end = this.index;
1490 return result;
1491 }
1492 }
1493 break;
1494 case State.angle_bracket_left:
1495 switch (c) {
1496 case '<': {
1497 state = State.angle_bracket_angle_bracket_left; break;
1498 }
1499 case '=': {
1500 result.tag = Tag.angle_bracket_left_equal;
1501 this.index += 1;
1502 result.loc.end = this.index;
1503 return result;
1504 }
1505 default: {
1506 result.tag = Tag.angle_bracket_left;
1507 result.loc.end = this.index;
1508 return result;
1509 }
1510 }
1511 break;
1512 case State.angle_bracket_angle_bracket_left:
1513 switch (c) {
1514 case '=': {
1515 result.tag = Tag.angle_bracket_angle_bracket_left_equal;
1516 this.index += 1;
1517 result.loc.end = this.index;
1518 return result;
1519 }
1520 case '|': {
1521 state = State.angle_bracket_angle_bracket_left_pipe;
1522 }
1523 default: {
1524 result.tag = Tag.angle_bracket_angle_bracket_left;
1525 result.loc.end = this.index;
1526 return result;
1527 }
1528 }
1529 break;
1530 case State.angle_bracket_angle_bracket_left_pipe:
1531 switch (c) {
1532 case '=': {
1533 result.tag = Tag.angle_bracket_angle_bracket_left_pipe_equal;
1534 this.index += 1;
1535 result.loc.end = this.index;
1536 return result;
1537 }
1538 default: {
1539 result.tag = Tag.angle_bracket_angle_bracket_left_pipe;
1540 result.loc.end = this.index;
1541 return result;
1542 }
1543 }
1544 break;
1545 case State.angle_bracket_right:
1546 switch (c) {
1547 case '>': {
1548 state = State.angle_bracket_angle_bracket_right; break;
1549 }
1550 case '=': {
1551 result.tag = Tag.angle_bracket_right_equal;
1552 this.index += 1;
1553 result.loc.end = this.index;
1554 return result;
1555 }
1556 default: {
1557 result.tag = Tag.angle_bracket_right;
1558 result.loc.end = this.index;
1559 return result;
1560 }
1561 }
1562 break;
1563 case State.angle_bracket_angle_bracket_right:
1564 switch (c) {
1565 case '=': {
1566 result.tag = Tag.angle_bracket_angle_bracket_right_equal;
1567 this.index += 1;
1568 result.loc.end = this.index;
1569 return result;
1570 }
1571 default: {
1572 result.tag = Tag.angle_bracket_angle_bracket_right;
1573 result.loc.end = this.index;
1574 return result;
1575 }
1576 }
1577 break;
1578 case State.period:
1579 switch (c) {
1580 case '.': {
1581 state = State.period_2; break;
1582 }
1583 case '*': {
1584 state = State.period_asterisk; break;
1585 }
1586 default: {
1587 result.tag = Tag.period;
1588 result.loc.end = this.index;
1589 return result;
1590 }
1591 }
1592 break;
1593 case State.period_2:
1594 switch (c) {
1595 case '.': {
1596 result.tag = Tag.ellipsis3;
1597 this.index += 1;
1598 result.loc.end = this.index;
1599 return result;
1600 }
1601 default: {
1602 result.tag = Tag.ellipsis2;
1603 result.loc.end = this.index;
1604 return result;
1605 }
1606 }
1607 break;
1608 case State.period_asterisk:
1609 switch (c) {
1610 case '*': {
1611 result.tag = Tag.invalid_periodasterisks;
1612 result.loc.end = this.index;
1613 return result;
1614 }
1615 default: {
1616 result.tag = Tag.period_asterisk;
1617 result.loc.end = this.index;
1618 return result;
1619 }
1620 }
1621 break;
1622 case State.slash:
1623 switch (c) {
1624 case '/': {
1625 state = State.line_comment_start;
1626 break;
1627 }
1628 case '=': {
1629 result.tag = Tag.slash_equal;
1630 this.index += 1;
1631 result.loc.end = this.index;
1632 return result;
1633 }
1634 default: {
1635 result.tag = Tag.slash;
1636 result.loc.end = this.index;
1637 return result;
1638 }
1639 } break;
1640 case State.line_comment_start:
1641 switch (c) {
1642 case 0: {
1643 if (this.index != raw_source.length) {
1644 result.tag = Tag.invalid;
1645 this.index += 1;
1646 }
1647 result.loc.end = this.index;
1648 return result;
1649 }
1650 case '/': {
1651 state = State.doc_comment_start; break;
1652 }
1653 case '!': {
1654 result.tag = Tag.container_doc_comment;
1655 state = State.doc_comment; break;
1656 }
1657 case '\n': {
1658 state = State.start;
1659 result.loc.start = this.index + 1; break;
1660 }
1661 case '\t':
1662 state = State.line_comment; break;
1663 default: {
1664 state = State.line_comment;
1665 //TODO: PORT
1666 //checkLiteralCharacter();
1667 break;
1668 }
1669 } break;
1670 case State.doc_comment_start:
1671 switch (c) {
1672 case '/': {
1673 state = State.line_comment; break;
1674 }
1675 case 0:
1676 case '\n':
1677 {
1678 result.tag = Tag.doc_comment;
1679 result.loc.end = this.index;
1680 return result;
1681 }
1682 case '\t': {
1683 state = State.doc_comment;
1684 result.tag = Tag.doc_comment; break;
1685 }
1686 default: {
1687 state = State.doc_comment;
1688 result.tag = Tag.doc_comment;
1689 //TODO: PORT
1690 //checkLiteralCharacter();
1691 break;
1692 }
1693 } break;
1694 case State.line_comment:
1695 switch (c) {
1696 case 0: {
1697 if (this.index != raw_source.length) {
1698 result.tag = Tag.invalid;
1699 this.index += 1;
1700 }
1701 result.loc.end = this.index;
1702 return result;
1703 }
1704 case '\n': {
1705 result.tag = Tag.line_comment;
1706 result.loc.end = this.index;
1707 return result;
1708 }
1709 case '\t': break;
1710 //TODO: PORT
1711 //default: checkLiteralCharacter(),
1712 } break;
1713 case State.doc_comment:
1714 switch (c) {
1715 case 0://
1716 case '\n':
1717 result.loc.end = this.index;
1718 return result;
1719 case '\t': break;
1720 //TODOL PORT
1721 // default: checkLiteralCharacter(),
1722 default:
1723 break;
1724 } break;
1725 case State.int:
1726 switch (c) {
1727 case '.':
1728 state = State.int_period;
1729 break;
1730 case '_':
1731 case 'a':
1732 case 'b':
1733 case 'c':
1734 case 'd':
1735 case 'f':
1736 case 'g':
1737 case 'h':
1738 case 'i':
1739 case 'j':
1740 case 'k':
1741 case 'l':
1742 case 'm':
1743 case 'n':
1744 case 'o':
1745 case 'q':
1746 case 'r':
1747 case 's':
1748 case 't':
1749 case 'u':
1750 case 'v':
1751 case 'w':
1752 case 'x':
1753 case 'y':
1754 case 'z':
1755 case 'A':
1756 case 'B':
1757 case 'C':
1758 case 'D':
1759 case 'F':
1760 case 'G':
1761 case 'H':
1762 case 'I':
1763 case 'J':
1764 case 'K':
1765 case 'L':
1766 case 'M':
1767 case 'N':
1768 case 'O':
1769 case 'Q':
1770 case 'R':
1771 case 'S':
1772 case 'T':
1773 case 'U':
1774 case 'V':
1775 case 'W':
1776 case 'X':
1777 case 'Y':
1778 case 'Z':
1779 case '0':
1780 case '1':
1781 case '2':
1782 case '3':
1783 case '4':
1784 case '5':
1785 case '6':
1786 case '7':
1787 case '8':
1788 case '9':
1789 break;
1790 case 'e':
1791 case 'E':
1792 case 'p':
1793 case 'P':
1794 state = State.int_exponent;
1795 break;
1796 default: result.loc.end = this.index;
1797 return result;
1798 } break;
1799 case State.int_exponent:
1800 switch (c) {
1801 case '-':
1802 case '+':
1803 {
1804 ``
1805 state = State.float; break;
1806 }
1807 default: {
1808 this.index -= 1;
1809 state = State.int; break;
1810 }
1811 } break;
1812 case State.int_period: switch (c) {
1813 case '_':
1814 case 'a':
1815 case 'b':
1816 case 'c':
1817 case 'd':
1818 case 'f':
1819 case 'g':
1820 case 'h':
1821 case 'i':
1822 case 'j':
1823 case 'k':
1824 case 'l':
1825 case 'm':
1826 case 'n':
1827 case 'o':
1828 case 'q':
1829 case 'r':
1830 case 's':
1831 case 't':
1832 case 'u':
1833 case 'v':
1834 case 'w':
1835 case 'x':
1836 case 'y':
1837 case 'z':
1838 case 'A':
1839 case 'B':
1840 case 'C':
1841 case 'D':
1842 case 'F':
1843 case 'G':
1844 case 'H':
1845 case 'I':
1846 case 'J':
1847 case 'K':
1848 case 'L':
1849 case 'M':
1850 case 'N':
1851 case 'O':
1852 case 'Q':
1853 case 'R':
1854 case 'S':
1855 case 'T':
1856 case 'U':
1857 case 'V':
1858 case 'W':
1859 case 'X':
1860 case 'Y':
1861 case 'Z':
1862 case '0':
1863 case '1':
1864 case '2':
1865 case '3':
1866 case '4':
1867 case '5':
1868 case '6':
1869 case '7':
1870 case '8':
1871 case '9': {
1872 state = State.float; break;
1873 }
1874 case 'e':
1875 case 'E':
1876 case 'p':
1877 case 'P':
1878 state = State.float_exponent; break;
1879 default: {
1880 this.index -= 1;
1881 result.loc.end = this.index;
1882 return result;
1883 }
1884 } break;
1885 case State.float:
1886 switch (c) {
1887 case '_':
1888 case 'a':
1889 case 'b':
1890 case 'c':
1891 case 'd':
1892 case 'f':
1893 case 'g':
1894 case 'h':
1895 case 'i':
1896 case 'j':
1897 case 'k':
1898 case 'l':
1899 case 'm':
1900 case 'n':
1901 case 'o':
1902 case 'q':
1903 case 'r':
1904 case 's':
1905 case 't':
1906 case 'u':
1907 case 'v':
1908 case 'w':
1909 case 'x':
1910 case 'y':
1911 case 'z':
1912 case 'A':
1913 case 'B':
1914 case 'C':
1915 case 'D':
1916 case 'F':
1917 case 'G':
1918 case 'H':
1919 case 'I':
1920 case 'J':
1921 case 'K':
1922 case 'L':
1923 case 'M':
1924 case 'N':
1925 case 'O':
1926 case 'Q':
1927 case 'R':
1928 case 'S':
1929 case 'T':
1930 case 'U':
1931 case 'V':
1932 case 'W':
1933 case 'X':
1934 case 'Y':
1935 case 'Z':
1936 case '0':
1937 case '1':
1938 case '2':
1939 case '3':
1940 case '4':
1941 case '5':
1942 case '6':
1943 case '7':
1944 case '8':
1945 case '9':
1946 break;
1947
1948 case 'e':
1949 case 'E':
1950 case 'p':
1951 case 'P':
1952 state = State.float_exponent; break;
1953 default: result.loc.end = this.index;
1954 return result;
1955 } break;
1956 case State.float_exponent:
1957 switch (c) {
1958 case '-':
1959 case '+':
1960 state = State.float; break;
1961 default: {
1962 this.index -= 1;
1963 state = State.float; break;
1964 }
1965 }
1966 break;
1967
1968 case State.whitespace:
1969 switch(c) {
1970 case ' ':
1971 case '\n':
1972 case '\t':
1973 case '\r': {
1974 break;
1975 }
1976 default: {
1977 result.loc.end = this.index;
1978 return result;
1979 }
1980 }
1981 }
1982 this.index += 1;
1983 }
1984
1985 //TODO: PORT
1986 // if (result.tag == Tag.eof) {
1987 // if (pending_invalid_token) | token | {
1988 // pending_invalid_token = null;
1989 // return token;
1990 // }
1991 // result.loc.start = sindex;
1992 // }
1993
1994 result.loc.end = this.index;
1995 return result;
1996
1997 }
1998}
1999
2000
2001const builtin_types = [
2002 "f16", "f32", "f64", "f80", "f128",
2003 "c_longdouble", "c_short", "c_ushort", "c_int", "c_uint",
2004 "c_long", "c_ulong", "c_longlong", "c_ulonglong", "c_char",
2005 "anyopaque", "void", "bool", "isize", "usize",
2006 "noreturn", "type", "anyerror", "comptime_int", "comptime_float",
2007];
2008
2009function isSimpleType(typeName) {
2010 return builtin_types.includes(typeName) || isIntType(typeName);
2011}
2012
2013function isIntType(typeName) {
2014 if (typeName[0] != 'u' && typeName[0] != 'i') return false;
2015 let i = 1;
2016 if (i == typeName.length) return false;
2017 for (; i < typeName.length; i += 1) {
2018 if (typeName[i] < '0' || typeName[i] > '9') return false;
2019 }
2020 return true;
2021}
2022
2023function isSpecialIndentifier(identifier) {
2024 return ["null", "true", "false", ,"undefined"].includes(identifier);
2025}
2026
2027//const fs = require('fs');
2028//const src = fs.readFileSync("../std/c.zig", 'utf8');
2029//console.log(generate_html_for_src(src));
2030
2031
2032// gist for zig_lexer_test code: https://gist.github.com/Myvar/2684ba4fb86b975274629d6f21eddc7b
2033// // Just for testing not to commit in pr
2034// var isNode = new Function("try {return this===global;}catch(e){return false;}");
2035// if (isNode()) {
2036
2037
2038// //const s = "const std = @import(\"std\");";
2039// //const toksa = tokenize_zig_source(s);
2040// //dump_tokens(toksa, s);
2041// //console.log(JSON.stringify(toksa));
2042
2043// const fs = require('fs');
2044
2045// function testFile(fileName) {
2046// //console.log(fileName);
2047// var exec = require('child_process').execFileSync;
2048// var passed = true;
2049// const zig_data = exec('./zig_lexer_test', [fileName]);
2050// const data = fs.readFileSync(fileName, 'utf8');
2051
2052// const toks = tokenize_zig_source(data);
2053// const a_json = toks;
2054
2055// // dump_tokens(a_json, data);
2056// // return;
2057
2058// const b_json = JSON.parse(zig_data.toString());
2059
2060// if (a_json.length !== b_json.length) {
2061// console.log("FAILED a and be is not the same length");
2062// passed = false;
2063// //return;
2064// }
2065
2066// let len = a_json.length;
2067// if (len >= b_json.length) len = b_json.length;
2068
2069// for (let i = 0; i < len; i++) {
2070// const a = a_json[i];
2071// const b = b_json[i];
2072
2073// // console.log(a.tag + " == " + b.tag);
2074
2075// if (a.tag !== b.tag) {
2076
2077// // console.log("Around here:");
2078// // console.log(
2079// // data.substring(b_json[i - 2].loc.start, b_json[i - 2].loc.end),
2080// // data.substring(b_json[i - 1].loc.start, b_json[i - 1].loc.end),
2081// // data.substring(b_json[i].loc.start, b_json[i].loc.end),
2082// // data.substring(b_json[i + 1].loc.start, b_json[i + 1].loc.end),
2083// // data.substring(b_json[i + 2].loc.start, b_json[i + 2].loc.end),
2084// // );
2085
2086// console.log("TAG: a != b");
2087// console.log("js", a.tag);
2088// console.log("zig", b.tag);
2089// passed = false;
2090// return;
2091// }
2092
2093// if (a.tag !== Tag.eof && a.loc.start !== b.loc.start) {
2094// console.log("START: a != b");
2095
2096// console.log("js", "\"" + data.substring(a_json[i ].loc.start, a_json[i].loc.end) + "\"");
2097// console.log("zig", "\"" + data.substring(b_json[i ].loc.start, b_json[i].loc.end) + "\"");
2098
2099
2100// passed = false;
2101// return;
2102// }
2103
2104// // if (a.tag !== Tag.eof && a.loc.end !== b.loc.end) {
2105// // console.log("END: a != b");
2106// // // console.log("Around here:");
2107// // // console.log(
2108// // // // data.substring(b_json[i - 2].loc.start, b_json[i - 2].loc.end),
2109// // // // data.substring(b_json[i - 1].loc.start, b_json[i - 1].loc.end),
2110// // // data.substring(b_json[i ].loc.start, b_json[i].loc.end),
2111// // // // data.substring(b_json[i + 1].loc.start, b_json[i + 1].loc.end),
2112// // // // data.substring(b_json[i + 2].loc.start, b_json[i + 2].loc.end),
2113// // // );
2114// // console.log("js", "\"" + data.substring(a_json[i ].loc.start, a_json[i].loc.end) + "\"");
2115// // console.log("zig", "\"" + data.substring(b_json[i ].loc.start, b_json[i].loc.end) + "\"");
2116// // passed = false;
2117// // return;
2118// // }
2119// }
2120// return passed;
2121// }
2122// var path = require('path');
2123// function fromDir(startPath, filter) {
2124// if (!fs.existsSync(startPath)) {
2125// console.log("no dir ", startPath);
2126// return;
2127// }
2128// var files = fs.readdirSync(startPath);
2129// for (var i = 0; i < files.length; i++) {
2130// var filename = path.join(startPath, files[i]);
2131// var stat = fs.lstatSync(filename);
2132// if (stat.isDirectory()) {
2133// fromDir(filename, filter); //recurse
2134// } else if (filename.endsWith(filter)) {
2135// try {
2136// console.log('-- TESTING: ', filename);
2137// console.log("\t\t", testFile(filename));
2138// }
2139// catch {
2140// }
2141// };
2142// };
2143// };
2144// fromDir('../std', '.zig');
2145// //console.log(testFile("/home/myvar/code/zig/lib/std/fmt/errol.zig"));
2146// //console.log(testFile("test.zig"));
2147// }
\ No newline at end of file