{"version":3,"sources":["jsdelivr-header.js","/npm/omml2mathml@1.3.0/index.js"],"names":[],"mappings":"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","file":"/npm/omml2mathml@1.3.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/omml2mathml@1.3.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\nlet Marcheur = require('marcheur')\n  , nodal = require('marcheur/nodal')\n  , qname = require('marcheur/qname')\n  , Matcher = require('marcheur/matcher')\n  , dom = require('get-dom')\n  , xpath = require('xpath')\n  , { oprx } = require('./operators')\n  , MATH_NS = 'http://www.w3.org/1998/Math/MathML'\n  , nsMap = {\n      m:  'http://schemas.openxmlformats.org/officeDocument/2006/math',\n    }\n  , select = xpath.useNamespaces(nsMap)\n  , selectAttr = (path, attr, ctx, onlyDef = false) => {\n      let el = select(path, ctx)[0];\n      if (!el) return onlyDef ? undefined : '';\n      let atn = qname(attr, nsMap);\n      if (atn.ns) return el.getAttributeNS(atn.ns, atn.ln);\n      return el.getAttribute(atn.qn);\n    }\n  , el\n;\n\nmodule.exports = function omml2mathml (omml) {\n  let m = new Matcher(nsMap)\n    , walker = new Marcheur()\n  ;\n  return walker\n    .match(m.document(), setup)\n    .match(\n      m.el('m:oMathPara'),\n      (src, out, w) => {\n        setup(src, out, w);\n        w.res.setAttribute('display', 'block');\n        w.walk(out);\n      }\n    )\n    .match(\n      m.el('m:oMath'),\n      (src, out, w) => {\n        setup(src, out, w);\n        let p = src.parentNode;\n        if (p && p.namespaceURI === nsMap.m && p.localName === 'oMathPara') {\n          w.res.setAttribute('display', 'block');\n        }\n        w.walk(out);\n      }\n    )\n    .match(\n      m.el('m:f'),\n      (src, out, w) => {\n        let type = (selectAttr('./m:fPr[last()]/m:type', 'm:val', src) || '').toLowerCase()\n          , outer = (type === 'lin')\n                      ? el('mrow', {}, out)\n                      : el('mfrac', fracProp(type), out)\n        ;\n        let numRow = el('mrow', {}, outer);\n        w.walk(numRow, select('m:num[1]', src));\n        if (type === 'lin') {\n          let mo = el('mo', {}, outer);\n          mo.textContent = '/';\n        }\n        let denRow = el('mrow', {}, outer);\n        w.walk(denRow, select('m:den[1]', src));\n      }\n    )\n    .match(\n      m.el('m:r'),\n      (src, out) => {\n        let nor = selectAttr('m:rPr[last()]/m:nor', 'm:val', src) || false;\n        if (nor) nor = forceFalse(nor);\n        if (nor) {\n          let mtext = el('mtext', {}, out);\n          mtext.textContent = nbsp(select('.//m:t', src)\n                                      .map(mt => mt.textContent)\n                                      .join(''))\n          ;\n        }\n        else {\n          select('.//m:t', src)\n            .forEach(mt => {\n              parseMT(src, out, {\n                toParse:  select('./text()', mt).map(t => t.data).join(''),\n                scr:      selectAttr('../m:rPr[last()]/m:scr', 'm:val', mt),\n                sty:      selectAttr('../m:rPr[last()]/m:sty', 'm:val', mt),\n                nor:      false,\n              });\n            })\n          ;\n        }\n      }\n    )\n    .match(\n      m.el('m:limLow'),\n      (src, out, w) => {\n        let outer = el('munder', {}, out)\n          , row1 = el('mrow', {}, outer)\n          , row2 = el('mrow', {}, outer)\n        ;\n        w.walk(row1, select('m:e[1]', src));\n        w.walk(row2, select('m:lim[1]', src));\n      }\n    )\n    .match(\n      m.el('m:limUpp'),\n      (src, out, w) => {\n        let outer = el('mover', {}, out)\n          , row1 = el('mrow', {}, outer)\n          , row2 = el('mrow', {}, outer)\n        ;\n        w.walk(row1, select('m:e[1]', src));\n        w.walk(row2, select('m:lim[1]', src));\n      }\n    )\n    .match(\n      m.el('m:sSub'),\n      (src, out, w) => {\n        let outer = el('msub', {}, out)\n          , row1 = el('mrow', {}, outer)\n          , row2 = el('mrow', {}, outer)\n        ;\n        w.walk(row1, select('m:e[1]', src));\n        w.walk(row2, select('m:sub[1]', src));\n      }\n    )\n    .match(\n      m.el('m:sSup'),\n      (src, out, w) => {\n        let outer = el('msup', {}, out)\n          , row1 = el('mrow', {}, outer)\n          , row2 = el('mrow', {}, outer)\n        ;\n        w.walk(row1, select('m:e[1]', src));\n        w.walk(row2, select('m:sup[1]', src));\n      }\n    )\n    .match(\n      m.el('m:sSubSup'),\n      (src, out, w) => {\n        let outer = el('msubsup', {}, out)\n          , row1 = el('mrow', {}, outer)\n          , row2 = el('mrow', {}, outer)\n          , row3 = el('mrow', {}, outer)\n        ;\n        w.walk(row1, select('m:e[1]', src));\n        w.walk(row2, select('m:sub[1]', src));\n        w.walk(row3, select('m:sup[1]', src));\n      }\n    )\n    .match(\n      m.el('m:sPre'),\n      (src, out, w) => {\n        let outer = el('mmultiscripts', {}, out)\n          , row = el('mrow', {}, outer)\n        ;\n        w.walk(row, select('m:e[1]', src));\n        el('mprescripts', {}, outer);\n        outputScript(w, outer, select('m:sub[1]', src));\n        outputScript(w, outer, select('m:sup[1]', src));\n      }\n    )\n    .match(\n      m.el('m:m'),\n      (src, out, w) => {\n        let mcjc = selectAttr('m:mPr[last()]/m:mcs/m:mc/m:mcPr[last()]/m:mcJc', 'm:val', src)\n                      .toLowerCase()\n          , outer = el('mtable', (mcjc && mcjc !== 'center') ? { columnalign: mcjc } : {}, out)\n        ;\n        select('m:mr', src)\n          .forEach(mr => {\n            let mtr = el('mtr', {}, outer);\n            select('m:e', mr)\n              .forEach(me => {\n                let mtd = el('mtd', {}, mtr);\n                w.walk(mtd, me);\n              })\n            ;\n          })\n        ;\n      }\n    )\n    .match(\n      m.el('m:rad'),\n      (src, out, w) => {\n        let degHide = selectAttr('m:radPr[last()]/m:degHide', 'm:val', src) || false;\n        if (degHide) degHide = forceFalse(degHide);\n        if (degHide) {\n          let msqrt = el('msqrt', {}, out);\n          w.walk(msqrt, select('m:e[1]', src));\n        }\n        else {\n          let outer = el('mroot', {}, out)\n            , row1 = el('mrow', {}, outer)\n            , row2 = el('mrow', {}, outer)\n          ;\n          w.walk(row1, select('m:e[1]', src));\n          w.walk(row2, select('m:deg[1]', src));\n        }\n      }\n    )\n    .match(\n      m.el('m:nary'),\n      (src, out, w) => {\n        let subHide = selectAttr('m:naryPr[last()]/m:subHide', 'm:val', src) || false;\n        if (subHide) subHide = forceFalse(subHide);\n        let supHide = selectAttr('m:naryPr[last()]/m:supHide', 'm:val', src) || false;\n        if (supHide) supHide = forceFalse(supHide);\n        let limLocSubSup = selectAttr('m:naryPr[last()]/m:limLoc', 'm:val', src).toLowerCase();\n        limLocSubSup = (limLocSubSup === '' || limLocSubSup === 'subsup');\n        let grow = selectAttr('m:naryPr[last()]/m:grow', 'm:val', src) || false;\n        if (grow) grow = forceFalse(grow);\n\n        let mrow = el('mrow', {}, out);\n        if (supHide && subHide) {\n          outputNAryMO(src, mrow, src, grow);\n        }\n        else if (subHide) {\n          let outer = el(limLocSubSup ? 'msup' : 'mover', {}, mrow);\n          outputNAryMO(src, outer, src, grow);\n          let subrow = el('mrow', {}, outer);\n          w.walk(subrow, select('m:sup[1]', src));\n        }\n        else if (supHide) {\n          let outer = el(limLocSubSup ? 'msub' : 'munder', {}, mrow);\n          outputNAryMO(src, outer, src, grow);\n          let subrow = el('mrow', {}, outer);\n          w.walk(subrow, select('m:sub[1]', src));\n        }\n        else {\n          let outer = el(limLocSubSup ? 'msubsup' : 'munderover', {}, mrow);\n          outputNAryMO(src, outer, src, grow);\n          let subrow1 = el('mrow', {}, outer)\n            , subrow2 = el('mrow', {}, outer)\n          ;\n          w.walk(subrow1, select('m:sub[1]', src));\n          w.walk(subrow2, select('m:sup[1]', src));\n        }\n        let erow = el('mrow', {}, mrow);\n        w.walk(erow, select('m:e[1]', src));\n      }\n    )\n    .match(\n      m.el('m:d'),\n      (src, out, w) => {\n        let attr = {}\n          , begChr = selectAttr('m:dPr[1]/m:begChr', 'm:val', src, true)\n          , endChr = selectAttr('m:dPr[1]/m:endChr', 'm:val', src, true)\n          , sepChr = selectAttr('m:dPr[1]/m:sepChr', 'm:val', src) || '|'\n        ;\n        if (typeof begChr !== 'undefined' && begChr !== '(') attr.open = begChr;\n        if (typeof endChr !== 'undefined' && endChr !== ')') attr.close = endChr;\n        if (sepChr !== ',') attr.separators = sepChr;\n        let mfenced = el('mfenced', attr, out);\n        select('m:e', src).forEach(me => {\n          let row = el('mrow', {}, mfenced);\n          w.walk(row, me);\n        });\n      }\n    )\n    .match(\n      m.el('m:eqArr'),\n      (src, out, w) => {\n        let mtable = el('mtable', {}, out);\n        select('m:e', src)\n          .forEach(me => {\n            let mtr = el('mtr', {}, mtable)\n              , mtd = el('mtd', {}, mtr)\n              , scrLvl = selectAttr('m:argPr[last()]/m:scrLvl', 'm:val', me)\n              , outer\n            ;\n            if (scrLvl !== '0' || !scrLvl) outer = el('mrow', {}, mtd);\n            else outer = el('mstyle', { scriptlevel: scrLvl }, mtd);\n            el('maligngroup', {}, outer);\n            createEqArrRow(w, src, outer, 1, select('*[1]', me)[0]);\n          })\n        ;\n      }\n    )\n    .match(\n      m.el('m:func'),\n      (src, out, w) => {\n        let outer = el('mrow', {}, out)\n          , row1 = el('mrow', {}, outer)\n        ;\n        select('m:fName', src).forEach(fn => w.walk(row1, fn));\n        let mo = el('mo', {}, outer);\n        mo.textContent = '\\u2061';\n        let row2 = el('mrow', {}, outer);\n        w.walk(row2, select('m:e', src));\n      }\n    )\n    .match(\n      m.el('m:acc'),\n      (src, out, w) => {\n        let mover = el('mover', { accent: 'true' }, out)\n          , row = el('mrow', {}, mover)\n          , acc = selectAttr('m:accPr/m:chr', 'm:val', src).substr(0, 1) || '\\u0302'\n          , nonComb = toNonCombining(acc)\n        ;\n        w.walk(row, select('m:e[1]', src));\n        if (acc.length === 0) {\n          el('mo', {}, mover);\n        }\n        else {\n          let nor = selectAttr('m:rPr[last()]/m:nor', 'm:val', src) || false;\n          if (nor) nor = forceFalse(nor);\n          parseMT(src, mover, {\n            toParse:  nonComb,\n            scr:      selectAttr('m:e[1]/*/m:rPr[last()]/m:scr', 'm:val', src),\n            sty:      selectAttr('m:e[1]/*/m:rPr[last()]/m:sty', 'm:val', src),\n            nor,\n          });\n        }\n      }\n    )\n    .match(\n      m.el('m:groupChr'),\n      (src, out, w) => {\n        let lastGroupChrPr = select('m:groupChrPr[last()]', src)[0]\n          , pos = selectAttr('m:pos', 'm:val', lastGroupChrPr).toLowerCase()\n          , vertJc = selectAttr('m:vertJc', 'm:val', lastGroupChrPr).toLowerCase()\n          , lastChrVal = selectAttr('m:chr', 'm:val', lastGroupChrPr)\n          , chr = lastChrVal ? lastChrVal.substr(0, 1) : '\\u23DF'\n          , mkMrow = (parent) => {\n              let mrow = el('mrow', {}, parent);\n              w.walk(mrow, select('m:e[1]', src));\n            }\n          , mkMo = (parent) => {\n              let mo = el('mo', {}, parent);\n              mo.textContent = chr;\n            }\n        ;\n        if (pos === 'top') {\n          if (vertJc === 'bot') {\n            let outer = el('mover', { accent: 'false' }, out);\n            mkMrow(outer);\n            mkMo(outer);\n          }\n          else {\n            let outer = el('munder', { accentunder: 'false' }, out);\n            mkMo(outer);\n            mkMrow(outer);\n          }\n        }\n        else {\n          if (vertJc === 'bot') {\n            let outer = el('mover', { accent: 'false' }, out);\n            mkMo(outer);\n            mkMrow(outer);\n          }\n          else {\n            let outer = el('munder', { accentunder: 'false' }, out);\n            mkMrow(outer);\n            mkMo(outer);\n          }\n        }\n      }\n    )\n    .match(\n      m.el('m:borderBox'),\n      (src, out, w) => {\n        let hideTop = forceTrue(selectAttr('m:borderBoxPr[last()]/m:hideTop[last()]', 'm:val', src)\n                                  .toLowerCase())\n          , hideBot = forceTrue(selectAttr('m:borderBoxPr[last()]/m:hideBot[last()]', 'm:val', src)\n                                  .toLowerCase())\n          , hideLeft = forceTrue(selectAttr('m:borderBoxPr[last()]/m:hideLeft[last()]',\n                                            'm:val', src).toLowerCase())\n          , hideRight = forceTrue(selectAttr('m:borderBoxPr[last()]/m:hideRight[last()]',\n                                              'm:val', src).toLowerCase())\n          , strikeH = forceTrue(selectAttr('m:borderBoxPr[last()]/m:strikeH[last()]', 'm:val', src)\n                                  .toLowerCase())\n          , strikeV = forceTrue(selectAttr('m:borderBoxPr[last()]/m:strikeV[last()]', 'm:val', src)\n                                  .toLowerCase())\n          , strikeBLTR = forceTrue(selectAttr('m:borderBoxPr[last()]/m:strikeBLTR[last()]',\n                                              'm:val', src).toLowerCase())\n          , strikeTLBR = forceTrue(selectAttr('m:borderBoxPr[last()]/m:strikeTLBR[last()]',\n                                              'm:val', src).toLowerCase())\n          , outer\n        ;\n        if (hideTop && hideBot && hideLeft && hideRight &&\n            !strikeH && !strikeV && !strikeBLTR && !strikeTLBR) {\n          outer = el('mrow', {}, out);\n        }\n        else {\n          outer = el('menclose', createMEnclodeNotation({\n            hideTop, hideBot, hideLeft, hideRight, strikeH, strikeV, strikeBLTR, strikeTLBR,\n          }), out);\n        }\n        w.walk(outer, select('m:e[1]', src));\n      }\n    )\n    .match(\n      m.el('m:bar'),\n      (src, out, w) => {\n        let pos = selectAttr('m:barPr/m:pos', 'm:val', src).toLowerCase();\n        if (pos === 'top') {\n          let outer = el('mover', { accent: 'false' }, out)\n            , row = el('mrow', {}, outer)\n            , mo = el('mo', {}, outer)\n          ;\n          w.walk(row, select('m:e[1]', src));\n          mo.textContent = '\\u00af';\n        }\n        else {\n          let outer = el('munder', { underaccent: 'false' }, out)\n            , row = el('mrow', {}, outer)\n            , mo = el('mo', {}, outer)\n          ;\n          w.walk(row, select('m:e[1]', src));\n          mo.textContent = '\\u005f';\n        }\n      }\n    )\n    .match(\n      [m.el('m:e'), m.el('m:den'), m.el('m:num'), m.el('m:lim'), m.el('m:sup'), m.el('m:sub')],\n      (src, out, w) => {\n        let scriptlevel = selectAttr('m:argPr[last()]/m:scrLvl', 'm:val', src);\n        if (!scriptlevel) {\n          w.walk(out);\n        }\n        else {\n          let style = el('mstyle', { scriptlevel }, out);\n          w.walk(style);\n        }\n      }\n    )\n    .match(\n      m.el('m:phant'),\n      (src, out, w) => {\n        let zeroWid = selectAttr('m:phantPr[last()]/m:zeroWid[last()]', 'm:val', src)\n                        .toLowerCase() || false;\n        if (zeroWid) zeroWid = forceFalse(zeroWid);\n        let zeroAsc = selectAttr('m:phantPr[last()]/m:zeroAsc[last()]', 'm:val', src)\n                        .toLowerCase() || false;\n        if (zeroAsc) zeroAsc = forceFalse(zeroAsc);\n        let zeroDesc = selectAttr('m:phantPr[last()]/m:zeroDesc[last()]', 'm:val', src)\n                        .toLowerCase() || false;\n        if (zeroDesc) zeroDesc = forceFalse(zeroDesc);\n        let showVal = forceFalse(selectAttr('m:phantPr[last()]/m:show[last()]', 'm:val', src)\n                                    .toLowerCase());\n        let parent;\n        if (showVal) {\n          parent = el('mpadded', createMPaddedAttr({ zeroWid, zeroAsc, zeroDesc }), out);\n        }\n        else if (!zeroWid && !zeroAsc && !zeroDesc) {\n          parent = el('mphantom', {}, out);\n        }\n        else {\n          let phant = el('mphantom', {}, out);\n          parent = el('mpadded', createMPaddedAttr({ zeroWid, zeroAsc, zeroDesc }), phant);\n        }\n        let row = el('mrow', {}, parent);\n        w.walk(row, select('m:e', src));\n      }\n    )\n    .run(omml)\n  ;\n};\n\nfunction fracProp (type) {\n  if (type === 'skw' || type === 'lin') return { bevelled: 'true' };\n  if (type === 'nobar') return { linethickness: '0pt' };\n  return {};\n  // TODO: the original XSLT had traces of trying to set `numalign` on both numerator and\n  // denominator, but the variables were never properly defined and could absolutely not match\n}\n\nfunction nbsp (str) {\n  if (!str) return;\n  return str.replace(/\\s/g, '\\u00a0');\n}\n\nfunction tf (str) {\n  if (str == null) return;\n  str = str.toLowerCase();\n  if (str === 'on' || str === '1' || str === 'true') return true;\n  if (str === 'off' || str === '0' || str === 'false') return false;\n}\n\nfunction forceFalse (str) {\n  let res = tf(str);\n  if (res === false) return false;\n  return true;\n}\n\nfunction forceTrue (str) {\n  return tf(str) || false;\n}\n\nfunction parseMT (ctx, out, { toParse = '', scr, sty, nor }) {\n  if (!toParse.length) return;\n  let firstOper = rxIndexOf(toParse, oprx)\n    , firstNum = rxIndexOf(toParse, /\\d/)\n    , startsWithOper = (firstOper === 1)\n    , startsWithNum = (firstNum === 1)\n  ;\n  if (!startsWithOper && !startsWithNum) {\n    let charToPrint;\n    if (select('ancestor::m:fName', ctx)[0]) {\n      if (!firstOper && !firstNum) charToPrint = toParse.length;\n      else charToPrint = Math.min(firstOper || Number.MAX_VALUE, firstNum || Number.MAX_VALUE) - 1;\n    }\n    else charToPrint = 1;\n    let mi = el('mi', tokenAttributes({ scr, sty, nor, charToPrint, tokenType: 'mi' }), out);\n    mi.textContent = nbsp(toParse.substr(0, charToPrint));\n    parseMT(ctx, out, { toParse: toParse.substr(charToPrint), scr, sty, nor });\n  }\n  else if (startsWithOper) {\n    let mo = el('mo', tokenAttributes({ nor, tokenType: 'mo' }), out);\n    mo.textContent = toParse.substr(0, 1);\n    parseMT(ctx, out, { toParse: toParse.substr(1), scr, sty, nor });\n  }\n  else {\n    let num = numStart(toParse)\n      , mn = el('mn', tokenAttributes({ scr, sty: 'p', nor, tokenType: 'mn' }), out)\n    ;\n    mn.textContent = num;\n    parseMT(ctx, out, { toParse: toParse.substr(num.length), scr, sty, nor });\n  }\n}\n\nfunction parseEqArrMr (ctx, out, { toParse = '', scr, sty, nor, align }) {\n  if (!toParse.length) return;\n  if (toParse[0] === '&') {\n    el(align ? 'malignmark' : 'maligngroup', {}, out);\n    parseEqArrMr(ctx, out, {\n      toParse:  toParse.substr(1),\n      align:    !align,\n      scr, sty, nor,\n    });\n  }\n  else {\n    let firstOper = rxIndexOf(toParse, oprx)\n      , firstNum = rxIndexOf(toParse, /\\d/)\n      , startsWithOper = (firstOper === 1)\n      , startsWithNum = (firstNum === 1)\n    ;\n    if (!startsWithOper && !startsWithNum) {\n      if (!nor) {\n        let mi = el('mi', tokenAttributes({ scr, sty, nor, charToPrint: 1, tokenType: 'mi' }), out);\n        mi.textContent = nbsp(toParse.substr(0, 1));\n      }\n      else {\n        let mt = el('mtext', {}, out);\n        mt.textContent = nbsp(toParse.substr(0, 1));\n      }\n      parseEqArrMr(ctx, out, { toParse: toParse.substr(1), scr, sty, nor, align });\n    }\n    else if (startsWithOper) {\n      if (!nor) {\n        let mo = el('mo', tokenAttributes({ nor, charToPrint: 1, tokenType: 'mo' }), out);\n        mo.textContent = toParse.substr(0, 1);\n      }\n      else {\n        let mt = el('mtext', {}, out);\n        mt.textContent = toParse.substr(0, 1);\n      }\n      parseEqArrMr(ctx, out, { toParse: toParse.substr(1), scr, sty, nor, align });\n    }\n    else {\n      let num = numStart(toParse);\n      if (!nor) {\n        let mn = el('mn', tokenAttributes({ sty: 'p', nor, charToPrint: 1, tokenType: 'mn' }), out);\n        mn.textContent = toParse.substr(0, num.length);\n      }\n      else {\n        let mt = el('mtext', {}, out);\n        mt.textContent = toParse.substr(0, num.length);\n      }\n      parseEqArrMr(ctx, out, { toParse: toParse.substr(num.length), scr, sty, nor, align });\n    }\n  }\n}\n\nfunction rxIndexOf (str, rx) {\n  let re = rx.exec(str);\n  if (!re) return 0;\n  return re.index + 1;\n}\n\nfunction tokenAttributes ({ scr, sty, nor, charToPrint = 0, tokenType }) {\n  let attr = {};\n  if (nor) attr.mathvariant = 'normal';\n  else {\n    let mathvariant\n      , fontweight = (sty === 'b' || sty === 'bi') ? 'bold' : 'normal'\n      , fontstyle = (sty === 'b' || sty === 'p') ? 'normal' : 'italic'\n    ;\n    if (tokenType !== 'mn') {\n      if (scr === 'monospace') mathvariant = 'monospace';\n      else if (scr === 'sans-serif' && sty === 'i') mathvariant = 'sans-serif-italic';\n      else if (scr === 'sans-serif' && sty === 'b') mathvariant = 'bold-sans-serif';\n      else if (scr === 'sans-serif' && sty === 'bi') mathvariant = 'sans-serif-bold-italic';\n      else if (scr === 'sans-serif') mathvariant = 'sans-serif';\n      else if (scr === 'fraktur' && (sty === 'b' || sty === 'i')) mathvariant = 'bold-fraktur';\n      else if (scr === 'fraktur') mathvariant = 'fraktur';\n      else if (scr === 'double-struck') mathvariant = 'double-struck';\n      else if (scr === 'script' && (sty === 'b' || sty === 'i')) mathvariant = 'bold-script';\n      else if (scr === 'script') mathvariant = 'script';\n      else if (scr === 'roman' || !scr) {\n        if (sty === 'b') mathvariant = 'bold';\n        else if (sty === 'i') mathvariant = 'italic';\n        else if (sty === 'p') mathvariant = 'normal';\n        else if (sty === 'bi') mathvariant = 'bold-italic';\n      }\n    }\n    if (tokenType === 'mo' && mathvariant !== 'normal') return attr;\n    if (tokenType === 'mi' && charToPrint === 1 && (mathvariant === 'italic' || !mathvariant)) {\n      return attr;\n    }\n    if (tokenType === 'mi' && charToPrint > 1 && (mathvariant === 'italic' || !mathvariant)) {\n      attr.mathvariant = 'italic';\n    }\n    else if (mathvariant && mathvariant !== 'italic') {\n      attr.mathvariant = mathvariant;\n    }\n    else {\n      if (fontstyle === 'italic' && !(tokenType === 'mi' && charToPrint === 1)) {\n        attr.fontstyle = 'italic';\n      }\n      if (fontweight === 'bold') attr.fontweight = 'bold';\n    }\n  }\n  return attr;\n}\n\nfunction numStart (str) {\n  if (!str) return '';\n  let ret = '';\n  str.replace(/^(\\d+)/, (_, m) => {\n    ret = m;\n  });\n  return ret;\n}\n\nfunction outputScript (w, out, cur) {\n  if (cur && cur.length) {\n    let row = el('mrow', {}, out);\n    w.walk(row, cur);\n  }\n  else el('none', {}, out);\n}\n\nfunction outputNAryMO (src, out, cur, grow = false) {\n  let mo = el('mo', { stretchy: grow ? 'true' : 'false' }, out)\n    , val = selectAttr('./m:naryPr[last()]/m:chr', 'm:val', src)\n  ;\n  mo.textContent = val || '\\u222b';\n}\n\nfunction createEqArrRow (w, src, out, align, cur) {\n  let allMt = select('m:t', cur).map(mt => mt.textContent).join('');\n  if (select('self::m:r', cur)[0]) {\n    let nor = selectAttr('m:rPr[last()]/m:nor', 'm:val', src) || false;\n    if (nor) nor = forceFalse(nor);\n    parseEqArrMr(src, out, {\n      toParse:  allMt,\n      scr:      selectAttr('../m:rPr[last()]/m:scr', 'm:val', src),\n      sty:      selectAttr('../m:rPr[last()]/m:sty', 'm:val', src),\n      nor,\n      align,\n    });\n  }\n  else {\n    w.walk(out, cur);\n  }\n  if (select('following-sibling::*', cur).length) {\n    let amp = countAmp(allMt);\n    createEqArrRow(w, src, out, (align + (amp % 2)) % 2, select('following-sibling::*', cur)[0]);\n  }\n}\n\nfunction countAmp (allMt) {\n  return ((allMt || '').match(/&/g) || []).length;\n}\n\nlet combiMap = {\n  '\\u0306': '\\u02D8',\n  '\\u032e': '\\u02D8',\n  '\\u0312': '\\u00B8',\n  '\\u0327': '\\u00B8',\n  '\\u0300': '\\u0060',\n  '\\u0316': '\\u0060',\n  '\\u0305': '\\u002D',\n  '\\u0332': '\\u002D',\n  '\\u0323': '\\u002E',\n  '\\u0307': '\\u02D9',\n  '\\u030B': '\\u02DD',\n  '\\u0317': '\\u00B4',\n  '\\u0301': '\\u00B4',\n  '\\u0330': '\\u007E',\n  '\\u0303': '\\u007E',\n  '\\u0324': '\\u00A8',\n  '\\u0308': '\\u00A8',\n  '\\u032C': '\\u02C7',\n  '\\u030C': '\\u02C7',\n  '\\u0302': '\\u005E',\n  '\\u032D': '\\u005E',\n  '\\u20D7': '\\u2192',\n  '\\u20EF': '\\u2192',\n  '\\u20D6': '\\u2190',\n  '\\u20EE': '\\u2190',\n};\nfunction toNonCombining (ch) {\n  return combiMap[ch] || ch;\n}\n\nfunction createMEnclodeNotation ({ hideTop, hideBot, hideLeft, hideRight, strikeH, strikeV,\n                                    strikeBLTR, strikeTLBR }) {\n  let notation = [];\n  if (!hideTop && !hideBot && !hideLeft && !hideRight) notation.push('box');\n  else {\n    if (!hideTop) notation.push('top');\n    if (!hideBot) notation.push('bottom');\n    if (!hideLeft) notation.push('left');\n    if (!hideRight) notation.push('right');\n  }\n  if (strikeH) notation.push('horizontalstrike');\n  if (strikeV) notation.push('verticalstrike');\n  if (strikeBLTR) notation.push('updiagonalstrike');\n  if (strikeTLBR) notation.push('downdiagonalstrike');\n  return { notation: notation.join(' ') };\n}\n\nfunction createMPaddedAttr ({ zeroWid, zeroAsc, zeroDesc }) {\n  let attr = {};\n  if (zeroWid) attr.width = '0in';\n  if (zeroAsc) attr.height = '0in';\n  if (zeroDesc) attr.depth = '0in';\n  return attr;\n}\n\nfunction setup (src, out, w) {\n  if (w.res) return;\n  let doc = dom.implementation().createHTMLDocument('')\n    , nod = nodal(doc, {}, nsMap)\n    , math = doc.createElementNS(MATH_NS, 'math')\n  ;\n  math.setAttribute('display', 'inline');\n  el = nod.el;\n  w.result(math);\n  w.walk(math);\n}\n"]}