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