{"version":3,"sources":["webpack:///./node_modules/katex/src/domTree.js","webpack:///./node_modules/katex/src/symbols.js","webpack:///./node_modules/katex/src/buildTree.js","webpack:///./node_modules/katex/src/mathMLTree.js","webpack:///./node_modules/katex/src/fontMetricsData.js","webpack:///./node_modules/katex/src/functions.js","webpack:///./node_modules/katex/src/environments.js","webpack:///./node_modules/katex/src/utils.js","webpack:///./node_modules/katex/src/buildCommon.js","webpack:///./node_modules/katex/src/parseData.js","webpack:///./node_modules/katex/src/fontMetrics.js","webpack:///./node_modules/katex/src/buildHTML.js","webpack:///./node_modules/katex/src/buildMathML.js","webpack:///./node_modules/katex/src/delimiter.js","webpack:///./node_modules/katex/src/parseTree.js"],"names":["utils","createClass","classes","slice","i","length","splice","join","span","children","height","depth","maxFontSize","style","this","attributes","documentFragment","symbolNode","value","italic","skew","prototype","setAttribute","attribute","toNode","document","createElement","className","Object","hasOwnProperty","call","attr","appendChild","toMarkup","markup","escape","styles","hyphenate","frag","createDocumentFragment","node","createTextNode","marginRight","needsSpan","escaped","module","exports","defineSymbol","mode","font","group","replace","name","math","text","ch","main","ams","accent","bin","close","inner","mathord","op","open","punct","rel","spacing","textord","mathTextSymbols","charAt","textSymbols","letters","buildHTML","buildMathML","buildCommon","Options","Settings","Style","makeSpan","buildTree","tree","expression","settings","startStyle","TEXT","displayMode","DISPLAY","options","size","mathMLNode","htmlNode","katexNode","MathNode","type","TextNode","createElementNS","ParseError","defineFunction","names","props","handler","numArgs","data","argTypes","greediness","undefined","allowedInText","numOptionalArgs","context","args","index","body","color","shift","width","delimiterSizes","delimiters","fontAliases","atoms","funcName","limits","symbol","hasBarLine","numer","denom","leftDelim","rightDelim","Error","delim","contains","lexer","positions","delimType","func","base","replaceWith","nameGroup","namepos","fontMetrics","parseData","ParseNode","parseArray","parser","result","row","rowGaps","cell","parseExpression","push","next","nextToken","consume","pos","Math","min","_input","cr","parseFunction","defineEnvironment","colalign","map","cols","ca","indexOf","align","separator","res","hskipBeforeAndAfter","envName","left","right","arraystretch","pregap","postgap","metrics","quad","emptyGroup","numCols","forEach","unshift","setTextContent","nativeIndexOf","Array","list","elem","l","deflt","setting","defaultIfUndefined","uppercase","str","toLowerCase","ESCAPE_LOOKUP","\"","ESCAPE_REGEX","escaper","match","testNode","textContent","innerText","clearNode","domTree","symbols","greekCapitals","dotlessLetters","makeSymbol","getCharacterMetrics","console","warn","mathsym","concat","mathDefault","mathit","test","makeOrd","getColor","fontName","fontMap","sizeElementFromChildren","makeFragment","fragment","makeFontSizer","fontSize","fontSizeInner","sizeMultiplier","fontSizer","makeVList","positionType","positionData","currPos","oldChildren","diff","bottom","max","realChildren","child","childWrap","top","baselineFix","vlist","sizingMultiplier","size1","size2","size3","size4","size5","size6","size7","size8","size9","size10","spacingFunctions","variant","sigma5","sigma6","sigma8","sigma9","sigma10","sigma11","sigma12","sigma13","sigma14","sigma15","sigma16","sigma17","sigma18","sigma19","sigma20","sigma21","sigma21Script","sigma21ScriptScript","sigma22","xi8","xi9","xi10","xi11","xi12","xi13","ptPerEm","doubleRuleSep","xHeight","num1","num2","num3","denom1","denom2","sup1","sup2","sup3","sub1","sub2","supDrop","subDrop","axisHeight","defaultRuleThickness","bigOpSpacing1","bigOpSpacing2","bigOpSpacing3","bigOpSpacing4","bigOpSpacing5","emPerEx","delim1","getDelim2","SCRIPT","SCRIPTSCRIPT","metricMap","character","charCodeAt","delimiter","buildExpression","prev","groups","buildGroup","groupToType","genfrac","array","ordgroup","katex","overline","underline","rule","leftright","sqrt","getTypeOfGroup","shouldHandleSupSub","alwaysHandleSupSub","isCharacterBox","getBaseElem","baseElem","makeNullDelimiter","reset","cls","groupTypes","prevAtom","elements","withColor","supmid","submid","sup","sub","supShift","subShift","minSupShift","withStyle","cramped","supsub","multiplier","scriptspace","ruleWidth","psi","marginLeft","fstyle","numShift","clearance","denomShift","frac","delimSize","nstyle","fracNum","dstyle","fracDen","numerreset","denomreset","candiateClearance","mid","midShift","customSizedDelim","r","c","nr","nc","pt","arraycolsep","baselineskip","arrayskip","arstrutHeight","arstrutDepth","totalHeight","inrow","outrow","elt","gap","unit","number","error","colSep","colDescrNum","offset","colDescriptions","colDescr","firstSeparator","verticalAlign","sepwidth","col","fix","supGroup","subGroup","hasLimits","noSuccessor","large","baseShift","slant","output","supKern","subKern","finalGroup","k","a","t","e","x","innerGroup","cramp","line","phi","id","lineClearance","innerHeight","minDelimiterHeight","delimDepth","delimShift","root","rootWrap","innerRootHeight","innerRootDepth","toShift","rootVList","rootVListWrap","withSize","newStyle","withFont","sizedDelim","innerDepth","leftRightDelim","borderRightWidth","borderTopWidth","supsubGroup","baseChar","baseGroup","vecClass","accentBody","accentWrap","withPhantom","groupNode","parentStyle","parentSize","JSON","parse","stringify","topStrut","bottomStrut","mathMLTree","makeText","getVariant","nodeType","withDelims","leftOp","rightOp","outerNode","leftNode","rightNode","accentNode","styleAttributes","operator","texExpression","wrapper","annotation","semantics","getMetrics","mathrmSize","styleWrap","toStyle","makeSmallDelim","center","makeLargeDelim","makeInner","sizeClass","makeStackedDelim","heightTotal","middle","repeat","topMetrics","topHeightTotal","repeatMetrics","repeatHeightTotal","bottomMetrics","bottomHeightTotal","middleHeightTotal","middleFactor","middleMetrics","minHeight","repeatCount","ceil","realHeightTotal","inners","stackLargeDelimiters","stackAlwaysDelimiters","stackNeverDelimiters","sizeToMaxHeight","makeSizedDelim","stackNeverDelimiterSequence","stackAlwaysDelimiterSequence","stackLargeDelimiterSequence","delimTypeToFont","traverseSequence","sequence","start","heightDepth","makeCustomSizedDelim","makeLeftRightDelim","delimiterFactor","delimiterExtend","maxDistFromAxis","Parser","parseTree","toParse"],"mappings":"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OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,MAAS,CAAC,EAAG,OAAS,EAAG,GACzB,MAAS,CAAC,EAAG,OAAS,EAAG,GACzB,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,EAAG,OAAS,OAAS,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,C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GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,MAAS,CAAC,EAAG,OAAS,EAAG,GACzB,MAAS,CAAC,EAAG,OAAS,EAAG,GACzB,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,GAC/B,MAAS,CAAC,EAAG,OAAS,EAAG,GACzB,MAAS,CAAC,EAAG,OAAS,EAAG,GACzB,MAAS,CAAC,EAAG,OAAS,EAAG,IAE7B,YAAa,CACT,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,IAAM,EAAG,GACzB,GAAM,CAAC,OAAS,IAAM,EAAG,GACzB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,IAAM,IAAM,EAAG,GACtB,GAAM,CAAC,IAAM,IAAM,EAAG,GACtB,GAAM,CAAC,EAAG,IAAM,EAAG,GACnB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,IAAM,IAAM,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,EAAE,OAAS,OAAS,EAAG,GAC7B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,OAAS,GAC5B,GAAM,CAAC,EAAG,OAAS,OAAS,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,OAAS,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,IAAM,IAAM,EAAG,GACtB,GAAM,CAAC,IAAM,IAAM,EAAG,GACtB,GAAM,CAAC,IAAM,IAAM,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,IAAM,OAAS,OAAS,GAC/B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,OAAS,GACnC,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,IAAM,IAAM,EAAG,GACvB,IAAO,CAAC,IAAM,IAAM,EAAG,GACvB,IAAO,CAAC,IAAM,IAAM,EAAG,GACvB,IAAO,CAAC,IAAM,OAAS,EAAG,GAC1B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,KAAQ,CAAC,EAAG,OAAS,OAAS,GAC9B,KAAQ,CAAC,EAAG,OAAS,OAAS,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,OAAS,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,IAAM,IAAM,EAAG,GACxB,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,GAC9B,KAAQ,EAAE,OAAS,OAAS,EAAG,GAC/B,KAAQ,CAAC,IAAM,IAAM,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,OAAS,GAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,OAAS,IAAM,EAA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M,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,GAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,OAAS,EAAG,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,GAAM,CAAC,EAAG,OAAS,EAAG,GACtB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,OAAS,OAAS,EAAG,GAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,IAAO,CAAC,EAAG,OAAS,EAAG,GACvB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,GACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,M,qBCrtDhC,IAAI9C,EAAQ,EAAQ,QAChBiG,EAAa,EAAQ,QA8EzB,SAASC,EAAeC,EAAOC,EAAOC,GACb,kBAAVF,IACPA,EAAQ,CAACA,IAEQ,kBAAVC,IACPA,EAAQ,CAAEE,QAASF,IAWvB,IARA,IAAIG,EAAO,CACPD,QAASF,EAAME,QACfE,SAAUJ,EAAMI,SAChBC,gBAAkCC,IAArBN,EAAMK,WAA4B,EAAIL,EAAMK,WACzDE,gBAAiBP,EAAMO,cACvBC,gBAAiBR,EAAMQ,iBAAmB,EAC1CP,QAASA,GAEJjG,EAAI,EAAGA,EAAI+F,EAAM9F,SAAUD,EAChCyC,EAAOC,QAAQqD,EAAM/F,IAAMmG,EAKnCL,EAAe,SAAU,CACrBI,QAAS,EACTM,gBAAiB,IAClB,SAASC,EAASC,GACjB,IAAIC,EAAQD,EAAK,GACbE,EAAOF,EAAK,GAChB,MAAO,CACHhB,KAAM,OACNkB,KAAMA,EACND,MAAOA,MAKfb,EAAe,SAAU,CACrBI,QAAS,EACTE,SAAU,CAAC,QACXC,WAAY,IACb,SAASI,EAASC,GACjB,IAIIjD,EAJAmD,EAAOF,EAAK,GAWhB,OALIjD,EADc,aAAdmD,EAAKlB,KACGkB,EAAK9F,MAEL,CAAC8F,GAGN,CACHlB,KAAM,OACNkB,KAAMnD,MAKdqC,EAAe,UAAW,CACtBI,QAAS,EACTK,eAAe,EACfF,WAAY,EACZD,SAAU,CAAC,QAAS,cACrB,SAASK,EAASC,GACjB,IAGIjD,EAHAoD,EAAQH,EAAK,GACbE,EAAOF,EAAK,GAShB,OALIjD,EADc,aAAdmD,EAAKlB,KACGkB,EAAK9F,MAEL,CAAC8F,GAGN,CACHlB,KAAM,QACNmB,MAAOA,EAAM/F,MACbA,MAAO2C,MAKfqC,EAAe,aAAc,CACzBI,QAAS,IACV,SAASO,EAASC,GACjB,IAAIE,EAAOF,EAAK,GAChB,MAAO,CACHhB,KAAM,WACNkB,KAAMA,MAKdd,EAAe,cAAe,CAC1BI,QAAS,IACV,SAASO,EAASC,GACjB,IAAIE,EAAOF,EAAK,GAChB,MAAO,CACHhB,KAAM,YACNkB,KAAMA,MAKdd,EAAe,SAAU,CACrBI,QAAS,EACTM,gBAAiB,EACjBJ,SAAU,CAAC,OAAQ,OAAQ,UAC5B,SAASK,EAASC,GACjB,IAAII,EAAQJ,EAAK,GACbK,EAAQL,EAAK,GACbpG,EAASoG,EAAK,GAClB,MAAO,CACHhB,KAAM,OACNoB,MAAOA,GAASA,EAAMhG,MACtBiG,MAAOA,EAAMjG,MACbR,OAAQA,EAAOQ,UAKvBgF,EAAe,UAAW,CACtBI,QAAS,IACV,SAASO,GACR,MAAO,CACHf,KAAM,YAIdI,EAAe,YAAa,CACxBI,QAAS,IACV,SAASO,EAASC,GACjB,IACIjD,EADAmD,EAAOF,EAAK,GAQhB,OALIjD,EADc,aAAdmD,EAAKlB,KACGkB,EAAK9F,MAEL,CAAC8F,GAGN,CACHlB,KAAM,UACN5E,MAAO2C,MAKf,IAAIuD,EAAiB,CACjB,SAAW,CAACtB,KAAM,OAAWL,KAAM,GACnC,SAAW,CAACK,KAAM,OAAWL,KAAM,GACnC,UAAW,CAACK,KAAM,OAAWL,KAAM,GACnC,UAAW,CAACK,KAAM,OAAWL,KAAM,GACnC,SAAW,CAACK,KAAM,QAAWL,KAAM,GACnC,SAAW,CAACK,KAAM,QAAWL,KAAM,GACnC,UAAW,CAACK,KAAM,QAAWL,KAAM,GACnC,UAAW,CAACK,KAAM,QAAWL,KAAM,GACnC,SAAW,CAACK,KAAM,MAAWL,KAAM,GACnC,SAAW,CAACK,KAAM,MAAWL,KAAM,GACnC,UAAW,CAACK,KAAM,MAAWL,KAAM,GACnC,UAAW,CAACK,KAAM,MAAWL,KAAM,GACnC,QAAW,CAACK,KAAM,UAAWL,KAAM,GACnC,QAAW,CAACK,KAAM,UAAWL,KAAM,GACnC,SAAW,CAACK,KAAM,UAAWL,KAAM,GACnC,SAAW,CAACK,KAAM,UAAWL,KAAM,IAGnC4B,EAAa,CACb,IAAK,IAAK,IAAK,WAAY,IAAK,WAChC,MAAO,WAAY,MAAO,WAC1B,WAAY,WAAY,UAAW,UACnC,IAAK,IAAK,WAAY,WAAY,OAAQ,OAC1C,UAAW,UAAW,UAAW,UACjC,WAAY,WAAY,eAAgB,eACxC,IAAK,cACL,IAAK,SAAU,MAAO,SACtB,YAAa,YACb,cAAe,cACf,gBAAiB,gBACjB,KAGAC,EAAc,CACd,QAAS,WACT,SAAU,WACV,SAAU,cAIdpB,EAAe,CACX,SAAU,WAAY,SAAU,QAChC,UAAW,SAAU,WACrB,UAAW,UAAW,UAAW,UAAW,UAC5C,UAAW,UAAW,UAAW,UAAW,UAC5C,WAAY,WAAY,WAAY,WAAY,WAChD,UAAW,UAAW,UAAW,UAAW,UAC5C,SAAU,SAAU,SAAU,SAAU,SACxC,YAAa,YAAa,YAAa,YAAa,YACpD,YAAa,YAAa,YAAa,YAAa,YACpD,UAAW,UAAW,UACtB,UAAW,UAAW,UAAW,UAAW,UAC5C,UAAW,UAAW,UAAW,UACjC,WAAY,aACb,CACCI,QAAS,EACTK,eAAe,EACfF,WAAY,IACb,SAASI,EAASC,GACjB,IACIS,EADAP,EAAOF,EAAK,GAQhB,OALIS,EADc,aAAdP,EAAKlB,KACGkB,EAAK9F,MAEL,CAAC8F,GAGN,CACHlB,KAAM,QACNmB,MAAO,SAAWJ,EAAQW,SAASrH,MAAM,GACzCe,MAAOqG,MASfrB,EAAe,CACX,WAAY,WAAY,WAAY,QAAS,QAAS,SACtD,QAAS,SAAU,QAAS,QAAS,QAAS,QAAS,QACvD,QAAS,OAAQ,OAAQ,QAAS,QAAS,QAAS,SACpD,QAAS,UACV,CACCI,QAAS,IACV,SAASO,GACR,MAAO,CACHf,KAAM,KACN2B,QAAQ,EACRC,QAAQ,EACRV,KAAMH,EAAQW,aAKtBtB,EAAe,CACX,QAAS,QAAS,QAAS,QAAS,WAAY,WAAY,QAC5D,QAAS,OAAQ,SAClB,CACCI,QAAS,IACV,SAASO,GACR,MAAO,CACHf,KAAM,KACN2B,QAAQ,EACRC,QAAQ,EACRV,KAAMH,EAAQW,aAKtBtB,EAAe,CACX,QAAS,SAAU,UAAW,UAC/B,CACCI,QAAS,IACV,SAASO,GACR,MAAO,CACHf,KAAM,KACN2B,QAAQ,EACRC,QAAQ,EACRV,KAAMH,EAAQW,aAKtBtB,EAAe,CACX,WAAY,WAAY,aAAc,aAAc,WACpD,WAAY,UAAW,SAAU,QAAS,cAC1C,aAAc,YAAa,aAAc,cAC1C,CACCI,QAAS,IACV,SAASO,GACR,MAAO,CACHf,KAAM,KACN2B,QAAQ,EACRC,QAAQ,EACRV,KAAMH,EAAQW,aAKtBtB,EAAe,CACX,UAAW,SAAU,UACrB,WAAY,UAAW,YACxB,CACCI,QAAS,EACTG,WAAY,IACb,SAASI,EAASC,GACjB,IAEIa,EAFAC,EAAQd,EAAK,GACbe,EAAQf,EAAK,GAEbgB,EAAY,KACZC,EAAa,KACbtC,EAAO,OAEX,OAAQoB,EAAQW,UACZ,IAAK,UACL,IAAK,SACL,IAAK,UACDG,GAAa,EACb,MACJ,IAAK,WACL,IAAK,UACL,IAAK,WACDA,GAAa,EACbG,EAAY,IACZC,EAAa,IACb,MACJ,QACI,MAAM,IAAIC,MAAM,gCAGxB,OAAQnB,EAAQW,UACZ,IAAK,UACL,IAAK,WACD/B,EAAO,UACP,MACJ,IAAK,UACL,IAAK,WACDA,EAAO,OACP,MAGR,MAAO,CACHK,KAAM,UACN8B,MAAOA,EACPC,MAAOA,EACPF,WAAYA,EACZG,UAAWA,EACXC,WAAYA,EACZtC,KAAMA,MAKdS,EAAe,CAAC,SAAU,UAAW,CACjCI,QAAS,EACTK,eAAe,IAChB,SAASE,EAASC,GACjB,IAAIE,EAAOF,EAAK,GAChB,MAAO,CACHhB,KAAMe,EAAQW,SAASrH,MAAM,GAC7B6G,KAAMA,MAKdd,EAAe,CACX,SAAU,SAAU,UAAW,UAC/B,SAAU,SAAU,UAAW,UAC/B,SAAU,SAAU,UAAW,UAC/B,QAAU,QAAU,SAAW,SAC/B,SAAU,WACX,CACCI,QAAS,IACV,SAASO,EAASC,GACjB,IAAImB,EAAQnB,EAAK,GACjB,IAAK9G,EAAMkI,SAASb,EAAYY,EAAM/G,OAClC,MAAM,IAAI+E,EACN,uBAAyBgC,EAAM/G,MAAQ,YACnC2F,EAAQW,SAAW,IACvBX,EAAQsB,MAAOtB,EAAQuB,UAAU,IAKzC,MAAyB,WAArBvB,EAAQW,UAA8C,YAArBX,EAAQW,SAClC,CACH1B,KAAM,YACN5E,MAAO+G,EAAM/G,OAGV,CACH4E,KAAM,cACNL,KAAM2B,EAAeP,EAAQW,UAAU/B,KACvC4C,UAAWjB,EAAeP,EAAQW,UAAU1B,KAC5C5E,MAAO+G,EAAM/G,UAMzBgF,EAAe,CACX,SAAU,eAAgB,iBAAkB,UAC5C,eAAgB,UAAW,UAAW,UAAW,SAAU,UAC5D,EAAG,MAINA,EAAe,CACX,iBAAkB,cAAe,gBACjC,uBACD,EAAG,MAENA,EAAe,CAEX,WAAY,WAAY,WAGxB,WAAY,YAAa,aAAc,YAAa,WACpD,WAGA,QAAS,SAAU,UACpB,CACCI,QAAS,EACTG,WAAY,IACb,SAASI,EAASC,GACjB,IAAIE,EAAOF,EAAK,GACZwB,EAAOzB,EAAQW,SAInB,OAHIc,KAAQhB,IACRgB,EAAOhB,EAAYgB,IAEhB,CACHxC,KAAM,OACN7C,KAAMqF,EAAKnI,MAAM,GACjB6G,KAAMA,MAKdd,EAAe,CACX,UAAW,UAAW,SAAU,UAAW,QAAS,UACpD,UAAW,QAAS,QAAS,SAG9B,CACCI,QAAS,IACV,SAASO,EAASC,GACjB,IAAIyB,EAAOzB,EAAK,GAChB,MAAO,CACHhB,KAAM,SACNpC,OAAQmD,EAAQW,SAChBe,KAAMA,MAKdrC,EAAe,CAAC,SAAU,YAAa,CACnCI,QAAS,IACV,SAASO,GACR,IAAI2B,EACJ,OAAQ3B,EAAQW,UACZ,IAAK,SACDgB,EAAc,SACd,MACJ,IAAK,WACDA,EAAc,UACd,MACJ,QACI,MAAM,IAAIR,MAAM,sCAExB,MAAO,CACHlC,KAAM,QACN0C,YAAaA,MAKrBtC,EAAe,CAAC,OAAQ,QAAS,CAC7BI,QAAS,EACTM,gBAAiB,EACjBJ,SAAU,CAAC,UACZ,SAASK,EAASC,GACjB,IAAIrB,EAAOqB,EAAK,GAChB,MAAO,CACHhB,KAAM,KACNL,KAAMA,MAKdS,EAAe,CAAC,UAAW,SAAU,CACjCI,QAAS,EACTE,SAAU,CAAC,UACZ,SAASK,EAASC,GACjB,IAAI2B,EAAY3B,EAAK,GACrB,GAAuB,aAAnB2B,EAAU3C,KACV,MAAM,IAAIG,EACN,2BACAY,EAAQsB,MAAOtB,EAAQuB,UAAU,IAGzC,IADA,IAAIhF,EAAO,GACFhD,EAAI,EAAGA,EAAIqI,EAAUvH,MAAMb,SAAUD,EAC1CgD,GAAQqF,EAAUvH,MAAMd,GAAGc,MAE/B,MAAO,CACH4E,KAAM,cACN1C,KAAMA,EACNsF,QAAS7B,EAAQuB,UAAU,Q,uBChkBnC,IAAIO,EAAc,EAAQ,QACtBC,EAAY,EAAQ,QACpB3C,EAAa,EAAQ,QAErB4C,EAAYD,EAAUC,UAO1B,SAASC,EAAWC,EAAQC,GACxB,IAAIC,EAAM,GACNjC,EAAO,CAACiC,GACRC,EAAU,GACd,MAAO,EAAM,CACT,IAAIC,EAAOJ,EAAOK,iBAAgB,EAAO,MACzCH,EAAII,KAAK,IAAIR,EAAU,WAAYM,EAAMJ,EAAO/F,OAChD,IAAIsG,EAAOP,EAAOQ,UAAUjG,KAC5B,GAAa,MAATgG,EACAP,EAAOS,cACJ,IAAa,UAATF,EACP,MACG,GAAa,SAATA,GAA4B,SAATA,EAKvB,CAEH,IAAIG,EAAMC,KAAKC,IAAIZ,EAAOU,IAAM,EAAGV,EAAOZ,MAAMyB,OAAOvJ,QACvD,MAAM,IAAI4F,EAAW,8BACA8C,EAAOZ,MAAOsB,GARnC,IAAII,EAAKd,EAAOe,gBAChBZ,EAAQG,KAAKQ,EAAG3I,MAAMuE,MACtBwD,EAAM,GACNjC,EAAKqC,KAAKJ,IAUlB,OAFAD,EAAOhC,KAAOA,EACdgC,EAAOE,QAAUA,EACV,IAAIL,EAAUG,EAAOlD,KAAMkD,EAAQD,EAAO/F,MA2BrD,SAAS+G,EAAkB5D,EAAOC,EAAOC,GAChB,kBAAVF,IACPA,EAAQ,CAACA,IAEQ,kBAAVC,IACPA,EAAQ,CAAEE,QAASF,IAWvB,IARA,IAAIG,EAAO,CACPD,QAASF,EAAME,SAAW,EAC1BE,SAAUJ,EAAMI,SAChBC,WAAY,EACZE,gBAAiBP,EAAMO,cACvBC,gBAAiBR,EAAMQ,iBAAmB,EAC1CP,QAASA,GAEJjG,EAAI,EAAGA,EAAI+F,EAAM9F,SAAUD,EAChCyC,EAAOC,QAAQqD,EAAM/F,IAAMmG,EAMnCwD,EAAkB,QAAS,CACvBzD,QAAS,IACV,SAASO,EAASC,GACjB,IAAIkD,EAAWlD,EAAK,GACpBkD,EAAWA,EAAS9I,MAAM+I,IAAMD,EAAS9I,MAAQ,CAAC8I,GAClD,IAAIE,EAAOF,EAASC,KAAI,SAASzH,GAC7B,IAAI2H,EAAK3H,EAAKtB,MACd,IAA2B,IAAvB,MAAMkJ,QAAQD,GACd,MAAO,CACHrE,KAAM,QACNuE,MAAOF,GAER,GAAW,MAAPA,EACP,MAAO,CACHrE,KAAM,YACNwE,UAAW,KAGnB,MAAM,IAAIrE,EACN,6BAA+BzD,EAAKtB,MACpC2F,EAAQsB,MAAOtB,EAAQuB,UAAU,OAErCmC,EAAM,CACNzE,KAAM,QACNoE,KAAMA,EACNM,qBAAqB,GAGzB,OADAD,EAAMzB,EAAWjC,EAAQkC,OAAQwB,GAC1BA,KAKXR,EAAkB,CACd,SACA,UACA,UACA,UACA,UACA,WACD,IACA,SAASlD,GACR,IAAIQ,EAAa,CACb,OAAU,KACV,QAAW,CAAC,IAAK,KACjB,QAAW,CAAC,IAAK,KACjB,QAAW,CAAC,MAAO,OACnB,QAAW,CAAC,IAAK,KACjB,QAAW,CAAC,SAAU,WACxBR,EAAQ4D,SACNF,EAAM,CACNzE,KAAM,QACN0E,qBAAqB,GAUzB,OARAD,EAAMzB,EAAWjC,EAAQkC,OAAQwB,GAC7BlD,IACAkD,EAAM,IAAI1B,EAAU,YAAa,CAC7B7B,KAAM,CAACuD,GACPG,KAAMrD,EAAW,GACjBsD,MAAOtD,EAAW,IACnBR,EAAQ7D,OAERuH,KAMXR,EAAkB,QAAS,IACxB,SAASlD,GACR,IAAI0D,EAAM,CACNzE,KAAM,QACN8E,aAAc,IACdV,KAAM,CAAC,CACHpE,KAAM,QACNuE,MAAO,IACPQ,OAAQ,EACRC,QAASnC,EAAYoC,QAAQC,MAC9B,CACClF,KAAM,QACNuE,MAAO,IACPQ,OAAQ,EACRC,QAAS,KASjB,OANAP,EAAMzB,EAAWjC,EAAQkC,OAAQwB,GACjCA,EAAM,IAAI1B,EAAU,YAAa,CAC7B7B,KAAM,CAACuD,GACPG,KAAM,MACNC,MAAO,KACR9D,EAAQ7D,MACJuH,KAOXR,EAAkB,UAAW,IAC1B,SAASlD,GACR,IAAI0D,EAAM,CACNzE,KAAM,QACNoE,KAAM,IAEVK,EAAMzB,EAAWjC,EAAQkC,OAAQwB,GACjC,IAAIU,EAAa,IAAIpC,EAAU,WAAY,GAAIhC,EAAQ7D,MACnDkI,EAAU,EACdX,EAAIrJ,MAAM8F,KAAKmE,SAAQ,SAASlC,GAC5B,IAAI7I,EACJ,IAAKA,EAAI,EAAGA,EAAI6I,EAAI5I,OAAQD,GAAK,EAC7B6I,EAAI7I,GAAGc,MAAMkK,QAAQH,GAErBC,EAAUjC,EAAI5I,SACd6K,EAAUjC,EAAI5I,WAGtB,IAAK,IAAID,EAAI,EAAGA,EAAI8K,IAAW9K,EAAG,CAC9B,IAAIiK,EAAQ,IACRQ,EAAS,EACTzK,EAAI,IAAM,EACViK,EAAQ,IACDjK,EAAI,IACXyK,EAAS,GAEbN,EAAIrJ,MAAMgJ,KAAK9J,GAAK,CAChB0F,KAAM,QACNuE,MAAOA,EACPQ,OAAQA,EACRC,QAAS,GAGjB,OAAOP,M,mBClNX,IAmEIc,EAnEAC,EAAgBC,MAAMlK,UAAU+I,QAChCA,EAAU,SAASoB,EAAMC,GACzB,GAAY,MAARD,EACA,OAAQ,EAEZ,GAAIF,GAAiBE,EAAKpB,UAAYkB,EAClC,OAAOE,EAAKpB,QAAQqB,GAIxB,IAFA,IAAIrL,EAAI,EACJsL,EAAIF,EAAKnL,OACND,EAAIsL,EAAGtL,IACV,GAAIoL,EAAKpL,KAAOqL,EACZ,OAAOrL,EAGf,OAAQ,GAMR8H,EAAW,SAASsD,EAAMC,GAC1B,OAAgC,IAAzBrB,EAAQoB,EAAMC,IAMrBE,EAAQ,SAASC,EAASC,GAC1B,YAAmBnF,IAAZkF,EAAwBC,EAAqBD,GAKpDE,EAAY,WACZzJ,EAAY,SAAS0J,GACrB,OAAOA,EAAI5I,QAAQ2I,EAAW,OAAOE,eAGrCC,EAAgB,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACLC,IAAM,SACN,IAAK,UAGLC,EAAe,WAEnB,SAASC,EAAQC,GACb,OAAOJ,EAAcI,GASzB,SAASlK,EAAOmB,GACZ,OAAQ,GAAKA,GAAMH,QAAQgJ,EAAcC,GAQ7C,GAAwB,qBAAb3K,SAA0B,CACjC,IAAI6K,EAAW7K,SAASC,cAAc,QAElC2J,EADA,gBAAiBiB,EACA,SAAS9J,EAAMc,GAC5Bd,EAAK+J,YAAcjJ,GAGN,SAASd,EAAMc,GAC5Bd,EAAKgK,UAAYlJ,GAQ7B,SAASmJ,EAAUjK,GACf6I,EAAe7I,EAAM,IAGzBK,EAAOC,QAAU,CACboF,SAAUA,EACVyD,MAAOA,EACPxJ,OAAQA,EACRE,UAAWA,EACX+H,QAASA,EACTiB,eAAgBA,EAChBoB,UAAWA,I,qBClGf,IAAIC,EAAU,EAAQ,QAClB/D,EAAc,EAAQ,QACtBgE,EAAU,EAAQ,QAClB3M,EAAQ,EAAQ,QAEhB4M,EAAgB,CAChB,UACA,UACA,UACA,WACA,OACA,OACA,UACA,YACA,QACA,QACA,WAGAC,EAAiB,CACjB,IACA,KAQAC,EAAa,SAAS5L,EAAOL,EAAOmC,EAAMiE,EAAO/G,GAE7CyM,EAAQ3J,GAAM9B,IAAUyL,EAAQ3J,GAAM9B,GAAOiC,UAC7CjC,EAAQyL,EAAQ3J,GAAM9B,GAAOiC,SAGjC,IAEIlC,EAFA8J,EAAUpC,EAAYoE,oBAAoB7L,EAAOL,GAmBrD,OAhBIkK,EACA9J,EAAa,IAAIyL,EAAQzL,WACrBC,EAAO6J,EAAQrK,OAAQqK,EAAQpK,MAAOoK,EAAQ5J,OAAQ4J,EAAQ3J,KAC9DlB,IAGe,qBAAZ8M,SAA2BA,QAAQC,KACtC,6BAA+B/L,EAAQ,eACnCL,EAAQ,KAChBI,EAAa,IAAIyL,EAAQzL,WAAWC,EAAO,EAAG,EAAG,EAAG,EAAGhB,IAGvD+G,IACAhG,EAAWJ,MAAMoG,MAAQA,GAGtBhG,GAOPiM,EAAU,SAAShM,EAAO8B,EAAMiE,EAAO/G,GAOvC,MAAc,OAAVgB,GAAgD,SAA9ByL,EAAQ3J,GAAM9B,GAAO+B,KAChC6J,EAAW5L,EAAO,eAAgB8B,EAAMiE,EAAO/G,GAE/C4M,EACH5L,EAAO,cAAe8B,EAAMiE,EAAO/G,EAAQiN,OAAO,CAAC,YAO3DC,EAAc,SAASlM,EAAO8B,EAAMiE,EAAO/G,EAAS4F,GACpD,GAAa,YAATA,EACA,OAAOuH,EAAOnM,EAAO8B,EAAMiE,EAAO/G,GAC/B,GAAa,YAAT4F,EACP,OAAOgH,EACH5L,EAAO,eAAgB8B,EAAMiE,EAAO/G,EAAQiN,OAAO,CAAC,YAExD,MAAM,IAAInF,MAAM,oBAAsBlC,EAAO,oBAOjDuH,EAAS,SAASnM,EAAO8B,EAAMiE,EAAO/G,GACtC,MAAI,QAAQoN,KAAKpM,EAAMoD,OAAO,KAGtBtE,EAAMkI,SAAS2E,EAAgB3L,IAC/BlB,EAAMkI,SAAS0E,EAAe1L,GAC3B4L,EACH5L,EAAO,cAAe8B,EAAMiE,EAAO/G,EAAQiN,OAAO,CAAC,YAEhDL,EACH5L,EAAO,cAAe8B,EAAMiE,EAAO/G,EAAQiN,OAAO,CAAC,aAO3DI,EAAU,SAASrK,EAAOsC,EAASM,GACnC,IAAI9C,EAAOE,EAAMF,KACb9B,EAAQgC,EAAMhC,MACdyL,EAAQ3J,GAAM9B,IAAUyL,EAAQ3J,GAAM9B,GAAOiC,UAC7CjC,EAAQyL,EAAQ3J,GAAM9B,GAAOiC,SAGjC,IAAIjD,EAAU,CAAC,QACX+G,EAAQzB,EAAQgI,WAEhBvK,EAAOuC,EAAQvC,KACnB,GAAIA,EAAM,CACN,GAAa,WAATA,GAAqBjD,EAAMkI,SAAS2E,EAAgB3L,GACpD,OAAOmM,EAAOnM,EAAO8B,EAAMiE,EAAO/G,GAElC,IAAIuN,EAAWC,EAAQzK,GAAMwK,SAC7B,OAAI9E,EAAYoE,oBAAoB7L,EAAOuM,GAChCX,EACH5L,EAAOuM,EAAUzK,EAAMiE,EAAO/G,EAAQiN,OAAO,CAAClK,KAE3CmK,EAAYlM,EAAO8B,EAAMiE,EAAO/G,EAAS4F,GAIxD,OAAOsH,EAAYlM,EAAO8B,EAAMiE,EAAO/G,EAAS4F,IAQpD6H,EAA0B,SAASlC,GACnC,IAAI/K,EAAS,EACTC,EAAQ,EACRC,EAAc,EAElB,GAAI6K,EAAKhL,SACL,IAAK,IAAIL,EAAI,EAAGA,EAAIqL,EAAKhL,SAASJ,OAAQD,IAClCqL,EAAKhL,SAASL,GAAGM,OAASA,IAC1BA,EAAS+K,EAAKhL,SAASL,GAAGM,QAE1B+K,EAAKhL,SAASL,GAAGO,MAAQA,IACzBA,EAAQ8K,EAAKhL,SAASL,GAAGO,OAEzB8K,EAAKhL,SAASL,GAAGQ,YAAcA,IAC/BA,EAAc6K,EAAKhL,SAASL,GAAGQ,aAK3C6K,EAAK/K,OAASA,EACd+K,EAAK9K,MAAQA,EACb8K,EAAK7K,YAAcA,GAMnBmE,EAAW,SAAS7E,EAASO,EAAUwG,GACvC,IAAIzG,EAAO,IAAIkM,EAAQlM,KAAKN,EAASO,GAQrC,OANAkN,EAAwBnN,GAEpByG,IACAzG,EAAKK,MAAMoG,MAAQA,GAGhBzG,GAMPoN,EAAe,SAASnN,GACxB,IAAIoN,EAAW,IAAInB,EAAQ1L,iBAAiBP,GAI5C,OAFAkN,EAAwBE,GAEjBA,GAQPC,EAAgB,SAAStI,EAASuI,GAClC,IAAIC,EAAgBjJ,EAAS,GAAI,CAAC,IAAI2H,EAAQzL,WAAW,OACzD+M,EAAcnN,MAAMkN,SACfA,EAAWvI,EAAQ3E,MAAMoN,eAAkB,KAEhD,IAAIC,EAAYnJ,EACZ,CAAC,mBAAoB,SAAWS,EAAQC,KAAM,SAC9C,CAACuI,IAEL,OAAOE,GA0CPC,EAAY,SAAS1N,EAAU2N,EAAcC,EAAc7I,GAC3D,IAAI7E,EACA2N,EACAlO,EACJ,GAAqB,oBAAjBgO,EAAoC,CACpC,IAAIG,EAAc9N,EAOlB,IANAA,EAAW,CAAC8N,EAAY,IAIxB5N,GAAS4N,EAAY,GAAGrH,MAAQqH,EAAY,GAAG9C,KAAK9K,MACpD2N,EAAU3N,EACLP,EAAI,EAAGA,EAAImO,EAAYlO,OAAQD,IAAK,CACrC,IAAIoO,GAAQD,EAAYnO,GAAG8G,MAAQoH,EAC/BC,EAAYnO,GAAGqL,KAAK9K,MACpB8E,EAAO+I,GACND,EAAYnO,EAAI,GAAGqL,KAAK/K,OACxB6N,EAAYnO,EAAI,GAAGqL,KAAK9K,OAE7B2N,GAAoBE,EAEpB/N,EAAS4I,KAAK,CAACvD,KAAM,OAAQL,KAAMA,IACnChF,EAAS4I,KAAKkF,EAAYnO,UAE3B,GAAqB,QAAjBgO,EAAwB,CAG/B,IAAIK,EAASJ,EACb,IAAKjO,EAAI,EAAGA,EAAIK,EAASJ,OAAQD,IACJ,SAArBK,EAASL,GAAG0F,KACZ2I,GAAUhO,EAASL,GAAGqF,KAEtBgJ,GAAUhO,EAASL,GAAGqL,KAAK/K,OAASD,EAASL,GAAGqL,KAAK9K,MAG7DA,EAAQ8N,OAER9N,EADwB,WAAjByN,GACEC,EACe,UAAjBD,GACE3N,EAAS,GAAGgL,KAAK9K,MAAQ0N,EACV,kBAAjBD,GACE3N,EAAS,GAAGgL,KAAK9K,MAElB,EAIZ,IAAIC,EAAc,EAClB,IAAKR,EAAI,EAAGA,EAAIK,EAASJ,OAAQD,IACJ,SAArBK,EAASL,GAAG0F,OACZlF,EAAc8I,KAAKgF,IAAI9N,EAAaH,EAASL,GAAGqL,KAAK7K,cAG7D,IAAIsN,EAAYJ,EAActI,EAAS5E,GAGnC+N,EAAe,GAEnB,IADAL,EAAU3N,EACLP,EAAI,EAAGA,EAAIK,EAASJ,OAAQD,IAC7B,GAAyB,SAArBK,EAASL,GAAG0F,KACZwI,GAAW7N,EAASL,GAAGqF,SACpB,CACH,IAAImJ,EAAQnO,EAASL,GAAGqL,KAEpBvE,GAAS0H,EAAMjO,MAAQ2N,EAC3BA,GAAWM,EAAMlO,OAASkO,EAAMjO,MAEhC,IAAIkO,EAAY9J,EAAS,GAAI,CAACmJ,EAAWU,IACzCC,EAAUnO,QAAUwG,EACpB2H,EAAUlO,OAASuG,EACnB2H,EAAUhO,MAAMiO,IAAM5H,EAAQ,KAE9ByH,EAAatF,KAAKwF,GAM1B,IAAIE,EAAchK,EACd,CAAC,gBAAiB,CAACmJ,EAAW,IAAIxB,EAAQzL,WAAW,OACzD0N,EAAatF,KAAK0F,GAElB,IAAIC,EAAQjK,EAAS,CAAC,SAAU4J,GAKhC,OAFAK,EAAMtO,OAASgJ,KAAKgF,IAAIJ,EAASU,EAAMtO,QACvCsO,EAAMrO,MAAQ+I,KAAKgF,KAAK/N,EAAOqO,EAAMrO,OAC9BqO,GAIPC,EAAmB,CACnBC,MAAO,GACPC,MAAO,GACPC,MAAO,GACPC,MAAO,GACPC,MAAO,EACPC,MAAO,IACPC,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,OAAQ,MAKRC,EAAmB,CACnB,UAAW,CACPnK,KAAM,MACN9D,UAAW,SAEf,SAAU,CACN8D,KAAM,MACN9D,UAAW,QAEf,YAAa,CACT8D,KAAM,QACN9D,UAAW,WAEf,MAAO,CACH8D,KAAM,aACN9D,UAAW,cAEf,MAAO,CACH8D,KAAM,YACN9D,UAAW,eAEf,MAAO,CACH8D,KAAM,YACN9D,UAAW,aAEf,MAAO,CACH8D,KAAM,aACN9D,UAAW,sBAUf+L,EAAU,CAEV,OAAU,CACNmC,QAAS,OACTpC,SAAU,aAEd,OAAU,CACNoC,QAAS,SACTpC,SAAU,gBAQd,OAAU,CACNoC,QAAS,gBACTpC,SAAU,eAEd,QAAW,CACPoC,QAAS,SACTpC,SAAU,uBAEd,SAAY,CACRoC,QAAS,UACTpC,SAAU,mBAEd,QAAW,CACPoC,QAAS,SACTpC,SAAU,kBAEd,OAAU,CACNoC,QAAS,aACTpC,SAAU,qBAEd,OAAU,CACNoC,QAAS,YACTpC,SAAU,uBAIlB5K,EAAOC,QAAU,CACb4K,QAASA,EACTZ,WAAYA,EACZI,QAASA,EACTnI,SAAUA,EACV6I,aAAcA,EACdO,UAAWA,EACXZ,QAASA,EACT0B,iBAAkBA,EAClBW,iBAAkBA,I,mBC7btB,SAAS/G,EAAU/C,EAAM5E,EAAO8B,GAC5BlC,KAAKgF,KAAOA,EACZhF,KAAKI,MAAQA,EACbJ,KAAKkC,KAAOA,EAGhBH,EAAOC,QAAU,CACb+F,UAAWA,I,qBCRf,IAAI/D,EAAQ,EAAQ,QAqBhBgL,EAAS,KACTC,EAAS,EAETC,EAAS,KACTC,EAAS,KACTC,EAAU,KACVC,EAAU,KACVC,EAAU,KACVC,EAAU,KACVC,EAAU,KACVC,EAAU,KACVC,EAAU,IACVC,EAAU,KACVC,EAAU,KACVC,EAAU,IACVC,EAAU,KACVC,EAAU,KACVC,EAAgB,IAChBC,EAAsB,IACtBC,EAAU,IAcVC,EAAM,IACNC,EAAM,KACNC,EAAO,KACPC,EAAO,GACPC,EAAO,GACPC,EAAO,GAMPC,EAAU,GAIVC,EAAgB,EAAMD,EAKtBxG,EAAU,CACV0G,QAAS3B,EACT9E,KAAM+E,EACN2B,KAAM1B,EACN2B,KAAM1B,EACN2B,KAAM1B,EACN2B,OAAQ1B,EACR2B,OAAQ1B,EACR2B,KAAM1B,EACN2B,KAAM1B,EACN2B,KAAM1B,EACN2B,KAAM1B,EACN2B,KAAM1B,EACN2B,QAAS1B,EACT2B,QAAS1B,EACT2B,WAAYtB,EACZuB,qBAAsBtB,EACtBuB,cAAetB,EACfuB,cAAetB,EACfuB,cAAetB,EACfuB,cAAetB,EACfuB,cAAetB,EACfC,QAASA,EACTsB,QAAS/C,EAASC,EAClByB,cAAeA,EAIfsB,OAAQlC,EACRmC,UAAW,SAASlS,GAChB,GAAIA,EAAM4E,OAASX,EAAMO,KAAKI,KAC1B,OAAOoL,EACJ,GAAIhQ,EAAM4E,OAASX,EAAMkO,OAAOvN,KACnC,OAAOqL,EACJ,GAAIjQ,EAAM4E,OAASX,EAAMmO,aAAaxN,KACzC,OAAOsL,EAEX,MAAM,IAAI/I,MAAM,0BAA4BnH,EAAM4E,QAQtDyN,EAAY,EAAQ,QASpBnG,EAAsB,SAASoG,EAAWtS,GAC1C,IAAIkK,EAAUmI,EAAUrS,GAAOsS,EAAUC,WAAW,IACpD,GAAIrI,EACA,MAAO,CACHpK,MAAOoK,EAAQ,GACfrK,OAAQqK,EAAQ,GAChB5J,OAAQ4J,EAAQ,GAChB3J,KAAM2J,EAAQ,GACd5D,MAAO4D,EAAQ,KAK3BlI,EAAOC,QAAU,CACbiI,QAASA,EACTgC,oBAAqBA,I,qBCzIzB,IAAI9G,EAAa,EAAQ,QACrBnB,EAAQ,EAAQ,QAEhBH,EAAc,EAAQ,QACtB0O,EAAY,EAAQ,QACpB3G,EAAU,EAAQ,QAClB/D,EAAc,EAAQ,QACtB3I,EAAQ,EAAQ,QAEhB+E,EAAWJ,EAAYI,SAOvBuO,EAAkB,SAASpO,EAAYM,EAAS+N,GAEhD,IADA,IAAIC,EAAS,GACJpT,EAAI,EAAGA,EAAI8E,EAAW7E,OAAQD,IAAK,CACxC,IAAI8C,EAAQgC,EAAW9E,GACvBoT,EAAOnK,KAAKoK,EAAWvQ,EAAOsC,EAAS+N,IACvCA,EAAOrQ,EAEX,OAAOsQ,GAKPE,EAAc,CACd5P,QAAS,OACTM,QAAS,OACTT,IAAK,OACLO,IAAK,OACLZ,KAAM,OACNU,KAAM,QACNJ,MAAO,SACPC,MAAO,SACP8P,QAAS,OACTC,MAAO,OACPzP,QAAS,OACTF,MAAO,SACP4P,SAAU,OACV9P,GAAI,MACJ+P,MAAO,OACPC,SAAU,OACVC,UAAW,OACXC,KAAM,OACNC,UAAW,SACXC,KAAM,OACNzQ,OAAQ,QAiBR0Q,EAAiB,SAASlR,GAC1B,OAAa,MAATA,EAEOwQ,EAAY5P,QACG,WAAfZ,EAAM4C,KACNsO,EAAelR,EAAMhC,MAAMqH,MACZ,SAAfrF,EAAM4C,MAAkC,SAAf5C,EAAM4C,KAC/BsO,EAAelR,EAAMhC,OACN,UAAfgC,EAAM4C,MAES,WAAf5C,EAAM4C,MAES,YAAf5C,EAAM4C,KAHNsO,EAAelR,EAAMhC,MAAMA,OAKZ,gBAAfgC,EAAM4C,KACN4N,EAAYxQ,EAAMhC,MAAMmH,WAExBqL,EAAYxQ,EAAM4C,OAU7BuO,EAAqB,SAASnR,EAAOsC,GACrC,QAAKtC,IAEqB,OAAfA,EAAM4C,KAGN5C,EAAMhC,MAAMuG,SACdjC,EAAQ3E,MAAM4E,OAASX,EAAMS,QAAQE,MACtCvC,EAAMhC,MAAMoT,oBACM,WAAfpR,EAAM4C,KACNyO,EAAerR,EAAMhC,MAAMqH,MAE3B,OASXiM,EAAc,SAAStR,GACvB,QAAKA,IAEqB,aAAfA,EAAM4C,KACc,IAAvB5C,EAAMhC,MAAMb,OACLmU,EAAYtR,EAAMhC,MAAM,IAExBgC,EAEW,UAAfA,EAAM4C,MACoB,IAA7B5C,EAAMhC,MAAMA,MAAMb,OACXmU,EAAYtR,EAAMhC,MAAMA,MAAM,IAKlCgC,IASXqR,EAAiB,SAASrR,GAC1B,IAAIuR,EAAWD,EAAYtR,GAG3B,MAAyB,YAAlBuR,EAAS3O,MACM,YAAlB2O,EAAS3O,MACS,QAAlB2O,EAAS3O,MACS,QAAlB2O,EAAS3O,MACS,UAAlB2O,EAAS3O,MACS,SAAlB2O,EAAS3O,MACS,UAAlB2O,EAAS3O,MACS,UAAlB2O,EAAS3O,MAGb4O,EAAoB,SAASlP,GAC7B,OAAOT,EAAS,CACZ,SAAU,SAAWS,EAAQC,KAAM,QACnCD,EAAQ3E,MAAM8T,QAAS7P,EAAMO,KAAKuP,MAClC,mBAQJC,EAAa,CAEjB,QAAqB,SAAS3R,EAAOsC,EAAS+N,GAC1C,OAAO5O,EAAY4I,QAAQrK,EAAOsC,EAAS,YAG/C,QAAqB,SAAStC,EAAOsC,EAAS+N,GAC1C,OAAO5O,EAAY4I,QAAQrK,EAAOsC,EAAS,YAG/C,IAAiB,SAAStC,EAAOsC,EAAS+N,GACtC,IAAI5R,EAAY,OAIZmT,EAAWvB,EACf,MAAOuB,GAA8B,UAAlBA,EAAShP,KAAkB,CAC1C,IAAIyB,EAAQuN,EAAS5T,MAAMA,MAC3B4T,EAAWvN,EAAMA,EAAMlH,OAAS,GAWpC,OANKkT,IAAQvT,EAAMkI,SAAS,CAAC,OAAQ,QAAS,OAAQ,MAAO,UACrDkM,EAAeU,MACnB5R,EAAM4C,KAAO,UACbnE,EAAY,QAGTgD,EAAYuI,QACfhK,EAAMhC,MAAOgC,EAAMF,KAAMwC,EAAQgI,WAAY,CAAC7L,KAGtD,IAAiB,SAASuB,EAAOsC,EAAS+N,GACtC,OAAO5O,EAAYuI,QACfhK,EAAMhC,MAAOgC,EAAMF,KAAMwC,EAAQgI,WAAY,CAAC,UAGtD,KAAkB,SAAStK,EAAOsC,EAAS+N,GACvC,OAAO5O,EAAYuI,QACfhK,EAAMhC,MAAOgC,EAAMF,KAAMwC,EAAQgI,WAAY,CAAC,WAGtD,MAAmB,SAAStK,EAAOsC,EAAS+N,GACxC,OAAO5O,EAAYuI,QACfhK,EAAMhC,MAAOgC,EAAMF,KAAMwC,EAAQgI,WAAY,CAAC,YAGtD,MAAmB,SAAStK,EAAOsC,EAAS+N,GACxC,OAAO5O,EAAYuI,QACfhK,EAAMhC,MAAOgC,EAAMF,KAAMwC,EAAQgI,WAAY,CAAC,YAGtD,MAAmB,SAAStK,EAAOsC,EAAS+N,GACxC,OAAO5O,EAAYuI,QACfhK,EAAMhC,MAAOgC,EAAMF,KAAMwC,EAAQgI,WAAY,CAAC,YAGtD,SAAsB,SAAStK,EAAOsC,EAAS+N,GAC3C,OAAOxO,EACH,CAAC,OAAQS,EAAQ3E,MAAM+T,OACvBtB,EAAgBpQ,EAAMhC,MAAOsE,EAAQmP,WAI7C,KAAkB,SAASzR,EAAOsC,EAAS+N,GACvC,OAAOxO,EAAS,CAAC,OAAQ,OAAQS,EAAQ3E,MAAM+T,OAC3CtB,EAAgBpQ,EAAMhC,MAAM8F,KAAMxB,EAAQmP,WAGlD,MAAmB,SAASzR,EAAOsC,EAAS+N,GACxC,IAAIwB,EAAWzB,EACXpQ,EAAMhC,MAAMA,MACZsE,EAAQwP,UAAU9R,EAAMhC,MAAM+F,OAC9BsM,GAOJ,OAAO,IAAI5O,EAAYiJ,aAAamH,IAGxC,OAAoB,SAAS7R,EAAOsC,EAAS+N,GAMzC,GAAIc,EAAmBnR,EAAMhC,MAAMqH,KAAM/C,GACrC,OAAOqP,EAAW3R,EAAMhC,MAAMqH,KAAKzC,MAAM5C,EAAOsC,EAAS+N,GAG7D,IACI0B,EACAC,EACAC,EACAC,EAiBAC,EACAC,EAUAC,EAhCAhN,EAAOkL,EAAWvQ,EAAMhC,MAAMqH,KAAM/C,EAAQmP,SAM5CzR,EAAMhC,MAAMiU,MACZA,EAAM1B,EAAWvQ,EAAMhC,MAAMiU,IACrB3P,EAAQgQ,UAAUhQ,EAAQ3E,MAAMsU,QACxCF,EAASlQ,EACD,CAACS,EAAQ3E,MAAM8T,QAASnP,EAAQ3E,MAAMsU,MAAMP,OAAQ,CAACO,KAG7DjS,EAAMhC,MAAMkU,MACZA,EAAM3B,EAAWvQ,EAAMhC,MAAMkU,IACrB5P,EAAQgQ,UAAUhQ,EAAQ3E,MAAMuU,QACxCF,EAASnQ,EACD,CAACS,EAAQ3E,MAAM8T,QAASnP,EAAQ3E,MAAMuU,MAAMR,OAAQ,CAACQ,KAM7Db,EAAerR,EAAMhC,MAAMqH,OAC3B8M,EAAW,EACXC,EAAW,IAEXD,EAAW9M,EAAK7H,OAASiI,EAAYoC,QAAQqH,QAC7CkD,EAAW/M,EAAK5H,MAAQgI,EAAYoC,QAAQsH,SAM5CkD,EADA/P,EAAQ3E,QAAUiE,EAAMS,QACVoD,EAAYoC,QAAQgH,KAC3BvM,EAAQ3E,MAAM4U,QACP9M,EAAYoC,QAAQkH,KAEpBtJ,EAAYoC,QAAQiH,KAKtC,IAKI0D,EALAC,EAAa7Q,EAAMO,KAAK4I,eACpBzI,EAAQ3E,MAAMoN,eAClB2H,EACC,GAAMjN,EAAYoC,QAAQwG,QAAWoE,EAAa,KAGvD,GAAKzS,EAAMhC,MAAMiU,IAkBV,GAAKjS,EAAMhC,MAAMkU,IAUjB,CACHC,EAAW3L,KAAKgF,IACZ2G,EAAUE,EACVJ,EAAIxU,MAAQ,IAAOgI,EAAYoC,QAAQ0G,SAC3C6D,EAAW5L,KAAKgF,IAAI4G,EAAU3M,EAAYoC,QAAQoH,MAElD,IAAI0D,EAAYlN,EAAYoC,QAAQwH,qBAGpC,GAAK8C,EAAWF,EAAIxU,OAAUyU,EAAI1U,OAAS4U,GACnC,EAAIO,EAAW,CACnBP,EAAW,EAAIO,GAAaR,EAAWF,EAAIxU,OAASyU,EAAI1U,OACxD,IAAIoV,EAAM,GAAMnN,EAAYoC,QAAQ0G,SAC/B4D,EAAWF,EAAIxU,OAChBmV,EAAM,IACNT,GAAYS,EACZR,GAAYQ,GAIpBJ,EAAS/Q,EAAYwJ,UAAU,CAC3B,CAACrI,KAAM,OAAQ2F,KAAMyJ,EAAQhO,MAAOoO,GACpC,CAACxP,KAAM,OAAQ2F,KAAMwJ,EAAQ/N,OAAQmO,IACtC,kBAAmB,KAAM7P,GAGxB+C,aAAgBmE,EAAQzL,aACxByU,EAAOjV,SAAS,GAAGI,MAAMkV,YAAcxN,EAAKpH,OAAS,MAGzDuU,EAAOjV,SAAS,GAAGI,MAAM6B,YAAckT,EACvCF,EAAOjV,SAAS,GAAGI,MAAM6B,YAAckT,OAvCvCP,EAAW3L,KAAKgF,IAAI2G,EAAUE,EAC1BJ,EAAIxU,MAAQ,IAAOgI,EAAYoC,QAAQ0G,SAE3CiE,EAAS/Q,EAAYwJ,UAAU,CAC3B,CAACrI,KAAM,OAAQ2F,KAAMwJ,IACtB,SAAUI,EAAU7P,GAEvBkQ,EAAOjV,SAAS,GAAGI,MAAM6B,YAAckT,OAzBvCN,EAAW5L,KAAKgF,IACZ4G,EAAU3M,EAAYoC,QAAQmH,KAC9BkD,EAAI1U,OAAS,GAAMiI,EAAYoC,QAAQ0G,SAE3CiE,EAAS/Q,EAAYwJ,UAAU,CAC3B,CAACrI,KAAM,OAAQ2F,KAAMyJ,IACtB,QAASI,EAAU9P,GAEtBkQ,EAAOjV,SAAS,GAAGI,MAAM6B,YAAckT,EAKnCrN,aAAgBmE,EAAQzL,aACxByU,EAAOjV,SAAS,GAAGI,MAAMkV,YAAcxN,EAAKpH,OAAS,MA8C7D,OAAO4D,EAAS,CAACqP,EAAelR,EAAMhC,MAAMqH,OACxC,CAACA,EAAMmN,KAGf,QAAqB,SAASxS,EAAOsC,EAAS+N,GAI1C,IAAIyC,EAASxQ,EAAQ3E,MACI,YAArBqC,EAAMhC,MAAMuE,KACZuQ,EAASlR,EAAMS,QACa,SAArBrC,EAAMhC,MAAMuE,OACnBuQ,EAASlR,EAAMO,MAGnB,IASIwQ,EASAI,EACAC,EACAC,EAoBAC,EAqDAC,EAOAvO,EACAC,EArGAuO,EAASN,EAAOO,UAChBC,EAASR,EAAOS,UAEhB7O,EAAQ6L,EAAWvQ,EAAMhC,MAAM0G,MAAOpC,EAAQgQ,UAAUc,IACxDI,EAAa3R,EAAS,CAACiR,EAAOrB,QAAS2B,EAAO1B,OAAQ,CAAChN,IAEvDC,EAAQ4L,EAAWvQ,EAAMhC,MAAM2G,MAAOrC,EAAQgQ,UAAUgB,IACxDG,EAAa5R,EAAS,CAACiR,EAAOrB,QAAS6B,EAAO5B,OAAQ,CAAC/M,IAkC3D,GA9BIgO,EADA3S,EAAMhC,MAAMyG,WACAgB,EAAYoC,QAAQwH,qBAC5B/M,EAAQ3E,MAAMoN,eAEN,EAOZ+H,EAAOvQ,OAASX,EAAMS,QAAQE,MAC9BwQ,EAAWtN,EAAYoC,QAAQ2G,KAE3BwE,EADAL,EAAY,EACA,EAAIA,EAEJ,EAAIlN,EAAYoC,QAAQwH,qBAExC4D,EAAaxN,EAAYoC,QAAQ8G,SAE7BgE,EAAY,GACZI,EAAWtN,EAAYoC,QAAQ4G,KAC/BuE,EAAYL,IAEZI,EAAWtN,EAAYoC,QAAQ6G,KAC/BsE,EAAY,EAAIvN,EAAYoC,QAAQwH,sBAExC4D,EAAaxN,EAAYoC,QAAQ+G,QAInB,IAAd+D,EAAiB,CAEjB,IAAIe,EACCX,EAAWrO,EAAMjH,OAAUkH,EAAMnH,OAASyV,GAC3CS,EAAoBV,IACpBD,GAAY,IAAOC,EAAYU,GAC/BT,GAAc,IAAOD,EAAYU,IAGrCR,EAAOzR,EAAYwJ,UAAU,CACzB,CAACrI,KAAM,OAAQ2F,KAAMkL,EAAYzP,MAAOiP,GACxC,CAACrQ,KAAM,OAAQ2F,KAAMiL,EAAYxP,OAAQ+O,IAC1C,kBAAmB,KAAMzQ,OACzB,CAEH,IAAI8M,EAAa3J,EAAYoC,QAAQuH,WAEhC2D,EAAWrO,EAAMjH,OAAU2R,EAAa,GAAMuD,GAC3CK,IACJD,GACIC,GAAcD,EAAWrO,EAAMjH,OACjB2R,EAAa,GAAMuD,KAGpCvD,EAAa,GAAMuD,GAAchO,EAAMnH,OAASyV,GAC7CD,IACJC,GACID,GAAc5D,EAAa,GAAMuD,GACnBhO,EAAMnH,OAASyV,KAGrC,IAAIU,EAAM9R,EACN,CAACS,EAAQ3E,MAAM8T,QAAS7P,EAAMO,KAAKuP,MAAO,cAG9CiC,EAAInW,OAASmV,EAEb,IAAIiB,IAAaxE,EAAa,GAAMuD,GAEpCO,EAAOzR,EAAYwJ,UAAU,CACzB,CAACrI,KAAM,OAAQ2F,KAAMkL,EAAYzP,MAAOiP,GACxC,CAACrQ,KAAM,OAAQ2F,KAAMoL,EAAY3P,MAAO4P,GACxC,CAAChR,KAAM,OAAQ2F,KAAMiL,EAAYxP,OAAQ+O,IAC1C,kBAAmB,KAAMzQ,GAiChC,OA5BA4Q,EAAK1V,QAAUsV,EAAO/H,eAAiBzI,EAAQ3E,MAAMoN,eACrDmI,EAAKzV,OAASqV,EAAO/H,eAAiBzI,EAAQ3E,MAAMoN,eAKhDoI,EADAL,EAAOvQ,OAASX,EAAMS,QAAQE,KAClBkD,EAAYoC,QAAQ+H,OAEpBnK,EAAYoC,QAAQgI,UAAUiD,GAM1ClO,EADyB,MAAzB5E,EAAMhC,MAAM4G,UACA4M,EAAkBlP,GAElB6N,EAAU0D,iBAClB7T,EAAMhC,MAAM4G,UAAWuO,GAAW,EAClC7Q,EAAQgQ,UAAUQ,GAAS9S,EAAMF,MAGrC+E,EAD0B,MAA1B7E,EAAMhC,MAAM6G,WACC2M,EAAkBlP,GAElB6N,EAAU0D,iBACnB7T,EAAMhC,MAAM6G,WAAYsO,GAAW,EACnC7Q,EAAQgQ,UAAUQ,GAAS9S,EAAMF,MAGlC+B,EACH,CAAC,OAAQS,EAAQ3E,MAAM8T,QAASqB,EAAOpB,OACvC,CAAC9M,EAAW/C,EAAS,CAAC,SAAU,CAACqR,IAAQrO,GACzCvC,EAAQgI,aAGhB,MAAmB,SAAStK,EAAOsC,EAAS+N,GACxC,IAAIyD,EACAC,EACAC,EAAKhU,EAAMhC,MAAM8F,KAAK3G,OACtB8W,EAAK,EACLnQ,EAAO,IAAIuE,MAAM2L,GAGjBE,EAAK,EAAIzO,EAAYoC,QAAQwG,QAC7B8F,EAAc,EAAID,EAGlBE,EAAe,GAAKF,EAGpBxM,EAAe5K,EAAM2L,MAAMzI,EAAMhC,MAAM0J,aAAc,GACrD2M,EAAY3M,EAAe0M,EAC3BE,EAAgB,GAAMD,EACtBE,EAAe,GAAMF,EAErBG,EAAc,EAClB,IAAKV,EAAI,EAAGA,EAAI9T,EAAMhC,MAAM8F,KAAK3G,SAAU2W,EAAG,CAC1C,IAAIW,EAAQzU,EAAMhC,MAAM8F,KAAKgQ,GACzBtW,EAAS8W,EACT7W,EAAQ8W,EAERN,EAAKQ,EAAMtX,SACX8W,EAAKQ,EAAMtX,QAGf,IAAIuX,EAAS,IAAIrM,MAAMoM,EAAMtX,QAC7B,IAAK4W,EAAI,EAAGA,EAAIU,EAAMtX,SAAU4W,EAAG,CAC/B,IAAIY,EAAMpE,EAAWkE,EAAMV,GAAIzR,GAC3B7E,EAAQkX,EAAIlX,QACZA,EAAQkX,EAAIlX,OAEZD,EAASmX,EAAInX,SACbA,EAASmX,EAAInX,QAEjBkX,EAAOX,GAAKY,EAGhB,IAAIC,EAAM,EACV,GAAI5U,EAAMhC,MAAMgI,QAAQ8N,GAAI,CAExB,OADAc,EAAM5U,EAAMhC,MAAMgI,QAAQ8N,GAAG9V,MACrB4W,EAAIC,MACR,IAAK,KACDD,EAAMA,EAAIE,OACV,MACJ,IAAK,KACDF,EAAMA,EAAIE,OAASrP,EAAYoC,QAAQ8H,QACvC,MACJ,QACI7F,QAAQiL,MAAM,qBAAuBH,EAAIC,MACzCD,EAAM,EAEVA,EAAM,IACNA,GAAOL,EACH9W,EAAQmX,IACRnX,EAAQmX,GAEZA,EAAM,GAIdF,EAAOlX,OAASA,EAChBkX,EAAOjX,MAAQA,EACf+W,GAAehX,EACfkX,EAAOnO,IAAMiO,EACbA,GAAe/W,EAAQmX,EACvB9Q,EAAKgQ,GAAKY,EAGd,IAGIM,EACAC,EAJAC,EAASV,EAAc,EAAI/O,EAAYoC,QAAQuH,WAC/C+F,EAAkBnV,EAAMhC,MAAMgJ,MAAQ,GACtCA,EAAO,GAGX,IAAK+M,EAAI,EAAGkB,EAAc,EAGrBlB,EAAIE,GAAMgB,EAAcE,EAAgBhY,SACtC4W,IAAKkB,EAAa,CAErB,IAAIG,EAAWD,EAAgBF,IAAgB,GAE3CI,GAAiB,EACrB,MAAyB,cAAlBD,EAASxS,KAAsB,CAUlC,GAPKyS,IACDL,EAASnT,EAAS,CAAC,eAAgB,IACnCmT,EAAOrX,MAAMsG,MACTwB,EAAYoC,QAAQyG,cAAgB,KACxCtH,EAAKb,KAAK6O,IAGa,MAAvBI,EAAShO,UAUT,MAAM,IAAIrE,EACN,2BAA6BqS,EAAShO,WAV1C,IAAIA,EAAYvF,EACZ,CAAC,sBACD,IACJuF,EAAUzJ,MAAMH,OAASgX,EAAc,KACvCpN,EAAUzJ,MAAM2X,gBACVd,EAAcU,GAAU,KAE9BlO,EAAKb,KAAKiB,GAMd6N,IACAG,EAAWD,EAAgBF,IAAgB,GAC3CI,GAAiB,EAGrB,KAAItB,GAAKE,GAAT,CAIA,IAAIsB,GACAxB,EAAI,GAAK/T,EAAMhC,MAAMsJ,uBACrBiO,EAAWzY,EAAM2L,MAAM2M,EAASzN,OAAQwM,GACvB,IAAboB,IACAP,EAASnT,EAAS,CAAC,eAAgB,IACnCmT,EAAOrX,MAAMsG,MAAQsR,EAAW,KAChCvO,EAAKb,KAAK6O,KAIlB,IAAIQ,EAAM,GACV,IAAK1B,EAAI,EAAGA,EAAIE,IAAMF,EAAG,CACrB,IAAI/N,EAAMjC,EAAKgQ,GACXvL,EAAOxC,EAAIgO,GACf,GAAKxL,EAAL,CAGA,IAAIvE,EAAQ+B,EAAIQ,IAAM2O,EACtB3M,EAAK9K,MAAQsI,EAAItI,MACjB8K,EAAK/K,OAASuI,EAAIvI,OAClBgY,EAAIrP,KAAK,CAACvD,KAAM,OAAQ2F,KAAMA,EAAMvE,MAAOA,KAG/CwR,EAAM/T,EAAYwJ,UAAUuK,EAAK,kBAAmB,KAAMlT,GAC1DkT,EAAM3T,EACF,CAAC,cAAgBuT,EAASjO,OAAS,MACnC,CAACqO,IACLxO,EAAKb,KAAKqP,IAENzB,EAAIE,EAAK,GAAKjU,EAAMhC,MAAMsJ,uBAC1BiO,EAAWzY,EAAM2L,MAAM2M,EAASxN,QAASuM,GACxB,IAAboB,IACAP,EAASnT,EAAS,CAAC,eAAgB,IACnCmT,EAAOrX,MAAMsG,MAAQsR,EAAW,KAChCvO,EAAKb,KAAK6O,MAKtB,OADAlR,EAAOjC,EAAS,CAAC,UAAWmF,GACrBnF,EAAS,CAAC,QAAS,CAACiC,GAAOxB,EAAQgI,aAG9C,QAAqB,SAAStK,EAAOsC,EAAS+N,GAC1C,MAAoB,QAAhBrQ,EAAMhC,OAAmC,YAAhBgC,EAAMhC,OACf,MAAhBgC,EAAMhC,OAAiC,MAAhBgC,EAAMhC,MAItB6D,EACH,CAAC,OAAQ,UACT,CAACJ,EAAYuI,QAAQhK,EAAMhC,MAAOgC,EAAMF,QAKrC+B,EACH,CAAC,OAAQ,SACRJ,EAAYiL,iBAAiB1M,EAAMhC,OAAOS,aAIvD,KAAkB,SAASuB,EAAOsC,EAAS+N,GACvC,IAAI1P,EAAQkB,EACR,CAAC,SAAU,CAAC0O,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,EAAQmP,WACjDgE,EAAM5T,EAAS,CAAC,OAAQ,IAC5B,OAAOA,EACH,CAAC,OAAQS,EAAQ3E,MAAM+T,OAAQ,CAAC/Q,EAAO8U,KAG/C,KAAkB,SAASzV,EAAOsC,EAAS+N,GACvC,IAAI1P,EAAQkB,EACR,CAAC,SAAU,CAAC0O,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,EAAQmP,WACjDgE,EAAM5T,EAAS,CAAC,OAAQ,IAC5B,OAAOA,EACH,CAAC,OAAQS,EAAQ3E,MAAM+T,OAAQ,CAAC/Q,EAAO8U,KAG/C,GAAgB,SAASzV,EAAOsC,EAAS+N,GAErC,IAAIqF,EACAC,EACAC,GAAY,EACG,WAAf5V,EAAM4C,OAIN8S,EAAW1V,EAAMhC,MAAMiU,IACvB0D,EAAW3V,EAAMhC,MAAMkU,IACvBlS,EAAQA,EAAMhC,MAAMqH,KACpBuQ,GAAY,GAIhB,IAaIvQ,EAbAwQ,EAAc,CACd,cAGAC,GAAQ,EACRxT,EAAQ3E,MAAM4E,OAASX,EAAMS,QAAQE,MACrCvC,EAAMhC,MAAMwG,SACX1H,EAAMkI,SAAS6Q,EAAa7V,EAAMhC,MAAM8F,QAGzCgS,GAAQ,GAIZ,IAAIC,EAAY,EACZC,EAAQ,EACZ,GAAIhW,EAAMhC,MAAMwG,OAAQ,CAEpB,IAAI7G,EAAQmY,EAAQ,gBAAkB,gBACtCzQ,EAAO5D,EAAYmI,WACf5J,EAAMhC,MAAM8F,KAAMnG,EAAO,OAAQ2E,EAAQgI,WACzC,CAAC,YAAawL,EAAQ,WAAa,WAAY,QAOnDC,GAAa1Q,EAAK7H,OAAS6H,EAAK5H,OAAS,EACrCgI,EAAYoC,QAAQuH,WACpB9M,EAAQ3E,MAAMoN,eAGlBiL,EAAQ3Q,EAAKpH,WACV,CAMH,IADA,IAAIgY,EAAS,GACJ/Y,EAAI,EAAGA,EAAI8C,EAAMhC,MAAM8F,KAAK3G,OAAQD,IACzC+Y,EAAO9P,KAAK1E,EAAYuI,QAAQhK,EAAMhC,MAAM8F,KAAK5G,GAAI8C,EAAMF,OAE/DuF,EAAOxD,EAAS,CAAC,OAAQoU,EAAQ3T,EAAQgI,YAG7C,GAAIsL,EAAW,CAKX,IAAI7D,EACAmE,EACAlE,EACAmE,EA4BAC,EACAxK,EACAL,EA3BJ,GARAlG,EAAOxD,EAAS,GAAI,CAACwD,IAQjBqQ,EAAU,CACV,IAAIzD,EAAM1B,EACNmF,EAAUpT,EAAQgQ,UAAUhQ,EAAQ3E,MAAMsU,QAC9CF,EAASlQ,EACL,CAACS,EAAQ3E,MAAM8T,QAASnP,EAAQ3E,MAAMsU,MAAMP,OAAQ,CAACO,IAEzDiE,EAAU1P,KAAKgF,IACX/F,EAAYoC,QAAQyH,cACpB7J,EAAYoC,QAAQ2H,cAAgByC,EAAIxU,OAGhD,GAAIkY,EAAU,CACV,IAAIzD,EAAM3B,EACNoF,EAAUrT,EAAQgQ,UAAUhQ,EAAQ3E,MAAMuU,QAC9CF,EAASnQ,EACL,CAACS,EAAQ3E,MAAM8T,QAASnP,EAAQ3E,MAAMuU,MAAMR,OAC5C,CAACQ,IAELiE,EAAU3P,KAAKgF,IACX/F,EAAYoC,QAAQ0H,cACpB9J,EAAYoC,QAAQ4H,cAAgByC,EAAI1U,QAQhD,GAAKkY,EAeE,GAAKC,EAYL,KAAKD,IAAaC,EAIrB,OAAOtQ,EAEPkG,EAAS9F,EAAYoC,QAAQ6H,cACzBsC,EAAOxU,OAASwU,EAAOvU,MACvB0Y,EACA9Q,EAAK5H,MAAQsY,EAEjBK,EAAa3U,EAAYwJ,UAAU,CAC/B,CAACrI,KAAM,OAAQL,KAAMkD,EAAYoC,QAAQ6H,eACzC,CAAC9M,KAAM,OAAQ2F,KAAMyJ,GACrB,CAACpP,KAAM,OAAQL,KAAM4T,GACrB,CAACvT,KAAM,OAAQ2F,KAAMlD,GACrB,CAACzC,KAAM,OAAQL,KAAM2T,GACrB,CAACtT,KAAM,OAAQ2F,KAAMwJ,GACrB,CAACnP,KAAM,OAAQL,KAAMkD,EAAYoC,QAAQ6H,gBAC1C,SAAUnE,EAAQjJ,GAGrB8T,EAAW7Y,SAAS,GAAGI,MAAMkV,YAAcmD,EAAQ,KACnDI,EAAW7Y,SAAS,GAAGI,MAAMkV,WAAamD,EAAQ,UAlClDzK,EAASlG,EAAK5H,MAAQsY,EAEtBK,EAAa3U,EAAYwJ,UAAU,CAC/B,CAACrI,KAAM,OAAQ2F,KAAMlD,GACrB,CAACzC,KAAM,OAAQL,KAAM2T,GACrB,CAACtT,KAAM,OAAQ2F,KAAMwJ,GACrB,CAACnP,KAAM,OAAQL,KAAMkD,EAAYoC,QAAQ6H,gBAC1C,SAAUnE,EAAQjJ,GAGrB8T,EAAW7Y,SAAS,GAAGI,MAAMkV,WAAamD,EAAQ,UAzBlDpK,EAAMvG,EAAK7H,OAASuY,EAEpBK,EAAa3U,EAAYwJ,UAAU,CAC/B,CAACrI,KAAM,OAAQL,KAAMkD,EAAYoC,QAAQ6H,eACzC,CAAC9M,KAAM,OAAQ2F,KAAMyJ,GACrB,CAACpP,KAAM,OAAQL,KAAM4T,GACrB,CAACvT,KAAM,OAAQ2F,KAAMlD,IACtB,MAAOuG,EAAKtJ,GAMf8T,EAAW7Y,SAAS,GAAGI,MAAMkV,YAAcmD,EAAQ,KAuCvD,OAAOnU,EAAS,CAAC,MAAO,aAAc,CAACuU,IAMvC,OAJIpW,EAAMhC,MAAMwG,SACZa,EAAK1H,MAAMiO,IAAMmK,EAAY,MAG1B1Q,GAIf,MAAmB,SAASrF,EAAOsC,EAAS+N,GAIxC,IAAIgG,EAAIxU,EACJ,CAAC,KAAM,CAACJ,EAAYuI,QAAQ,IAAKhK,EAAMF,QACvCwW,EAAIzU,EACJ,CAAC,KAAM,CAACJ,EAAYuI,QAAQ,IAAKhK,EAAMF,QAE3CwW,EAAE9Y,OAA4B,KAAlB8Y,EAAE9Y,OAAS,IACvB8Y,EAAE7Y,MAA2B,KAAlB6Y,EAAE9Y,OAAS,IAEtB,IAAI+Y,EAAI1U,EACJ,CAAC,KAAM,CAACJ,EAAYuI,QAAQ,IAAKhK,EAAMF,QACvC0W,EAAI3U,EACJ,CAAC,KAAM,CAACJ,EAAYuI,QAAQ,IAAKhK,EAAMF,QAE3C0W,EAAEhZ,OAAUgZ,EAAEhZ,OAAS,MACvBgZ,EAAE/Y,MAAS+Y,EAAE/Y,MAAQ,MAErB,IAAIgZ,EAAI5U,EACJ,CAAC,KAAM,CAACJ,EAAYuI,QAAQ,IAAKhK,EAAMF,QAE3C,OAAO+B,EACH,CAAC,aAAc,QAAS,CAACwU,EAAGC,EAAGC,EAAGC,EAAGC,GAAInU,EAAQgI,aAGzD,SAAsB,SAAStK,EAAOsC,EAAS+N,GAI3C,IAAIqG,EAAanG,EAAWvQ,EAAMhC,MAAM8F,KAChCxB,EAAQgQ,UAAUhQ,EAAQ3E,MAAMgZ,UAEpChE,EAAYlN,EAAYoC,QAAQwH,qBAChC/M,EAAQ3E,MAAMoN,eAGd6L,EAAO/U,EACP,CAACS,EAAQ3E,MAAM8T,QAAS7P,EAAMO,KAAKuP,MAAO,kBAC9CkF,EAAKpZ,OAASmV,EACdiE,EAAKlZ,YAAc,EAGnB,IAAIoO,EAAQrK,EAAYwJ,UAAU,CAC9B,CAACrI,KAAM,OAAQ2F,KAAMmO,GACrB,CAAC9T,KAAM,OAAQL,KAAM,EAAIoQ,GACzB,CAAC/P,KAAM,OAAQ2F,KAAMqO,GACrB,CAAChU,KAAM,OAAQL,KAAMoQ,IACtB,gBAAiB,KAAMrQ,GAE1B,OAAOT,EAAS,CAAC,WAAY,QAAS,CAACiK,GAAQxJ,EAAQgI,aAG3D,UAAuB,SAAStK,EAAOsC,EAAS+N,GAI5C,IAAIqG,EAAanG,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,GAE1CqQ,EAAYlN,EAAYoC,QAAQwH,qBAChC/M,EAAQ3E,MAAMoN,eAGd6L,EAAO/U,EACP,CAACS,EAAQ3E,MAAM8T,QAAS7P,EAAMO,KAAKuP,MAAO,mBAC9CkF,EAAKpZ,OAASmV,EACdiE,EAAKlZ,YAAc,EAGnB,IAAIoO,EAAQrK,EAAYwJ,UAAU,CAC9B,CAACrI,KAAM,OAAQL,KAAMoQ,GACrB,CAAC/P,KAAM,OAAQ2F,KAAMqO,GACrB,CAAChU,KAAM,OAAQL,KAAM,EAAIoQ,GACzB,CAAC/P,KAAM,OAAQ2F,KAAMmO,IACtB,MAAOA,EAAWlZ,OAAQ8E,GAE7B,OAAOT,EAAS,CAAC,YAAa,QAAS,CAACiK,GAAQxJ,EAAQgI,aAG5D,KAAkB,SAAStK,EAAOsC,EAAS+N,GAKvC,IAAI1P,EAAQ4P,EAAWvQ,EAAMhC,MAAM8F,KAC3BxB,EAAQgQ,UAAUhQ,EAAQ3E,MAAMgZ,UAEpChE,EAAYlN,EAAYoC,QAAQwH,qBAChC/M,EAAQ3E,MAAMoN,eAEd6L,EAAO/U,EACP,CAACS,EAAQ3E,MAAM8T,QAAS7P,EAAMO,KAAKuP,MAAO,aAAc,GACxDpP,EAAQgI,YACZsM,EAAKpZ,OAASmV,EACdiE,EAAKlZ,YAAc,EAEnB,IAAImZ,EAAMlE,EACNrQ,EAAQ3E,MAAMmZ,GAAKlV,EAAMO,KAAK2U,KAC9BD,EAAMpR,EAAYoC,QAAQ0G,SAI9B,IAAIwI,EAAgBpE,EAAYkE,EAAM,EAElCG,GACCrW,EAAMnD,OAASmD,EAAMlD,OAAS6E,EAAQ3E,MAAMoN,eAC7CkM,EAAqBD,EAAcD,EAAgBpE,EAGnD5N,EAAQlD,EAAS,CAAC,aAAc,CAChCsO,EAAU0D,iBAAiB,SAAUoD,GACV,EAAO3U,EAAStC,EAAMF,OAChCwC,EAAQgI,YAEzB4M,EAAcnS,EAAMvH,OAASuH,EAAMtH,MAASkV,EAG5CuE,EAAavW,EAAMnD,OAASmD,EAAMlD,MAAQsZ,IAC1CA,GACKA,EAAgBG,EAAavW,EAAMnD,OAASmD,EAAMlD,OAAS,GAIpE,IAUIqG,EAVAqT,IAAexW,EAAMnD,OAASuZ,EAAgBpE,GAAa5N,EAAMvH,OAsBrE,GArBAuH,EAAMpH,MAAMiO,IAAMuL,EAAa,KAC/BpS,EAAMvH,QAAU2Z,EAChBpS,EAAMtH,OAAS0Z,EASXrT,EADiB,IAAjBnD,EAAMnD,QAAgC,IAAhBmD,EAAMlD,MACrBoE,IAEAJ,EAAYwJ,UAAU,CACzB,CAACrI,KAAM,OAAQ2F,KAAM5H,GACrB,CAACiC,KAAM,OAAQL,KAAMwU,GACrB,CAACnU,KAAM,OAAQ2F,KAAMqO,GACrB,CAAChU,KAAM,OAAQL,KAAMoQ,IACtB,gBAAiB,KAAMrQ,GAGzBtC,EAAMhC,MAAM6F,MAEV,CAIH,IAAIuT,EAAO7G,EACPvQ,EAAMhC,MAAM6F,MACZvB,EAAQgQ,UAAU1Q,EAAMmO,eACxBsH,EAAWxV,EACX,CAACS,EAAQ3E,MAAM8T,QAAS7P,EAAMmO,aAAa2B,OAC3C,CAAC0F,IAGDE,EAAkB9Q,KAAKgF,IAAIzG,EAAMvH,OAAQsG,EAAKtG,QAC9C+Z,EAAiB/Q,KAAKgF,IAAIzG,EAAMtH,MAAOqG,EAAKrG,OAI5C+Z,EAAU,IAAOF,EAAkBC,GAGnCE,EAAYhW,EAAYwJ,UACxB,CAAC,CAACrI,KAAM,OAAQ2F,KAAM8O,IACtB,SAAUG,EAASlV,GAGnBoV,EAAgB7V,EAAS,CAAC,QAAS,CAAC4V,IAExC,OAAO5V,EAAS,CAAC,OAAQ,QAAS,CAAC6V,EAAe3S,EAAOjB,IA5BzD,OAAOjC,EAAS,CAAC,OAAQ,QAAS,CAACkD,EAAOjB,KAgClD,OAAoB,SAAS9D,EAAOsC,EAAS+N,GAIzC,IAAI1P,EAAQyP,EAAgBpQ,EAAMhC,MAAMA,MAChCsE,EAAQqV,SAAS3X,EAAMhC,MAAMuE,MAAO8N,GAExC/S,EAAOuE,EAAS,CAAC,QACjB,CAACA,EAAS,CAAC,SAAU,SAAWS,EAAQC,KAAMvC,EAAMhC,MAAMuE,KAC/CD,EAAQ3E,MAAM+T,OACf/Q,KAGVkK,EAAWpJ,EAAYsK,iBAAiB/L,EAAMhC,MAAMuE,MAGxD,OAFAjF,EAAKI,YAAcmN,EAAWvI,EAAQ3E,MAAMoN,eAErCzN,GAGX,QAAqB,SAAS0C,EAAOsC,EAAS+N,GAI1C,IAAI1S,EAAQ,CACR,QAAWiE,EAAMS,QACjB,KAAQT,EAAMO,KACd,OAAUP,EAAMkO,OAChB,aAAgBlO,EAAMmO,cAGtB6H,EAAWja,EAAMqC,EAAMhC,MAAML,OAG7BgD,EAAQyP,EACRpQ,EAAMhC,MAAMA,MAAOsE,EAAQgQ,UAAUsF,GAAWvH,GAEpD,OAAOxO,EAAS,CAACS,EAAQ3E,MAAM8T,QAASmG,EAASlG,OAAQ/Q,IAG7D,KAAkB,SAASX,EAAOsC,EAAS+N,GACvC,IAAItQ,EAAOC,EAAMhC,MAAM+B,KACvB,OAAOwQ,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,EAAQuV,SAAS9X,GAAOsQ,IAGhE,YAAyB,SAASrQ,EAAOsC,EAAS+N,GAC9C,IAAItL,EAAQ/E,EAAMhC,MAAMA,MAExB,MAAc,MAAV+G,EAGOlD,EAAS,CAAC2O,EAAYxQ,EAAMhC,MAAMmH,aAItCtD,EACH,CAAC2O,EAAYxQ,EAAMhC,MAAMmH,YACzB,CAACgL,EAAU2H,WACP/S,EAAO/E,EAAMhC,MAAMuE,KAAMD,EAAStC,EAAMF,SAGpD,UAAuB,SAASE,EAAOsC,EAAS+N,GAQ5C,IANA,IAiBIzL,EAcAC,EA/BAlE,EAAQyP,EAAgBpQ,EAAMhC,MAAM8F,KAAMxB,EAAQmP,SAElDuF,EAAc,EACde,EAAa,EAGR7a,EAAI,EAAGA,EAAIyD,EAAMxD,OAAQD,IAC9B8Z,EAAcxQ,KAAKgF,IAAI7K,EAAMzD,GAAGM,OAAQwZ,GACxCe,EAAavR,KAAKgF,IAAI7K,EAAMzD,GAAGO,MAAOsa,GAmC1C,OA7BAf,GAAe1U,EAAQ3E,MAAMoN,eAC7BgN,GAAczV,EAAQ3E,MAAMoN,eAKxBnG,EAFqB,MAArB5E,EAAMhC,MAAMwJ,KAEAgK,EAAkBlP,GAIlB6N,EAAU6H,eAClBhY,EAAMhC,MAAMwJ,KAAMwP,EAAae,EAAYzV,EAC3CtC,EAAMF,MAGda,EAAMuH,QAAQtD,GAKVC,EADsB,MAAtB7E,EAAMhC,MAAMyJ,MACC+J,EAAkBlP,GAElB6N,EAAU6H,eACnBhY,EAAMhC,MAAMyJ,MAAOuP,EAAae,EAAYzV,EAC5CtC,EAAMF,MAGda,EAAMwF,KAAKtB,GAEJhD,EACH,CAAC,SAAUS,EAAQ3E,MAAM+T,OAAQ/Q,EAAO2B,EAAQgI,aAGxD,KAAkB,SAAStK,EAAOsC,EAAS+N,GAEvC,IAAIU,EAAOlP,EAAS,CAAC,OAAQ,QAAS,GAAIS,EAAQgI,YAG9CtG,EAAQ,EACRhE,EAAMhC,MAAMgG,QACZA,EAAQhE,EAAMhC,MAAMgG,MAAM8Q,OACK,OAA3B9U,EAAMhC,MAAMgG,MAAM6Q,OAClB7Q,GAASyB,EAAYoC,QAAQ0G,UAIrC,IAAItK,EAAQjE,EAAMhC,MAAMiG,MAAM6Q,OACC,OAA3B9U,EAAMhC,MAAMiG,MAAM4Q,OAClB5Q,GAASwB,EAAYoC,QAAQ0G,SAGjC,IAAI/Q,EAASwC,EAAMhC,MAAMR,OAAOsX,OAqBhC,MApBgC,OAA5B9U,EAAMhC,MAAMR,OAAOqX,OACnBrX,GAAUiI,EAAYoC,QAAQ0G,SAKlCvK,GAAS1B,EAAQ3E,MAAMoN,eACvB9G,GAAS3B,EAAQ3E,MAAMoN,eACvBvN,GAAU8E,EAAQ3E,MAAMoN,eAGxBgG,EAAKpT,MAAMsa,iBAAmBhU,EAAQ,KACtC8M,EAAKpT,MAAMua,eAAiB1a,EAAS,KACrCuT,EAAKpT,MAAM4N,OAASvH,EAAQ,KAG5B+M,EAAK9M,MAAQA,EACb8M,EAAKvT,OAASA,EAASwG,EACvB+M,EAAKtT,OAASuG,EAEP+M,GAGX,OAAoB,SAAS/Q,EAAOsC,EAAS+N,GAEzC,IAEI8H,EAFA9S,EAAOrF,EAAMhC,MAAMqH,KAGvB,GAAmB,WAAfrF,EAAM4C,KAAmB,CAUzB,IAAI4P,EAASxS,EAEbA,EAAQwS,EAAOxU,MAAMqH,KAErBA,EAAOrF,EAAMhC,MAAMqH,KAEnBmN,EAAOxU,MAAMqH,KAAOA,EAIpB8S,EAAc5H,EACViC,EAAQlQ,EAAQmP,QAASpB,GAIjC,IAQInS,EARA4F,EAAOyM,EACPlL,EAAM/C,EAAQgQ,UAAUhQ,EAAQ3E,MAAMgZ,UAQ1C,GAAItF,EAAehM,GAAO,CAGtB,IAAI+S,EAAW9G,EAAYjM,GAEvBgT,EAAY9H,EACZ6H,EAAU9V,EAAQgQ,UAAUhQ,EAAQ3E,MAAMgZ,UAE9CzY,EAAOma,EAAUna,UAMjBA,EAAO,EAIX,IAAI8U,EAAYxM,KAAKC,IAAI3C,EAAKtG,OAAQiI,EAAYoC,QAAQ0G,SAGtD/N,EAASiB,EAAYmI,WACrB5J,EAAMhC,MAAMwC,OAAQ,eAAgB,OAAQ8B,EAAQgI,YAGxD9J,EAAOvC,OAAS,EAMhB,IAAIqa,EAAkC,UAAvBtY,EAAMhC,MAAMwC,OAAqB,aAAe,KAE3D+X,EAAa1W,EAAS,CAAC,cAAeyW,GAAW,CACjDzW,EAAS,GAAI,CAACrB,MAElB+X,EAAa9W,EAAYwJ,UAAU,CAC/B,CAACrI,KAAM,OAAQ2F,KAAMzE,GACrB,CAAClB,KAAM,OAAQL,MAAOyQ,GACtB,CAACpQ,KAAM,OAAQ2F,KAAMgQ,IACtB,gBAAiB,KAAMjW,GAK1BiW,EAAWhb,SAAS,GAAGI,MAAMkV,WAAa,EAAI3U,EAAO,KAErD,IAAIsa,EAAa3W,EAAS,CAAC,OAAQ,UAAW,CAAC0W,IAE/C,OAAIJ,GAGAA,EAAY5a,SAAS,GAAKib,EAI1BL,EAAY3a,OAASgJ,KAAKgF,IAAIgN,EAAWhb,OAAQ2a,EAAY3a,QAG7D2a,EAAYnb,QAAQ,GAAK,OAElBmb,GAEAK,GAIf,QAAqB,SAASxY,EAAOsC,EAAS+N,GAC1C,IAAIwB,EAAWzB,EACXpQ,EAAMhC,MAAMA,MACZsE,EAAQmW,cACRpI,GAKJ,OAAO,IAAI5O,EAAYiJ,aAAamH,KAQpCtB,EAAa,SAASvQ,EAAOsC,EAAS+N,GACtC,IAAKrQ,EACD,OAAO6B,IAGX,GAAI8P,EAAW3R,EAAM4C,MAAO,CAExB,IACI6P,EADAiG,EAAY/G,EAAW3R,EAAM4C,MAAM5C,EAAOsC,EAAS+N,GAuBvD,OAlBI/N,EAAQ3E,QAAU2E,EAAQqW,cAC1BlG,EAAanQ,EAAQ3E,MAAMoN,eACnBzI,EAAQqW,YAAY5N,eAE5B2N,EAAUlb,QAAUiV,EACpBiG,EAAUjb,OAASgV,GAKnBnQ,EAAQC,OAASD,EAAQsW,aACzBnG,EAAahR,EAAYsK,iBAAiBzJ,EAAQC,MAC1Cd,EAAYsK,iBAAiBzJ,EAAQsW,YAE7CF,EAAUlb,QAAUiV,EACpBiG,EAAUjb,OAASgV,GAGhBiG,EAEP,MAAM,IAAI3V,EACN,+BAAiC/C,EAAM4C,KAAO,MAQtDrB,EAAY,SAASQ,EAAMO,GAG3BP,EAAO8W,KAAKC,MAAMD,KAAKE,UAAUhX,IAGjC,IAAIC,EAAaoO,EAAgBrO,EAAMO,GACnCwB,EAAOjC,EAAS,CAAC,OAAQS,EAAQ3E,MAAM+T,OAAQ1P,GAK/CgX,EAAWnX,EAAS,CAAC,UACrBoX,EAAcpX,EAAS,CAAC,QAAS,WAErCmX,EAASrb,MAAMH,OAASsG,EAAKtG,OAAS,KACtCyb,EAAYtb,MAAMH,OAAUsG,EAAKtG,OAASsG,EAAKrG,MAAS,KAIxDwb,EAAYtb,MAAM2X,eAAiBxR,EAAKrG,MAAQ,KAGhD,IAAIgF,EAAWZ,EAAS,CAAC,cAAe,CAACmX,EAAUC,EAAanV,IAIhE,OAFArB,EAASrE,aAAa,cAAe,QAE9BqE,GAGX9C,EAAOC,QAAU2B,G,qBCn3CjB,IAAIE,EAAc,EAAQ,QACtBgE,EAAc,EAAQ,QACtByT,EAAa,EAAQ,QACrBnW,EAAa,EAAQ,QACrB0G,EAAU,EAAQ,QAClB3M,EAAQ,EAAQ,QAEhB+E,EAAWJ,EAAYI,SACvB2I,EAAU/I,EAAY+I,QAMtB2O,EAAW,SAAS/Y,EAAMN,GAK1B,OAJI2J,EAAQ3J,GAAMM,IAASqJ,EAAQ3J,GAAMM,GAAMH,UAC3CG,EAAOqJ,EAAQ3J,GAAMM,GAAMH,SAGxB,IAAIiZ,EAAWrW,SAASzC,IAM/BgZ,EAAa,SAASpZ,EAAOsC,GAC7B,IAAIvC,EAAOuC,EAAQvC,KACnB,IAAKA,EACD,OAAO,KAGX,IAAID,EAAOE,EAAMF,KACjB,GAAa,WAATC,EACA,MAAO,SAGX,IAAI/B,EAAQgC,EAAMhC,MAClB,GAAIlB,EAAMkI,SAAS,CAAC,UAAW,WAAYhH,GACvC,OAAO,KAGPyL,EAAQ3J,GAAM9B,IAAUyL,EAAQ3J,GAAM9B,GAAOiC,UAC7CjC,EAAQyL,EAAQ3J,GAAM9B,GAAOiC,SAGjC,IAAIsK,EAAWC,EAAQzK,GAAMwK,SAC7B,OAAI9E,EAAYoE,oBAAoB7L,EAAOuM,GAChCC,EAAQlI,EAAQvC,MAAM4M,QAG1B,MAOPgF,EAAa,CAEjB,QAAqB,SAAS3R,EAAOsC,GACjC,IAAIhD,EAAO,IAAI4Z,EAAWvW,SACtB,KACA,CAACwW,EAASnZ,EAAMhC,MAAOgC,EAAMF,QAE7B6M,EAAUyM,EAAWpZ,EAAOsC,GAIhC,OAHIqK,GACArN,EAAKlB,aAAa,cAAeuO,GAE9BrN,GAGX,QAAqB,SAASU,EAAOsC,GACjC,IAIIhD,EAJAc,EAAO+Y,EAASnZ,EAAMhC,MAAOgC,EAAMF,MAEnC6M,EAAUyM,EAAWpZ,EAAOsC,IAAY,SAe5C,MAZI,QAAQ8H,KAAKpK,EAAMhC,QAGnBsB,EAAO,IAAI4Z,EAAWvW,SAAS,KAAM,CAACvC,IAClCkC,EAAQvC,MACRT,EAAKlB,aAAa,cAAeuO,KAGrCrN,EAAO,IAAI4Z,EAAWvW,SAAS,KAAM,CAACvC,IACtCd,EAAKlB,aAAa,cAAeuO,IAG9BrN,GAGX,IAAiB,SAASU,GACtB,IAAIV,EAAO,IAAI4Z,EAAWvW,SACtB,KAAM,CAACwW,EAASnZ,EAAMhC,MAAOgC,EAAMF,QAEvC,OAAOR,GAGX,IAAiB,SAASU,GACtB,IAAIV,EAAO,IAAI4Z,EAAWvW,SACtB,KAAM,CAACwW,EAASnZ,EAAMhC,MAAOgC,EAAMF,QAEvC,OAAOR,GAGX,KAAkB,SAASU,GACvB,IAAIV,EAAO,IAAI4Z,EAAWvW,SACtB,KAAM,CAACwW,EAASnZ,EAAMhC,MAAOgC,EAAMF,QAEvC,OAAOR,GAGX,MAAmB,SAASU,GACxB,IAAIV,EAAO,IAAI4Z,EAAWvW,SACtB,KAAM,CAACwW,EAASnZ,EAAMhC,MAAOgC,EAAMF,QAEvC,OAAOR,GAGX,MAAmB,SAASU,GACxB,IAAIV,EAAO,IAAI4Z,EAAWvW,SACtB,KAAM,CAACwW,EAASnZ,EAAMhC,MAAOgC,EAAMF,QAEvC,OAAOR,GAGX,MAAmB,SAASU,GACxB,IAAIV,EAAO,IAAI4Z,EAAWvW,SACtB,KAAM,CAACwW,EAASnZ,EAAMhC,MAAOgC,EAAMF,QAIvC,OAFAR,EAAKlB,aAAa,YAAa,QAExBkB,GAGX,SAAsB,SAASU,EAAOsC,GAClC,IAAI3B,EAAQyP,EAAgBpQ,EAAMhC,MAAOsE,GAErChD,EAAO,IAAI4Z,EAAWvW,SAAS,OAAQhC,GAE3C,OAAOrB,GAGX,KAAkB,SAASU,EAAOsC,GAC9B,IAAI3B,EAAQyP,EAAgBpQ,EAAMhC,MAAM8F,KAAMxB,GAE1ChD,EAAO,IAAI4Z,EAAWvW,SAAS,QAAShC,GAE5C,OAAOrB,GAGX,MAAmB,SAASU,EAAOsC,GAC/B,IAAI3B,EAAQyP,EAAgBpQ,EAAMhC,MAAMA,MAAOsE,GAE3ChD,EAAO,IAAI4Z,EAAWvW,SAAS,SAAUhC,GAI7C,OAFArB,EAAKlB,aAAa,YAAa4B,EAAMhC,MAAM+F,OAEpCzE,GAGX,OAAoB,SAASU,EAAOsC,GAChC,IAUI+W,EAVA9b,EAAW,CAACgT,EAAWvQ,EAAMhC,MAAMqH,KAAM/C,IAEzCtC,EAAMhC,MAAMkU,KACZ3U,EAAS4I,KAAKoK,EAAWvQ,EAAMhC,MAAMkU,IAAK5P,IAG1CtC,EAAMhC,MAAMiU,KACZ1U,EAAS4I,KAAKoK,EAAWvQ,EAAMhC,MAAMiU,IAAK3P,IAS1C+W,EALCrZ,EAAMhC,MAAMkU,IAELlS,EAAMhC,MAAMiU,IAGT,UAFA,OAFA,OAOf,IAAI3S,EAAO,IAAI4Z,EAAWvW,SAAS0W,EAAU9b,GAE7C,OAAO+B,GAGX,QAAqB,SAASU,EAAOsC,GACjC,IAAIhD,EAAO,IAAI4Z,EAAWvW,SACtB,QACA,CAAC4N,EAAWvQ,EAAMhC,MAAM0G,MAAOpC,GAC9BiO,EAAWvQ,EAAMhC,MAAM2G,MAAOrC,KAMnC,GAJKtC,EAAMhC,MAAMyG,YACbnF,EAAKlB,aAAa,gBAAiB,OAGV,MAAzB4B,EAAMhC,MAAM4G,WAA+C,MAA1B5E,EAAMhC,MAAM6G,WAAoB,CACjE,IAAIyU,EAAa,GAEjB,GAA6B,MAAzBtZ,EAAMhC,MAAM4G,UAAmB,CAC/B,IAAI2U,EAAS,IAAIL,EAAWvW,SACxB,KAAM,CAAC,IAAIuW,EAAWrW,SAAS7C,EAAMhC,MAAM4G,aAE/C2U,EAAOnb,aAAa,QAAS,QAE7Bkb,EAAWnT,KAAKoT,GAKpB,GAFAD,EAAWnT,KAAK7G,GAEc,MAA1BU,EAAMhC,MAAM6G,WAAoB,CAChC,IAAI2U,EAAU,IAAIN,EAAWvW,SACzB,KAAM,CAAC,IAAIuW,EAAWrW,SAAS7C,EAAMhC,MAAM6G,cAE/C2U,EAAQpb,aAAa,QAAS,QAE9Bkb,EAAWnT,KAAKqT,GAGpB,IAAIC,EAAY,IAAIP,EAAWvW,SAAS,OAAQ2W,GAEhD,OAAOG,EAGX,OAAOna,GAGX,MAAmB,SAASU,EAAOsC,GAC/B,OAAO,IAAI4W,EAAWvW,SAClB,SAAU3C,EAAMhC,MAAM8F,KAAKiD,KAAI,SAAShB,GACpC,OAAO,IAAImT,EAAWvW,SAClB,MAAOoD,EAAIgB,KAAI,SAASd,GACpB,OAAO,IAAIiT,EAAWvW,SAClB,MAAO,CAAC4N,EAAWtK,EAAM3D,cAKjD,KAAkB,SAAStC,EAAOsC,GAC9B,IAAIhD,EAYJ,OAVIA,EADAU,EAAMhC,MAAM6F,MACL,IAAIqV,EAAWvW,SAClB,QAAS,CACL4N,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,GAC7BiO,EAAWvQ,EAAMhC,MAAM6F,MAAOvB,KAG/B,IAAI4W,EAAWvW,SAClB,QAAS,CAAC4N,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,KAGxChD,GAGX,UAAuB,SAASU,EAAOsC,GACnC,IAAI3B,EAAQyP,EAAgBpQ,EAAMhC,MAAM8F,KAAMxB,GAE9C,GAAyB,MAArBtC,EAAMhC,MAAMwJ,KAAc,CAC1B,IAAIkS,EAAW,IAAIR,EAAWvW,SAC1B,KAAM,CAACwW,EAASnZ,EAAMhC,MAAMwJ,KAAMxH,EAAMF,QAE5C4Z,EAAStb,aAAa,QAAS,QAE/BuC,EAAMuH,QAAQwR,GAGlB,GAA0B,MAAtB1Z,EAAMhC,MAAMyJ,MAAe,CAC3B,IAAIkS,EAAY,IAAIT,EAAWvW,SAC3B,KAAM,CAACwW,EAASnZ,EAAMhC,MAAMyJ,MAAOzH,EAAMF,QAE7C6Z,EAAUvb,aAAa,QAAS,QAEhCuC,EAAMwF,KAAKwT,GAGf,IAAIF,EAAY,IAAIP,EAAWvW,SAAS,OAAQhC,GAEhD,OAAO8Y,GAGX,OAAoB,SAASzZ,EAAOsC,GAChC,IAAIsX,EAAa,IAAIV,EAAWvW,SAC5B,KAAM,CAACwW,EAASnZ,EAAMhC,MAAMwC,OAAQR,EAAMF,QAE1CR,EAAO,IAAI4Z,EAAWvW,SACtB,QACA,CAAC4N,EAAWvQ,EAAMhC,MAAMqH,KAAM/C,GAC7BsX,IAIL,OAFAta,EAAKlB,aAAa,SAAU,QAErBkB,GAGX,QAAqB,SAASU,GAC1B,IAAIV,EAaJ,MAXoB,QAAhBU,EAAMhC,OAAmC,YAAhBgC,EAAMhC,OACf,MAAhBgC,EAAMhC,OAAiC,MAAhBgC,EAAMhC,MAC7BsB,EAAO,IAAI4Z,EAAWvW,SAClB,QAAS,CAAC,IAAIuW,EAAWrW,SAAS,QAEtCvD,EAAO,IAAI4Z,EAAWvW,SAAS,UAE/BrD,EAAKlB,aACD,QAASqD,EAAYiL,iBAAiB1M,EAAMhC,OAAOuE,OAGpDjD,GAGX,GAAgB,SAASU,GACrB,IAAIV,EAiBJ,OAXIA,EAFAU,EAAMhC,MAAMwG,OAEL,IAAI0U,EAAWvW,SAClB,KAAM,CAACwW,EAASnZ,EAAMhC,MAAM8F,KAAM9D,EAAMF,QAMrC,IAAIoZ,EAAWvW,SAClB,KAAM,CAAC,IAAIuW,EAAWrW,SAAS7C,EAAMhC,MAAM8F,KAAK7G,MAAM,MAGvDqC,GAGX,MAAmB,SAASU,GACxB,IAAIV,EAAO,IAAI4Z,EAAWvW,SACtB,QAAS,CAAC,IAAIuW,EAAWrW,SAAS,WAEtC,OAAOvD,GAGX,KAAkB,SAASU,EAAOsC,GAC9B,IAAIvC,EAAOC,EAAMhC,MAAM+B,KACvB,OAAOwQ,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,EAAQuV,SAAS9X,KAGzD,YAAyB,SAASC,GAC9B,IAAIzC,EAAW,GAEW,MAAtByC,EAAMhC,MAAMA,OACZT,EAAS4I,KAAKgT,EAASnZ,EAAMhC,MAAMA,MAAOgC,EAAMF,OAGpD,IAAIR,EAAO,IAAI4Z,EAAWvW,SAAS,KAAMpF,GAazC,MAX8B,SAA1ByC,EAAMhC,MAAMmH,WACc,UAA1BnF,EAAMhC,MAAMmH,UAGZ7F,EAAKlB,aAAa,QAAS,QAI3BkB,EAAKlB,aAAa,QAAS,SAGxBkB,GAGX,QAAqB,SAASU,EAAOsC,GACjC,IAAI3B,EAAQyP,EAAgBpQ,EAAMhC,MAAMA,MAAOsE,GAE3ChD,EAAO,IAAI4Z,EAAWvW,SAAS,SAAUhC,GAEzCkZ,EAAkB,CAClB,QAAW,CAAC,IAAK,QACjB,KAAQ,CAAC,IAAK,SACd,OAAU,CAAC,IAAK,SAChB,aAAgB,CAAC,IAAK,UAGtBhb,EAAOgb,EAAgB7Z,EAAMhC,MAAML,OAKvC,OAHA2B,EAAKlB,aAAa,cAAeS,EAAK,IACtCS,EAAKlB,aAAa,eAAgBS,EAAK,IAEhCS,GAGX,OAAoB,SAASU,EAAOsC,GAChC,IAAI3B,EAAQyP,EAAgBpQ,EAAMhC,MAAMA,MAAOsE,GAE3ChD,EAAO,IAAI4Z,EAAWvW,SAAS,SAAUhC,GAU7C,OAHArB,EAAKlB,aACD,WAAYqD,EAAYsK,iBAAiB/L,EAAMhC,MAAMuE,MAAQ,MAE1DjD,GAGX,SAAsB,SAASU,EAAOsC,GAClC,IAAIwX,EAAW,IAAIZ,EAAWvW,SAC1B,KAAM,CAAC,IAAIuW,EAAWrW,SAAS,OACnCiX,EAAS1b,aAAa,WAAY,QAElC,IAAIkB,EAAO,IAAI4Z,EAAWvW,SACtB,QACA,CAAC4N,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,GAC7BwX,IAGL,OAFAxa,EAAKlB,aAAa,SAAU,QAErBkB,GAGX,UAAuB,SAASU,EAAOsC,GACnC,IAAIwX,EAAW,IAAIZ,EAAWvW,SAC1B,KAAM,CAAC,IAAIuW,EAAWrW,SAAS,OACnCiX,EAAS1b,aAAa,WAAY,QAElC,IAAIkB,EAAO,IAAI4Z,EAAWvW,SACtB,SACA,CAAC4N,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,GAC7BwX,IAGL,OAFAxa,EAAKlB,aAAa,cAAe,QAE1BkB,GAGX,KAAkB,SAASU,GAGvB,IAAIV,EAAO,IAAI4Z,EAAWvW,SAAS,QAEnC,OAAOrD,GAGX,KAAkB,SAASU,EAAOsC,GAC9B,IAAIhD,EAAO,IAAI4Z,EAAWvW,SACtB,UAAW,CAAC4N,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,KAK7C,OAHAhD,EAAKlB,aAAa,SAAU,WAC5BkB,EAAKlB,aAAa,QAAS,OAEpBkB,GAGX,KAAkB,SAASU,EAAOsC,GAC9B,IAAIhD,EAAO,IAAI4Z,EAAWvW,SACtB,UAAW,CAAC4N,EAAWvQ,EAAMhC,MAAM8F,KAAMxB,KAI7C,OAFAhD,EAAKlB,aAAa,QAAS,OAEpBkB,GAGX,QAAqB,SAASU,EAAOsC,EAAS+N,GAC1C,IAAI1P,EAAQyP,EAAgBpQ,EAAMhC,MAAMA,MAAOsE,GAC/C,OAAO,IAAI4W,EAAWvW,SAAS,WAAYhC,KAQ3CyP,EAAkB,SAASpO,EAAYM,GAEvC,IADA,IAAIgO,EAAS,GACJpT,EAAI,EAAGA,EAAI8E,EAAW7E,OAAQD,IAAK,CACxC,IAAI8C,EAAQgC,EAAW9E,GACvBoT,EAAOnK,KAAKoK,EAAWvQ,EAAOsC,IAElC,OAAOgO,GAOPC,EAAa,SAASvQ,EAAOsC,GAC7B,IAAKtC,EACD,OAAO,IAAIkZ,EAAWvW,SAAS,QAGnC,GAAIgP,EAAW3R,EAAM4C,MAEjB,OAAO+O,EAAW3R,EAAM4C,MAAM5C,EAAOsC,GAErC,MAAM,IAAIS,EACN,+BAAiC/C,EAAM4C,KAAO,MAYtDpB,EAAc,SAASO,EAAMgY,EAAezX,GAC5C,IAAIN,EAAaoO,EAAgBrO,EAAMO,GAInC0X,EAAU,IAAId,EAAWvW,SAAS,OAAQX,GAG1CiY,EAAa,IAAIf,EAAWvW,SAC5B,aAAc,CAAC,IAAIuW,EAAWrW,SAASkX,KAE3CE,EAAW7b,aAAa,WAAY,qBAEpC,IAAI8b,EAAY,IAAIhB,EAAWvW,SAC3B,YAAa,CAACqX,EAASC,IAEvB9Z,EAAO,IAAI+Y,EAAWvW,SAAS,OAAQ,CAACuX,IAG5C,OAAOrY,EAAS,CAAC,gBAAiB,CAAC1B,KAGvCR,EAAOC,QAAU4B,G,qBC9fjB,IAAIuB,EAAa,EAAQ,QACrBnB,EAAQ,EAAQ,QAEhBH,EAAc,EAAQ,QACtBgE,EAAc,EAAQ,QACtBgE,EAAU,EAAQ,QAClB3M,EAAQ,EAAQ,QAEhB+E,EAAWJ,EAAYI,SAMvBsY,EAAa,SAAS3V,EAAQzE,GAC9B,OAAI0J,EAAQtJ,KAAKqE,IAAWiF,EAAQtJ,KAAKqE,GAAQvE,QACtCwF,EAAYoE,oBACfJ,EAAQtJ,KAAKqE,GAAQvE,QAASF,GAE3B0F,EAAYoE,oBACfrF,EAAQzE,IAOhBqa,EAAa,SAASpc,EAAOuE,EAAMzC,GACnC,OAAO2B,EAAYmI,WAAW5L,EAAO,OAASuE,EAAO,WAAYzC,IAOjEua,EAAY,SAAStV,EAAOuV,EAAShY,GACrC,IAAIhF,EAAOuE,EACP,CAAC,aAAcS,EAAQ3E,MAAM8T,QAAS6I,EAAQ5I,OAAQ,CAAC3M,IAEvD0N,EAAa6H,EAAQvP,eAAiBzI,EAAQ3E,MAAMoN,eAMxD,OAJAzN,EAAKE,QAAUiV,EACfnV,EAAKG,OAASgV,EACdnV,EAAKI,YAAc4c,EAAQvP,eAEpBzN,GAQPid,EAAiB,SAASxV,EAAOpH,EAAO6c,EAAQlY,EAASxC,GACzD,IAAIM,EAAOqB,EAAYmI,WAAW7E,EAAO,eAAgBjF,GAErDxC,EAAO+c,EAAUja,EAAMzC,EAAO2E,GAElC,GAAIkY,EAAQ,CACR,IAAIxW,GACC,EAAI1B,EAAQ3E,MAAMoN,eAAiBpN,EAAMoN,gBAC1CtF,EAAYoC,QAAQuH,WAExB9R,EAAKK,MAAMiO,IAAM5H,EAAQ,KACzB1G,EAAKE,QAAUwG,EACf1G,EAAKG,OAASuG,EAGlB,OAAO1G,GAOPmd,EAAiB,SAAS1V,EAAOxC,EAAMiY,EAAQlY,EAASxC,GACxD,IAAIa,EAAQyZ,EAAWrV,EAAOxC,EAAMzC,GAEhCxC,EAAO+c,EACPxY,EAAS,CAAC,cAAe,OAASU,GACzB,CAAC5B,GAAQ2B,EAAQgI,YAC1B1I,EAAMO,KAAMG,GAEhB,GAAIkY,EAAQ,CACR,IAAIxW,GAAS,EAAI1B,EAAQ3E,MAAMoN,gBAC3BtF,EAAYoC,QAAQuH,WAExB9R,EAAKK,MAAMiO,IAAM5H,EAAQ,KACzB1G,EAAKE,QAAUwG,EACf1G,EAAKG,OAASuG,EAGlB,OAAO1G,GAOPod,EAAY,SAASlW,EAAQzE,EAAMD,GACnC,IAAI6a,EAES,kBAAT5a,EACA4a,EAAY,cACI,kBAAT5a,IACP4a,EAAY,eAGhB,IAAIha,EAAQkB,EACR,CAAC,mBAAoB8Y,GACrB,CAAC9Y,EAAS,GAAI,CAACJ,EAAYmI,WAAWpF,EAAQzE,EAAMD,OAIxD,MAAO,CAAC8C,KAAM,OAAQ2F,KAAM5H,IAO5Bia,EAAmB,SAAS7V,EAAO8V,EAAaL,EAAQlY,EAASxC,GAGjE,IAAI8L,EACAkP,EACAC,EACAxP,EACJK,EAAMmP,EAASxP,EAASxG,EACxB+V,EAAS,KAET,IAAI/a,EAAO,gBAKG,cAAVgF,EACAgW,EAASxP,EAAS,IACD,cAAVxG,EACPgW,EAASxP,EAAS,IACD,gBAAVxG,EACP6G,EAAMmP,EAAS,IACE,gBAAVhW,EACP6G,EAAMmP,EAAS,IACE,kBAAVhW,GACP6G,EAAM,YACNmP,EAAS,IACTxP,EAAS,eACQ,kBAAVxG,GACP6G,EAAM,YACNmP,EAAS,IACTxP,EAAS,eACQ,MAAVxG,GAA2B,aAAVA,GACxB6G,EAAM,IACNmP,EAAS,IACTxP,EAAS,IACTxL,EAAO,iBACU,MAAVgF,GAA2B,aAAVA,GACxB6G,EAAM,IACNmP,EAAS,IACTxP,EAAS,IACTxL,EAAO,iBACU,aAAVgF,GACPgW,EAASnP,EAAM,IACfL,EAAS,IACTxL,EAAO,iBACU,YAAVgF,GACP6G,EAAM,IACNmP,EAASxP,EAAS,IAClBxL,EAAO,iBACU,aAAVgF,GACPgW,EAASnP,EAAM,IACfL,EAAS,IACTxL,EAAO,iBACU,YAAVgF,GACP6G,EAAM,IACNmP,EAASxP,EAAS,IAClBxL,EAAO,iBACU,MAAVgF,GACP6G,EAAM,IACNmP,EAAS,IACTxP,EAAS,IACTxL,EAAO,iBACU,MAAVgF,GACP6G,EAAM,IACNmP,EAAS,IACTxP,EAAS,IACTxL,EAAO,iBACU,QAAVgF,GAA6B,aAAVA,GAC1B6G,EAAM,IACNkP,EAAS,IACTvP,EAAS,IACTwP,EAAS,IACThb,EAAO,iBACU,QAAVgF,GAA6B,aAAVA,GAC1B6G,EAAM,IACNkP,EAAS,IACTvP,EAAS,IACTwP,EAAS,IACThb,EAAO,iBACU,aAAVgF,GACP6G,EAAM,IACNL,EAAS,IACTwP,EAAS,IACThb,EAAO,iBACU,aAAVgF,GACP6G,EAAM,IACNL,EAAS,IACTwP,EAAS,IACThb,EAAO,iBACU,iBAAVgF,GACP6G,EAAM,IACNL,EAAS,IACTwP,EAAS,IACThb,EAAO,iBACU,iBAAVgF,GACP6G,EAAM,IACNL,EAAS,IACTwP,EAAS,IACThb,EAAO,iBACU,WAAVgF,IACP6G,EAAM,IACNL,EAAS,IACTwP,EAAS,IACThb,EAAO,iBAIX,IAAIib,EAAab,EAAWvO,EAAK7L,GAC7Bkb,EAAiBD,EAAWxd,OAASwd,EAAWvd,MAChDyd,EAAgBf,EAAWY,EAAQhb,GACnCob,EAAoBD,EAAc1d,OAAS0d,EAAczd,MACzD2d,EAAgBjB,EAAW5O,EAAQxL,GACnCsb,EAAoBD,EAAc5d,OAAS4d,EAAc3d,MACzD6d,EAAoB,EACpBC,EAAe,EACnB,GAAe,OAAXT,EAAiB,CACjB,IAAIU,EAAgBrB,EAAWW,EAAQ/a,GACvCub,EAAoBE,EAAche,OAASge,EAAc/d,MACzD8d,EAAe,EAKnB,IAAIE,EAAYR,EAAiBI,EAAoBC,EAGjDI,EAAclV,KAAKmV,MAClBd,EAAcY,IAAcF,EAAeJ,IAG5CS,EACAH,EAAYC,EAAcH,EAAeJ,EAMzC/L,EAAa3J,EAAYoC,QAAQuH,WACjCoL,IACApL,GAAc9M,EAAQ3E,MAAMoN,gBAGhC,IAUI7N,EAVAO,EAAQme,EAAkB,EAAIxM,EAK9ByM,EAAS,GAMb,GAHAA,EAAO1V,KAAKuU,EAAUnP,EAAQxL,EAAMD,IAGrB,OAAXgb,EAEA,IAAK5d,EAAI,EAAGA,EAAIwe,EAAaxe,IACzB2e,EAAO1V,KAAKuU,EAAUK,EAAQhb,EAAMD,QAErC,CAGH,IAAK5C,EAAI,EAAGA,EAAIwe,EAAaxe,IACzB2e,EAAO1V,KAAKuU,EAAUK,EAAQhb,EAAMD,IAGxC,IADA+b,EAAO1V,KAAKuU,EAAUI,EAAQ/a,EAAMD,IAC/B5C,EAAI,EAAGA,EAAIwe,EAAaxe,IACzB2e,EAAO1V,KAAKuU,EAAUK,EAAQhb,EAAMD,IAK5C+b,EAAO1V,KAAKuU,EAAU9O,EAAK7L,EAAMD,IAGjC,IAAIa,EAAQc,EAAYwJ,UAAU4Q,EAAQ,SAAUpe,EAAO6E,GAE3D,OAAO+X,EACHxY,EAAS,CAAC,cAAe,QAAS,CAAClB,GAAQ2B,EAAQgI,YACnD1I,EAAMO,KAAMG,IAKhBwZ,EAAuB,CACvB,IAAK,IAAK,IAAK,WAAY,IAAK,WAChC,MAAO,WAAY,MAAO,WAC1B,WAAY,WAAY,UAAW,UACnC,UAIAC,EAAwB,CACxB,YAAa,cAAe,gBAC5B,YAAa,cAAe,gBAC5B,IAAK,MAAO,SAAU,SACtB,UAAW,UAAW,UAAW,UACjC,WAAY,WAAY,eAAgB,gBAIxCC,EAAuB,CACvB,IAAK,IAAK,WAAY,WAAY,IAAK,cAAe,OAAQ,QAM9DC,EAAkB,CAAC,EAAG,IAAK,IAAK,IAAK,GAKrCC,EAAiB,SAASnX,EAAOxC,EAAMD,EAASxC,GAShD,GAPc,MAAViF,GAA2B,SAAVA,EACjBA,EAAQ,WACS,MAAVA,GAA2B,SAAVA,IACxBA,EAAQ,YAIRjI,EAAMkI,SAAS8W,EAAsB/W,IACrCjI,EAAMkI,SAASgX,EAAsBjX,GACrC,OAAO0V,EAAe1V,EAAOxC,GAAM,EAAOD,EAASxC,GAChD,GAAIhD,EAAMkI,SAAS+W,EAAuBhX,GAC7C,OAAO6V,EACH7V,EAAOkX,EAAgB1Z,IAAO,EAAOD,EAASxC,GAElD,MAAM,IAAIiD,EAAW,uBAAyBgC,EAAQ,MAiB1DoX,EAA8B,CAC9B,CAACvZ,KAAM,QAASjF,MAAOiE,EAAMmO,cAC7B,CAACnN,KAAM,QAASjF,MAAOiE,EAAMkO,QAC7B,CAAClN,KAAM,QAASjF,MAAOiE,EAAMO,MAC7B,CAACS,KAAM,QAASL,KAAM,GACtB,CAACK,KAAM,QAASL,KAAM,GACtB,CAACK,KAAM,QAASL,KAAM,GACtB,CAACK,KAAM,QAASL,KAAM,IAItB6Z,EAA+B,CAC/B,CAACxZ,KAAM,QAASjF,MAAOiE,EAAMmO,cAC7B,CAACnN,KAAM,QAASjF,MAAOiE,EAAMkO,QAC7B,CAAClN,KAAM,QAASjF,MAAOiE,EAAMO,MAC7B,CAACS,KAAM,UAKPyZ,EAA8B,CAC9B,CAACzZ,KAAM,QAASjF,MAAOiE,EAAMmO,cAC7B,CAACnN,KAAM,QAASjF,MAAOiE,EAAMkO,QAC7B,CAAClN,KAAM,QAASjF,MAAOiE,EAAMO,MAC7B,CAACS,KAAM,QAASL,KAAM,GACtB,CAACK,KAAM,QAASL,KAAM,GACtB,CAACK,KAAM,QAASL,KAAM,GACtB,CAACK,KAAM,QAASL,KAAM,GACtB,CAACK,KAAM,UAMP0Z,EAAkB,SAAS1Z,GAC3B,MAAkB,UAAdA,EAAKA,KACE,eACc,UAAdA,EAAKA,KACL,OAASA,EAAKL,KAAO,WACP,UAAdK,EAAKA,KACL,qBADJ,GASP2Z,EAAmB,SAASxX,EAAOvH,EAAQgf,EAAUla,GAMrD,IADA,IAAIma,EAAQjW,KAAKC,IAAI,EAAG,EAAInE,EAAQ3E,MAAM4E,MACjCrF,EAAIuf,EAAOvf,EAAIsf,EAASrf,OAAQD,IAAK,CAC1C,GAAyB,UAArBsf,EAAStf,GAAG0F,KAEZ,MAGJ,IAAIiF,EAAUsS,EAAWpV,EAAOuX,EAAgBE,EAAStf,KACrDwf,EAAc7U,EAAQrK,OAASqK,EAAQpK,MAU3C,GALyB,UAArB+e,EAAStf,GAAG0F,OACZ8Z,GAAeF,EAAStf,GAAGS,MAAMoN,gBAIjC2R,EAAclf,EACd,OAAOgf,EAAStf,GAKxB,OAAOsf,EAASA,EAASrf,OAAS,IAOlCwf,EAAuB,SAAS5X,EAAOvH,EAAQgd,EAAQlY,EAASxC,GAQhE,IAAI0c,EAPU,MAAVzX,GAA2B,SAAVA,EACjBA,EAAQ,WACS,MAAVA,GAA2B,SAAVA,IACxBA,EAAQ,YAMRyX,EADA1f,EAAMkI,SAASgX,EAAsBjX,GAC1BoX,EACJrf,EAAMkI,SAAS8W,EAAsB/W,GACjCsX,EAEAD,EAIf,IAAIjX,EAAYoX,EAAiBxX,EAAOvH,EAAQgf,EAAUla,GAI1D,MAAuB,UAAnB6C,EAAUvC,KACH2X,EAAexV,EAAOI,EAAUxH,MAAO6c,EAAQlY,EAASxC,GACrC,UAAnBqF,EAAUvC,KACV6X,EAAe1V,EAAOI,EAAU5C,KAAMiY,EAAQlY,EAASxC,GACpC,UAAnBqF,EAAUvC,KACVgY,EAAiB7V,EAAOvH,EAAQgd,EAAQlY,EAASxC,QADrD,GASP8c,EAAqB,SAAS7X,EAAOvH,EAAQC,EAAO6E,EAASxC,GAE7D,IAAIsP,EACA3J,EAAYoC,QAAQuH,WAAa9M,EAAQ3E,MAAMoN,eAG/C8R,EAAkB,IAClBC,EAAkB,EAAMrX,EAAYoC,QAAQwG,QAE5C0O,EAAkBvW,KAAKgF,IACvBhO,EAAS4R,EAAY3R,EAAQ2R,GAE7BoF,EAAchO,KAAKgF,IAUnBuR,EAAkB,IAAMF,EACxB,EAAIE,EAAkBD,GAI1B,OAAOH,EAAqB5X,EAAOyP,GAAa,EAAMlS,EAASxC,IAGnEH,EAAOC,QAAU,CACbkY,WAAYoE,EACZrI,iBAAkB8I,EAClB3E,eAAgB4E,I,qBCvhBpB,IAAII,EAAS,EAAQ,QAKjBC,EAAY,SAASC,EAASjb,GAC9B,IAAI4D,EAAS,IAAImX,EAAOE,EAASjb,GAEjC,OAAO4D,EAAOiT,SAGlBnZ,EAAOC,QAAUqd","file":"js/chunk-77cc1a6e.ede8ec23.js","sourcesContent":["/**\n * These objects store the data about the DOM nodes we create, as well as some\n * extra data. They can then be transformed into real DOM nodes with the\n * `toNode` function or HTML markup using `toMarkup`. They are useful for both\n * storing extra properties on the nodes, as well as providing a way to easily\n * work with the DOM.\n *\n * Similar functions for working with MathML nodes exist in mathMLTree.js.\n */\n\nvar utils = require(\"./utils\");\n\n/**\n * Create an HTML className based on a list of classes. In addition to joining\n * with spaces, we also remove null or empty classes.\n */\nvar createClass = function(classes) {\n classes = classes.slice();\n for (var i = classes.length - 1; i >= 0; i--) {\n if (!classes[i]) {\n classes.splice(i, 1);\n }\n }\n\n return classes.join(\" \");\n};\n\n/**\n * This node represents a span node, with a className, a list of children, and\n * an inline style. It also contains information about its height, depth, and\n * maxFontSize.\n */\nfunction span(classes, children, height, depth, maxFontSize, style) {\n this.classes = classes || [];\n this.children = children || [];\n this.height = height || 0;\n this.depth = depth || 0;\n this.maxFontSize = maxFontSize || 0;\n this.style = style || {};\n this.attributes = {};\n}\n\n/**\n * Sets an arbitrary attribute on the span. Warning: use this wisely. Not all\n * browsers support attributes the same, and having too many custom attributes\n * is probably bad.\n */\nspan.prototype.setAttribute = function(attribute, value) {\n this.attributes[attribute] = value;\n};\n\n/**\n * Convert the span into an HTML node\n */\nspan.prototype.toNode = function() {\n var span = document.createElement(\"span\");\n\n // Apply the class\n span.className = createClass(this.classes);\n\n // Apply inline styles\n for (var style in this.style) {\n if (Object.prototype.hasOwnProperty.call(this.style, style)) {\n span.style[style] = this.style[style];\n }\n }\n\n // Apply attributes\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n span.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n // Append the children, also as HTML nodes\n for (var i = 0; i < this.children.length; i++) {\n span.appendChild(this.children[i].toNode());\n }\n\n return span;\n};\n\n/**\n * Convert the span into an HTML markup string\n */\nspan.prototype.toMarkup = function() {\n var markup = \"\";\n\n // Add the markup of the children, also as markup\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\";\n\n return markup;\n};\n\n/**\n * This node represents a document fragment, which contains elements, but when\n * placed into the DOM doesn't have any representation itself. Thus, it only\n * contains children and doesn't have any HTML properties. It also keeps track\n * of a height, depth, and maxFontSize.\n */\nfunction documentFragment(children, height, depth, maxFontSize) {\n this.children = children || [];\n this.height = height || 0;\n this.depth = depth || 0;\n this.maxFontSize = maxFontSize || 0;\n}\n\n/**\n * Convert the fragment into a node\n */\ndocumentFragment.prototype.toNode = function() {\n // Create a fragment\n var frag = document.createDocumentFragment();\n\n // Append the children\n for (var i = 0; i < this.children.length; i++) {\n frag.appendChild(this.children[i].toNode());\n }\n\n return frag;\n};\n\n/**\n * Convert the fragment into HTML markup\n */\ndocumentFragment.prototype.toMarkup = function() {\n var markup = \"\";\n\n // Simply concatenate the markup for the children together\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n return markup;\n};\n\n/**\n * A symbol node contains information about a single symbol. It either renders\n * to a single text node, or a span with a single text node in it, depending on\n * whether it has CSS classes, styles, or needs italic correction.\n */\nfunction symbolNode(value, height, depth, italic, skew, classes, style) {\n this.value = value || \"\";\n this.height = height || 0;\n this.depth = depth || 0;\n this.italic = italic || 0;\n this.skew = skew || 0;\n this.classes = classes || [];\n this.style = style || {};\n this.maxFontSize = 0;\n}\n\n/**\n * Creates a text node or span from a symbol node. Note that a span is only\n * created if it is needed.\n */\nsymbolNode.prototype.toNode = function() {\n var node = document.createTextNode(this.value);\n var span = null;\n\n if (this.italic > 0) {\n span = document.createElement(\"span\");\n span.style.marginRight = this.italic + \"em\";\n }\n\n if (this.classes.length > 0) {\n span = span || document.createElement(\"span\");\n span.className = createClass(this.classes);\n }\n\n for (var style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n span = span || document.createElement(\"span\");\n span.style[style] = this.style[style];\n }\n }\n\n if (span) {\n span.appendChild(node);\n return span;\n } else {\n return node;\n }\n};\n\n/**\n * Creates markup for a symbol node.\n */\nsymbolNode.prototype.toMarkup = function() {\n // TODO(alpert): More duplication than I'd like from\n // span.prototype.toMarkup and symbolNode.prototype.toNode...\n var needsSpan = false;\n\n var markup = \" 0) {\n styles += \"margin-right:\" + this.italic + \"em;\";\n }\n for (var style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n styles += utils.hyphenate(style) + \":\" + this.style[style] + \";\";\n }\n }\n\n if (styles) {\n needsSpan = true;\n markup += \" style=\\\"\" + utils.escape(styles) + \"\\\"\";\n }\n\n var escaped = utils.escape(this.value);\n if (needsSpan) {\n markup += \">\";\n markup += escaped;\n markup += \"\";\n return markup;\n } else {\n return escaped;\n }\n};\n\nmodule.exports = {\n span: span,\n documentFragment: documentFragment,\n symbolNode: symbolNode,\n};\n","/**\n * This file holds a list of all no-argument functions and single-character\n * symbols (like 'a' or ';').\n *\n * For each of the symbols, there are three properties they can have:\n * - font (required): the font to be used for this symbol. Either \"main\" (the\n normal font), or \"ams\" (the ams fonts).\n * - group (required): the ParseNode group type the symbol should have (i.e.\n \"textord\", \"mathord\", etc).\n See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types\n * - replace: the character that this symbol or function should be\n * replaced with (i.e. \"\\phi\" has a replace value of \"\\u03d5\", the phi\n * character in the main font).\n *\n * The outermost map in the table indicates what mode the symbols should be\n * accepted in (e.g. \"math\" or \"text\").\n */\n\nmodule.exports = {\n math: {},\n text: {},\n};\n\nfunction defineSymbol(mode, font, group, replace, name) {\n module.exports[mode][name] = {\n font: font,\n group: group,\n replace: replace,\n };\n}\n\n// Some abbreviations for commonly used strings.\n// This helps minify the code, and also spotting typos using jshint.\n\n// modes:\nvar math = \"math\";\nvar text = \"text\";\n\n// fonts:\nvar main = \"main\";\nvar ams = \"ams\";\n\n// groups:\nvar accent = \"accent\";\nvar bin = \"bin\";\nvar close = \"close\";\nvar inner = \"inner\";\nvar mathord = \"mathord\";\nvar op = \"op\";\nvar open = \"open\";\nvar punct = \"punct\";\nvar rel = \"rel\";\nvar spacing = \"spacing\";\nvar textord = \"textord\";\n\n// Now comes the symbol table\n\n// Relation Symbols\ndefineSymbol(math, main, rel, \"\\u2261\", \"\\\\equiv\");\ndefineSymbol(math, main, rel, \"\\u227a\", \"\\\\prec\");\ndefineSymbol(math, main, rel, \"\\u227b\", \"\\\\succ\");\ndefineSymbol(math, main, rel, \"\\u223c\", \"\\\\sim\");\ndefineSymbol(math, main, rel, \"\\u22a5\", \"\\\\perp\");\ndefineSymbol(math, main, rel, \"\\u2aaf\", \"\\\\preceq\");\ndefineSymbol(math, main, rel, \"\\u2ab0\", \"\\\\succeq\");\ndefineSymbol(math, main, rel, \"\\u2243\", \"\\\\simeq\");\ndefineSymbol(math, main, rel, \"\\u2223\", \"\\\\mid\");\ndefineSymbol(math, main, rel, \"\\u226a\", \"\\\\ll\");\ndefineSymbol(math, main, rel, \"\\u226b\", \"\\\\gg\");\ndefineSymbol(math, main, rel, \"\\u224d\", \"\\\\asymp\");\ndefineSymbol(math, main, rel, \"\\u2225\", \"\\\\parallel\");\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\bowtie\");\ndefineSymbol(math, main, rel, \"\\u2323\", \"\\\\smile\");\ndefineSymbol(math, main, rel, \"\\u2291\", \"\\\\sqsubseteq\");\ndefineSymbol(math, main, rel, \"\\u2292\", \"\\\\sqsupseteq\");\ndefineSymbol(math, main, rel, \"\\u2250\", \"\\\\doteq\");\ndefineSymbol(math, main, rel, \"\\u2322\", \"\\\\frown\");\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\ni\");\ndefineSymbol(math, main, rel, \"\\u221d\", \"\\\\propto\");\ndefineSymbol(math, main, rel, \"\\u22a2\", \"\\\\vdash\");\ndefineSymbol(math, main, rel, \"\\u22a3\", \"\\\\dashv\");\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\owns\");\n\n// Punctuation\ndefineSymbol(math, main, punct, \"\\u002e\", \"\\\\ldotp\");\ndefineSymbol(math, main, punct, \"\\u22c5\", \"\\\\cdotp\");\n\n// Misc Symbols\ndefineSymbol(math, main, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(math, main, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(math, main, textord, \"\\u2135\", \"\\\\aleph\");\ndefineSymbol(math, main, textord, \"\\u2200\", \"\\\\forall\");\ndefineSymbol(math, main, textord, \"\\u210f\", \"\\\\hbar\");\ndefineSymbol(math, main, textord, \"\\u2203\", \"\\\\exists\");\ndefineSymbol(math, main, textord, \"\\u2207\", \"\\\\nabla\");\ndefineSymbol(math, main, textord, \"\\u266d\", \"\\\\flat\");\ndefineSymbol(math, main, textord, \"\\u2113\", \"\\\\ell\");\ndefineSymbol(math, main, textord, \"\\u266e\", \"\\\\natural\");\ndefineSymbol(math, main, textord, \"\\u2663\", \"\\\\clubsuit\");\ndefineSymbol(math, main, textord, \"\\u2118\", \"\\\\wp\");\ndefineSymbol(math, main, textord, \"\\u266f\", \"\\\\sharp\");\ndefineSymbol(math, main, textord, \"\\u2662\", \"\\\\diamondsuit\");\ndefineSymbol(math, main, textord, \"\\u211c\", \"\\\\Re\");\ndefineSymbol(math, main, textord, \"\\u2661\", \"\\\\heartsuit\");\ndefineSymbol(math, main, textord, \"\\u2111\", \"\\\\Im\");\ndefineSymbol(math, main, textord, \"\\u2660\", \"\\\\spadesuit\");\n\n// Math and Text\ndefineSymbol(math, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(math, main, textord, \"\\u2021\", \"\\\\ddag\");\n\n// Large Delimiters\ndefineSymbol(math, main, close, \"\\u23b1\", \"\\\\rmoustache\");\ndefineSymbol(math, main, open, \"\\u23b0\", \"\\\\lmoustache\");\ndefineSymbol(math, main, close, \"\\u27ef\", \"\\\\rgroup\");\ndefineSymbol(math, main, open, \"\\u27ee\", \"\\\\lgroup\");\n\n// Binary Operators\ndefineSymbol(math, main, bin, \"\\u2213\", \"\\\\mp\");\ndefineSymbol(math, main, bin, \"\\u2296\", \"\\\\ominus\");\ndefineSymbol(math, main, bin, \"\\u228e\", \"\\\\uplus\");\ndefineSymbol(math, main, bin, \"\\u2293\", \"\\\\sqcap\");\ndefineSymbol(math, main, bin, \"\\u2217\", \"\\\\ast\");\ndefineSymbol(math, main, bin, \"\\u2294\", \"\\\\sqcup\");\ndefineSymbol(math, main, bin, \"\\u25ef\", \"\\\\bigcirc\");\ndefineSymbol(math, main, bin, \"\\u2219\", \"\\\\bullet\");\ndefineSymbol(math, main, bin, \"\\u2021\", \"\\\\ddagger\");\ndefineSymbol(math, main, bin, \"\\u2240\", \"\\\\wr\");\ndefineSymbol(math, main, bin, \"\\u2a3f\", \"\\\\amalg\");\n\n// Arrow Symbols\ndefineSymbol(math, main, rel, \"\\u27f5\", \"\\\\longleftarrow\");\ndefineSymbol(math, main, rel, \"\\u21d0\", \"\\\\Leftarrow\");\ndefineSymbol(math, main, rel, \"\\u27f8\", \"\\\\Longleftarrow\");\ndefineSymbol(math, main, rel, \"\\u27f6\", \"\\\\longrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21d2\", \"\\\\Rightarrow\");\ndefineSymbol(math, main, rel, \"\\u27f9\", \"\\\\Longrightarrow\");\ndefineSymbol(math, main, rel, \"\\u2194\", \"\\\\leftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u27f7\", \"\\\\longleftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21d4\", \"\\\\Leftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u27fa\", \"\\\\Longleftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21a6\", \"\\\\mapsto\");\ndefineSymbol(math, main, rel, \"\\u27fc\", \"\\\\longmapsto\");\ndefineSymbol(math, main, rel, \"\\u2197\", \"\\\\nearrow\");\ndefineSymbol(math, main, rel, \"\\u21a9\", \"\\\\hookleftarrow\");\ndefineSymbol(math, main, rel, \"\\u21aa\", \"\\\\hookrightarrow\");\ndefineSymbol(math, main, rel, \"\\u2198\", \"\\\\searrow\");\ndefineSymbol(math, main, rel, \"\\u21bc\", \"\\\\leftharpoonup\");\ndefineSymbol(math, main, rel, \"\\u21c0\", \"\\\\rightharpoonup\");\ndefineSymbol(math, main, rel, \"\\u2199\", \"\\\\swarrow\");\ndefineSymbol(math, main, rel, \"\\u21bd\", \"\\\\leftharpoondown\");\ndefineSymbol(math, main, rel, \"\\u21c1\", \"\\\\rightharpoondown\");\ndefineSymbol(math, main, rel, \"\\u2196\", \"\\\\nwarrow\");\ndefineSymbol(math, main, rel, \"\\u21cc\", \"\\\\rightleftharpoons\");\n\n// AMS Negated Binary Relations\ndefineSymbol(math, ams, rel, \"\\u226e\", \"\\\\nless\");\ndefineSymbol(math, ams, rel, \"\\ue010\", \"\\\\nleqslant\");\ndefineSymbol(math, ams, rel, \"\\ue011\", \"\\\\nleqq\");\ndefineSymbol(math, ams, rel, \"\\u2a87\", \"\\\\lneq\");\ndefineSymbol(math, ams, rel, \"\\u2268\", \"\\\\lneqq\");\ndefineSymbol(math, ams, rel, \"\\ue00c\", \"\\\\lvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e6\", \"\\\\lnsim\");\ndefineSymbol(math, ams, rel, \"\\u2a89\", \"\\\\lnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2280\", \"\\\\nprec\");\ndefineSymbol(math, ams, rel, \"\\u22e0\", \"\\\\npreceq\");\ndefineSymbol(math, ams, rel, \"\\u22e8\", \"\\\\precnsim\");\ndefineSymbol(math, ams, rel, \"\\u2ab9\", \"\\\\precnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2241\", \"\\\\nsim\");\ndefineSymbol(math, ams, rel, \"\\ue006\", \"\\\\nshortmid\");\ndefineSymbol(math, ams, rel, \"\\u2224\", \"\\\\nmid\");\ndefineSymbol(math, ams, rel, \"\\u22ac\", \"\\\\nvdash\");\ndefineSymbol(math, ams, rel, \"\\u22ad\", \"\\\\nvDash\");\ndefineSymbol(math, ams, rel, \"\\u22ea\", \"\\\\ntriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22ec\", \"\\\\ntrianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u228a\", \"\\\\subsetneq\");\ndefineSymbol(math, ams, rel, \"\\ue01a\", \"\\\\varsubsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acb\", \"\\\\subsetneqq\");\ndefineSymbol(math, ams, rel, \"\\ue017\", \"\\\\varsubsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u226f\", \"\\\\ngtr\");\ndefineSymbol(math, ams, rel, \"\\ue00f\", \"\\\\ngeqslant\");\ndefineSymbol(math, ams, rel, \"\\ue00e\", \"\\\\ngeqq\");\ndefineSymbol(math, ams, rel, \"\\u2a88\", \"\\\\gneq\");\ndefineSymbol(math, ams, rel, \"\\u2269\", \"\\\\gneqq\");\ndefineSymbol(math, ams, rel, \"\\ue00d\", \"\\\\gvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e7\", \"\\\\gnsim\");\ndefineSymbol(math, ams, rel, \"\\u2a8a\", \"\\\\gnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2281\", \"\\\\nsucc\");\ndefineSymbol(math, ams, rel, \"\\u22e1\", \"\\\\nsucceq\");\ndefineSymbol(math, ams, rel, \"\\u22e9\", \"\\\\succnsim\");\ndefineSymbol(math, ams, rel, \"\\u2aba\", \"\\\\succnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2246\", \"\\\\ncong\");\ndefineSymbol(math, ams, rel, \"\\ue007\", \"\\\\nshortparallel\");\ndefineSymbol(math, ams, rel, \"\\u2226\", \"\\\\nparallel\");\ndefineSymbol(math, ams, rel, \"\\u22af\", \"\\\\nVDash\");\ndefineSymbol(math, ams, rel, \"\\u22eb\", \"\\\\ntriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22ed\", \"\\\\ntrianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\ue018\", \"\\\\nsupseteqq\");\ndefineSymbol(math, ams, rel, \"\\u228b\", \"\\\\supsetneq\");\ndefineSymbol(math, ams, rel, \"\\ue01b\", \"\\\\varsupsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acc\", \"\\\\supsetneqq\");\ndefineSymbol(math, ams, rel, \"\\ue019\", \"\\\\varsupsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u22ae\", \"\\\\nVdash\");\ndefineSymbol(math, ams, rel, \"\\u2ab5\", \"\\\\precneqq\");\ndefineSymbol(math, ams, rel, \"\\u2ab6\", \"\\\\succneqq\");\ndefineSymbol(math, ams, rel, \"\\ue016\", \"\\\\nsubseteqq\");\ndefineSymbol(math, ams, bin, \"\\u22b4\", \"\\\\unlhd\");\ndefineSymbol(math, ams, bin, \"\\u22b5\", \"\\\\unrhd\");\n\n// AMS Negated Arrows\ndefineSymbol(math, ams, rel, \"\\u219a\", \"\\\\nleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u219b\", \"\\\\nrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21cd\", \"\\\\nLeftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21cf\", \"\\\\nRightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21ae\", \"\\\\nleftrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21ce\", \"\\\\nLeftrightarrow\");\n\n// AMS Misc\ndefineSymbol(math, ams, rel, \"\\u25b3\", \"\\\\vartriangle\");\ndefineSymbol(math, ams, textord, \"\\u210f\", \"\\\\hslash\");\ndefineSymbol(math, ams, textord, \"\\u25bd\", \"\\\\triangledown\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\lozenge\");\ndefineSymbol(math, ams, textord, \"\\u24c8\", \"\\\\circledS\");\ndefineSymbol(math, ams, textord, \"\\u00ae\", \"\\\\circledR\");\ndefineSymbol(math, ams, textord, \"\\u2221\", \"\\\\measuredangle\");\ndefineSymbol(math, ams, textord, \"\\u2204\", \"\\\\nexists\");\ndefineSymbol(math, ams, textord, \"\\u2127\", \"\\\\mho\");\ndefineSymbol(math, ams, textord, \"\\u2132\", \"\\\\Finv\");\ndefineSymbol(math, ams, textord, \"\\u2141\", \"\\\\Game\");\ndefineSymbol(math, ams, textord, \"\\u006b\", \"\\\\Bbbk\");\ndefineSymbol(math, ams, textord, \"\\u2035\", \"\\\\backprime\");\ndefineSymbol(math, ams, textord, \"\\u25b2\", \"\\\\blacktriangle\");\ndefineSymbol(math, ams, textord, \"\\u25bc\", \"\\\\blacktriangledown\");\ndefineSymbol(math, ams, textord, \"\\u25a0\", \"\\\\blacksquare\");\ndefineSymbol(math, ams, textord, \"\\u29eb\", \"\\\\blacklozenge\");\ndefineSymbol(math, ams, textord, \"\\u2605\", \"\\\\bigstar\");\ndefineSymbol(math, ams, textord, \"\\u2222\", \"\\\\sphericalangle\");\ndefineSymbol(math, ams, textord, \"\\u2201\", \"\\\\complement\");\ndefineSymbol(math, ams, textord, \"\\u00f0\", \"\\\\eth\");\ndefineSymbol(math, ams, textord, \"\\u2571\", \"\\\\diagup\");\ndefineSymbol(math, ams, textord, \"\\u2572\", \"\\\\diagdown\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\square\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\Box\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\Diamond\");\ndefineSymbol(math, ams, textord, \"\\u00a5\", \"\\\\yen\");\ndefineSymbol(math, ams, textord, \"\\u2713\", \"\\\\checkmark\");\n\n// AMS Hebrew\ndefineSymbol(math, ams, textord, \"\\u2136\", \"\\\\beth\");\ndefineSymbol(math, ams, textord, \"\\u2138\", \"\\\\daleth\");\ndefineSymbol(math, ams, textord, \"\\u2137\", \"\\\\gimel\");\n\n// AMS Greek\ndefineSymbol(math, ams, textord, \"\\u03dd\", \"\\\\digamma\");\ndefineSymbol(math, ams, textord, \"\\u03f0\", \"\\\\varkappa\");\n\n// AMS Delimiters\ndefineSymbol(math, ams, open, \"\\u250c\", \"\\\\ulcorner\");\ndefineSymbol(math, ams, close, \"\\u2510\", \"\\\\urcorner\");\ndefineSymbol(math, ams, open, \"\\u2514\", \"\\\\llcorner\");\ndefineSymbol(math, ams, close, \"\\u2518\", \"\\\\lrcorner\");\n\n// AMS Binary Relations\ndefineSymbol(math, ams, rel, \"\\u2266\", \"\\\\leqq\");\ndefineSymbol(math, ams, rel, \"\\u2a7d\", \"\\\\leqslant\");\ndefineSymbol(math, ams, rel, \"\\u2a95\", \"\\\\eqslantless\");\ndefineSymbol(math, ams, rel, \"\\u2272\", \"\\\\lesssim\");\ndefineSymbol(math, ams, rel, \"\\u2a85\", \"\\\\lessapprox\");\ndefineSymbol(math, ams, rel, \"\\u224a\", \"\\\\approxeq\");\ndefineSymbol(math, ams, bin, \"\\u22d6\", \"\\\\lessdot\");\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\lll\");\ndefineSymbol(math, ams, rel, \"\\u2276\", \"\\\\lessgtr\");\ndefineSymbol(math, ams, rel, \"\\u22da\", \"\\\\lesseqgtr\");\ndefineSymbol(math, ams, rel, \"\\u2a8b\", \"\\\\lesseqqgtr\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\doteqdot\");\ndefineSymbol(math, ams, rel, \"\\u2253\", \"\\\\risingdotseq\");\ndefineSymbol(math, ams, rel, \"\\u2252\", \"\\\\fallingdotseq\");\ndefineSymbol(math, ams, rel, \"\\u223d\", \"\\\\backsim\");\ndefineSymbol(math, ams, rel, \"\\u22cd\", \"\\\\backsimeq\");\ndefineSymbol(math, ams, rel, \"\\u2ac5\", \"\\\\subseteqq\");\ndefineSymbol(math, ams, rel, \"\\u22d0\", \"\\\\Subset\");\ndefineSymbol(math, ams, rel, \"\\u228f\", \"\\\\sqsubset\");\ndefineSymbol(math, ams, rel, \"\\u227c\", \"\\\\preccurlyeq\");\ndefineSymbol(math, ams, rel, \"\\u22de\", \"\\\\curlyeqprec\");\ndefineSymbol(math, ams, rel, \"\\u227e\", \"\\\\precsim\");\ndefineSymbol(math, ams, rel, \"\\u2ab7\", \"\\\\precapprox\");\ndefineSymbol(math, ams, rel, \"\\u22b2\", \"\\\\vartriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22b4\", \"\\\\trianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u22a8\", \"\\\\vDash\");\ndefineSymbol(math, ams, rel, \"\\u22aa\", \"\\\\Vvdash\");\ndefineSymbol(math, ams, rel, \"\\u2323\", \"\\\\smallsmile\");\ndefineSymbol(math, ams, rel, \"\\u2322\", \"\\\\smallfrown\");\ndefineSymbol(math, ams, rel, \"\\u224f\", \"\\\\bumpeq\");\ndefineSymbol(math, ams, rel, \"\\u224e\", \"\\\\Bumpeq\");\ndefineSymbol(math, ams, rel, \"\\u2267\", \"\\\\geqq\");\ndefineSymbol(math, ams, rel, \"\\u2a7e\", \"\\\\geqslant\");\ndefineSymbol(math, ams, rel, \"\\u2a96\", \"\\\\eqslantgtr\");\ndefineSymbol(math, ams, rel, \"\\u2273\", \"\\\\gtrsim\");\ndefineSymbol(math, ams, rel, \"\\u2a86\", \"\\\\gtrapprox\");\ndefineSymbol(math, ams, bin, \"\\u22d7\", \"\\\\gtrdot\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\ggg\");\ndefineSymbol(math, ams, rel, \"\\u2277\", \"\\\\gtrless\");\ndefineSymbol(math, ams, rel, \"\\u22db\", \"\\\\gtreqless\");\ndefineSymbol(math, ams, rel, \"\\u2a8c\", \"\\\\gtreqqless\");\ndefineSymbol(math, ams, rel, \"\\u2256\", \"\\\\eqcirc\");\ndefineSymbol(math, ams, rel, \"\\u2257\", \"\\\\circeq\");\ndefineSymbol(math, ams, rel, \"\\u225c\", \"\\\\triangleq\");\ndefineSymbol(math, ams, rel, \"\\u223c\", \"\\\\thicksim\");\ndefineSymbol(math, ams, rel, \"\\u2248\", \"\\\\thickapprox\");\ndefineSymbol(math, ams, rel, \"\\u2ac6\", \"\\\\supseteqq\");\ndefineSymbol(math, ams, rel, \"\\u22d1\", \"\\\\Supset\");\ndefineSymbol(math, ams, rel, \"\\u2290\", \"\\\\sqsupset\");\ndefineSymbol(math, ams, rel, \"\\u227d\", \"\\\\succcurlyeq\");\ndefineSymbol(math, ams, rel, \"\\u22df\", \"\\\\curlyeqsucc\");\ndefineSymbol(math, ams, rel, \"\\u227f\", \"\\\\succsim\");\ndefineSymbol(math, ams, rel, \"\\u2ab8\", \"\\\\succapprox\");\ndefineSymbol(math, ams, rel, \"\\u22b3\", \"\\\\vartriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22b5\", \"\\\\trianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\u22a9\", \"\\\\Vdash\");\ndefineSymbol(math, ams, rel, \"\\u2223\", \"\\\\shortmid\");\ndefineSymbol(math, ams, rel, \"\\u2225\", \"\\\\shortparallel\");\ndefineSymbol(math, ams, rel, \"\\u226c\", \"\\\\between\");\ndefineSymbol(math, ams, rel, \"\\u22d4\", \"\\\\pitchfork\");\ndefineSymbol(math, ams, rel, \"\\u221d\", \"\\\\varpropto\");\ndefineSymbol(math, ams, rel, \"\\u25c0\", \"\\\\blacktriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u2234\", \"\\\\therefore\");\ndefineSymbol(math, ams, rel, \"\\u220d\", \"\\\\backepsilon\");\ndefineSymbol(math, ams, rel, \"\\u25b6\", \"\\\\blacktriangleright\");\ndefineSymbol(math, ams, rel, \"\\u2235\", \"\\\\because\");\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\llless\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\gggtr\");\ndefineSymbol(math, ams, bin, \"\\u22b2\", \"\\\\lhd\");\ndefineSymbol(math, ams, bin, \"\\u22b3\", \"\\\\rhd\");\ndefineSymbol(math, ams, rel, \"\\u2242\", \"\\\\eqsim\");\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\Join\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\Doteq\");\n\n// AMS Binary Operators\ndefineSymbol(math, ams, bin, \"\\u2214\", \"\\\\dotplus\");\ndefineSymbol(math, ams, bin, \"\\u2216\", \"\\\\smallsetminus\");\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\Cap\");\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\Cup\");\ndefineSymbol(math, ams, bin, \"\\u2a5e\", \"\\\\doublebarwedge\");\ndefineSymbol(math, ams, bin, \"\\u229f\", \"\\\\boxminus\");\ndefineSymbol(math, ams, bin, \"\\u229e\", \"\\\\boxplus\");\ndefineSymbol(math, ams, bin, \"\\u22c7\", \"\\\\divideontimes\");\ndefineSymbol(math, ams, bin, \"\\u22c9\", \"\\\\ltimes\");\ndefineSymbol(math, ams, bin, \"\\u22ca\", \"\\\\rtimes\");\ndefineSymbol(math, ams, bin, \"\\u22cb\", \"\\\\leftthreetimes\");\ndefineSymbol(math, ams, bin, \"\\u22cc\", \"\\\\rightthreetimes\");\ndefineSymbol(math, ams, bin, \"\\u22cf\", \"\\\\curlywedge\");\ndefineSymbol(math, ams, bin, \"\\u22ce\", \"\\\\curlyvee\");\ndefineSymbol(math, ams, bin, \"\\u229d\", \"\\\\circleddash\");\ndefineSymbol(math, ams, bin, \"\\u229b\", \"\\\\circledast\");\ndefineSymbol(math, ams, bin, \"\\u22c5\", \"\\\\centerdot\");\ndefineSymbol(math, ams, bin, \"\\u22ba\", \"\\\\intercal\");\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\doublecap\");\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\doublecup\");\ndefineSymbol(math, ams, bin, \"\\u22a0\", \"\\\\boxtimes\");\n\n// AMS Arrows\ndefineSymbol(math, ams, rel, \"\\u21e2\", \"\\\\dashrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21e0\", \"\\\\dashleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21c7\", \"\\\\leftleftarrows\");\ndefineSymbol(math, ams, rel, \"\\u21c6\", \"\\\\leftrightarrows\");\ndefineSymbol(math, ams, rel, \"\\u21da\", \"\\\\Lleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u219e\", \"\\\\twoheadleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21a2\", \"\\\\leftarrowtail\");\ndefineSymbol(math, ams, rel, \"\\u21ab\", \"\\\\looparrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21cb\", \"\\\\leftrightharpoons\");\ndefineSymbol(math, ams, rel, \"\\u21b6\", \"\\\\curvearrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21ba\", \"\\\\circlearrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21b0\", \"\\\\Lsh\");\ndefineSymbol(math, ams, rel, \"\\u21c8\", \"\\\\upuparrows\");\ndefineSymbol(math, ams, rel, \"\\u21bf\", \"\\\\upharpoonleft\");\ndefineSymbol(math, ams, rel, \"\\u21c3\", \"\\\\downharpoonleft\");\ndefineSymbol(math, ams, rel, \"\\u22b8\", \"\\\\multimap\");\ndefineSymbol(math, ams, rel, \"\\u21ad\", \"\\\\leftrightsquigarrow\");\ndefineSymbol(math, ams, rel, \"\\u21c9\", \"\\\\rightrightarrows\");\ndefineSymbol(math, ams, rel, \"\\u21c4\", \"\\\\rightleftarrows\");\ndefineSymbol(math, ams, rel, \"\\u21a0\", \"\\\\twoheadrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21a3\", \"\\\\rightarrowtail\");\ndefineSymbol(math, ams, rel, \"\\u21ac\", \"\\\\looparrowright\");\ndefineSymbol(math, ams, rel, \"\\u21b7\", \"\\\\curvearrowright\");\ndefineSymbol(math, ams, rel, \"\\u21bb\", \"\\\\circlearrowright\");\ndefineSymbol(math, ams, rel, \"\\u21b1\", \"\\\\Rsh\");\ndefineSymbol(math, ams, rel, \"\\u21ca\", \"\\\\downdownarrows\");\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\upharpoonright\");\ndefineSymbol(math, ams, rel, \"\\u21c2\", \"\\\\downharpoonright\");\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\rightsquigarrow\");\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\leadsto\");\ndefineSymbol(math, ams, rel, \"\\u21db\", \"\\\\Rrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\restriction\");\n\ndefineSymbol(math, main, textord, \"\\u2018\", \"`\");\ndefineSymbol(math, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(math, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(math, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(math, main, textord, \"\\u2220\", \"\\\\angle\");\ndefineSymbol(math, main, textord, \"\\u221e\", \"\\\\infty\");\ndefineSymbol(math, main, textord, \"\\u2032\", \"\\\\prime\");\ndefineSymbol(math, main, textord, \"\\u25b3\", \"\\\\triangle\");\ndefineSymbol(math, main, textord, \"\\u0393\", \"\\\\Gamma\");\ndefineSymbol(math, main, textord, \"\\u0394\", \"\\\\Delta\");\ndefineSymbol(math, main, textord, \"\\u0398\", \"\\\\Theta\");\ndefineSymbol(math, main, textord, \"\\u039b\", \"\\\\Lambda\");\ndefineSymbol(math, main, textord, \"\\u039e\", \"\\\\Xi\");\ndefineSymbol(math, main, textord, \"\\u03a0\", \"\\\\Pi\");\ndefineSymbol(math, main, textord, \"\\u03a3\", \"\\\\Sigma\");\ndefineSymbol(math, main, textord, \"\\u03a5\", \"\\\\Upsilon\");\ndefineSymbol(math, main, textord, \"\\u03a6\", \"\\\\Phi\");\ndefineSymbol(math, main, textord, \"\\u03a8\", \"\\\\Psi\");\ndefineSymbol(math, main, textord, \"\\u03a9\", \"\\\\Omega\");\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\neg\");\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\lnot\");\ndefineSymbol(math, main, textord, \"\\u22a4\", \"\\\\top\");\ndefineSymbol(math, main, textord, \"\\u22a5\", \"\\\\bot\");\ndefineSymbol(math, main, textord, \"\\u2205\", \"\\\\emptyset\");\ndefineSymbol(math, ams, textord, \"\\u2205\", \"\\\\varnothing\");\ndefineSymbol(math, main, mathord, \"\\u03b1\", \"\\\\alpha\");\ndefineSymbol(math, main, mathord, \"\\u03b2\", \"\\\\beta\");\ndefineSymbol(math, main, mathord, \"\\u03b3\", \"\\\\gamma\");\ndefineSymbol(math, main, mathord, \"\\u03b4\", \"\\\\delta\");\ndefineSymbol(math, main, mathord, \"\\u03f5\", \"\\\\epsilon\");\ndefineSymbol(math, main, mathord, \"\\u03b6\", \"\\\\zeta\");\ndefineSymbol(math, main, mathord, \"\\u03b7\", \"\\\\eta\");\ndefineSymbol(math, main, mathord, \"\\u03b8\", \"\\\\theta\");\ndefineSymbol(math, main, mathord, \"\\u03b9\", \"\\\\iota\");\ndefineSymbol(math, main, mathord, \"\\u03ba\", \"\\\\kappa\");\ndefineSymbol(math, main, mathord, \"\\u03bb\", \"\\\\lambda\");\ndefineSymbol(math, main, mathord, \"\\u03bc\", \"\\\\mu\");\ndefineSymbol(math, main, mathord, \"\\u03bd\", \"\\\\nu\");\ndefineSymbol(math, main, mathord, \"\\u03be\", \"\\\\xi\");\ndefineSymbol(math, main, mathord, \"o\", \"\\\\omicron\");\ndefineSymbol(math, main, mathord, \"\\u03c0\", \"\\\\pi\");\ndefineSymbol(math, main, mathord, \"\\u03c1\", \"\\\\rho\");\ndefineSymbol(math, main, mathord, \"\\u03c3\", \"\\\\sigma\");\ndefineSymbol(math, main, mathord, \"\\u03c4\", \"\\\\tau\");\ndefineSymbol(math, main, mathord, \"\\u03c5\", \"\\\\upsilon\");\ndefineSymbol(math, main, mathord, \"\\u03d5\", \"\\\\phi\");\ndefineSymbol(math, main, mathord, \"\\u03c7\", \"\\\\chi\");\ndefineSymbol(math, main, mathord, \"\\u03c8\", \"\\\\psi\");\ndefineSymbol(math, main, mathord, \"\\u03c9\", \"\\\\omega\");\ndefineSymbol(math, main, mathord, \"\\u03b5\", \"\\\\varepsilon\");\ndefineSymbol(math, main, mathord, \"\\u03d1\", \"\\\\vartheta\");\ndefineSymbol(math, main, mathord, \"\\u03d6\", \"\\\\varpi\");\ndefineSymbol(math, main, mathord, \"\\u03f1\", \"\\\\varrho\");\ndefineSymbol(math, main, mathord, \"\\u03c2\", \"\\\\varsigma\");\ndefineSymbol(math, main, mathord, \"\\u03c6\", \"\\\\varphi\");\ndefineSymbol(math, main, bin, \"\\u2217\", \"*\");\ndefineSymbol(math, main, bin, \"+\", \"+\");\ndefineSymbol(math, main, bin, \"\\u2212\", \"-\");\ndefineSymbol(math, main, bin, \"\\u22c5\", \"\\\\cdot\");\ndefineSymbol(math, main, bin, \"\\u2218\", \"\\\\circ\");\ndefineSymbol(math, main, bin, \"\\u00f7\", \"\\\\div\");\ndefineSymbol(math, main, bin, \"\\u00b1\", \"\\\\pm\");\ndefineSymbol(math, main, bin, \"\\u00d7\", \"\\\\times\");\ndefineSymbol(math, main, bin, \"\\u2229\", \"\\\\cap\");\ndefineSymbol(math, main, bin, \"\\u222a\", \"\\\\cup\");\ndefineSymbol(math, main, bin, \"\\u2216\", \"\\\\setminus\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\land\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\lor\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\wedge\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\vee\");\ndefineSymbol(math, main, textord, \"\\u221a\", \"\\\\surd\");\ndefineSymbol(math, main, open, \"(\", \"(\");\ndefineSymbol(math, main, open, \"[\", \"[\");\ndefineSymbol(math, main, open, \"\\u27e8\", \"\\\\langle\");\ndefineSymbol(math, main, open, \"\\u2223\", \"\\\\lvert\");\ndefineSymbol(math, main, open, \"\\u2225\", \"\\\\lVert\");\ndefineSymbol(math, main, close, \")\", \")\");\ndefineSymbol(math, main, close, \"]\", \"]\");\ndefineSymbol(math, main, close, \"?\", \"?\");\ndefineSymbol(math, main, close, \"!\", \"!\");\ndefineSymbol(math, main, close, \"\\u27e9\", \"\\\\rangle\");\ndefineSymbol(math, main, close, \"\\u2223\", \"\\\\rvert\");\ndefineSymbol(math, main, close, \"\\u2225\", \"\\\\rVert\");\ndefineSymbol(math, main, rel, \"=\", \"=\");\ndefineSymbol(math, main, rel, \"<\", \"<\");\ndefineSymbol(math, main, rel, \">\", \">\");\ndefineSymbol(math, main, rel, \":\", \":\");\ndefineSymbol(math, main, rel, \"\\u2248\", \"\\\\approx\");\ndefineSymbol(math, main, rel, \"\\u2245\", \"\\\\cong\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\ge\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\geq\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\gets\");\ndefineSymbol(math, main, rel, \">\", \"\\\\gt\");\ndefineSymbol(math, main, rel, \"\\u2208\", \"\\\\in\");\ndefineSymbol(math, main, rel, \"\\u2209\", \"\\\\notin\");\ndefineSymbol(math, main, rel, \"\\u2282\", \"\\\\subset\");\ndefineSymbol(math, main, rel, \"\\u2283\", \"\\\\supset\");\ndefineSymbol(math, main, rel, \"\\u2286\", \"\\\\subseteq\");\ndefineSymbol(math, main, rel, \"\\u2287\", \"\\\\supseteq\");\ndefineSymbol(math, ams, rel, \"\\u2288\", \"\\\\nsubseteq\");\ndefineSymbol(math, ams, rel, \"\\u2289\", \"\\\\nsupseteq\");\ndefineSymbol(math, main, rel, \"\\u22a8\", \"\\\\models\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\leftarrow\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\le\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\leq\");\ndefineSymbol(math, main, rel, \"<\", \"\\\\lt\");\ndefineSymbol(math, main, rel, \"\\u2260\", \"\\\\ne\");\ndefineSymbol(math, main, rel, \"\\u2260\", \"\\\\neq\");\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\rightarrow\");\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\to\");\ndefineSymbol(math, ams, rel, \"\\u2271\", \"\\\\ngeq\");\ndefineSymbol(math, ams, rel, \"\\u2270\", \"\\\\nleq\");\ndefineSymbol(math, main, spacing, null, \"\\\\!\");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"~\");\ndefineSymbol(math, main, spacing, null, \"\\\\,\");\ndefineSymbol(math, main, spacing, null, \"\\\\:\");\ndefineSymbol(math, main, spacing, null, \"\\\\;\");\ndefineSymbol(math, main, spacing, null, \"\\\\enspace\");\ndefineSymbol(math, main, spacing, null, \"\\\\qquad\");\ndefineSymbol(math, main, spacing, null, \"\\\\quad\");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\space\");\ndefineSymbol(math, main, punct, \",\", \",\");\ndefineSymbol(math, main, punct, \";\", \";\");\ndefineSymbol(math, main, punct, \":\", \"\\\\colon\");\ndefineSymbol(math, ams, bin, \"\\u22bc\", \"\\\\barwedge\");\ndefineSymbol(math, ams, bin, \"\\u22bb\", \"\\\\veebar\");\ndefineSymbol(math, main, bin, \"\\u2299\", \"\\\\odot\");\ndefineSymbol(math, main, bin, \"\\u2295\", \"\\\\oplus\");\ndefineSymbol(math, main, bin, \"\\u2297\", \"\\\\otimes\");\ndefineSymbol(math, main, textord, \"\\u2202\", \"\\\\partial\");\ndefineSymbol(math, main, bin, \"\\u2298\", \"\\\\oslash\");\ndefineSymbol(math, ams, bin, \"\\u229a\", \"\\\\circledcirc\");\ndefineSymbol(math, ams, bin, \"\\u22a1\", \"\\\\boxdot\");\ndefineSymbol(math, main, bin, \"\\u25b3\", \"\\\\bigtriangleup\");\ndefineSymbol(math, main, bin, \"\\u25bd\", \"\\\\bigtriangledown\");\ndefineSymbol(math, main, bin, \"\\u2020\", \"\\\\dagger\");\ndefineSymbol(math, main, bin, \"\\u22c4\", \"\\\\diamond\");\ndefineSymbol(math, main, bin, \"\\u22c6\", \"\\\\star\");\ndefineSymbol(math, main, bin, \"\\u25c3\", \"\\\\triangleleft\");\ndefineSymbol(math, main, bin, \"\\u25b9\", \"\\\\triangleright\");\ndefineSymbol(math, main, open, \"{\", \"\\\\{\");\ndefineSymbol(math, main, close, \"}\", \"\\\\}\");\ndefineSymbol(math, main, open, \"{\", \"\\\\lbrace\");\ndefineSymbol(math, main, close, \"}\", \"\\\\rbrace\");\ndefineSymbol(math, main, open, \"[\", \"\\\\lbrack\");\ndefineSymbol(math, main, close, \"]\", \"\\\\rbrack\");\ndefineSymbol(math, main, open, \"\\u230a\", \"\\\\lfloor\");\ndefineSymbol(math, main, close, \"\\u230b\", \"\\\\rfloor\");\ndefineSymbol(math, main, open, \"\\u2308\", \"\\\\lceil\");\ndefineSymbol(math, main, close, \"\\u2309\", \"\\\\rceil\");\ndefineSymbol(math, main, textord, \"\\\\\", \"\\\\backslash\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"|\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"\\\\vert\");\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\|\");\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\Vert\");\ndefineSymbol(math, main, rel, \"\\u2191\", \"\\\\uparrow\");\ndefineSymbol(math, main, rel, \"\\u21d1\", \"\\\\Uparrow\");\ndefineSymbol(math, main, rel, \"\\u2193\", \"\\\\downarrow\");\ndefineSymbol(math, main, rel, \"\\u21d3\", \"\\\\Downarrow\");\ndefineSymbol(math, main, rel, \"\\u2195\", \"\\\\updownarrow\");\ndefineSymbol(math, main, rel, \"\\u21d5\", \"\\\\Updownarrow\");\ndefineSymbol(math, math, op, \"\\u2210\", \"\\\\coprod\");\ndefineSymbol(math, math, op, \"\\u22c1\", \"\\\\bigvee\");\ndefineSymbol(math, math, op, \"\\u22c0\", \"\\\\bigwedge\");\ndefineSymbol(math, math, op, \"\\u2a04\", \"\\\\biguplus\");\ndefineSymbol(math, math, op, \"\\u22c2\", \"\\\\bigcap\");\ndefineSymbol(math, math, op, \"\\u22c3\", \"\\\\bigcup\");\ndefineSymbol(math, math, op, \"\\u222b\", \"\\\\int\");\ndefineSymbol(math, math, op, \"\\u222b\", \"\\\\intop\");\ndefineSymbol(math, math, op, \"\\u222c\", \"\\\\iint\");\ndefineSymbol(math, math, op, \"\\u222d\", \"\\\\iiint\");\ndefineSymbol(math, math, op, \"\\u220f\", \"\\\\prod\");\ndefineSymbol(math, math, op, \"\\u2211\", \"\\\\sum\");\ndefineSymbol(math, math, op, \"\\u2a02\", \"\\\\bigotimes\");\ndefineSymbol(math, math, op, \"\\u2a01\", \"\\\\bigoplus\");\ndefineSymbol(math, math, op, \"\\u2a00\", \"\\\\bigodot\");\ndefineSymbol(math, math, op, \"\\u222e\", \"\\\\oint\");\ndefineSymbol(math, math, op, \"\\u2a06\", \"\\\\bigsqcup\");\ndefineSymbol(math, math, op, \"\\u222b\", \"\\\\smallint\");\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\ldots\");\ndefineSymbol(math, main, inner, \"\\u22ef\", \"\\\\cdots\");\ndefineSymbol(math, main, inner, \"\\u22f1\", \"\\\\ddots\");\ndefineSymbol(math, main, textord, \"\\u22ee\", \"\\\\vdots\");\ndefineSymbol(math, main, accent, \"\\u00b4\", \"\\\\acute\");\ndefineSymbol(math, main, accent, \"\\u0060\", \"\\\\grave\");\ndefineSymbol(math, main, accent, \"\\u00a8\", \"\\\\ddot\");\ndefineSymbol(math, main, accent, \"\\u007e\", \"\\\\tilde\");\ndefineSymbol(math, main, accent, \"\\u00af\", \"\\\\bar\");\ndefineSymbol(math, main, accent, \"\\u02d8\", \"\\\\breve\");\ndefineSymbol(math, main, accent, \"\\u02c7\", \"\\\\check\");\ndefineSymbol(math, main, accent, \"\\u005e\", \"\\\\hat\");\ndefineSymbol(math, main, accent, \"\\u20d7\", \"\\\\vec\");\ndefineSymbol(math, main, accent, \"\\u02d9\", \"\\\\dot\");\ndefineSymbol(math, main, mathord, \"\\u0131\", \"\\\\imath\");\ndefineSymbol(math, main, mathord, \"\\u0237\", \"\\\\jmath\");\n\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \" \");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"~\");\n\n// There are lots of symbols which are the same, so we add them in afterwards.\nvar i;\nvar ch;\n\n// All of these are textords in math mode\nvar mathTextSymbols = \"0123456789/@.\\\"\";\nfor (i = 0; i < mathTextSymbols.length; i++) {\n ch = mathTextSymbols.charAt(i);\n defineSymbol(math, main, textord, ch, ch);\n}\n\n// All of these are textords in text mode\nvar textSymbols = \"0123456789`!@*()-=+[]'\\\";:?/.,\";\nfor (i = 0; i < textSymbols.length; i++) {\n ch = textSymbols.charAt(i);\n defineSymbol(text, main, textord, ch, ch);\n}\n\n// All of these are textords in text mode, and mathords in math mode\nvar letters = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";\nfor (i = 0; i < letters.length; i++) {\n ch = letters.charAt(i);\n defineSymbol(math, main, mathord, ch, ch);\n defineSymbol(text, main, textord, ch, ch);\n}\n","var buildHTML = require(\"./buildHTML\");\nvar buildMathML = require(\"./buildMathML\");\nvar buildCommon = require(\"./buildCommon\");\nvar Options = require(\"./Options\");\nvar Settings = require(\"./Settings\");\nvar Style = require(\"./Style\");\n\nvar makeSpan = buildCommon.makeSpan;\n\nvar buildTree = function(tree, expression, settings) {\n settings = settings || new Settings({});\n\n var startStyle = Style.TEXT;\n if (settings.displayMode) {\n startStyle = Style.DISPLAY;\n }\n\n // Setup the default options\n var options = new Options({\n style: startStyle,\n size: \"size5\",\n });\n\n // `buildHTML` sometimes messes with the parse tree (like turning bins ->\n // ords), so we build the MathML version first.\n var mathMLNode = buildMathML(tree, expression, options);\n var htmlNode = buildHTML(tree, options);\n\n var katexNode = makeSpan([\"katex\"], [\n mathMLNode, htmlNode,\n ]);\n\n if (settings.displayMode) {\n return makeSpan([\"katex-display\"], [katexNode]);\n } else {\n return katexNode;\n }\n};\n\nmodule.exports = buildTree;\n","/**\n * These objects store data about MathML nodes. This is the MathML equivalent\n * of the types in domTree.js. Since MathML handles its own rendering, and\n * since we're mainly using MathML to improve accessibility, we don't manage\n * any of the styling state that the plain DOM nodes do.\n *\n * The `toNode` and `toMarkup` functions work simlarly to how they do in\n * domTree.js, creating namespaced DOM nodes and HTML text markup respectively.\n */\n\nvar utils = require(\"./utils\");\n\n/**\n * This node represents a general purpose MathML node of any type. The\n * constructor requires the type of node to create (for example, `\"mo\"` or\n * `\"mspace\"`, corresponding to `` and `` tags).\n */\nfunction MathNode(type, children) {\n this.type = type;\n this.attributes = {};\n this.children = children || [];\n}\n\n/**\n * Sets an attribute on a MathML node. MathML depends on attributes to convey a\n * semantic content, so this is used heavily.\n */\nMathNode.prototype.setAttribute = function(name, value) {\n this.attributes[name] = value;\n};\n\n/**\n * Converts the math node into a MathML-namespaced DOM element.\n */\nMathNode.prototype.toNode = function() {\n var node = document.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\", this.type);\n\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n for (var i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n\n return node;\n};\n\n/**\n * Converts the math node into an HTML markup string.\n */\nMathNode.prototype.toMarkup = function() {\n var markup = \"<\" + this.type;\n\n // Add the attributes\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n markup += \" \" + attr + \"=\\\"\";\n markup += utils.escape(this.attributes[attr]);\n markup += \"\\\"\";\n }\n }\n\n markup += \">\";\n\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\" + this.type + \">\";\n\n return markup;\n};\n\n/**\n * This node represents a piece of text.\n */\nfunction TextNode(text) {\n this.text = text;\n}\n\n/**\n * Converts the text node into a DOM text node.\n */\nTextNode.prototype.toNode = function() {\n return document.createTextNode(this.text);\n};\n\n/**\n * Converts the text node into HTML markup (which is just the text itself).\n */\nTextNode.prototype.toMarkup = function() {\n return utils.escape(this.text);\n};\n\nmodule.exports = {\n MathNode: MathNode,\n TextNode: TextNode,\n};\n","module.exports = {\n \"AMS-Regular\": {\n \"65\": [0, 0.68889, 0, 0],\n \"66\": [0, 0.68889, 0, 0],\n \"67\": [0, 0.68889, 0, 0],\n \"68\": [0, 0.68889, 0, 0],\n \"69\": [0, 0.68889, 0, 0],\n \"70\": [0, 0.68889, 0, 0],\n \"71\": [0, 0.68889, 0, 0],\n \"72\": [0, 0.68889, 0, 0],\n \"73\": [0, 0.68889, 0, 0],\n \"74\": [0.16667, 0.68889, 0, 0],\n \"75\": [0, 0.68889, 0, 0],\n \"76\": [0, 0.68889, 0, 0],\n \"77\": [0, 0.68889, 0, 0],\n \"78\": [0, 0.68889, 0, 0],\n \"79\": [0.16667, 0.68889, 0, 0],\n \"80\": [0, 0.68889, 0, 0],\n \"81\": [0.16667, 0.68889, 0, 0],\n \"82\": [0, 0.68889, 0, 0],\n \"83\": [0, 0.68889, 0, 0],\n \"84\": [0, 0.68889, 0, 0],\n \"85\": [0, 0.68889, 0, 0],\n \"86\": [0, 0.68889, 0, 0],\n \"87\": [0, 0.68889, 0, 0],\n \"88\": [0, 0.68889, 0, 0],\n \"89\": [0, 0.68889, 0, 0],\n \"90\": [0, 0.68889, 0, 0],\n \"107\": [0, 0.68889, 0, 0],\n \"165\": [0, 0.675, 0.025, 0],\n \"174\": [0.15559, 0.69224, 0, 0],\n \"240\": [0, 0.68889, 0, 0],\n \"295\": [0, 0.68889, 0, 0],\n \"710\": [0, 0.825, 0, 0],\n \"732\": [0, 0.9, 0, 0],\n \"770\": [0, 0.825, 0, 0],\n \"771\": [0, 0.9, 0, 0],\n \"989\": [0.08167, 0.58167, 0, 0],\n \"1008\": [0, 0.43056, 0.04028, 0],\n \"8245\": [0, 0.54986, 0, 0],\n \"8463\": [0, 0.68889, 0, 0],\n \"8487\": [0, 0.68889, 0, 0],\n \"8498\": [0, 0.68889, 0, 0],\n \"8502\": [0, 0.68889, 0, 0],\n \"8503\": [0, 0.68889, 0, 0],\n \"8504\": [0, 0.68889, 0, 0],\n \"8513\": [0, 0.68889, 0, 0],\n \"8592\": [-0.03598, 0.46402, 0, 0],\n \"8594\": [-0.03598, 0.46402, 0, 0],\n \"8602\": [-0.13313, 0.36687, 0, 0],\n \"8603\": [-0.13313, 0.36687, 0, 0],\n \"8606\": [0.01354, 0.52239, 0, 0],\n \"8608\": [0.01354, 0.52239, 0, 0],\n \"8610\": [0.01354, 0.52239, 0, 0],\n \"8611\": [0.01354, 0.52239, 0, 0],\n \"8619\": [0, 0.54986, 0, 0],\n \"8620\": [0, 0.54986, 0, 0],\n \"8621\": [-0.13313, 0.37788, 0, 0],\n \"8622\": [-0.13313, 0.36687, 0, 0],\n \"8624\": [0, 0.69224, 0, 0],\n \"8625\": [0, 0.69224, 0, 0],\n \"8630\": [0, 0.43056, 0, 0],\n \"8631\": [0, 0.43056, 0, 0],\n \"8634\": [0.08198, 0.58198, 0, 0],\n \"8635\": [0.08198, 0.58198, 0, 0],\n \"8638\": [0.19444, 0.69224, 0, 0],\n \"8639\": [0.19444, 0.69224, 0, 0],\n \"8642\": [0.19444, 0.69224, 0, 0],\n \"8643\": [0.19444, 0.69224, 0, 0],\n \"8644\": [0.1808, 0.675, 0, 0],\n \"8646\": [0.1808, 0.675, 0, 0],\n \"8647\": [0.1808, 0.675, 0, 0],\n \"8648\": [0.19444, 0.69224, 0, 0],\n \"8649\": [0.1808, 0.675, 0, 0],\n \"8650\": [0.19444, 0.69224, 0, 0],\n \"8651\": [0.01354, 0.52239, 0, 0],\n \"8652\": [0.01354, 0.52239, 0, 0],\n \"8653\": [-0.13313, 0.36687, 0, 0],\n \"8654\": [-0.13313, 0.36687, 0, 0],\n \"8655\": [-0.13313, 0.36687, 0, 0],\n \"8666\": [0.13667, 0.63667, 0, 0],\n \"8667\": [0.13667, 0.63667, 0, 0],\n \"8669\": [-0.13313, 0.37788, 0, 0],\n \"8672\": [-0.064, 0.437, 0, 0],\n \"8674\": [-0.064, 0.437, 0, 0],\n \"8705\": [0, 0.825, 0, 0],\n \"8708\": [0, 0.68889, 0, 0],\n \"8709\": [0.08167, 0.58167, 0, 0],\n \"8717\": [0, 0.43056, 0, 0],\n \"8722\": [-0.03598, 0.46402, 0, 0],\n \"8724\": [0.08198, 0.69224, 0, 0],\n \"8726\": [0.08167, 0.58167, 0, 0],\n \"8733\": [0, 0.69224, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8737\": [0, 0.69224, 0, 0],\n \"8738\": [0.03517, 0.52239, 0, 0],\n \"8739\": [0.08167, 0.58167, 0, 0],\n \"8740\": [0.25142, 0.74111, 0, 0],\n \"8741\": [0.08167, 0.58167, 0, 0],\n \"8742\": [0.25142, 0.74111, 0, 0],\n \"8756\": [0, 0.69224, 0, 0],\n \"8757\": [0, 0.69224, 0, 0],\n \"8764\": [-0.13313, 0.36687, 0, 0],\n \"8765\": [-0.13313, 0.37788, 0, 0],\n \"8769\": [-0.13313, 0.36687, 0, 0],\n \"8770\": [-0.03625, 0.46375, 0, 0],\n \"8774\": [0.30274, 0.79383, 0, 0],\n \"8776\": [-0.01688, 0.48312, 0, 0],\n \"8778\": [0.08167, 0.58167, 0, 0],\n \"8782\": [0.06062, 0.54986, 0, 0],\n \"8783\": [0.06062, 0.54986, 0, 0],\n \"8785\": [0.08198, 0.58198, 0, 0],\n \"8786\": [0.08198, 0.58198, 0, 0],\n \"8787\": [0.08198, 0.58198, 0, 0],\n \"8790\": [0, 0.69224, 0, 0],\n \"8791\": [0.22958, 0.72958, 0, 0],\n \"8796\": [0.08198, 0.91667, 0, 0],\n \"8806\": [0.25583, 0.75583, 0, 0],\n \"8807\": [0.25583, 0.75583, 0, 0],\n \"8808\": [0.25142, 0.75726, 0, 0],\n \"8809\": [0.25142, 0.75726, 0, 0],\n \"8812\": [0.25583, 0.75583, 0, 0],\n \"8814\": [0.20576, 0.70576, 0, 0],\n \"8815\": [0.20576, 0.70576, 0, 0],\n \"8816\": [0.30274, 0.79383, 0, 0],\n \"8817\": [0.30274, 0.79383, 0, 0],\n \"8818\": [0.22958, 0.72958, 0, 0],\n \"8819\": [0.22958, 0.72958, 0, 0],\n \"8822\": [0.1808, 0.675, 0, 0],\n \"8823\": [0.1808, 0.675, 0, 0],\n \"8828\": [0.13667, 0.63667, 0, 0],\n \"8829\": [0.13667, 0.63667, 0, 0],\n \"8830\": [0.22958, 0.72958, 0, 0],\n \"8831\": [0.22958, 0.72958, 0, 0],\n \"8832\": [0.20576, 0.70576, 0, 0],\n \"8833\": [0.20576, 0.70576, 0, 0],\n \"8840\": [0.30274, 0.79383, 0, 0],\n \"8841\": [0.30274, 0.79383, 0, 0],\n \"8842\": [0.13597, 0.63597, 0, 0],\n \"8843\": [0.13597, 0.63597, 0, 0],\n \"8847\": [0.03517, 0.54986, 0, 0],\n \"8848\": [0.03517, 0.54986, 0, 0],\n \"8858\": [0.08198, 0.58198, 0, 0],\n \"8859\": [0.08198, 0.58198, 0, 0],\n \"8861\": [0.08198, 0.58198, 0, 0],\n \"8862\": [0, 0.675, 0, 0],\n \"8863\": [0, 0.675, 0, 0],\n \"8864\": [0, 0.675, 0, 0],\n \"8865\": [0, 0.675, 0, 0],\n \"8872\": [0, 0.69224, 0, 0],\n \"8873\": [0, 0.69224, 0, 0],\n \"8874\": [0, 0.69224, 0, 0],\n \"8876\": [0, 0.68889, 0, 0],\n \"8877\": [0, 0.68889, 0, 0],\n \"8878\": [0, 0.68889, 0, 0],\n \"8879\": [0, 0.68889, 0, 0],\n \"8882\": [0.03517, 0.54986, 0, 0],\n \"8883\": [0.03517, 0.54986, 0, 0],\n \"8884\": [0.13667, 0.63667, 0, 0],\n \"8885\": [0.13667, 0.63667, 0, 0],\n \"8888\": [0, 0.54986, 0, 0],\n \"8890\": [0.19444, 0.43056, 0, 0],\n \"8891\": [0.19444, 0.69224, 0, 0],\n \"8892\": [0.19444, 0.69224, 0, 0],\n \"8901\": [0, 0.54986, 0, 0],\n \"8903\": [0.08167, 0.58167, 0, 0],\n \"8905\": [0.08167, 0.58167, 0, 0],\n \"8906\": [0.08167, 0.58167, 0, 0],\n \"8907\": [0, 0.69224, 0, 0],\n \"8908\": [0, 0.69224, 0, 0],\n \"8909\": [-0.03598, 0.46402, 0, 0],\n \"8910\": [0, 0.54986, 0, 0],\n \"8911\": [0, 0.54986, 0, 0],\n \"8912\": [0.03517, 0.54986, 0, 0],\n \"8913\": [0.03517, 0.54986, 0, 0],\n \"8914\": [0, 0.54986, 0, 0],\n \"8915\": [0, 0.54986, 0, 0],\n \"8916\": [0, 0.69224, 0, 0],\n \"8918\": [0.0391, 0.5391, 0, 0],\n \"8919\": [0.0391, 0.5391, 0, 0],\n \"8920\": [0.03517, 0.54986, 0, 0],\n \"8921\": [0.03517, 0.54986, 0, 0],\n \"8922\": [0.38569, 0.88569, 0, 0],\n \"8923\": [0.38569, 0.88569, 0, 0],\n \"8926\": [0.13667, 0.63667, 0, 0],\n \"8927\": [0.13667, 0.63667, 0, 0],\n \"8928\": [0.30274, 0.79383, 0, 0],\n \"8929\": [0.30274, 0.79383, 0, 0],\n \"8934\": [0.23222, 0.74111, 0, 0],\n \"8935\": [0.23222, 0.74111, 0, 0],\n \"8936\": [0.23222, 0.74111, 0, 0],\n \"8937\": [0.23222, 0.74111, 0, 0],\n \"8938\": [0.20576, 0.70576, 0, 0],\n \"8939\": [0.20576, 0.70576, 0, 0],\n \"8940\": [0.30274, 0.79383, 0, 0],\n \"8941\": [0.30274, 0.79383, 0, 0],\n \"8994\": [0.19444, 0.69224, 0, 0],\n \"8995\": [0.19444, 0.69224, 0, 0],\n \"9416\": [0.15559, 0.69224, 0, 0],\n \"9484\": [0, 0.69224, 0, 0],\n \"9488\": [0, 0.69224, 0, 0],\n \"9492\": [0, 0.37788, 0, 0],\n \"9496\": [0, 0.37788, 0, 0],\n \"9585\": [0.19444, 0.68889, 0, 0],\n \"9586\": [0.19444, 0.74111, 0, 0],\n \"9632\": [0, 0.675, 0, 0],\n \"9633\": [0, 0.675, 0, 0],\n \"9650\": [0, 0.54986, 0, 0],\n \"9651\": [0, 0.54986, 0, 0],\n \"9654\": [0.03517, 0.54986, 0, 0],\n \"9660\": [0, 0.54986, 0, 0],\n \"9661\": [0, 0.54986, 0, 0],\n \"9664\": [0.03517, 0.54986, 0, 0],\n \"9674\": [0.11111, 0.69224, 0, 0],\n \"9733\": [0.19444, 0.69224, 0, 0],\n \"10003\": [0, 0.69224, 0, 0],\n \"10016\": [0, 0.69224, 0, 0],\n \"10731\": [0.11111, 0.69224, 0, 0],\n \"10846\": [0.19444, 0.75583, 0, 0],\n \"10877\": [0.13667, 0.63667, 0, 0],\n \"10878\": [0.13667, 0.63667, 0, 0],\n \"10885\": [0.25583, 0.75583, 0, 0],\n \"10886\": [0.25583, 0.75583, 0, 0],\n \"10887\": [0.13597, 0.63597, 0, 0],\n \"10888\": [0.13597, 0.63597, 0, 0],\n \"10889\": [0.26167, 0.75726, 0, 0],\n \"10890\": [0.26167, 0.75726, 0, 0],\n \"10891\": [0.48256, 0.98256, 0, 0],\n \"10892\": [0.48256, 0.98256, 0, 0],\n \"10901\": [0.13667, 0.63667, 0, 0],\n \"10902\": [0.13667, 0.63667, 0, 0],\n \"10933\": [0.25142, 0.75726, 0, 0],\n \"10934\": [0.25142, 0.75726, 0, 0],\n \"10935\": [0.26167, 0.75726, 0, 0],\n \"10936\": [0.26167, 0.75726, 0, 0],\n \"10937\": [0.26167, 0.75726, 0, 0],\n \"10938\": [0.26167, 0.75726, 0, 0],\n \"10949\": [0.25583, 0.75583, 0, 0],\n \"10950\": [0.25583, 0.75583, 0, 0],\n \"10955\": [0.28481, 0.79383, 0, 0],\n \"10956\": [0.28481, 0.79383, 0, 0],\n \"57350\": [0.08167, 0.58167, 0, 0],\n \"57351\": [0.08167, 0.58167, 0, 0],\n \"57352\": [0.08167, 0.58167, 0, 0],\n \"57353\": [0, 0.43056, 0.04028, 0],\n \"57356\": [0.25142, 0.75726, 0, 0],\n \"57357\": [0.25142, 0.75726, 0, 0],\n \"57358\": [0.41951, 0.91951, 0, 0],\n \"57359\": [0.30274, 0.79383, 0, 0],\n \"57360\": [0.30274, 0.79383, 0, 0],\n \"57361\": [0.41951, 0.91951, 0, 0],\n \"57366\": [0.25142, 0.75726, 0, 0],\n \"57367\": [0.25142, 0.75726, 0, 0],\n \"57368\": [0.25142, 0.75726, 0, 0],\n \"57369\": [0.25142, 0.75726, 0, 0],\n \"57370\": [0.13597, 0.63597, 0, 0],\n \"57371\": [0.13597, 0.63597, 0, 0],\n },\n \"Caligraphic-Regular\": {\n \"48\": [0, 0.43056, 0, 0],\n \"49\": [0, 0.43056, 0, 0],\n \"50\": [0, 0.43056, 0, 0],\n \"51\": [0.19444, 0.43056, 0, 0],\n \"52\": [0.19444, 0.43056, 0, 0],\n \"53\": [0.19444, 0.43056, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0.19444, 0.43056, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0.19444, 0.43056, 0, 0],\n \"65\": [0, 0.68333, 0, 0.19445],\n \"66\": [0, 0.68333, 0.03041, 0.13889],\n \"67\": [0, 0.68333, 0.05834, 0.13889],\n \"68\": [0, 0.68333, 0.02778, 0.08334],\n \"69\": [0, 0.68333, 0.08944, 0.11111],\n \"70\": [0, 0.68333, 0.09931, 0.11111],\n \"71\": [0.09722, 0.68333, 0.0593, 0.11111],\n \"72\": [0, 0.68333, 0.00965, 0.11111],\n \"73\": [0, 0.68333, 0.07382, 0],\n \"74\": [0.09722, 0.68333, 0.18472, 0.16667],\n \"75\": [0, 0.68333, 0.01445, 0.05556],\n \"76\": [0, 0.68333, 0, 0.13889],\n \"77\": [0, 0.68333, 0, 0.13889],\n \"78\": [0, 0.68333, 0.14736, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.11111],\n \"80\": [0, 0.68333, 0.08222, 0.08334],\n \"81\": [0.09722, 0.68333, 0, 0.11111],\n \"82\": [0, 0.68333, 0, 0.08334],\n \"83\": [0, 0.68333, 0.075, 0.13889],\n \"84\": [0, 0.68333, 0.25417, 0],\n \"85\": [0, 0.68333, 0.09931, 0.08334],\n \"86\": [0, 0.68333, 0.08222, 0],\n \"87\": [0, 0.68333, 0.08222, 0.08334],\n \"88\": [0, 0.68333, 0.14643, 0.13889],\n \"89\": [0.09722, 0.68333, 0.08222, 0.08334],\n \"90\": [0, 0.68333, 0.07944, 0.13889],\n },\n \"Fraktur-Regular\": {\n \"33\": [0, 0.69141, 0, 0],\n \"34\": [0, 0.69141, 0, 0],\n \"38\": [0, 0.69141, 0, 0],\n \"39\": [0, 0.69141, 0, 0],\n \"40\": [0.24982, 0.74947, 0, 0],\n \"41\": [0.24982, 0.74947, 0, 0],\n \"42\": [0, 0.62119, 0, 0],\n \"43\": [0.08319, 0.58283, 0, 0],\n \"44\": [0, 0.10803, 0, 0],\n \"45\": [0.08319, 0.58283, 0, 0],\n \"46\": [0, 0.10803, 0, 0],\n \"47\": [0.24982, 0.74947, 0, 0],\n \"48\": [0, 0.47534, 0, 0],\n \"49\": [0, 0.47534, 0, 0],\n \"50\": [0, 0.47534, 0, 0],\n \"51\": [0.18906, 0.47534, 0, 0],\n \"52\": [0.18906, 0.47534, 0, 0],\n \"53\": [0.18906, 0.47534, 0, 0],\n \"54\": [0, 0.69141, 0, 0],\n \"55\": [0.18906, 0.47534, 0, 0],\n \"56\": [0, 0.69141, 0, 0],\n \"57\": [0.18906, 0.47534, 0, 0],\n \"58\": [0, 0.47534, 0, 0],\n \"59\": [0.12604, 0.47534, 0, 0],\n \"61\": [-0.13099, 0.36866, 0, 0],\n \"63\": [0, 0.69141, 0, 0],\n \"65\": [0, 0.69141, 0, 0],\n \"66\": [0, 0.69141, 0, 0],\n \"67\": [0, 0.69141, 0, 0],\n \"68\": [0, 0.69141, 0, 0],\n \"69\": [0, 0.69141, 0, 0],\n \"70\": [0.12604, 0.69141, 0, 0],\n \"71\": [0, 0.69141, 0, 0],\n \"72\": [0.06302, 0.69141, 0, 0],\n \"73\": [0, 0.69141, 0, 0],\n \"74\": [0.12604, 0.69141, 0, 0],\n \"75\": [0, 0.69141, 0, 0],\n \"76\": [0, 0.69141, 0, 0],\n \"77\": [0, 0.69141, 0, 0],\n \"78\": [0, 0.69141, 0, 0],\n \"79\": [0, 0.69141, 0, 0],\n \"80\": [0.18906, 0.69141, 0, 0],\n \"81\": [0.03781, 0.69141, 0, 0],\n \"82\": [0, 0.69141, 0, 0],\n \"83\": [0, 0.69141, 0, 0],\n \"84\": [0, 0.69141, 0, 0],\n \"85\": [0, 0.69141, 0, 0],\n \"86\": [0, 0.69141, 0, 0],\n \"87\": [0, 0.69141, 0, 0],\n \"88\": [0, 0.69141, 0, 0],\n \"89\": [0.18906, 0.69141, 0, 0],\n \"90\": [0.12604, 0.69141, 0, 0],\n \"91\": [0.24982, 0.74947, 0, 0],\n \"93\": [0.24982, 0.74947, 0, 0],\n \"94\": [0, 0.69141, 0, 0],\n \"97\": [0, 0.47534, 0, 0],\n \"98\": [0, 0.69141, 0, 0],\n \"99\": [0, 0.47534, 0, 0],\n \"100\": [0, 0.62119, 0, 0],\n \"101\": [0, 0.47534, 0, 0],\n \"102\": [0.18906, 0.69141, 0, 0],\n \"103\": [0.18906, 0.47534, 0, 0],\n \"104\": [0.18906, 0.69141, 0, 0],\n \"105\": [0, 0.69141, 0, 0],\n \"106\": [0, 0.69141, 0, 0],\n \"107\": [0, 0.69141, 0, 0],\n \"108\": [0, 0.69141, 0, 0],\n \"109\": [0, 0.47534, 0, 0],\n \"110\": [0, 0.47534, 0, 0],\n \"111\": [0, 0.47534, 0, 0],\n \"112\": [0.18906, 0.52396, 0, 0],\n \"113\": [0.18906, 0.47534, 0, 0],\n \"114\": [0, 0.47534, 0, 0],\n \"115\": [0, 0.47534, 0, 0],\n \"116\": [0, 0.62119, 0, 0],\n \"117\": [0, 0.47534, 0, 0],\n \"118\": [0, 0.52396, 0, 0],\n \"119\": [0, 0.52396, 0, 0],\n \"120\": [0.18906, 0.47534, 0, 0],\n \"121\": [0.18906, 0.47534, 0, 0],\n \"122\": [0.18906, 0.47534, 0, 0],\n \"8216\": [0, 0.69141, 0, 0],\n \"8217\": [0, 0.69141, 0, 0],\n \"58112\": [0, 0.62119, 0, 0],\n \"58113\": [0, 0.62119, 0, 0],\n \"58114\": [0.18906, 0.69141, 0, 0],\n \"58115\": [0.18906, 0.69141, 0, 0],\n \"58116\": [0.18906, 0.47534, 0, 0],\n \"58117\": [0, 0.69141, 0, 0],\n \"58118\": [0, 0.62119, 0, 0],\n \"58119\": [0, 0.47534, 0, 0],\n },\n \"Main-Bold\": {\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.13333, 0.63333, 0, 0],\n \"44\": [0.19444, 0.15556, 0, 0],\n \"45\": [0, 0.44444, 0, 0],\n \"46\": [0, 0.15556, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.64444, 0, 0],\n \"49\": [0, 0.64444, 0, 0],\n \"50\": [0, 0.64444, 0, 0],\n \"51\": [0, 0.64444, 0, 0],\n \"52\": [0, 0.64444, 0, 0],\n \"53\": [0, 0.64444, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0, 0.64444, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0, 0.64444, 0, 0],\n \"58\": [0, 0.44444, 0, 0],\n \"59\": [0.19444, 0.44444, 0, 0],\n \"60\": [0.08556, 0.58556, 0, 0],\n \"61\": [-0.10889, 0.39111, 0, 0],\n \"62\": [0.08556, 0.58556, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.68611, 0, 0],\n \"66\": [0, 0.68611, 0, 0],\n \"67\": [0, 0.68611, 0, 0],\n \"68\": [0, 0.68611, 0, 0],\n \"69\": [0, 0.68611, 0, 0],\n \"70\": [0, 0.68611, 0, 0],\n \"71\": [0, 0.68611, 0, 0],\n \"72\": [0, 0.68611, 0, 0],\n \"73\": [0, 0.68611, 0, 0],\n \"74\": [0, 0.68611, 0, 0],\n \"75\": [0, 0.68611, 0, 0],\n \"76\": [0, 0.68611, 0, 0],\n \"77\": [0, 0.68611, 0, 0],\n \"78\": [0, 0.68611, 0, 0],\n \"79\": [0, 0.68611, 0, 0],\n \"80\": [0, 0.68611, 0, 0],\n \"81\": [0.19444, 0.68611, 0, 0],\n \"82\": [0, 0.68611, 0, 0],\n \"83\": [0, 0.68611, 0, 0],\n \"84\": [0, 0.68611, 0, 0],\n \"85\": [0, 0.68611, 0, 0],\n \"86\": [0, 0.68611, 0.01597, 0],\n \"87\": [0, 0.68611, 0.01597, 0],\n \"88\": [0, 0.68611, 0, 0],\n \"89\": [0, 0.68611, 0.02875, 0],\n \"90\": [0, 0.68611, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"92\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.31, 0.13444, 0.03194, 0],\n \"96\": [0, 0.69444, 0, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0, 0.69444, 0.10903, 0],\n \"103\": [0.19444, 0.44444, 0.01597, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.69444, 0, 0],\n \"106\": [0.19444, 0.69444, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0, 0],\n \"114\": [0, 0.44444, 0, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.63492, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.01597, 0],\n \"119\": [0, 0.44444, 0.01597, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.01597, 0],\n \"122\": [0, 0.44444, 0, 0],\n \"123\": [0.25, 0.75, 0, 0],\n \"124\": [0.25, 0.75, 0, 0],\n \"125\": [0.25, 0.75, 0, 0],\n \"126\": [0.35, 0.34444, 0, 0],\n \"168\": [0, 0.69444, 0, 0],\n \"172\": [0, 0.44444, 0, 0],\n \"175\": [0, 0.59611, 0, 0],\n \"176\": [0, 0.69444, 0, 0],\n \"177\": [0.13333, 0.63333, 0, 0],\n \"180\": [0, 0.69444, 0, 0],\n \"215\": [0.13333, 0.63333, 0, 0],\n \"247\": [0.13333, 0.63333, 0, 0],\n \"305\": [0, 0.44444, 0, 0],\n \"567\": [0.19444, 0.44444, 0, 0],\n \"710\": [0, 0.69444, 0, 0],\n \"711\": [0, 0.63194, 0, 0],\n \"713\": [0, 0.59611, 0, 0],\n \"714\": [0, 0.69444, 0, 0],\n \"715\": [0, 0.69444, 0, 0],\n \"728\": [0, 0.69444, 0, 0],\n \"729\": [0, 0.69444, 0, 0],\n \"730\": [0, 0.69444, 0, 0],\n \"732\": [0, 0.69444, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.69444, 0, 0],\n \"772\": [0, 0.59611, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.69444, 0, 0],\n \"776\": [0, 0.69444, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.63194, 0, 0],\n \"824\": [0.19444, 0.69444, 0, 0],\n \"915\": [0, 0.68611, 0, 0],\n \"916\": [0, 0.68611, 0, 0],\n \"920\": [0, 0.68611, 0, 0],\n \"923\": [0, 0.68611, 0, 0],\n \"926\": [0, 0.68611, 0, 0],\n \"928\": [0, 0.68611, 0, 0],\n \"931\": [0, 0.68611, 0, 0],\n \"933\": [0, 0.68611, 0, 0],\n \"934\": [0, 0.68611, 0, 0],\n \"936\": [0, 0.68611, 0, 0],\n \"937\": [0, 0.68611, 0, 0],\n \"8211\": [0, 0.44444, 0.03194, 0],\n \"8212\": [0, 0.44444, 0.03194, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0],\n \"8224\": [0.19444, 0.69444, 0, 0],\n \"8225\": [0.19444, 0.69444, 0, 0],\n \"8242\": [0, 0.55556, 0, 0],\n \"8407\": [0, 0.72444, 0.15486, 0],\n \"8463\": [0, 0.69444, 0, 0],\n \"8465\": [0, 0.69444, 0, 0],\n \"8467\": [0, 0.69444, 0, 0],\n \"8472\": [0.19444, 0.44444, 0, 0],\n \"8476\": [0, 0.69444, 0, 0],\n \"8501\": [0, 0.69444, 0, 0],\n \"8592\": [-0.10889, 0.39111, 0, 0],\n \"8593\": [0.19444, 0.69444, 0, 0],\n \"8594\": [-0.10889, 0.39111, 0, 0],\n \"8595\": [0.19444, 0.69444, 0, 0],\n \"8596\": [-0.10889, 0.39111, 0, 0],\n \"8597\": [0.25, 0.75, 0, 0],\n \"8598\": [0.19444, 0.69444, 0, 0],\n \"8599\": [0.19444, 0.69444, 0, 0],\n \"8600\": [0.19444, 0.69444, 0, 0],\n \"8601\": [0.19444, 0.69444, 0, 0],\n \"8636\": [-0.10889, 0.39111, 0, 0],\n \"8637\": [-0.10889, 0.39111, 0, 0],\n \"8640\": [-0.10889, 0.39111, 0, 0],\n \"8641\": [-0.10889, 0.39111, 0, 0],\n \"8656\": [-0.10889, 0.39111, 0, 0],\n \"8657\": [0.19444, 0.69444, 0, 0],\n \"8658\": [-0.10889, 0.39111, 0, 0],\n \"8659\": [0.19444, 0.69444, 0, 0],\n \"8660\": [-0.10889, 0.39111, 0, 0],\n \"8661\": [0.25, 0.75, 0, 0],\n \"8704\": [0, 0.69444, 0, 0],\n \"8706\": [0, 0.69444, 0.06389, 0],\n \"8707\": [0, 0.69444, 0, 0],\n \"8709\": [0.05556, 0.75, 0, 0],\n \"8711\": [0, 0.68611, 0, 0],\n \"8712\": [0.08556, 0.58556, 0, 0],\n \"8715\": [0.08556, 0.58556, 0, 0],\n \"8722\": [0.13333, 0.63333, 0, 0],\n \"8723\": [0.13333, 0.63333, 0, 0],\n \"8725\": [0.25, 0.75, 0, 0],\n \"8726\": [0.25, 0.75, 0, 0],\n \"8727\": [-0.02778, 0.47222, 0, 0],\n \"8728\": [-0.02639, 0.47361, 0, 0],\n \"8729\": [-0.02639, 0.47361, 0, 0],\n \"8730\": [0.18, 0.82, 0, 0],\n \"8733\": [0, 0.44444, 0, 0],\n \"8734\": [0, 0.44444, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8739\": [0.25, 0.75, 0, 0],\n \"8741\": [0.25, 0.75, 0, 0],\n \"8743\": [0, 0.55556, 0, 0],\n \"8744\": [0, 0.55556, 0, 0],\n \"8745\": [0, 0.55556, 0, 0],\n \"8746\": [0, 0.55556, 0, 0],\n \"8747\": [0.19444, 0.69444, 0.12778, 0],\n \"8764\": [-0.10889, 0.39111, 0, 0],\n \"8768\": [0.19444, 0.69444, 0, 0],\n \"8771\": [0.00222, 0.50222, 0, 0],\n \"8776\": [0.02444, 0.52444, 0, 0],\n \"8781\": [0.00222, 0.50222, 0, 0],\n \"8801\": [0.00222, 0.50222, 0, 0],\n \"8804\": [0.19667, 0.69667, 0, 0],\n \"8805\": [0.19667, 0.69667, 0, 0],\n \"8810\": [0.08556, 0.58556, 0, 0],\n \"8811\": [0.08556, 0.58556, 0, 0],\n \"8826\": [0.08556, 0.58556, 0, 0],\n \"8827\": [0.08556, 0.58556, 0, 0],\n \"8834\": [0.08556, 0.58556, 0, 0],\n \"8835\": [0.08556, 0.58556, 0, 0],\n \"8838\": [0.19667, 0.69667, 0, 0],\n \"8839\": [0.19667, 0.69667, 0, 0],\n \"8846\": [0, 0.55556, 0, 0],\n \"8849\": [0.19667, 0.69667, 0, 0],\n \"8850\": [0.19667, 0.69667, 0, 0],\n \"8851\": [0, 0.55556, 0, 0],\n \"8852\": [0, 0.55556, 0, 0],\n \"8853\": [0.13333, 0.63333, 0, 0],\n \"8854\": [0.13333, 0.63333, 0, 0],\n \"8855\": [0.13333, 0.63333, 0, 0],\n \"8856\": [0.13333, 0.63333, 0, 0],\n \"8857\": [0.13333, 0.63333, 0, 0],\n \"8866\": [0, 0.69444, 0, 0],\n \"8867\": [0, 0.69444, 0, 0],\n \"8868\": [0, 0.69444, 0, 0],\n \"8869\": [0, 0.69444, 0, 0],\n \"8900\": [-0.02639, 0.47361, 0, 0],\n \"8901\": [-0.02639, 0.47361, 0, 0],\n \"8902\": [-0.02778, 0.47222, 0, 0],\n \"8968\": [0.25, 0.75, 0, 0],\n \"8969\": [0.25, 0.75, 0, 0],\n \"8970\": [0.25, 0.75, 0, 0],\n \"8971\": [0.25, 0.75, 0, 0],\n \"8994\": [-0.13889, 0.36111, 0, 0],\n \"8995\": [-0.13889, 0.36111, 0, 0],\n \"9651\": [0.19444, 0.69444, 0, 0],\n \"9657\": [-0.02778, 0.47222, 0, 0],\n \"9661\": [0.19444, 0.69444, 0, 0],\n \"9667\": [-0.02778, 0.47222, 0, 0],\n \"9711\": [0.19444, 0.69444, 0, 0],\n \"9824\": [0.12963, 0.69444, 0, 0],\n \"9825\": [0.12963, 0.69444, 0, 0],\n \"9826\": [0.12963, 0.69444, 0, 0],\n \"9827\": [0.12963, 0.69444, 0, 0],\n \"9837\": [0, 0.75, 0, 0],\n \"9838\": [0.19444, 0.69444, 0, 0],\n \"9839\": [0.19444, 0.69444, 0, 0],\n \"10216\": [0.25, 0.75, 0, 0],\n \"10217\": [0.25, 0.75, 0, 0],\n \"10815\": [0, 0.68611, 0, 0],\n \"10927\": [0.19667, 0.69667, 0, 0],\n \"10928\": [0.19667, 0.69667, 0, 0],\n },\n \"Main-Italic\": {\n \"33\": [0, 0.69444, 0.12417, 0],\n \"34\": [0, 0.69444, 0.06961, 0],\n \"35\": [0.19444, 0.69444, 0.06616, 0],\n \"37\": [0.05556, 0.75, 0.13639, 0],\n \"38\": [0, 0.69444, 0.09694, 0],\n \"39\": [0, 0.69444, 0.12417, 0],\n \"40\": [0.25, 0.75, 0.16194, 0],\n \"41\": [0.25, 0.75, 0.03694, 0],\n \"42\": [0, 0.75, 0.14917, 0],\n \"43\": [0.05667, 0.56167, 0.03694, 0],\n \"44\": [0.19444, 0.10556, 0, 0],\n \"45\": [0, 0.43056, 0.02826, 0],\n \"46\": [0, 0.10556, 0, 0],\n \"47\": [0.25, 0.75, 0.16194, 0],\n \"48\": [0, 0.64444, 0.13556, 0],\n \"49\": [0, 0.64444, 0.13556, 0],\n \"50\": [0, 0.64444, 0.13556, 0],\n \"51\": [0, 0.64444, 0.13556, 0],\n \"52\": [0.19444, 0.64444, 0.13556, 0],\n \"53\": [0, 0.64444, 0.13556, 0],\n \"54\": [0, 0.64444, 0.13556, 0],\n \"55\": [0.19444, 0.64444, 0.13556, 0],\n \"56\": [0, 0.64444, 0.13556, 0],\n \"57\": [0, 0.64444, 0.13556, 0],\n \"58\": [0, 0.43056, 0.0582, 0],\n \"59\": [0.19444, 0.43056, 0.0582, 0],\n \"61\": [-0.13313, 0.36687, 0.06616, 0],\n \"63\": [0, 0.69444, 0.1225, 0],\n \"64\": [0, 0.69444, 0.09597, 0],\n \"65\": [0, 0.68333, 0, 0],\n \"66\": [0, 0.68333, 0.10257, 0],\n \"67\": [0, 0.68333, 0.14528, 0],\n \"68\": [0, 0.68333, 0.09403, 0],\n \"69\": [0, 0.68333, 0.12028, 0],\n \"70\": [0, 0.68333, 0.13305, 0],\n \"71\": [0, 0.68333, 0.08722, 0],\n \"72\": [0, 0.68333, 0.16389, 0],\n \"73\": [0, 0.68333, 0.15806, 0],\n \"74\": [0, 0.68333, 0.14028, 0],\n \"75\": [0, 0.68333, 0.14528, 0],\n \"76\": [0, 0.68333, 0, 0],\n \"77\": [0, 0.68333, 0.16389, 0],\n \"78\": [0, 0.68333, 0.16389, 0],\n \"79\": [0, 0.68333, 0.09403, 0],\n \"80\": [0, 0.68333, 0.10257, 0],\n \"81\": [0.19444, 0.68333, 0.09403, 0],\n \"82\": [0, 0.68333, 0.03868, 0],\n \"83\": [0, 0.68333, 0.11972, 0],\n \"84\": [0, 0.68333, 0.13305, 0],\n \"85\": [0, 0.68333, 0.16389, 0],\n \"86\": [0, 0.68333, 0.18361, 0],\n \"87\": [0, 0.68333, 0.18361, 0],\n \"88\": [0, 0.68333, 0.15806, 0],\n \"89\": [0, 0.68333, 0.19383, 0],\n \"90\": [0, 0.68333, 0.14528, 0],\n \"91\": [0.25, 0.75, 0.1875, 0],\n \"93\": [0.25, 0.75, 0.10528, 0],\n \"94\": [0, 0.69444, 0.06646, 0],\n \"95\": [0.31, 0.12056, 0.09208, 0],\n \"97\": [0, 0.43056, 0.07671, 0],\n \"98\": [0, 0.69444, 0.06312, 0],\n \"99\": [0, 0.43056, 0.05653, 0],\n \"100\": [0, 0.69444, 0.10333, 0],\n \"101\": [0, 0.43056, 0.07514, 0],\n \"102\": [0.19444, 0.69444, 0.21194, 0],\n \"103\": [0.19444, 0.43056, 0.08847, 0],\n \"104\": [0, 0.69444, 0.07671, 0],\n \"105\": [0, 0.65536, 0.1019, 0],\n \"106\": [0.19444, 0.65536, 0.14467, 0],\n \"107\": [0, 0.69444, 0.10764, 0],\n \"108\": [0, 0.69444, 0.10333, 0],\n \"109\": [0, 0.43056, 0.07671, 0],\n \"110\": [0, 0.43056, 0.07671, 0],\n \"111\": [0, 0.43056, 0.06312, 0],\n \"112\": [0.19444, 0.43056, 0.06312, 0],\n \"113\": [0.19444, 0.43056, 0.08847, 0],\n \"114\": [0, 0.43056, 0.10764, 0],\n \"115\": [0, 0.43056, 0.08208, 0],\n \"116\": [0, 0.61508, 0.09486, 0],\n \"117\": [0, 0.43056, 0.07671, 0],\n \"118\": [0, 0.43056, 0.10764, 0],\n \"119\": [0, 0.43056, 0.10764, 0],\n \"120\": [0, 0.43056, 0.12042, 0],\n \"121\": [0.19444, 0.43056, 0.08847, 0],\n \"122\": [0, 0.43056, 0.12292, 0],\n \"126\": [0.35, 0.31786, 0.11585, 0],\n \"163\": [0, 0.69444, 0, 0],\n \"305\": [0, 0.43056, 0, 0.02778],\n \"567\": [0.19444, 0.43056, 0, 0.08334],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0.09694, 0],\n \"770\": [0, 0.69444, 0.06646, 0],\n \"771\": [0, 0.66786, 0.11585, 0],\n \"772\": [0, 0.56167, 0.10333, 0],\n \"774\": [0, 0.69444, 0.10806, 0],\n \"775\": [0, 0.66786, 0.11752, 0],\n \"776\": [0, 0.66786, 0.10474, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0.1225, 0],\n \"780\": [0, 0.62847, 0.08295, 0],\n \"915\": [0, 0.68333, 0.13305, 0],\n \"916\": [0, 0.68333, 0, 0],\n \"920\": [0, 0.68333, 0.09403, 0],\n \"923\": [0, 0.68333, 0, 0],\n \"926\": [0, 0.68333, 0.15294, 0],\n \"928\": [0, 0.68333, 0.16389, 0],\n \"931\": [0, 0.68333, 0.12028, 0],\n \"933\": [0, 0.68333, 0.11111, 0],\n \"934\": [0, 0.68333, 0.05986, 0],\n \"936\": [0, 0.68333, 0.11111, 0],\n \"937\": [0, 0.68333, 0.10257, 0],\n \"8211\": [0, 0.43056, 0.09208, 0],\n \"8212\": [0, 0.43056, 0.09208, 0],\n \"8216\": [0, 0.69444, 0.12417, 0],\n \"8217\": [0, 0.69444, 0.12417, 0],\n \"8220\": [0, 0.69444, 0.1685, 0],\n \"8221\": [0, 0.69444, 0.06961, 0],\n \"8463\": [0, 0.68889, 0, 0],\n },\n \"Main-Regular\": {\n \"32\": [0, 0, 0, 0],\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.08333, 0.58333, 0, 0],\n \"44\": [0.19444, 0.10556, 0, 0],\n \"45\": [0, 0.43056, 0, 0],\n \"46\": [0, 0.10556, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.64444, 0, 0],\n \"49\": [0, 0.64444, 0, 0],\n \"50\": [0, 0.64444, 0, 0],\n \"51\": [0, 0.64444, 0, 0],\n \"52\": [0, 0.64444, 0, 0],\n \"53\": [0, 0.64444, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0, 0.64444, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0, 0.64444, 0, 0],\n \"58\": [0, 0.43056, 0, 0],\n \"59\": [0.19444, 0.43056, 0, 0],\n \"60\": [0.0391, 0.5391, 0, 0],\n \"61\": [-0.13313, 0.36687, 0, 0],\n \"62\": [0.0391, 0.5391, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.68333, 0, 0],\n \"66\": [0, 0.68333, 0, 0],\n \"67\": [0, 0.68333, 0, 0],\n \"68\": [0, 0.68333, 0, 0],\n \"69\": [0, 0.68333, 0, 0],\n \"70\": [0, 0.68333, 0, 0],\n \"71\": [0, 0.68333, 0, 0],\n \"72\": [0, 0.68333, 0, 0],\n \"73\": [0, 0.68333, 0, 0],\n \"74\": [0, 0.68333, 0, 0],\n \"75\": [0, 0.68333, 0, 0],\n \"76\": [0, 0.68333, 0, 0],\n \"77\": [0, 0.68333, 0, 0],\n \"78\": [0, 0.68333, 0, 0],\n \"79\": [0, 0.68333, 0, 0],\n \"80\": [0, 0.68333, 0, 0],\n \"81\": [0.19444, 0.68333, 0, 0],\n \"82\": [0, 0.68333, 0, 0],\n \"83\": [0, 0.68333, 0, 0],\n \"84\": [0, 0.68333, 0, 0],\n \"85\": [0, 0.68333, 0, 0],\n \"86\": [0, 0.68333, 0.01389, 0],\n \"87\": [0, 0.68333, 0.01389, 0],\n \"88\": [0, 0.68333, 0, 0],\n \"89\": [0, 0.68333, 0.025, 0],\n \"90\": [0, 0.68333, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"92\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.31, 0.12056, 0.02778, 0],\n \"96\": [0, 0.69444, 0, 0],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.43056, 0, 0],\n \"102\": [0, 0.69444, 0.07778, 0],\n \"103\": [0.19444, 0.43056, 0.01389, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.66786, 0, 0],\n \"106\": [0.19444, 0.66786, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0],\n \"112\": [0.19444, 0.43056, 0, 0],\n \"113\": [0.19444, 0.43056, 0, 0],\n \"114\": [0, 0.43056, 0, 0],\n \"115\": [0, 0.43056, 0, 0],\n \"116\": [0, 0.61508, 0, 0],\n \"117\": [0, 0.43056, 0, 0],\n \"118\": [0, 0.43056, 0.01389, 0],\n \"119\": [0, 0.43056, 0.01389, 0],\n \"120\": [0, 0.43056, 0, 0],\n \"121\": [0.19444, 0.43056, 0.01389, 0],\n \"122\": [0, 0.43056, 0, 0],\n \"123\": [0.25, 0.75, 0, 0],\n \"124\": [0.25, 0.75, 0, 0],\n \"125\": [0.25, 0.75, 0, 0],\n \"126\": [0.35, 0.31786, 0, 0],\n \"160\": [0, 0, 0, 0],\n \"168\": [0, 0.66786, 0, 0],\n \"172\": [0, 0.43056, 0, 0],\n \"175\": [0, 0.56778, 0, 0],\n \"176\": [0, 0.69444, 0, 0],\n \"177\": [0.08333, 0.58333, 0, 0],\n \"180\": [0, 0.69444, 0, 0],\n \"215\": [0.08333, 0.58333, 0, 0],\n \"247\": [0.08333, 0.58333, 0, 0],\n \"305\": [0, 0.43056, 0, 0],\n \"567\": [0.19444, 0.43056, 0, 0],\n \"710\": [0, 0.69444, 0, 0],\n \"711\": [0, 0.62847, 0, 0],\n \"713\": [0, 0.56778, 0, 0],\n \"714\": [0, 0.69444, 0, 0],\n \"715\": [0, 0.69444, 0, 0],\n \"728\": [0, 0.69444, 0, 0],\n \"729\": [0, 0.66786, 0, 0],\n \"730\": [0, 0.69444, 0, 0],\n \"732\": [0, 0.66786, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.66786, 0, 0],\n \"772\": [0, 0.56778, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.66786, 0, 0],\n \"776\": [0, 0.66786, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.62847, 0, 0],\n \"824\": [0.19444, 0.69444, 0, 0],\n \"915\": [0, 0.68333, 0, 0],\n \"916\": [0, 0.68333, 0, 0],\n \"920\": [0, 0.68333, 0, 0],\n \"923\": [0, 0.68333, 0, 0],\n \"926\": [0, 0.68333, 0, 0],\n \"928\": [0, 0.68333, 0, 0],\n \"931\": [0, 0.68333, 0, 0],\n \"933\": [0, 0.68333, 0, 0],\n \"934\": [0, 0.68333, 0, 0],\n \"936\": [0, 0.68333, 0, 0],\n \"937\": [0, 0.68333, 0, 0],\n \"8211\": [0, 0.43056, 0.02778, 0],\n \"8212\": [0, 0.43056, 0.02778, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0],\n \"8224\": [0.19444, 0.69444, 0, 0],\n \"8225\": [0.19444, 0.69444, 0, 0],\n \"8230\": [0, 0.12, 0, 0],\n \"8242\": [0, 0.55556, 0, 0],\n \"8407\": [0, 0.71444, 0.15382, 0],\n \"8463\": [0, 0.68889, 0, 0],\n \"8465\": [0, 0.69444, 0, 0],\n \"8467\": [0, 0.69444, 0, 0.11111],\n \"8472\": [0.19444, 0.43056, 0, 0.11111],\n \"8476\": [0, 0.69444, 0, 0],\n \"8501\": [0, 0.69444, 0, 0],\n \"8592\": [-0.13313, 0.36687, 0, 0],\n \"8593\": [0.19444, 0.69444, 0, 0],\n \"8594\": [-0.13313, 0.36687, 0, 0],\n \"8595\": [0.19444, 0.69444, 0, 0],\n \"8596\": [-0.13313, 0.36687, 0, 0],\n \"8597\": [0.25, 0.75, 0, 0],\n \"8598\": [0.19444, 0.69444, 0, 0],\n \"8599\": [0.19444, 0.69444, 0, 0],\n \"8600\": [0.19444, 0.69444, 0, 0],\n \"8601\": [0.19444, 0.69444, 0, 0],\n \"8614\": [0.011, 0.511, 0, 0],\n \"8617\": [0.011, 0.511, 0, 0],\n \"8618\": [0.011, 0.511, 0, 0],\n \"8636\": [-0.13313, 0.36687, 0, 0],\n \"8637\": [-0.13313, 0.36687, 0, 0],\n \"8640\": [-0.13313, 0.36687, 0, 0],\n \"8641\": [-0.13313, 0.36687, 0, 0],\n \"8652\": [0.011, 0.671, 0, 0],\n \"8656\": [-0.13313, 0.36687, 0, 0],\n \"8657\": [0.19444, 0.69444, 0, 0],\n \"8658\": [-0.13313, 0.36687, 0, 0],\n \"8659\": [0.19444, 0.69444, 0, 0],\n \"8660\": [-0.13313, 0.36687, 0, 0],\n \"8661\": [0.25, 0.75, 0, 0],\n \"8704\": [0, 0.69444, 0, 0],\n \"8706\": [0, 0.69444, 0.05556, 0.08334],\n \"8707\": [0, 0.69444, 0, 0],\n \"8709\": [0.05556, 0.75, 0, 0],\n \"8711\": [0, 0.68333, 0, 0],\n \"8712\": [0.0391, 0.5391, 0, 0],\n \"8715\": [0.0391, 0.5391, 0, 0],\n \"8722\": [0.08333, 0.58333, 0, 0],\n \"8723\": [0.08333, 0.58333, 0, 0],\n \"8725\": [0.25, 0.75, 0, 0],\n \"8726\": [0.25, 0.75, 0, 0],\n \"8727\": [-0.03472, 0.46528, 0, 0],\n \"8728\": [-0.05555, 0.44445, 0, 0],\n \"8729\": [-0.05555, 0.44445, 0, 0],\n \"8730\": [0.2, 0.8, 0, 0],\n \"8733\": [0, 0.43056, 0, 0],\n \"8734\": [0, 0.43056, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8739\": [0.25, 0.75, 0, 0],\n \"8741\": [0.25, 0.75, 0, 0],\n \"8743\": [0, 0.55556, 0, 0],\n \"8744\": [0, 0.55556, 0, 0],\n \"8745\": [0, 0.55556, 0, 0],\n \"8746\": [0, 0.55556, 0, 0],\n \"8747\": [0.19444, 0.69444, 0.11111, 0],\n \"8764\": [-0.13313, 0.36687, 0, 0],\n \"8768\": [0.19444, 0.69444, 0, 0],\n \"8771\": [-0.03625, 0.46375, 0, 0],\n \"8773\": [-0.022, 0.589, 0, 0],\n \"8776\": [-0.01688, 0.48312, 0, 0],\n \"8781\": [-0.03625, 0.46375, 0, 0],\n \"8784\": [-0.133, 0.67, 0, 0],\n \"8800\": [0.215, 0.716, 0, 0],\n \"8801\": [-0.03625, 0.46375, 0, 0],\n \"8804\": [0.13597, 0.63597, 0, 0],\n \"8805\": [0.13597, 0.63597, 0, 0],\n \"8810\": [0.0391, 0.5391, 0, 0],\n \"8811\": [0.0391, 0.5391, 0, 0],\n \"8826\": [0.0391, 0.5391, 0, 0],\n \"8827\": [0.0391, 0.5391, 0, 0],\n \"8834\": [0.0391, 0.5391, 0, 0],\n \"8835\": [0.0391, 0.5391, 0, 0],\n \"8838\": [0.13597, 0.63597, 0, 0],\n \"8839\": [0.13597, 0.63597, 0, 0],\n \"8846\": [0, 0.55556, 0, 0],\n \"8849\": [0.13597, 0.63597, 0, 0],\n \"8850\": [0.13597, 0.63597, 0, 0],\n \"8851\": [0, 0.55556, 0, 0],\n \"8852\": [0, 0.55556, 0, 0],\n \"8853\": [0.08333, 0.58333, 0, 0],\n \"8854\": [0.08333, 0.58333, 0, 0],\n \"8855\": [0.08333, 0.58333, 0, 0],\n \"8856\": [0.08333, 0.58333, 0, 0],\n \"8857\": [0.08333, 0.58333, 0, 0],\n \"8866\": [0, 0.69444, 0, 0],\n \"8867\": [0, 0.69444, 0, 0],\n \"8868\": [0, 0.69444, 0, 0],\n \"8869\": [0, 0.69444, 0, 0],\n \"8872\": [0.249, 0.75, 0, 0],\n \"8900\": [-0.05555, 0.44445, 0, 0],\n \"8901\": [-0.05555, 0.44445, 0, 0],\n \"8902\": [-0.03472, 0.46528, 0, 0],\n \"8904\": [0.005, 0.505, 0, 0],\n \"8942\": [0.03, 0.9, 0, 0],\n \"8943\": [-0.19, 0.31, 0, 0],\n \"8945\": [-0.1, 0.82, 0, 0],\n \"8968\": [0.25, 0.75, 0, 0],\n \"8969\": [0.25, 0.75, 0, 0],\n \"8970\": [0.25, 0.75, 0, 0],\n \"8971\": [0.25, 0.75, 0, 0],\n \"8994\": [-0.14236, 0.35764, 0, 0],\n \"8995\": [-0.14236, 0.35764, 0, 0],\n \"9136\": [0.244, 0.744, 0, 0],\n \"9137\": [0.244, 0.744, 0, 0],\n \"9651\": [0.19444, 0.69444, 0, 0],\n \"9657\": [-0.03472, 0.46528, 0, 0],\n \"9661\": [0.19444, 0.69444, 0, 0],\n \"9667\": [-0.03472, 0.46528, 0, 0],\n \"9711\": [0.19444, 0.69444, 0, 0],\n \"9824\": [0.12963, 0.69444, 0, 0],\n \"9825\": [0.12963, 0.69444, 0, 0],\n \"9826\": [0.12963, 0.69444, 0, 0],\n \"9827\": [0.12963, 0.69444, 0, 0],\n \"9837\": [0, 0.75, 0, 0],\n \"9838\": [0.19444, 0.69444, 0, 0],\n \"9839\": [0.19444, 0.69444, 0, 0],\n \"10216\": [0.25, 0.75, 0, 0],\n \"10217\": [0.25, 0.75, 0, 0],\n \"10222\": [0.244, 0.744, 0, 0],\n \"10223\": [0.244, 0.744, 0, 0],\n \"10229\": [0.011, 0.511, 0, 0],\n \"10230\": [0.011, 0.511, 0, 0],\n \"10231\": [0.011, 0.511, 0, 0],\n \"10232\": [0.024, 0.525, 0, 0],\n \"10233\": [0.024, 0.525, 0, 0],\n \"10234\": [0.024, 0.525, 0, 0],\n \"10236\": [0.011, 0.511, 0, 0],\n \"10815\": [0, 0.68333, 0, 0],\n \"10927\": [0.13597, 0.63597, 0, 0],\n \"10928\": [0.13597, 0.63597, 0, 0],\n },\n \"Math-BoldItalic\": {\n \"47\": [0.19444, 0.69444, 0, 0],\n \"65\": [0, 0.68611, 0, 0],\n \"66\": [0, 0.68611, 0.04835, 0],\n \"67\": [0, 0.68611, 0.06979, 0],\n \"68\": [0, 0.68611, 0.03194, 0],\n \"69\": [0, 0.68611, 0.05451, 0],\n \"70\": [0, 0.68611, 0.15972, 0],\n \"71\": [0, 0.68611, 0, 0],\n \"72\": [0, 0.68611, 0.08229, 0],\n \"73\": [0, 0.68611, 0.07778, 0],\n \"74\": [0, 0.68611, 0.10069, 0],\n \"75\": [0, 0.68611, 0.06979, 0],\n \"76\": [0, 0.68611, 0, 0],\n \"77\": [0, 0.68611, 0.11424, 0],\n \"78\": [0, 0.68611, 0.11424, 0],\n \"79\": [0, 0.68611, 0.03194, 0],\n \"80\": [0, 0.68611, 0.15972, 0],\n \"81\": [0.19444, 0.68611, 0, 0],\n \"82\": [0, 0.68611, 0.00421, 0],\n \"83\": [0, 0.68611, 0.05382, 0],\n \"84\": [0, 0.68611, 0.15972, 0],\n \"85\": [0, 0.68611, 0.11424, 0],\n \"86\": [0, 0.68611, 0.25555, 0],\n \"87\": [0, 0.68611, 0.15972, 0],\n \"88\": [0, 0.68611, 0.07778, 0],\n \"89\": [0, 0.68611, 0.25555, 0],\n \"90\": [0, 0.68611, 0.06979, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0.19444, 0.69444, 0.11042, 0],\n \"103\": [0.19444, 0.44444, 0.03704, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.69326, 0, 0],\n \"106\": [0.19444, 0.69326, 0.0622, 0],\n \"107\": [0, 0.69444, 0.01852, 0],\n \"108\": [0, 0.69444, 0.0088, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0.03704, 0],\n \"114\": [0, 0.44444, 0.03194, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.63492, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.03704, 0],\n \"119\": [0, 0.44444, 0.02778, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.03704, 0],\n \"122\": [0, 0.44444, 0.04213, 0],\n \"915\": [0, 0.68611, 0.15972, 0],\n \"916\": [0, 0.68611, 0, 0],\n \"920\": [0, 0.68611, 0.03194, 0],\n \"923\": [0, 0.68611, 0, 0],\n \"926\": [0, 0.68611, 0.07458, 0],\n \"928\": [0, 0.68611, 0.08229, 0],\n \"931\": [0, 0.68611, 0.05451, 0],\n \"933\": [0, 0.68611, 0.15972, 0],\n \"934\": [0, 0.68611, 0, 0],\n \"936\": [0, 0.68611, 0.11653, 0],\n \"937\": [0, 0.68611, 0.04835, 0],\n \"945\": [0, 0.44444, 0, 0],\n \"946\": [0.19444, 0.69444, 0.03403, 0],\n \"947\": [0.19444, 0.44444, 0.06389, 0],\n \"948\": [0, 0.69444, 0.03819, 0],\n \"949\": [0, 0.44444, 0, 0],\n \"950\": [0.19444, 0.69444, 0.06215, 0],\n \"951\": [0.19444, 0.44444, 0.03704, 0],\n \"952\": [0, 0.69444, 0.03194, 0],\n \"953\": [0, 0.44444, 0, 0],\n \"954\": [0, 0.44444, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.44444, 0, 0],\n \"957\": [0, 0.44444, 0.06898, 0],\n \"958\": [0.19444, 0.69444, 0.03021, 0],\n \"959\": [0, 0.44444, 0, 0],\n \"960\": [0, 0.44444, 0.03704, 0],\n \"961\": [0.19444, 0.44444, 0, 0],\n \"962\": [0.09722, 0.44444, 0.07917, 0],\n \"963\": [0, 0.44444, 0.03704, 0],\n \"964\": [0, 0.44444, 0.13472, 0],\n \"965\": [0, 0.44444, 0.03704, 0],\n \"966\": [0.19444, 0.44444, 0, 0],\n \"967\": [0.19444, 0.44444, 0, 0],\n \"968\": [0.19444, 0.69444, 0.03704, 0],\n \"969\": [0, 0.44444, 0.03704, 0],\n \"977\": [0, 0.69444, 0, 0],\n \"981\": [0.19444, 0.69444, 0, 0],\n \"982\": [0, 0.44444, 0.03194, 0],\n \"1009\": [0.19444, 0.44444, 0, 0],\n \"1013\": [0, 0.44444, 0, 0],\n },\n \"Math-Italic\": {\n \"47\": [0.19444, 0.69444, 0, 0],\n \"65\": [0, 0.68333, 0, 0.13889],\n \"66\": [0, 0.68333, 0.05017, 0.08334],\n \"67\": [0, 0.68333, 0.07153, 0.08334],\n \"68\": [0, 0.68333, 0.02778, 0.05556],\n \"69\": [0, 0.68333, 0.05764, 0.08334],\n \"70\": [0, 0.68333, 0.13889, 0.08334],\n \"71\": [0, 0.68333, 0, 0.08334],\n \"72\": [0, 0.68333, 0.08125, 0.05556],\n \"73\": [0, 0.68333, 0.07847, 0.11111],\n \"74\": [0, 0.68333, 0.09618, 0.16667],\n \"75\": [0, 0.68333, 0.07153, 0.05556],\n \"76\": [0, 0.68333, 0, 0.02778],\n \"77\": [0, 0.68333, 0.10903, 0.08334],\n \"78\": [0, 0.68333, 0.10903, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.08334],\n \"80\": [0, 0.68333, 0.13889, 0.08334],\n \"81\": [0.19444, 0.68333, 0, 0.08334],\n \"82\": [0, 0.68333, 0.00773, 0.08334],\n \"83\": [0, 0.68333, 0.05764, 0.08334],\n \"84\": [0, 0.68333, 0.13889, 0.08334],\n \"85\": [0, 0.68333, 0.10903, 0.02778],\n \"86\": [0, 0.68333, 0.22222, 0],\n \"87\": [0, 0.68333, 0.13889, 0],\n \"88\": [0, 0.68333, 0.07847, 0.08334],\n \"89\": [0, 0.68333, 0.22222, 0],\n \"90\": [0, 0.68333, 0.07153, 0.08334],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0.05556],\n \"100\": [0, 0.69444, 0, 0.16667],\n \"101\": [0, 0.43056, 0, 0.05556],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.65952, 0, 0],\n \"106\": [0.19444, 0.65952, 0.05724, 0],\n \"107\": [0, 0.69444, 0.03148, 0],\n \"108\": [0, 0.69444, 0.01968, 0.08334],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0.05556],\n \"112\": [0.19444, 0.43056, 0, 0.08334],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334],\n \"114\": [0, 0.43056, 0.02778, 0.05556],\n \"115\": [0, 0.43056, 0, 0.05556],\n \"116\": [0, 0.61508, 0, 0.08334],\n \"117\": [0, 0.43056, 0, 0.02778],\n \"118\": [0, 0.43056, 0.03588, 0.02778],\n \"119\": [0, 0.43056, 0.02691, 0.08334],\n \"120\": [0, 0.43056, 0, 0.02778],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"122\": [0, 0.43056, 0.04398, 0.05556],\n \"915\": [0, 0.68333, 0.13889, 0.08334],\n \"916\": [0, 0.68333, 0, 0.16667],\n \"920\": [0, 0.68333, 0.02778, 0.08334],\n \"923\": [0, 0.68333, 0, 0.16667],\n \"926\": [0, 0.68333, 0.07569, 0.08334],\n \"928\": [0, 0.68333, 0.08125, 0.05556],\n \"931\": [0, 0.68333, 0.05764, 0.08334],\n \"933\": [0, 0.68333, 0.13889, 0.05556],\n \"934\": [0, 0.68333, 0, 0.08334],\n \"936\": [0, 0.68333, 0.11, 0.05556],\n \"937\": [0, 0.68333, 0.05017, 0.08334],\n \"945\": [0, 0.43056, 0.0037, 0.02778],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334],\n \"947\": [0.19444, 0.43056, 0.05556, 0],\n \"948\": [0, 0.69444, 0.03785, 0.05556],\n \"949\": [0, 0.43056, 0, 0.08334],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"952\": [0, 0.69444, 0.02778, 0.08334],\n \"953\": [0, 0.43056, 0, 0.05556],\n \"954\": [0, 0.43056, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.43056, 0, 0.02778],\n \"957\": [0, 0.43056, 0.06366, 0.02778],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111],\n \"959\": [0, 0.43056, 0, 0.05556],\n \"960\": [0, 0.43056, 0.03588, 0],\n \"961\": [0.19444, 0.43056, 0, 0.08334],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334],\n \"963\": [0, 0.43056, 0.03588, 0],\n \"964\": [0, 0.43056, 0.1132, 0.02778],\n \"965\": [0, 0.43056, 0.03588, 0.02778],\n \"966\": [0.19444, 0.43056, 0, 0.08334],\n \"967\": [0.19444, 0.43056, 0, 0.05556],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111],\n \"969\": [0, 0.43056, 0.03588, 0],\n \"977\": [0, 0.69444, 0, 0.08334],\n \"981\": [0.19444, 0.69444, 0, 0.08334],\n \"982\": [0, 0.43056, 0.02778, 0],\n \"1009\": [0.19444, 0.43056, 0, 0.08334],\n \"1013\": [0, 0.43056, 0, 0.05556],\n },\n \"Math-Regular\": {\n \"65\": [0, 0.68333, 0, 0.13889],\n \"66\": [0, 0.68333, 0.05017, 0.08334],\n \"67\": [0, 0.68333, 0.07153, 0.08334],\n \"68\": [0, 0.68333, 0.02778, 0.05556],\n \"69\": [0, 0.68333, 0.05764, 0.08334],\n \"70\": [0, 0.68333, 0.13889, 0.08334],\n \"71\": [0, 0.68333, 0, 0.08334],\n \"72\": [0, 0.68333, 0.08125, 0.05556],\n \"73\": [0, 0.68333, 0.07847, 0.11111],\n \"74\": [0, 0.68333, 0.09618, 0.16667],\n \"75\": [0, 0.68333, 0.07153, 0.05556],\n \"76\": [0, 0.68333, 0, 0.02778],\n \"77\": [0, 0.68333, 0.10903, 0.08334],\n \"78\": [0, 0.68333, 0.10903, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.08334],\n \"80\": [0, 0.68333, 0.13889, 0.08334],\n \"81\": [0.19444, 0.68333, 0, 0.08334],\n \"82\": [0, 0.68333, 0.00773, 0.08334],\n \"83\": [0, 0.68333, 0.05764, 0.08334],\n \"84\": [0, 0.68333, 0.13889, 0.08334],\n \"85\": [0, 0.68333, 0.10903, 0.02778],\n \"86\": [0, 0.68333, 0.22222, 0],\n \"87\": [0, 0.68333, 0.13889, 0],\n \"88\": [0, 0.68333, 0.07847, 0.08334],\n \"89\": [0, 0.68333, 0.22222, 0],\n \"90\": [0, 0.68333, 0.07153, 0.08334],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0.05556],\n \"100\": [0, 0.69444, 0, 0.16667],\n \"101\": [0, 0.43056, 0, 0.05556],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.65952, 0, 0],\n \"106\": [0.19444, 0.65952, 0.05724, 0],\n \"107\": [0, 0.69444, 0.03148, 0],\n \"108\": [0, 0.69444, 0.01968, 0.08334],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0.05556],\n \"112\": [0.19444, 0.43056, 0, 0.08334],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334],\n \"114\": [0, 0.43056, 0.02778, 0.05556],\n \"115\": [0, 0.43056, 0, 0.05556],\n \"116\": [0, 0.61508, 0, 0.08334],\n \"117\": [0, 0.43056, 0, 0.02778],\n \"118\": [0, 0.43056, 0.03588, 0.02778],\n \"119\": [0, 0.43056, 0.02691, 0.08334],\n \"120\": [0, 0.43056, 0, 0.02778],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"122\": [0, 0.43056, 0.04398, 0.05556],\n \"915\": [0, 0.68333, 0.13889, 0.08334],\n \"916\": [0, 0.68333, 0, 0.16667],\n \"920\": [0, 0.68333, 0.02778, 0.08334],\n \"923\": [0, 0.68333, 0, 0.16667],\n \"926\": [0, 0.68333, 0.07569, 0.08334],\n \"928\": [0, 0.68333, 0.08125, 0.05556],\n \"931\": [0, 0.68333, 0.05764, 0.08334],\n \"933\": [0, 0.68333, 0.13889, 0.05556],\n \"934\": [0, 0.68333, 0, 0.08334],\n \"936\": [0, 0.68333, 0.11, 0.05556],\n \"937\": [0, 0.68333, 0.05017, 0.08334],\n \"945\": [0, 0.43056, 0.0037, 0.02778],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334],\n \"947\": [0.19444, 0.43056, 0.05556, 0],\n \"948\": [0, 0.69444, 0.03785, 0.05556],\n \"949\": [0, 0.43056, 0, 0.08334],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"952\": [0, 0.69444, 0.02778, 0.08334],\n \"953\": [0, 0.43056, 0, 0.05556],\n \"954\": [0, 0.43056, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.43056, 0, 0.02778],\n \"957\": [0, 0.43056, 0.06366, 0.02778],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111],\n \"959\": [0, 0.43056, 0, 0.05556],\n \"960\": [0, 0.43056, 0.03588, 0],\n \"961\": [0.19444, 0.43056, 0, 0.08334],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334],\n \"963\": [0, 0.43056, 0.03588, 0],\n \"964\": [0, 0.43056, 0.1132, 0.02778],\n \"965\": [0, 0.43056, 0.03588, 0.02778],\n \"966\": [0.19444, 0.43056, 0, 0.08334],\n \"967\": [0.19444, 0.43056, 0, 0.05556],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111],\n \"969\": [0, 0.43056, 0.03588, 0],\n \"977\": [0, 0.69444, 0, 0.08334],\n \"981\": [0.19444, 0.69444, 0, 0.08334],\n \"982\": [0, 0.43056, 0.02778, 0],\n \"1009\": [0.19444, 0.43056, 0, 0.08334],\n \"1013\": [0, 0.43056, 0, 0.05556],\n },\n \"SansSerif-Regular\": {\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.08333, 0.58333, 0, 0],\n \"44\": [0.125, 0.08333, 0, 0],\n \"45\": [0, 0.44444, 0, 0],\n \"46\": [0, 0.08333, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.65556, 0, 0],\n \"49\": [0, 0.65556, 0, 0],\n \"50\": [0, 0.65556, 0, 0],\n \"51\": [0, 0.65556, 0, 0],\n \"52\": [0, 0.65556, 0, 0],\n \"53\": [0, 0.65556, 0, 0],\n \"54\": [0, 0.65556, 0, 0],\n \"55\": [0, 0.65556, 0, 0],\n \"56\": [0, 0.65556, 0, 0],\n \"57\": [0, 0.65556, 0, 0],\n \"58\": [0, 0.44444, 0, 0],\n \"59\": [0.125, 0.44444, 0, 0],\n \"61\": [-0.13, 0.37, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.69444, 0, 0],\n \"66\": [0, 0.69444, 0, 0],\n \"67\": [0, 0.69444, 0, 0],\n \"68\": [0, 0.69444, 0, 0],\n \"69\": [0, 0.69444, 0, 0],\n \"70\": [0, 0.69444, 0, 0],\n \"71\": [0, 0.69444, 0, 0],\n \"72\": [0, 0.69444, 0, 0],\n \"73\": [0, 0.69444, 0, 0],\n \"74\": [0, 0.69444, 0, 0],\n \"75\": [0, 0.69444, 0, 0],\n \"76\": [0, 0.69444, 0, 0],\n \"77\": [0, 0.69444, 0, 0],\n \"78\": [0, 0.69444, 0, 0],\n \"79\": [0, 0.69444, 0, 0],\n \"80\": [0, 0.69444, 0, 0],\n \"81\": [0.125, 0.69444, 0, 0],\n \"82\": [0, 0.69444, 0, 0],\n \"83\": [0, 0.69444, 0, 0],\n \"84\": [0, 0.69444, 0, 0],\n \"85\": [0, 0.69444, 0, 0],\n \"86\": [0, 0.69444, 0.01389, 0],\n \"87\": [0, 0.69444, 0.01389, 0],\n \"88\": [0, 0.69444, 0, 0],\n \"89\": [0, 0.69444, 0.025, 0],\n \"90\": [0, 0.69444, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.35, 0.09444, 0.02778, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0, 0.69444, 0.06944, 0],\n \"103\": [0.19444, 0.44444, 0.01389, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.67937, 0, 0],\n \"106\": [0.19444, 0.67937, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0, 0],\n \"114\": [0, 0.44444, 0.01389, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.57143, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.01389, 0],\n \"119\": [0, 0.44444, 0.01389, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.01389, 0],\n \"122\": [0, 0.44444, 0, 0],\n \"126\": [0.35, 0.32659, 0, 0],\n \"305\": [0, 0.44444, 0, 0],\n \"567\": [0.19444, 0.44444, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.67659, 0, 0],\n \"772\": [0, 0.60889, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.67937, 0, 0],\n \"776\": [0, 0.67937, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.63194, 0, 0],\n \"915\": [0, 0.69444, 0, 0],\n \"916\": [0, 0.69444, 0, 0],\n \"920\": [0, 0.69444, 0, 0],\n \"923\": [0, 0.69444, 0, 0],\n \"926\": [0, 0.69444, 0, 0],\n \"928\": [0, 0.69444, 0, 0],\n \"931\": [0, 0.69444, 0, 0],\n \"933\": [0, 0.69444, 0, 0],\n \"934\": [0, 0.69444, 0, 0],\n \"936\": [0, 0.69444, 0, 0],\n \"937\": [0, 0.69444, 0, 0],\n \"8211\": [0, 0.44444, 0.02778, 0],\n \"8212\": [0, 0.44444, 0.02778, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0],\n },\n \"Script-Regular\": {\n \"65\": [0, 0.7, 0.22925, 0],\n \"66\": [0, 0.7, 0.04087, 0],\n \"67\": [0, 0.7, 0.1689, 0],\n \"68\": [0, 0.7, 0.09371, 0],\n \"69\": [0, 0.7, 0.18583, 0],\n \"70\": [0, 0.7, 0.13634, 0],\n \"71\": [0, 0.7, 0.17322, 0],\n \"72\": [0, 0.7, 0.29694, 0],\n \"73\": [0, 0.7, 0.19189, 0],\n \"74\": [0.27778, 0.7, 0.19189, 0],\n \"75\": [0, 0.7, 0.31259, 0],\n \"76\": [0, 0.7, 0.19189, 0],\n \"77\": [0, 0.7, 0.15981, 0],\n \"78\": [0, 0.7, 0.3525, 0],\n \"79\": [0, 0.7, 0.08078, 0],\n \"80\": [0, 0.7, 0.08078, 0],\n \"81\": [0, 0.7, 0.03305, 0],\n \"82\": [0, 0.7, 0.06259, 0],\n \"83\": [0, 0.7, 0.19189, 0],\n \"84\": [0, 0.7, 0.29087, 0],\n \"85\": [0, 0.7, 0.25815, 0],\n \"86\": [0, 0.7, 0.27523, 0],\n \"87\": [0, 0.7, 0.27523, 0],\n \"88\": [0, 0.7, 0.26006, 0],\n \"89\": [0, 0.7, 0.2939, 0],\n \"90\": [0, 0.7, 0.24037, 0],\n },\n \"Size1-Regular\": {\n \"40\": [0.35001, 0.85, 0, 0],\n \"41\": [0.35001, 0.85, 0, 0],\n \"47\": [0.35001, 0.85, 0, 0],\n \"91\": [0.35001, 0.85, 0, 0],\n \"92\": [0.35001, 0.85, 0, 0],\n \"93\": [0.35001, 0.85, 0, 0],\n \"123\": [0.35001, 0.85, 0, 0],\n \"125\": [0.35001, 0.85, 0, 0],\n \"710\": [0, 0.72222, 0, 0],\n \"732\": [0, 0.72222, 0, 0],\n \"770\": [0, 0.72222, 0, 0],\n \"771\": [0, 0.72222, 0, 0],\n \"8214\": [-0.00099, 0.601, 0, 0],\n \"8593\": [1e-05, 0.6, 0, 0],\n \"8595\": [1e-05, 0.6, 0, 0],\n \"8657\": [1e-05, 0.6, 0, 0],\n \"8659\": [1e-05, 0.6, 0, 0],\n \"8719\": [0.25001, 0.75, 0, 0],\n \"8720\": [0.25001, 0.75, 0, 0],\n \"8721\": [0.25001, 0.75, 0, 0],\n \"8730\": [0.35001, 0.85, 0, 0],\n \"8739\": [-0.00599, 0.606, 0, 0],\n \"8741\": [-0.00599, 0.606, 0, 0],\n \"8747\": [0.30612, 0.805, 0.19445, 0],\n \"8748\": [0.306, 0.805, 0.19445, 0],\n \"8749\": [0.306, 0.805, 0.19445, 0],\n \"8750\": [0.30612, 0.805, 0.19445, 0],\n \"8896\": [0.25001, 0.75, 0, 0],\n \"8897\": [0.25001, 0.75, 0, 0],\n \"8898\": [0.25001, 0.75, 0, 0],\n \"8899\": [0.25001, 0.75, 0, 0],\n \"8968\": [0.35001, 0.85, 0, 0],\n \"8969\": [0.35001, 0.85, 0, 0],\n \"8970\": [0.35001, 0.85, 0, 0],\n \"8971\": [0.35001, 0.85, 0, 0],\n \"9168\": [-0.00099, 0.601, 0, 0],\n \"10216\": [0.35001, 0.85, 0, 0],\n \"10217\": [0.35001, 0.85, 0, 0],\n \"10752\": [0.25001, 0.75, 0, 0],\n \"10753\": [0.25001, 0.75, 0, 0],\n \"10754\": [0.25001, 0.75, 0, 0],\n \"10756\": [0.25001, 0.75, 0, 0],\n \"10758\": [0.25001, 0.75, 0, 0],\n },\n \"Size2-Regular\": {\n \"40\": [0.65002, 1.15, 0, 0],\n \"41\": [0.65002, 1.15, 0, 0],\n \"47\": [0.65002, 1.15, 0, 0],\n \"91\": [0.65002, 1.15, 0, 0],\n \"92\": [0.65002, 1.15, 0, 0],\n \"93\": [0.65002, 1.15, 0, 0],\n \"123\": [0.65002, 1.15, 0, 0],\n \"125\": [0.65002, 1.15, 0, 0],\n \"710\": [0, 0.75, 0, 0],\n \"732\": [0, 0.75, 0, 0],\n \"770\": [0, 0.75, 0, 0],\n \"771\": [0, 0.75, 0, 0],\n \"8719\": [0.55001, 1.05, 0, 0],\n \"8720\": [0.55001, 1.05, 0, 0],\n \"8721\": [0.55001, 1.05, 0, 0],\n \"8730\": [0.65002, 1.15, 0, 0],\n \"8747\": [0.86225, 1.36, 0.44445, 0],\n \"8748\": [0.862, 1.36, 0.44445, 0],\n \"8749\": [0.862, 1.36, 0.44445, 0],\n \"8750\": [0.86225, 1.36, 0.44445, 0],\n \"8896\": [0.55001, 1.05, 0, 0],\n \"8897\": [0.55001, 1.05, 0, 0],\n \"8898\": [0.55001, 1.05, 0, 0],\n \"8899\": [0.55001, 1.05, 0, 0],\n \"8968\": [0.65002, 1.15, 0, 0],\n \"8969\": [0.65002, 1.15, 0, 0],\n \"8970\": [0.65002, 1.15, 0, 0],\n \"8971\": [0.65002, 1.15, 0, 0],\n \"10216\": [0.65002, 1.15, 0, 0],\n \"10217\": [0.65002, 1.15, 0, 0],\n \"10752\": [0.55001, 1.05, 0, 0],\n \"10753\": [0.55001, 1.05, 0, 0],\n \"10754\": [0.55001, 1.05, 0, 0],\n \"10756\": [0.55001, 1.05, 0, 0],\n \"10758\": [0.55001, 1.05, 0, 0],\n },\n \"Size3-Regular\": {\n \"40\": [0.95003, 1.45, 0, 0],\n \"41\": [0.95003, 1.45, 0, 0],\n \"47\": [0.95003, 1.45, 0, 0],\n \"91\": [0.95003, 1.45, 0, 0],\n \"92\": [0.95003, 1.45, 0, 0],\n \"93\": [0.95003, 1.45, 0, 0],\n \"123\": [0.95003, 1.45, 0, 0],\n \"125\": [0.95003, 1.45, 0, 0],\n \"710\": [0, 0.75, 0, 0],\n \"732\": [0, 0.75, 0, 0],\n \"770\": [0, 0.75, 0, 0],\n \"771\": [0, 0.75, 0, 0],\n \"8730\": [0.95003, 1.45, 0, 0],\n \"8968\": [0.95003, 1.45, 0, 0],\n \"8969\": [0.95003, 1.45, 0, 0],\n \"8970\": [0.95003, 1.45, 0, 0],\n \"8971\": [0.95003, 1.45, 0, 0],\n \"10216\": [0.95003, 1.45, 0, 0],\n \"10217\": [0.95003, 1.45, 0, 0],\n },\n \"Size4-Regular\": {\n \"40\": [1.25003, 1.75, 0, 0],\n \"41\": [1.25003, 1.75, 0, 0],\n \"47\": [1.25003, 1.75, 0, 0],\n \"91\": [1.25003, 1.75, 0, 0],\n \"92\": [1.25003, 1.75, 0, 0],\n \"93\": [1.25003, 1.75, 0, 0],\n \"123\": [1.25003, 1.75, 0, 0],\n \"125\": [1.25003, 1.75, 0, 0],\n \"710\": [0, 0.825, 0, 0],\n \"732\": [0, 0.825, 0, 0],\n \"770\": [0, 0.825, 0, 0],\n \"771\": [0, 0.825, 0, 0],\n \"8730\": [1.25003, 1.75, 0, 0],\n \"8968\": [1.25003, 1.75, 0, 0],\n \"8969\": [1.25003, 1.75, 0, 0],\n \"8970\": [1.25003, 1.75, 0, 0],\n \"8971\": [1.25003, 1.75, 0, 0],\n \"9115\": [0.64502, 1.155, 0, 0],\n \"9116\": [1e-05, 0.6, 0, 0],\n \"9117\": [0.64502, 1.155, 0, 0],\n \"9118\": [0.64502, 1.155, 0, 0],\n \"9119\": [1e-05, 0.6, 0, 0],\n \"9120\": [0.64502, 1.155, 0, 0],\n \"9121\": [0.64502, 1.155, 0, 0],\n \"9122\": [-0.00099, 0.601, 0, 0],\n \"9123\": [0.64502, 1.155, 0, 0],\n \"9124\": [0.64502, 1.155, 0, 0],\n \"9125\": [-0.00099, 0.601, 0, 0],\n \"9126\": [0.64502, 1.155, 0, 0],\n \"9127\": [1e-05, 0.9, 0, 0],\n \"9128\": [0.65002, 1.15, 0, 0],\n \"9129\": [0.90001, 0, 0, 0],\n \"9130\": [0, 0.3, 0, 0],\n \"9131\": [1e-05, 0.9, 0, 0],\n \"9132\": [0.65002, 1.15, 0, 0],\n \"9133\": [0.90001, 0, 0, 0],\n \"9143\": [0.88502, 0.915, 0, 0],\n \"10216\": [1.25003, 1.75, 0, 0],\n \"10217\": [1.25003, 1.75, 0, 0],\n \"57344\": [-0.00499, 0.605, 0, 0],\n \"57345\": [-0.00499, 0.605, 0, 0],\n \"57680\": [0, 0.12, 0, 0],\n \"57681\": [0, 0.12, 0, 0],\n \"57682\": [0, 0.12, 0, 0],\n \"57683\": [0, 0.12, 0, 0],\n },\n \"Typewriter-Regular\": {\n \"33\": [0, 0.61111, 0, 0],\n \"34\": [0, 0.61111, 0, 0],\n \"35\": [0, 0.61111, 0, 0],\n \"36\": [0.08333, 0.69444, 0, 0],\n \"37\": [0.08333, 0.69444, 0, 0],\n \"38\": [0, 0.61111, 0, 0],\n \"39\": [0, 0.61111, 0, 0],\n \"40\": [0.08333, 0.69444, 0, 0],\n \"41\": [0.08333, 0.69444, 0, 0],\n \"42\": [0, 0.52083, 0, 0],\n \"43\": [-0.08056, 0.53055, 0, 0],\n \"44\": [0.13889, 0.125, 0, 0],\n \"45\": [-0.08056, 0.53055, 0, 0],\n \"46\": [0, 0.125, 0, 0],\n \"47\": [0.08333, 0.69444, 0, 0],\n \"48\": [0, 0.61111, 0, 0],\n \"49\": [0, 0.61111, 0, 0],\n \"50\": [0, 0.61111, 0, 0],\n \"51\": [0, 0.61111, 0, 0],\n \"52\": [0, 0.61111, 0, 0],\n \"53\": [0, 0.61111, 0, 0],\n \"54\": [0, 0.61111, 0, 0],\n \"55\": [0, 0.61111, 0, 0],\n \"56\": [0, 0.61111, 0, 0],\n \"57\": [0, 0.61111, 0, 0],\n \"58\": [0, 0.43056, 0, 0],\n \"59\": [0.13889, 0.43056, 0, 0],\n \"60\": [-0.05556, 0.55556, 0, 0],\n \"61\": [-0.19549, 0.41562, 0, 0],\n \"62\": [-0.05556, 0.55556, 0, 0],\n \"63\": [0, 0.61111, 0, 0],\n \"64\": [0, 0.61111, 0, 0],\n \"65\": [0, 0.61111, 0, 0],\n \"66\": [0, 0.61111, 0, 0],\n \"67\": [0, 0.61111, 0, 0],\n \"68\": [0, 0.61111, 0, 0],\n \"69\": [0, 0.61111, 0, 0],\n \"70\": [0, 0.61111, 0, 0],\n \"71\": [0, 0.61111, 0, 0],\n \"72\": [0, 0.61111, 0, 0],\n \"73\": [0, 0.61111, 0, 0],\n \"74\": [0, 0.61111, 0, 0],\n \"75\": [0, 0.61111, 0, 0],\n \"76\": [0, 0.61111, 0, 0],\n \"77\": [0, 0.61111, 0, 0],\n \"78\": [0, 0.61111, 0, 0],\n \"79\": [0, 0.61111, 0, 0],\n \"80\": [0, 0.61111, 0, 0],\n \"81\": [0.13889, 0.61111, 0, 0],\n \"82\": [0, 0.61111, 0, 0],\n \"83\": [0, 0.61111, 0, 0],\n \"84\": [0, 0.61111, 0, 0],\n \"85\": [0, 0.61111, 0, 0],\n \"86\": [0, 0.61111, 0, 0],\n \"87\": [0, 0.61111, 0, 0],\n \"88\": [0, 0.61111, 0, 0],\n \"89\": [0, 0.61111, 0, 0],\n \"90\": [0, 0.61111, 0, 0],\n \"91\": [0.08333, 0.69444, 0, 0],\n \"92\": [0.08333, 0.69444, 0, 0],\n \"93\": [0.08333, 0.69444, 0, 0],\n \"94\": [0, 0.61111, 0, 0],\n \"95\": [0.09514, 0, 0, 0],\n \"96\": [0, 0.61111, 0, 0],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.61111, 0, 0],\n \"99\": [0, 0.43056, 0, 0],\n \"100\": [0, 0.61111, 0, 0],\n \"101\": [0, 0.43056, 0, 0],\n \"102\": [0, 0.61111, 0, 0],\n \"103\": [0.22222, 0.43056, 0, 0],\n \"104\": [0, 0.61111, 0, 0],\n \"105\": [0, 0.61111, 0, 0],\n \"106\": [0.22222, 0.61111, 0, 0],\n \"107\": [0, 0.61111, 0, 0],\n \"108\": [0, 0.61111, 0, 0],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0],\n \"112\": [0.22222, 0.43056, 0, 0],\n \"113\": [0.22222, 0.43056, 0, 0],\n \"114\": [0, 0.43056, 0, 0],\n \"115\": [0, 0.43056, 0, 0],\n \"116\": [0, 0.55358, 0, 0],\n \"117\": [0, 0.43056, 0, 0],\n \"118\": [0, 0.43056, 0, 0],\n \"119\": [0, 0.43056, 0, 0],\n \"120\": [0, 0.43056, 0, 0],\n \"121\": [0.22222, 0.43056, 0, 0],\n \"122\": [0, 0.43056, 0, 0],\n \"123\": [0.08333, 0.69444, 0, 0],\n \"124\": [0.08333, 0.69444, 0, 0],\n \"125\": [0.08333, 0.69444, 0, 0],\n \"126\": [0, 0.61111, 0, 0],\n \"127\": [0, 0.61111, 0, 0],\n \"305\": [0, 0.43056, 0, 0],\n \"567\": [0.22222, 0.43056, 0, 0],\n \"768\": [0, 0.61111, 0, 0],\n \"769\": [0, 0.61111, 0, 0],\n \"770\": [0, 0.61111, 0, 0],\n \"771\": [0, 0.61111, 0, 0],\n \"772\": [0, 0.56555, 0, 0],\n \"774\": [0, 0.61111, 0, 0],\n \"776\": [0, 0.61111, 0, 0],\n \"778\": [0, 0.61111, 0, 0],\n \"780\": [0, 0.56597, 0, 0],\n \"915\": [0, 0.61111, 0, 0],\n \"916\": [0, 0.61111, 0, 0],\n \"920\": [0, 0.61111, 0, 0],\n \"923\": [0, 0.61111, 0, 0],\n \"926\": [0, 0.61111, 0, 0],\n \"928\": [0, 0.61111, 0, 0],\n \"931\": [0, 0.61111, 0, 0],\n \"933\": [0, 0.61111, 0, 0],\n \"934\": [0, 0.61111, 0, 0],\n \"936\": [0, 0.61111, 0, 0],\n \"937\": [0, 0.61111, 0, 0],\n \"2018\": [0, 0.61111, 0, 0],\n \"2019\": [0, 0.61111, 0, 0],\n \"8242\": [0, 0.61111, 0, 0],\n },\n};\n","var utils = require(\"./utils\");\nvar ParseError = require(\"./ParseError\");\n\n/* This file contains a list of functions that we parse, identified by\n * the calls to defineFunction.\n *\n * The first argument to defineFunction is a single name or a list of names.\n * All functions named in such a list will share a single implementation.\n *\n * Each declared function can have associated properties, which\n * include the following:\n *\n * - numArgs: The number of arguments the function takes.\n * If this is the only property, it can be passed as a number\n * instead of an element of a properties object.\n * - argTypes: (optional) An array corresponding to each argument of the\n * function, giving the type of argument that should be parsed. Its\n * length should be equal to `numArgs + numOptionalArgs`. Valid\n * types:\n * - \"size\": A size-like thing, such as \"1em\" or \"5ex\"\n * - \"color\": An html color, like \"#abc\" or \"blue\"\n * - \"original\": The same type as the environment that the\n * function being parsed is in (e.g. used for the\n * bodies of functions like \\color where the first\n * argument is special and the second argument is\n * parsed normally)\n * Other possible types (probably shouldn't be used)\n * - \"text\": Text-like (e.g. \\text)\n * - \"math\": Normal math\n * If undefined, this will be treated as an appropriate length\n * array of \"original\" strings\n * - greediness: (optional) The greediness of the function to use ungrouped\n * arguments.\n *\n * E.g. if you have an expression\n * \\sqrt \\frac 1 2\n * since \\frac has greediness=2 vs \\sqrt's greediness=1, \\frac\n * will use the two arguments '1' and '2' as its two arguments,\n * then that whole function will be used as the argument to\n * \\sqrt. On the other hand, the expressions\n * \\frac \\frac 1 2 3\n * and\n * \\frac \\sqrt 1 2\n * will fail because \\frac and \\frac have equal greediness\n * and \\sqrt has a lower greediness than \\frac respectively. To\n * make these parse, we would have to change them to:\n * \\frac {\\frac 1 2} 3\n * and\n * \\frac {\\sqrt 1} 2\n *\n * The default value is `1`\n * - allowedInText: (optional) Whether or not the function is allowed inside\n * text mode (default false)\n * - numOptionalArgs: (optional) The number of optional arguments the function\n * should parse. If the optional arguments aren't found,\n * `null` will be passed to the handler in their place.\n * (default 0)\n *\n * The last argument is that implementation, the handler for the function(s).\n * It is called to handle these functions and their arguments.\n * It receives two arguments:\n * - context contains information and references provided by the parser\n * - args is an array of arguments obtained from TeX input\n * The context contains the following properties:\n * - funcName: the text (i.e. name) of the function, including \\\n * - parser: the parser object\n * - lexer: the lexer object\n * - positions: the positions in the overall string of the function\n * and the arguments.\n * The latter three should only be used to produce error messages.\n *\n * The function should return an object with the following keys:\n * - type: The type of element that this is. This is then used in\n * buildHTML/buildMathML to determine which function\n * should be called to build this node into a DOM node\n * Any other data can be added to the object, which will be passed\n * in to the function in buildHTML/buildMathML as `group.value`.\n */\n\nfunction defineFunction(names, props, handler) {\n if (typeof names === \"string\") {\n names = [names];\n }\n if (typeof props === \"number\") {\n props = { numArgs: props };\n }\n // Set default values of functions\n var data = {\n numArgs: props.numArgs,\n argTypes: props.argTypes,\n greediness: (props.greediness === undefined) ? 1 : props.greediness,\n allowedInText: !!props.allowedInText,\n numOptionalArgs: props.numOptionalArgs || 0,\n handler: handler,\n };\n for (var i = 0; i < names.length; ++i) {\n module.exports[names[i]] = data;\n }\n}\n\n// A normal square root\ndefineFunction(\"\\\\sqrt\", {\n numArgs: 1,\n numOptionalArgs: 1,\n}, function(context, args) {\n var index = args[0];\n var body = args[1];\n return {\n type: \"sqrt\",\n body: body,\n index: index,\n };\n});\n\n// Some non-mathy text\ndefineFunction(\"\\\\text\", {\n numArgs: 1,\n argTypes: [\"text\"],\n greediness: 2,\n}, function(context, args) {\n var body = args[0];\n // Since the corresponding buildHTML/buildMathML function expects a\n // list of elements, we normalize for different kinds of arguments\n // TODO(emily): maybe this should be done somewhere else\n var inner;\n if (body.type === \"ordgroup\") {\n inner = body.value;\n } else {\n inner = [body];\n }\n\n return {\n type: \"text\",\n body: inner,\n };\n});\n\n// A two-argument custom color\ndefineFunction(\"\\\\color\", {\n numArgs: 2,\n allowedInText: true,\n greediness: 3,\n argTypes: [\"color\", \"original\"],\n}, function(context, args) {\n var color = args[0];\n var body = args[1];\n // Normalize the different kinds of bodies (see \\text above)\n var inner;\n if (body.type === \"ordgroup\") {\n inner = body.value;\n } else {\n inner = [body];\n }\n\n return {\n type: \"color\",\n color: color.value,\n value: inner,\n };\n});\n\n// An overline\ndefineFunction(\"\\\\overline\", {\n numArgs: 1,\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"overline\",\n body: body,\n };\n});\n\n// An underline\ndefineFunction(\"\\\\underline\", {\n numArgs: 1,\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"underline\",\n body: body,\n };\n});\n\n// A box of the width and height\ndefineFunction(\"\\\\rule\", {\n numArgs: 2,\n numOptionalArgs: 1,\n argTypes: [\"size\", \"size\", \"size\"],\n}, function(context, args) {\n var shift = args[0];\n var width = args[1];\n var height = args[2];\n return {\n type: \"rule\",\n shift: shift && shift.value,\n width: width.value,\n height: height.value,\n };\n});\n\n// A KaTeX logo\ndefineFunction(\"\\\\KaTeX\", {\n numArgs: 0,\n}, function(context) {\n return {\n type: \"katex\",\n };\n});\n\ndefineFunction(\"\\\\phantom\", {\n numArgs: 1,\n}, function(context, args) {\n var body = args[0];\n var inner;\n if (body.type === \"ordgroup\") {\n inner = body.value;\n } else {\n inner = [body];\n }\n\n return {\n type: \"phantom\",\n value: inner,\n };\n});\n\n// Extra data needed for the delimiter handler down below\nvar delimiterSizes = {\n \"\\\\bigl\" : {type: \"open\", size: 1},\n \"\\\\Bigl\" : {type: \"open\", size: 2},\n \"\\\\biggl\": {type: \"open\", size: 3},\n \"\\\\Biggl\": {type: \"open\", size: 4},\n \"\\\\bigr\" : {type: \"close\", size: 1},\n \"\\\\Bigr\" : {type: \"close\", size: 2},\n \"\\\\biggr\": {type: \"close\", size: 3},\n \"\\\\Biggr\": {type: \"close\", size: 4},\n \"\\\\bigm\" : {type: \"rel\", size: 1},\n \"\\\\Bigm\" : {type: \"rel\", size: 2},\n \"\\\\biggm\": {type: \"rel\", size: 3},\n \"\\\\Biggm\": {type: \"rel\", size: 4},\n \"\\\\big\" : {type: \"textord\", size: 1},\n \"\\\\Big\" : {type: \"textord\", size: 2},\n \"\\\\bigg\" : {type: \"textord\", size: 3},\n \"\\\\Bigg\" : {type: \"textord\", size: 4},\n};\n\nvar delimiters = [\n \"(\", \")\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\",\n \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\",\n \"\\\\lfloor\", \"\\\\rfloor\", \"\\\\lceil\", \"\\\\rceil\",\n \"<\", \">\", \"\\\\langle\", \"\\\\rangle\", \"\\\\lt\", \"\\\\gt\",\n \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\",\n \"\\\\lgroup\", \"\\\\rgroup\", \"\\\\lmoustache\", \"\\\\rmoustache\",\n \"/\", \"\\\\backslash\",\n \"|\", \"\\\\vert\", \"\\\\|\", \"\\\\Vert\",\n \"\\\\uparrow\", \"\\\\Uparrow\",\n \"\\\\downarrow\", \"\\\\Downarrow\",\n \"\\\\updownarrow\", \"\\\\Updownarrow\",\n \".\",\n];\n\nvar fontAliases = {\n \"\\\\Bbb\": \"\\\\mathbb\",\n \"\\\\bold\": \"\\\\mathbf\",\n \"\\\\frak\": \"\\\\mathfrak\",\n};\n\n// Single-argument color functions\ndefineFunction([\n \"\\\\blue\", \"\\\\orange\", \"\\\\pink\", \"\\\\red\",\n \"\\\\green\", \"\\\\gray\", \"\\\\purple\",\n \"\\\\blueA\", \"\\\\blueB\", \"\\\\blueC\", \"\\\\blueD\", \"\\\\blueE\",\n \"\\\\tealA\", \"\\\\tealB\", \"\\\\tealC\", \"\\\\tealD\", \"\\\\tealE\",\n \"\\\\greenA\", \"\\\\greenB\", \"\\\\greenC\", \"\\\\greenD\", \"\\\\greenE\",\n \"\\\\goldA\", \"\\\\goldB\", \"\\\\goldC\", \"\\\\goldD\", \"\\\\goldE\",\n \"\\\\redA\", \"\\\\redB\", \"\\\\redC\", \"\\\\redD\", \"\\\\redE\",\n \"\\\\maroonA\", \"\\\\maroonB\", \"\\\\maroonC\", \"\\\\maroonD\", \"\\\\maroonE\",\n \"\\\\purpleA\", \"\\\\purpleB\", \"\\\\purpleC\", \"\\\\purpleD\", \"\\\\purpleE\",\n \"\\\\mintA\", \"\\\\mintB\", \"\\\\mintC\",\n \"\\\\grayA\", \"\\\\grayB\", \"\\\\grayC\", \"\\\\grayD\", \"\\\\grayE\",\n \"\\\\grayF\", \"\\\\grayG\", \"\\\\grayH\", \"\\\\grayI\",\n \"\\\\kaBlue\", \"\\\\kaGreen\",\n], {\n numArgs: 1,\n allowedInText: true,\n greediness: 3,\n}, function(context, args) {\n var body = args[0];\n var atoms;\n if (body.type === \"ordgroup\") {\n atoms = body.value;\n } else {\n atoms = [body];\n }\n\n return {\n type: \"color\",\n color: \"katex-\" + context.funcName.slice(1),\n value: atoms,\n };\n});\n\n// There are 2 flags for operators; whether they produce limits in\n// displaystyle, and whether they are symbols and should grow in\n// displaystyle. These four groups cover the four possible choices.\n\n// No limits, not symbols\ndefineFunction([\n \"\\\\arcsin\", \"\\\\arccos\", \"\\\\arctan\", \"\\\\arg\", \"\\\\cos\", \"\\\\cosh\",\n \"\\\\cot\", \"\\\\coth\", \"\\\\csc\", \"\\\\deg\", \"\\\\dim\", \"\\\\exp\", \"\\\\hom\",\n \"\\\\ker\", \"\\\\lg\", \"\\\\ln\", \"\\\\log\", \"\\\\sec\", \"\\\\sin\", \"\\\\sinh\",\n \"\\\\tan\", \"\\\\tanh\",\n], {\n numArgs: 0,\n}, function(context) {\n return {\n type: \"op\",\n limits: false,\n symbol: false,\n body: context.funcName,\n };\n});\n\n// Limits, not symbols\ndefineFunction([\n \"\\\\det\", \"\\\\gcd\", \"\\\\inf\", \"\\\\lim\", \"\\\\liminf\", \"\\\\limsup\", \"\\\\max\",\n \"\\\\min\", \"\\\\Pr\", \"\\\\sup\",\n], {\n numArgs: 0,\n}, function(context) {\n return {\n type: \"op\",\n limits: true,\n symbol: false,\n body: context.funcName,\n };\n});\n\n// No limits, symbols\ndefineFunction([\n \"\\\\int\", \"\\\\iint\", \"\\\\iiint\", \"\\\\oint\",\n], {\n numArgs: 0,\n}, function(context) {\n return {\n type: \"op\",\n limits: false,\n symbol: true,\n body: context.funcName,\n };\n});\n\n// Limits, symbols\ndefineFunction([\n \"\\\\coprod\", \"\\\\bigvee\", \"\\\\bigwedge\", \"\\\\biguplus\", \"\\\\bigcap\",\n \"\\\\bigcup\", \"\\\\intop\", \"\\\\prod\", \"\\\\sum\", \"\\\\bigotimes\",\n \"\\\\bigoplus\", \"\\\\bigodot\", \"\\\\bigsqcup\", \"\\\\smallint\",\n], {\n numArgs: 0,\n}, function(context) {\n return {\n type: \"op\",\n limits: true,\n symbol: true,\n body: context.funcName,\n };\n});\n\n// Fractions\ndefineFunction([\n \"\\\\dfrac\", \"\\\\frac\", \"\\\\tfrac\",\n \"\\\\dbinom\", \"\\\\binom\", \"\\\\tbinom\",\n], {\n numArgs: 2,\n greediness: 2,\n}, function(context, args) {\n var numer = args[0];\n var denom = args[1];\n var hasBarLine;\n var leftDelim = null;\n var rightDelim = null;\n var size = \"auto\";\n\n switch (context.funcName) {\n case \"\\\\dfrac\":\n case \"\\\\frac\":\n case \"\\\\tfrac\":\n hasBarLine = true;\n break;\n case \"\\\\dbinom\":\n case \"\\\\binom\":\n case \"\\\\tbinom\":\n hasBarLine = false;\n leftDelim = \"(\";\n rightDelim = \")\";\n break;\n default:\n throw new Error(\"Unrecognized genfrac command\");\n }\n\n switch (context.funcName) {\n case \"\\\\dfrac\":\n case \"\\\\dbinom\":\n size = \"display\";\n break;\n case \"\\\\tfrac\":\n case \"\\\\tbinom\":\n size = \"text\";\n break;\n }\n\n return {\n type: \"genfrac\",\n numer: numer,\n denom: denom,\n hasBarLine: hasBarLine,\n leftDelim: leftDelim,\n rightDelim: rightDelim,\n size: size,\n };\n});\n\n// Left and right overlap functions\ndefineFunction([\"\\\\llap\", \"\\\\rlap\"], {\n numArgs: 1,\n allowedInText: true,\n}, function(context, args) {\n var body = args[0];\n return {\n type: context.funcName.slice(1),\n body: body,\n };\n});\n\n// Delimiter functions\ndefineFunction([\n \"\\\\bigl\", \"\\\\Bigl\", \"\\\\biggl\", \"\\\\Biggl\",\n \"\\\\bigr\", \"\\\\Bigr\", \"\\\\biggr\", \"\\\\Biggr\",\n \"\\\\bigm\", \"\\\\Bigm\", \"\\\\biggm\", \"\\\\Biggm\",\n \"\\\\big\", \"\\\\Big\", \"\\\\bigg\", \"\\\\Bigg\",\n \"\\\\left\", \"\\\\right\",\n], {\n numArgs: 1,\n}, function(context, args) {\n var delim = args[0];\n if (!utils.contains(delimiters, delim.value)) {\n throw new ParseError(\n \"Invalid delimiter: '\" + delim.value + \"' after '\" +\n context.funcName + \"'\",\n context.lexer, context.positions[1]);\n }\n\n // \\left and \\right are caught somewhere in Parser.js, which is\n // why this data doesn't match what is in buildHTML.\n if (context.funcName === \"\\\\left\" || context.funcName === \"\\\\right\") {\n return {\n type: \"leftright\",\n value: delim.value,\n };\n } else {\n return {\n type: \"delimsizing\",\n size: delimiterSizes[context.funcName].size,\n delimType: delimiterSizes[context.funcName].type,\n value: delim.value,\n };\n }\n});\n\n// Sizing functions (handled in Parser.js explicitly, hence no handler)\ndefineFunction([\n \"\\\\tiny\", \"\\\\scriptsize\", \"\\\\footnotesize\", \"\\\\small\",\n \"\\\\normalsize\", \"\\\\large\", \"\\\\Large\", \"\\\\LARGE\", \"\\\\huge\", \"\\\\Huge\",\n], 0, null);\n\n// Style changing functions (handled in Parser.js explicitly, hence no\n// handler)\ndefineFunction([\n \"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\",\n \"\\\\scriptscriptstyle\",\n], 0, null);\n\ndefineFunction([\n // styles\n \"\\\\mathrm\", \"\\\\mathit\", \"\\\\mathbf\",\n\n // families\n \"\\\\mathbb\", \"\\\\mathcal\", \"\\\\mathfrak\", \"\\\\mathscr\", \"\\\\mathsf\",\n \"\\\\mathtt\",\n\n // aliases\n \"\\\\Bbb\", \"\\\\bold\", \"\\\\frak\",\n], {\n numArgs: 1,\n greediness: 2,\n}, function(context, args) {\n var body = args[0];\n var func = context.funcName;\n if (func in fontAliases) {\n func = fontAliases[func];\n }\n return {\n type: \"font\",\n font: func.slice(1),\n body: body,\n };\n});\n\n// Accents\ndefineFunction([\n \"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\",\n \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\",\n // We don't support expanding accents yet\n // \"\\\\widetilde\", \"\\\\widehat\"\n], {\n numArgs: 1,\n}, function(context, args) {\n var base = args[0];\n return {\n type: \"accent\",\n accent: context.funcName,\n base: base,\n };\n});\n\n// Infix generalized fractions\ndefineFunction([\"\\\\over\", \"\\\\choose\"], {\n numArgs: 0,\n}, function(context) {\n var replaceWith;\n switch (context.funcName) {\n case \"\\\\over\":\n replaceWith = \"\\\\frac\";\n break;\n case \"\\\\choose\":\n replaceWith = \"\\\\binom\";\n break;\n default:\n throw new Error(\"Unrecognized infix genfrac command\");\n }\n return {\n type: \"infix\",\n replaceWith: replaceWith,\n };\n});\n\n// Row breaks for aligned data\ndefineFunction([\"\\\\\\\\\", \"\\\\cr\"], {\n numArgs: 0,\n numOptionalArgs: 1,\n argTypes: [\"size\"],\n}, function(context, args) {\n var size = args[0];\n return {\n type: \"cr\",\n size: size,\n };\n});\n\n// Environment delimiters\ndefineFunction([\"\\\\begin\", \"\\\\end\"], {\n numArgs: 1,\n argTypes: [\"text\"],\n}, function(context, args) {\n var nameGroup = args[0];\n if (nameGroup.type !== \"ordgroup\") {\n throw new ParseError(\n \"Invalid environment name\",\n context.lexer, context.positions[1]);\n }\n var name = \"\";\n for (var i = 0; i < nameGroup.value.length; ++i) {\n name += nameGroup.value[i].value;\n }\n return {\n type: \"environment\",\n name: name,\n namepos: context.positions[1],\n };\n});\n","/* eslint no-constant-condition:0 */\nvar fontMetrics = require(\"./fontMetrics\");\nvar parseData = require(\"./parseData\");\nvar ParseError = require(\"./ParseError\");\n\nvar ParseNode = parseData.ParseNode;\n\n/**\n * Parse the body of the environment, with rows delimited by \\\\ and\n * columns delimited by &, and create a nested list in row-major order\n * with one group per cell.\n */\nfunction parseArray(parser, result) {\n var row = [];\n var body = [row];\n var rowGaps = [];\n while (true) {\n var cell = parser.parseExpression(false, null);\n row.push(new ParseNode(\"ordgroup\", cell, parser.mode));\n var next = parser.nextToken.text;\n if (next === \"&\") {\n parser.consume();\n } else if (next === \"\\\\end\") {\n break;\n } else if (next === \"\\\\\\\\\" || next === \"\\\\cr\") {\n var cr = parser.parseFunction();\n rowGaps.push(cr.value.size);\n row = [];\n body.push(row);\n } else {\n // TODO: Clean up the following hack once #385 got merged\n var pos = Math.min(parser.pos + 1, parser.lexer._input.length);\n throw new ParseError(\"Expected & or \\\\\\\\ or \\\\end\",\n parser.lexer, pos);\n }\n }\n result.body = body;\n result.rowGaps = rowGaps;\n return new ParseNode(result.type, result, parser.mode);\n}\n\n/*\n * An environment definition is very similar to a function definition:\n * it is declared with a name or a list of names, a set of properties\n * and a handler containing the actual implementation.\n *\n * The properties include:\n * - numArgs: The number of arguments after the \\begin{name} function.\n * - argTypes: (optional) Just like for a function\n * - allowedInText: (optional) Whether or not the environment is allowed inside\n * text mode (default false) (not enforced yet)\n * - numOptionalArgs: (optional) Just like for a function\n * A bare number instead of that object indicates the numArgs value.\n *\n * The handler function will receive two arguments\n * - context: information and references provided by the parser\n * - args: an array of arguments passed to \\begin{name}\n * The context contains the following properties:\n * - envName: the name of the environment, one of the listed names.\n * - parser: the parser object\n * - lexer: the lexer object\n * - positions: the positions associated with these arguments from args.\n * The handler must return a ParseResult.\n */\n\nfunction defineEnvironment(names, props, handler) {\n if (typeof names === \"string\") {\n names = [names];\n }\n if (typeof props === \"number\") {\n props = { numArgs: props };\n }\n // Set default values of environments\n var data = {\n numArgs: props.numArgs || 0,\n argTypes: props.argTypes,\n greediness: 1,\n allowedInText: !!props.allowedInText,\n numOptionalArgs: props.numOptionalArgs || 0,\n handler: handler,\n };\n for (var i = 0; i < names.length; ++i) {\n module.exports[names[i]] = data;\n }\n}\n\n// Arrays are part of LaTeX, defined in lttab.dtx so its documentation\n// is part of the source2e.pdf file of LaTeX2e source documentation.\ndefineEnvironment(\"array\", {\n numArgs: 1,\n}, function(context, args) {\n var colalign = args[0];\n colalign = colalign.value.map ? colalign.value : [colalign];\n var cols = colalign.map(function(node) {\n var ca = node.value;\n if (\"lcr\".indexOf(ca) !== -1) {\n return {\n type: \"align\",\n align: ca,\n };\n } else if (ca === \"|\") {\n return {\n type: \"separator\",\n separator: \"|\",\n };\n }\n throw new ParseError(\n \"Unknown column alignment: \" + node.value,\n context.lexer, context.positions[1]);\n });\n var res = {\n type: \"array\",\n cols: cols,\n hskipBeforeAndAfter: true, // \\@preamble in lttab.dtx\n };\n res = parseArray(context.parser, res);\n return res;\n});\n\n// The matrix environments of amsmath builds on the array environment\n// of LaTeX, which is discussed above.\ndefineEnvironment([\n \"matrix\",\n \"pmatrix\",\n \"bmatrix\",\n \"Bmatrix\",\n \"vmatrix\",\n \"Vmatrix\",\n], {\n}, function(context) {\n var delimiters = {\n \"matrix\": null,\n \"pmatrix\": [\"(\", \")\"],\n \"bmatrix\": [\"[\", \"]\"],\n \"Bmatrix\": [\"\\\\{\", \"\\\\}\"],\n \"vmatrix\": [\"|\", \"|\"],\n \"Vmatrix\": [\"\\\\Vert\", \"\\\\Vert\"],\n }[context.envName];\n var res = {\n type: \"array\",\n hskipBeforeAndAfter: false, // \\hskip -\\arraycolsep in amsmath\n };\n res = parseArray(context.parser, res);\n if (delimiters) {\n res = new ParseNode(\"leftright\", {\n body: [res],\n left: delimiters[0],\n right: delimiters[1],\n }, context.mode);\n }\n return res;\n});\n\n// A cases environment (in amsmath.sty) is almost equivalent to\n// \\def\\arraystretch{1.2}%\n// \\left\\{\\begin{array}{@{}l@{\\quad}l@{}} … \\end{array}\\right.\ndefineEnvironment(\"cases\", {\n}, function(context) {\n var res = {\n type: \"array\",\n arraystretch: 1.2,\n cols: [{\n type: \"align\",\n align: \"l\",\n pregap: 0,\n postgap: fontMetrics.metrics.quad,\n }, {\n type: \"align\",\n align: \"l\",\n pregap: 0,\n postgap: 0,\n }],\n };\n res = parseArray(context.parser, res);\n res = new ParseNode(\"leftright\", {\n body: [res],\n left: \"\\\\{\",\n right: \".\",\n }, context.mode);\n return res;\n});\n\n// An aligned environment is like the align* environment\n// except it operates within math mode.\n// Note that we assume \\nomallineskiplimit to be zero,\n// so that \\strut@ is the same as \\strut.\ndefineEnvironment(\"aligned\", {\n}, function(context) {\n var res = {\n type: \"array\",\n cols: [],\n };\n res = parseArray(context.parser, res);\n var emptyGroup = new ParseNode(\"ordgroup\", [], context.mode);\n var numCols = 0;\n res.value.body.forEach(function(row) {\n var i;\n for (i = 1; i < row.length; i += 2) {\n row[i].value.unshift(emptyGroup);\n }\n if (numCols < row.length) {\n numCols = row.length;\n }\n });\n for (var i = 0; i < numCols; ++i) {\n var align = \"r\";\n var pregap = 0;\n if (i % 2 === 1) {\n align = \"l\";\n } else if (i > 0) {\n pregap = 2; // one \\qquad between columns\n }\n res.value.cols[i] = {\n type: \"align\",\n align: align,\n pregap: pregap,\n postgap: 0,\n };\n }\n return res;\n});\n","/**\n * This file contains a list of utility functions which are useful in other\n * files.\n */\n\n/**\n * Provide an `indexOf` function which works in IE8, but defers to native if\n * possible.\n */\nvar nativeIndexOf = Array.prototype.indexOf;\nvar indexOf = function(list, elem) {\n if (list == null) {\n return -1;\n }\n if (nativeIndexOf && list.indexOf === nativeIndexOf) {\n return list.indexOf(elem);\n }\n var i = 0;\n var l = list.length;\n for (; i < l; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Return whether an element is contained in a list\n */\nvar contains = function(list, elem) {\n return indexOf(list, elem) !== -1;\n};\n\n/**\n * Provide a default value if a setting is undefined\n */\nvar deflt = function(setting, defaultIfUndefined) {\n return setting === undefined ? defaultIfUndefined : setting;\n};\n\n// hyphenate and escape adapted from Facebook's React under Apache 2 license\n\nvar uppercase = /([A-Z])/g;\nvar hyphenate = function(str) {\n return str.replace(uppercase, \"-$1\").toLowerCase();\n};\n\nvar ESCAPE_LOOKUP = {\n \"&\": \"&\",\n \">\": \">\",\n \"<\": \"<\",\n \"\\\"\": \""\",\n \"'\": \"'\",\n};\n\nvar ESCAPE_REGEX = /[&><\"']/g;\n\nfunction escaper(match) {\n return ESCAPE_LOOKUP[match];\n}\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escape(text) {\n return (\"\" + text).replace(ESCAPE_REGEX, escaper);\n}\n\n/**\n * A function to set the text content of a DOM element in all supported\n * browsers. Note that we don't define this if there is no document.\n */\nvar setTextContent;\nif (typeof document !== \"undefined\") {\n var testNode = document.createElement(\"span\");\n if (\"textContent\" in testNode) {\n setTextContent = function(node, text) {\n node.textContent = text;\n };\n } else {\n setTextContent = function(node, text) {\n node.innerText = text;\n };\n }\n}\n\n/**\n * A function to clear a node.\n */\nfunction clearNode(node) {\n setTextContent(node, \"\");\n}\n\nmodule.exports = {\n contains: contains,\n deflt: deflt,\n escape: escape,\n hyphenate: hyphenate,\n indexOf: indexOf,\n setTextContent: setTextContent,\n clearNode: clearNode,\n};\n","/* eslint no-console:0 */\n/**\n * This module contains general functions that can be used for building\n * different kinds of domTree nodes in a consistent manner.\n */\n\nvar domTree = require(\"./domTree\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar symbols = require(\"./symbols\");\nvar utils = require(\"./utils\");\n\nvar greekCapitals = [\n \"\\\\Gamma\",\n \"\\\\Delta\",\n \"\\\\Theta\",\n \"\\\\Lambda\",\n \"\\\\Xi\",\n \"\\\\Pi\",\n \"\\\\Sigma\",\n \"\\\\Upsilon\",\n \"\\\\Phi\",\n \"\\\\Psi\",\n \"\\\\Omega\",\n];\n\nvar dotlessLetters = [\n \"\\u0131\", // dotless i, \\imath\n \"\\u0237\", // dotless j, \\jmath\n];\n\n/**\n * Makes a symbolNode after translation via the list of symbols in symbols.js.\n * Correctly pulls out metrics for the character, and optionally takes a list of\n * classes to be attached to the node.\n */\nvar makeSymbol = function(value, style, mode, color, classes) {\n // Replace the value with its replaced value from symbol.js\n if (symbols[mode][value] && symbols[mode][value].replace) {\n value = symbols[mode][value].replace;\n }\n\n var metrics = fontMetrics.getCharacterMetrics(value, style);\n\n var symbolNode;\n if (metrics) {\n symbolNode = new domTree.symbolNode(\n value, metrics.height, metrics.depth, metrics.italic, metrics.skew,\n classes);\n } else {\n // TODO(emily): Figure out a good way to only print this in development\n typeof console !== \"undefined\" && console.warn(\n \"No character metrics for '\" + value + \"' in style '\" +\n style + \"'\");\n symbolNode = new domTree.symbolNode(value, 0, 0, 0, 0, classes);\n }\n\n if (color) {\n symbolNode.style.color = color;\n }\n\n return symbolNode;\n};\n\n/**\n * Makes a symbol in Main-Regular or AMS-Regular.\n * Used for rel, bin, open, close, inner, and punct.\n */\nvar mathsym = function(value, mode, color, classes) {\n // Decide what font to render the symbol in by its entry in the symbols\n // table.\n // Have a special case for when the value = \\ because the \\ is used as a\n // textord in unsupported command errors but cannot be parsed as a regular\n // text ordinal and is therefore not present as a symbol in the symbols\n // table for text\n if (value === \"\\\\\" || symbols[mode][value].font === \"main\") {\n return makeSymbol(value, \"Main-Regular\", mode, color, classes);\n } else {\n return makeSymbol(\n value, \"AMS-Regular\", mode, color, classes.concat([\"amsrm\"]));\n }\n};\n\n/**\n * Makes a symbol in the default font for mathords and textords.\n */\nvar mathDefault = function(value, mode, color, classes, type) {\n if (type === \"mathord\") {\n return mathit(value, mode, color, classes);\n } else if (type === \"textord\") {\n return makeSymbol(\n value, \"Main-Regular\", mode, color, classes.concat([\"mathrm\"]));\n } else {\n throw new Error(\"unexpected type: \" + type + \" in mathDefault\");\n }\n};\n\n/**\n * Makes a symbol in the italic math font.\n */\nvar mathit = function(value, mode, color, classes) {\n if (/[0-9]/.test(value.charAt(0)) ||\n // glyphs for \\imath and \\jmath do not exist in Math-Italic so we\n // need to use Main-Italic instead\n utils.contains(dotlessLetters, value) ||\n utils.contains(greekCapitals, value)) {\n return makeSymbol(\n value, \"Main-Italic\", mode, color, classes.concat([\"mainit\"]));\n } else {\n return makeSymbol(\n value, \"Math-Italic\", mode, color, classes.concat([\"mathit\"]));\n }\n};\n\n/**\n * Makes either a mathord or textord in the correct font and color.\n */\nvar makeOrd = function(group, options, type) {\n var mode = group.mode;\n var value = group.value;\n if (symbols[mode][value] && symbols[mode][value].replace) {\n value = symbols[mode][value].replace;\n }\n\n var classes = [\"mord\"];\n var color = options.getColor();\n\n var font = options.font;\n if (font) {\n if (font === \"mathit\" || utils.contains(dotlessLetters, value)) {\n return mathit(value, mode, color, classes);\n } else {\n var fontName = fontMap[font].fontName;\n if (fontMetrics.getCharacterMetrics(value, fontName)) {\n return makeSymbol(\n value, fontName, mode, color, classes.concat([font]));\n } else {\n return mathDefault(value, mode, color, classes, type);\n }\n }\n } else {\n return mathDefault(value, mode, color, classes, type);\n }\n};\n\n/**\n * Calculate the height, depth, and maxFontSize of an element based on its\n * children.\n */\nvar sizeElementFromChildren = function(elem) {\n var height = 0;\n var depth = 0;\n var maxFontSize = 0;\n\n if (elem.children) {\n for (var i = 0; i < elem.children.length; i++) {\n if (elem.children[i].height > height) {\n height = elem.children[i].height;\n }\n if (elem.children[i].depth > depth) {\n depth = elem.children[i].depth;\n }\n if (elem.children[i].maxFontSize > maxFontSize) {\n maxFontSize = elem.children[i].maxFontSize;\n }\n }\n }\n\n elem.height = height;\n elem.depth = depth;\n elem.maxFontSize = maxFontSize;\n};\n\n/**\n * Makes a span with the given list of classes, list of children, and color.\n */\nvar makeSpan = function(classes, children, color) {\n var span = new domTree.span(classes, children);\n\n sizeElementFromChildren(span);\n\n if (color) {\n span.style.color = color;\n }\n\n return span;\n};\n\n/**\n * Makes a document fragment with the given list of children.\n */\nvar makeFragment = function(children) {\n var fragment = new domTree.documentFragment(children);\n\n sizeElementFromChildren(fragment);\n\n return fragment;\n};\n\n/**\n * Makes an element placed in each of the vlist elements to ensure that each\n * element has the same max font size. To do this, we create a zero-width space\n * with the correct font size.\n */\nvar makeFontSizer = function(options, fontSize) {\n var fontSizeInner = makeSpan([], [new domTree.symbolNode(\"\\u200b\")]);\n fontSizeInner.style.fontSize =\n (fontSize / options.style.sizeMultiplier) + \"em\";\n\n var fontSizer = makeSpan(\n [\"fontsize-ensurer\", \"reset-\" + options.size, \"size5\"],\n [fontSizeInner]);\n\n return fontSizer;\n};\n\n/**\n * Makes a vertical list by stacking elements and kerns on top of each other.\n * Allows for many different ways of specifying the positioning method.\n *\n * Arguments:\n * - children: A list of child or kern nodes to be stacked on top of each other\n * (i.e. the first element will be at the bottom, and the last at\n * the top). Element nodes are specified as\n * {type: \"elem\", elem: node}\n * while kern nodes are specified as\n * {type: \"kern\", size: size}\n * - positionType: The method by which the vlist should be positioned. Valid\n * values are:\n * - \"individualShift\": The children list only contains elem\n * nodes, and each node contains an extra\n * \"shift\" value of how much it should be\n * shifted (note that shifting is always\n * moving downwards). positionData is\n * ignored.\n * - \"top\": The positionData specifies the topmost point of\n * the vlist (note this is expected to be a height,\n * so positive values move up)\n * - \"bottom\": The positionData specifies the bottommost point\n * of the vlist (note this is expected to be a\n * depth, so positive values move down\n * - \"shift\": The vlist will be positioned such that its\n * baseline is positionData away from the baseline\n * of the first child. Positive values move\n * downwards.\n * - \"firstBaseline\": The vlist will be positioned such that\n * its baseline is aligned with the\n * baseline of the first child.\n * positionData is ignored. (this is\n * equivalent to \"shift\" with\n * positionData=0)\n * - positionData: Data used in different ways depending on positionType\n * - options: An Options object\n *\n */\nvar makeVList = function(children, positionType, positionData, options) {\n var depth;\n var currPos;\n var i;\n if (positionType === \"individualShift\") {\n var oldChildren = children;\n children = [oldChildren[0]];\n\n // Add in kerns to the list of children to get each element to be\n // shifted to the correct specified shift\n depth = -oldChildren[0].shift - oldChildren[0].elem.depth;\n currPos = depth;\n for (i = 1; i < oldChildren.length; i++) {\n var diff = -oldChildren[i].shift - currPos -\n oldChildren[i].elem.depth;\n var size = diff -\n (oldChildren[i - 1].elem.height +\n oldChildren[i - 1].elem.depth);\n\n currPos = currPos + diff;\n\n children.push({type: \"kern\", size: size});\n children.push(oldChildren[i]);\n }\n } else if (positionType === \"top\") {\n // We always start at the bottom, so calculate the bottom by adding up\n // all the sizes\n var bottom = positionData;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"kern\") {\n bottom -= children[i].size;\n } else {\n bottom -= children[i].elem.height + children[i].elem.depth;\n }\n }\n depth = bottom;\n } else if (positionType === \"bottom\") {\n depth = -positionData;\n } else if (positionType === \"shift\") {\n depth = -children[0].elem.depth - positionData;\n } else if (positionType === \"firstBaseline\") {\n depth = -children[0].elem.depth;\n } else {\n depth = 0;\n }\n\n // Make the fontSizer\n var maxFontSize = 0;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"elem\") {\n maxFontSize = Math.max(maxFontSize, children[i].elem.maxFontSize);\n }\n }\n var fontSizer = makeFontSizer(options, maxFontSize);\n\n // Create a new list of actual children at the correct offsets\n var realChildren = [];\n currPos = depth;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"kern\") {\n currPos += children[i].size;\n } else {\n var child = children[i].elem;\n\n var shift = -child.depth - currPos;\n currPos += child.height + child.depth;\n\n var childWrap = makeSpan([], [fontSizer, child]);\n childWrap.height -= shift;\n childWrap.depth += shift;\n childWrap.style.top = shift + \"em\";\n\n realChildren.push(childWrap);\n }\n }\n\n // Add in an element at the end with no offset to fix the calculation of\n // baselines in some browsers (namely IE, sometimes safari)\n var baselineFix = makeSpan(\n [\"baseline-fix\"], [fontSizer, new domTree.symbolNode(\"\\u200b\")]);\n realChildren.push(baselineFix);\n\n var vlist = makeSpan([\"vlist\"], realChildren);\n // Fix the final height and depth, in case there were kerns at the ends\n // since the makeSpan calculation won't take that in to account.\n vlist.height = Math.max(currPos, vlist.height);\n vlist.depth = Math.max(-depth, vlist.depth);\n return vlist;\n};\n\n// A table of size -> font size for the different sizing functions\nvar sizingMultiplier = {\n size1: 0.5,\n size2: 0.7,\n size3: 0.8,\n size4: 0.9,\n size5: 1.0,\n size6: 1.2,\n size7: 1.44,\n size8: 1.73,\n size9: 2.07,\n size10: 2.49,\n};\n\n// A map of spacing functions to their attributes, like size and corresponding\n// CSS class\nvar spacingFunctions = {\n \"\\\\qquad\": {\n size: \"2em\",\n className: \"qquad\",\n },\n \"\\\\quad\": {\n size: \"1em\",\n className: \"quad\",\n },\n \"\\\\enspace\": {\n size: \"0.5em\",\n className: \"enspace\",\n },\n \"\\\\;\": {\n size: \"0.277778em\",\n className: \"thickspace\",\n },\n \"\\\\:\": {\n size: \"0.22222em\",\n className: \"mediumspace\",\n },\n \"\\\\,\": {\n size: \"0.16667em\",\n className: \"thinspace\",\n },\n \"\\\\!\": {\n size: \"-0.16667em\",\n className: \"negativethinspace\",\n },\n};\n\n/**\n * Maps TeX font commands to objects containing:\n * - variant: string used for \"mathvariant\" attribute in buildMathML.js\n * - fontName: the \"style\" parameter to fontMetrics.getCharacterMetrics\n */\n// A map between tex font commands an MathML mathvariant attribute values\nvar fontMap = {\n // styles\n \"mathbf\": {\n variant: \"bold\",\n fontName: \"Main-Bold\",\n },\n \"mathrm\": {\n variant: \"normal\",\n fontName: \"Main-Regular\",\n },\n\n // \"mathit\" is missing because it requires the use of two fonts: Main-Italic\n // and Math-Italic. This is handled by a special case in makeOrd which ends\n // up calling mathit.\n\n // families\n \"mathbb\": {\n variant: \"double-struck\",\n fontName: \"AMS-Regular\",\n },\n \"mathcal\": {\n variant: \"script\",\n fontName: \"Caligraphic-Regular\",\n },\n \"mathfrak\": {\n variant: \"fraktur\",\n fontName: \"Fraktur-Regular\",\n },\n \"mathscr\": {\n variant: \"script\",\n fontName: \"Script-Regular\",\n },\n \"mathsf\": {\n variant: \"sans-serif\",\n fontName: \"SansSerif-Regular\",\n },\n \"mathtt\": {\n variant: \"monospace\",\n fontName: \"Typewriter-Regular\",\n },\n};\n\nmodule.exports = {\n fontMap: fontMap,\n makeSymbol: makeSymbol,\n mathsym: mathsym,\n makeSpan: makeSpan,\n makeFragment: makeFragment,\n makeVList: makeVList,\n makeOrd: makeOrd,\n sizingMultiplier: sizingMultiplier,\n spacingFunctions: spacingFunctions,\n};\n","/**\n * The resulting parse tree nodes of the parse tree.\n */\nfunction ParseNode(type, value, mode) {\n this.type = type;\n this.value = value;\n this.mode = mode;\n}\n\nmodule.exports = {\n ParseNode: ParseNode,\n};\n\n","/* eslint no-unused-vars:0 */\n\nvar Style = require(\"./Style\");\n\n/**\n * This file contains metrics regarding fonts and individual symbols. The sigma\n * and xi variables, as well as the metricMap map contain data extracted from\n * TeX, TeX font metrics, and the TTF files. These data are then exposed via the\n * `metrics` variable and the getCharacterMetrics function.\n */\n\n// These font metrics are extracted from TeX by using\n// \\font\\a=cmmi10\n// \\showthe\\fontdimenX\\a\n// where X is the corresponding variable number. These correspond to the font\n// parameters of the symbol fonts. In TeX, there are actually three sets of\n// dimensions, one for each of textstyle, scriptstyle, and scriptscriptstyle,\n// but we only use the textstyle ones, and scale certain dimensions accordingly.\n// See the TeXbook, page 441.\nvar sigma1 = 0.025;\nvar sigma2 = 0;\nvar sigma3 = 0;\nvar sigma4 = 0;\nvar sigma5 = 0.431;\nvar sigma6 = 1;\nvar sigma7 = 0;\nvar sigma8 = 0.677;\nvar sigma9 = 0.394;\nvar sigma10 = 0.444;\nvar sigma11 = 0.686;\nvar sigma12 = 0.345;\nvar sigma13 = 0.413;\nvar sigma14 = 0.363;\nvar sigma15 = 0.289;\nvar sigma16 = 0.150;\nvar sigma17 = 0.247;\nvar sigma18 = 0.386;\nvar sigma19 = 0.050;\nvar sigma20 = 2.390;\nvar sigma21 = 1.01;\nvar sigma21Script = 0.81;\nvar sigma21ScriptScript = 0.71;\nvar sigma22 = 0.250;\n\n// These font metrics are extracted from TeX by using\n// \\font\\a=cmex10\n// \\showthe\\fontdimenX\\a\n// where X is the corresponding variable number. These correspond to the font\n// parameters of the extension fonts (family 3). See the TeXbook, page 441.\nvar xi1 = 0;\nvar xi2 = 0;\nvar xi3 = 0;\nvar xi4 = 0;\nvar xi5 = 0.431;\nvar xi6 = 1;\nvar xi7 = 0;\nvar xi8 = 0.04;\nvar xi9 = 0.111;\nvar xi10 = 0.166;\nvar xi11 = 0.2;\nvar xi12 = 0.6;\nvar xi13 = 0.1;\n\n// This value determines how large a pt is, for metrics which are defined in\n// terms of pts.\n// This value is also used in katex.less; if you change it make sure the values\n// match.\nvar ptPerEm = 10.0;\n\n// The space between adjacent `|` columns in an array definition. From\n// `\\showthe\\doublerulesep` in LaTeX.\nvar doubleRuleSep = 2.0 / ptPerEm;\n\n/**\n * This is just a mapping from common names to real metrics\n */\nvar metrics = {\n xHeight: sigma5,\n quad: sigma6,\n num1: sigma8,\n num2: sigma9,\n num3: sigma10,\n denom1: sigma11,\n denom2: sigma12,\n sup1: sigma13,\n sup2: sigma14,\n sup3: sigma15,\n sub1: sigma16,\n sub2: sigma17,\n supDrop: sigma18,\n subDrop: sigma19,\n axisHeight: sigma22,\n defaultRuleThickness: xi8,\n bigOpSpacing1: xi9,\n bigOpSpacing2: xi10,\n bigOpSpacing3: xi11,\n bigOpSpacing4: xi12,\n bigOpSpacing5: xi13,\n ptPerEm: ptPerEm,\n emPerEx: sigma5 / sigma6,\n doubleRuleSep: doubleRuleSep,\n\n // TODO(alpert): Missing parallel structure here. We should probably add\n // style-specific metrics for all of these.\n delim1: sigma20,\n getDelim2: function(style) {\n if (style.size === Style.TEXT.size) {\n return sigma21;\n } else if (style.size === Style.SCRIPT.size) {\n return sigma21Script;\n } else if (style.size === Style.SCRIPTSCRIPT.size) {\n return sigma21ScriptScript;\n }\n throw new Error(\"Unexpected style size: \" + style.size);\n },\n};\n\n// This map contains a mapping from font name and character code to character\n// metrics, including height, depth, italic correction, and skew (kern from the\n// character to the corresponding \\skewchar)\n// This map is generated via `make metrics`. It should not be changed manually.\nvar metricMap = require(\"./fontMetricsData\");\n\n/**\n * This function is a convenience function for looking up information in the\n * metricMap table. It takes a character as a string, and a style.\n *\n * Note: the `width` property may be undefined if fontMetricsData.js wasn't\n * built using `Make extended_metrics`.\n */\nvar getCharacterMetrics = function(character, style) {\n var metrics = metricMap[style][character.charCodeAt(0)];\n if (metrics) {\n return {\n depth: metrics[0],\n height: metrics[1],\n italic: metrics[2],\n skew: metrics[3],\n width: metrics[4],\n };\n }\n};\n\nmodule.exports = {\n metrics: metrics,\n getCharacterMetrics: getCharacterMetrics,\n};\n","/* eslint no-console:0 */\n/**\n * This file does the main work of building a domTree structure from a parse\n * tree. The entry point is the `buildHTML` function, which takes a parse tree.\n * Then, the buildExpression, buildGroup, and various groupTypes functions are\n * called, to produce a final HTML tree.\n */\n\nvar ParseError = require(\"./ParseError\");\nvar Style = require(\"./Style\");\n\nvar buildCommon = require(\"./buildCommon\");\nvar delimiter = require(\"./delimiter\");\nvar domTree = require(\"./domTree\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar utils = require(\"./utils\");\n\nvar makeSpan = buildCommon.makeSpan;\n\n/**\n * Take a list of nodes, build them in order, and return a list of the built\n * nodes. This function handles the `prev` node correctly, and passes the\n * previous element from the list as the prev of the next element.\n */\nvar buildExpression = function(expression, options, prev) {\n var groups = [];\n for (var i = 0; i < expression.length; i++) {\n var group = expression[i];\n groups.push(buildGroup(group, options, prev));\n prev = group;\n }\n return groups;\n};\n\n// List of types used by getTypeOfGroup,\n// see https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types\nvar groupToType = {\n mathord: \"mord\",\n textord: \"mord\",\n bin: \"mbin\",\n rel: \"mrel\",\n text: \"mord\",\n open: \"mopen\",\n close: \"mclose\",\n inner: \"minner\",\n genfrac: \"mord\",\n array: \"mord\",\n spacing: \"mord\",\n punct: \"mpunct\",\n ordgroup: \"mord\",\n op: \"mop\",\n katex: \"mord\",\n overline: \"mord\",\n underline: \"mord\",\n rule: \"mord\",\n leftright: \"minner\",\n sqrt: \"mord\",\n accent: \"mord\",\n};\n\n/**\n * Gets the final math type of an expression, given its group type. This type is\n * used to determine spacing between elements, and affects bin elements by\n * causing them to change depending on what types are around them. This type\n * must be attached to the outermost node of an element as a CSS class so that\n * spacing with its surrounding elements works correctly.\n *\n * Some elements can be mapped one-to-one from group type to math type, and\n * those are listed in the `groupToType` table.\n *\n * Others (usually elements that wrap around other elements) often have\n * recursive definitions, and thus call `getTypeOfGroup` on their inner\n * elements.\n */\nvar getTypeOfGroup = function(group) {\n if (group == null) {\n // Like when typesetting $^3$\n return groupToType.mathord;\n } else if (group.type === \"supsub\") {\n return getTypeOfGroup(group.value.base);\n } else if (group.type === \"llap\" || group.type === \"rlap\") {\n return getTypeOfGroup(group.value);\n } else if (group.type === \"color\") {\n return getTypeOfGroup(group.value.value);\n } else if (group.type === \"sizing\") {\n return getTypeOfGroup(group.value.value);\n } else if (group.type === \"styling\") {\n return getTypeOfGroup(group.value.value);\n } else if (group.type === \"delimsizing\") {\n return groupToType[group.value.delimType];\n } else {\n return groupToType[group.type];\n }\n};\n\n/**\n * Sometimes, groups perform special rules when they have superscripts or\n * subscripts attached to them. This function lets the `supsub` group know that\n * its inner element should handle the superscripts and subscripts instead of\n * handling them itself.\n */\nvar shouldHandleSupSub = function(group, options) {\n if (!group) {\n return false;\n } else if (group.type === \"op\") {\n // Operators handle supsubs differently when they have limits\n // (e.g. `\\displaystyle\\sum_2^3`)\n return group.value.limits &&\n (options.style.size === Style.DISPLAY.size ||\n group.value.alwaysHandleSupSub);\n } else if (group.type === \"accent\") {\n return isCharacterBox(group.value.base);\n } else {\n return null;\n }\n};\n\n/**\n * Sometimes we want to pull out the innermost element of a group. In most\n * cases, this will just be the group itself, but when ordgroups and colors have\n * a single element, we want to pull that out.\n */\nvar getBaseElem = function(group) {\n if (!group) {\n return false;\n } else if (group.type === \"ordgroup\") {\n if (group.value.length === 1) {\n return getBaseElem(group.value[0]);\n } else {\n return group;\n }\n } else if (group.type === \"color\") {\n if (group.value.value.length === 1) {\n return getBaseElem(group.value.value[0]);\n } else {\n return group;\n }\n } else {\n return group;\n }\n};\n\n/**\n * TeXbook algorithms often reference \"character boxes\", which are simply groups\n * with a single character in them. To decide if something is a character box,\n * we find its innermost group, and see if it is a single character.\n */\nvar isCharacterBox = function(group) {\n var baseElem = getBaseElem(group);\n\n // These are all they types of groups which hold single characters\n return baseElem.type === \"mathord\" ||\n baseElem.type === \"textord\" ||\n baseElem.type === \"bin\" ||\n baseElem.type === \"rel\" ||\n baseElem.type === \"inner\" ||\n baseElem.type === \"open\" ||\n baseElem.type === \"close\" ||\n baseElem.type === \"punct\";\n};\n\nvar makeNullDelimiter = function(options) {\n return makeSpan([\n \"sizing\", \"reset-\" + options.size, \"size5\",\n options.style.reset(), Style.TEXT.cls(),\n \"nulldelimiter\",\n ]);\n};\n\n/**\n * This is a map of group types to the function used to handle that type.\n * Simpler types come at the beginning, while complicated types come afterwards.\n */\nvar groupTypes = {};\n\ngroupTypes.mathord = function(group, options, prev) {\n return buildCommon.makeOrd(group, options, \"mathord\");\n};\n\ngroupTypes.textord = function(group, options, prev) {\n return buildCommon.makeOrd(group, options, \"textord\");\n};\n\ngroupTypes.bin = function(group, options, prev) {\n var className = \"mbin\";\n // Pull out the most recent element. Do some special handling to find\n // things at the end of a \\color group. Note that we don't use the same\n // logic for ordgroups (which count as ords).\n var prevAtom = prev;\n while (prevAtom && prevAtom.type === \"color\") {\n var atoms = prevAtom.value.value;\n prevAtom = atoms[atoms.length - 1];\n }\n // See TeXbook pg. 442-446, Rules 5 and 6, and the text before Rule 19.\n // Here, we determine whether the bin should turn into an ord. We\n // currently only apply Rule 5.\n if (!prev || utils.contains([\"mbin\", \"mopen\", \"mrel\", \"mop\", \"mpunct\"],\n getTypeOfGroup(prevAtom))) {\n group.type = \"textord\";\n className = \"mord\";\n }\n\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [className]);\n};\n\ngroupTypes.rel = function(group, options, prev) {\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [\"mrel\"]);\n};\n\ngroupTypes.open = function(group, options, prev) {\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [\"mopen\"]);\n};\n\ngroupTypes.close = function(group, options, prev) {\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [\"mclose\"]);\n};\n\ngroupTypes.inner = function(group, options, prev) {\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [\"minner\"]);\n};\n\ngroupTypes.punct = function(group, options, prev) {\n return buildCommon.mathsym(\n group.value, group.mode, options.getColor(), [\"mpunct\"]);\n};\n\ngroupTypes.ordgroup = function(group, options, prev) {\n return makeSpan(\n [\"mord\", options.style.cls()],\n buildExpression(group.value, options.reset())\n );\n};\n\ngroupTypes.text = function(group, options, prev) {\n return makeSpan([\"text\", \"mord\", options.style.cls()],\n buildExpression(group.value.body, options.reset()));\n};\n\ngroupTypes.color = function(group, options, prev) {\n var elements = buildExpression(\n group.value.value,\n options.withColor(group.value.color),\n prev\n );\n\n // \\color isn't supposed to affect the type of the elements it contains.\n // To accomplish this, we wrap the results in a fragment, so the inner\n // elements will be able to directly interact with their neighbors. For\n // example, `\\color{red}{2 +} 3` has the same spacing as `2 + 3`\n return new buildCommon.makeFragment(elements);\n};\n\ngroupTypes.supsub = function(group, options, prev) {\n // Superscript and subscripts are handled in the TeXbook on page\n // 445-446, rules 18(a-f).\n\n // Here is where we defer to the inner group if it should handle\n // superscripts and subscripts itself.\n if (shouldHandleSupSub(group.value.base, options)) {\n return groupTypes[group.value.base.type](group, options, prev);\n }\n\n var base = buildGroup(group.value.base, options.reset());\n var supmid;\n var submid;\n var sup;\n var sub;\n\n if (group.value.sup) {\n sup = buildGroup(group.value.sup,\n options.withStyle(options.style.sup()));\n supmid = makeSpan(\n [options.style.reset(), options.style.sup().cls()], [sup]);\n }\n\n if (group.value.sub) {\n sub = buildGroup(group.value.sub,\n options.withStyle(options.style.sub()));\n submid = makeSpan(\n [options.style.reset(), options.style.sub().cls()], [sub]);\n }\n\n // Rule 18a\n var supShift;\n var subShift;\n if (isCharacterBox(group.value.base)) {\n supShift = 0;\n subShift = 0;\n } else {\n supShift = base.height - fontMetrics.metrics.supDrop;\n subShift = base.depth + fontMetrics.metrics.subDrop;\n }\n\n // Rule 18c\n var minSupShift;\n if (options.style === Style.DISPLAY) {\n minSupShift = fontMetrics.metrics.sup1;\n } else if (options.style.cramped) {\n minSupShift = fontMetrics.metrics.sup3;\n } else {\n minSupShift = fontMetrics.metrics.sup2;\n }\n\n // scriptspace is a font-size-independent size, so scale it\n // appropriately\n var multiplier = Style.TEXT.sizeMultiplier *\n options.style.sizeMultiplier;\n var scriptspace =\n (0.5 / fontMetrics.metrics.ptPerEm) / multiplier + \"em\";\n\n var supsub;\n if (!group.value.sup) {\n // Rule 18b\n subShift = Math.max(\n subShift, fontMetrics.metrics.sub1,\n sub.height - 0.8 * fontMetrics.metrics.xHeight);\n\n supsub = buildCommon.makeVList([\n {type: \"elem\", elem: submid},\n ], \"shift\", subShift, options);\n\n supsub.children[0].style.marginRight = scriptspace;\n\n // Subscripts shouldn't be shifted by the base's italic correction.\n // Account for that by shifting the subscript back the appropriate\n // amount. Note we only do this when the base is a single symbol.\n if (base instanceof domTree.symbolNode) {\n supsub.children[0].style.marginLeft = -base.italic + \"em\";\n }\n } else if (!group.value.sub) {\n // Rule 18c, d\n supShift = Math.max(supShift, minSupShift,\n sup.depth + 0.25 * fontMetrics.metrics.xHeight);\n\n supsub = buildCommon.makeVList([\n {type: \"elem\", elem: supmid},\n ], \"shift\", -supShift, options);\n\n supsub.children[0].style.marginRight = scriptspace;\n } else {\n supShift = Math.max(\n supShift, minSupShift,\n sup.depth + 0.25 * fontMetrics.metrics.xHeight);\n subShift = Math.max(subShift, fontMetrics.metrics.sub2);\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness;\n\n // Rule 18e\n if ((supShift - sup.depth) - (sub.height - subShift) <\n 4 * ruleWidth) {\n subShift = 4 * ruleWidth - (supShift - sup.depth) + sub.height;\n var psi = 0.8 * fontMetrics.metrics.xHeight -\n (supShift - sup.depth);\n if (psi > 0) {\n supShift += psi;\n subShift -= psi;\n }\n }\n\n supsub = buildCommon.makeVList([\n {type: \"elem\", elem: submid, shift: subShift},\n {type: \"elem\", elem: supmid, shift: -supShift},\n ], \"individualShift\", null, options);\n\n // See comment above about subscripts not being shifted\n if (base instanceof domTree.symbolNode) {\n supsub.children[0].style.marginLeft = -base.italic + \"em\";\n }\n\n supsub.children[0].style.marginRight = scriptspace;\n supsub.children[1].style.marginRight = scriptspace;\n }\n\n return makeSpan([getTypeOfGroup(group.value.base)],\n [base, supsub]);\n};\n\ngroupTypes.genfrac = function(group, options, prev) {\n // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).\n // Figure out what style this fraction should be in based on the\n // function used\n var fstyle = options.style;\n if (group.value.size === \"display\") {\n fstyle = Style.DISPLAY;\n } else if (group.value.size === \"text\") {\n fstyle = Style.TEXT;\n }\n\n var nstyle = fstyle.fracNum();\n var dstyle = fstyle.fracDen();\n\n var numer = buildGroup(group.value.numer, options.withStyle(nstyle));\n var numerreset = makeSpan([fstyle.reset(), nstyle.cls()], [numer]);\n\n var denom = buildGroup(group.value.denom, options.withStyle(dstyle));\n var denomreset = makeSpan([fstyle.reset(), dstyle.cls()], [denom]);\n\n var ruleWidth;\n if (group.value.hasBarLine) {\n ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n options.style.sizeMultiplier;\n } else {\n ruleWidth = 0;\n }\n\n // Rule 15b\n var numShift;\n var clearance;\n var denomShift;\n if (fstyle.size === Style.DISPLAY.size) {\n numShift = fontMetrics.metrics.num1;\n if (ruleWidth > 0) {\n clearance = 3 * ruleWidth;\n } else {\n clearance = 7 * fontMetrics.metrics.defaultRuleThickness;\n }\n denomShift = fontMetrics.metrics.denom1;\n } else {\n if (ruleWidth > 0) {\n numShift = fontMetrics.metrics.num2;\n clearance = ruleWidth;\n } else {\n numShift = fontMetrics.metrics.num3;\n clearance = 3 * fontMetrics.metrics.defaultRuleThickness;\n }\n denomShift = fontMetrics.metrics.denom2;\n }\n\n var frac;\n if (ruleWidth === 0) {\n // Rule 15c\n var candiateClearance =\n (numShift - numer.depth) - (denom.height - denomShift);\n if (candiateClearance < clearance) {\n numShift += 0.5 * (clearance - candiateClearance);\n denomShift += 0.5 * (clearance - candiateClearance);\n }\n\n frac = buildCommon.makeVList([\n {type: \"elem\", elem: denomreset, shift: denomShift},\n {type: \"elem\", elem: numerreset, shift: -numShift},\n ], \"individualShift\", null, options);\n } else {\n // Rule 15d\n var axisHeight = fontMetrics.metrics.axisHeight;\n\n if ((numShift - numer.depth) - (axisHeight + 0.5 * ruleWidth) <\n clearance) {\n numShift +=\n clearance - ((numShift - numer.depth) -\n (axisHeight + 0.5 * ruleWidth));\n }\n\n if ((axisHeight - 0.5 * ruleWidth) - (denom.height - denomShift) <\n clearance) {\n denomShift +=\n clearance - ((axisHeight - 0.5 * ruleWidth) -\n (denom.height - denomShift));\n }\n\n var mid = makeSpan(\n [options.style.reset(), Style.TEXT.cls(), \"frac-line\"]);\n // Manually set the height of the line because its height is\n // created in CSS\n mid.height = ruleWidth;\n\n var midShift = -(axisHeight - 0.5 * ruleWidth);\n\n frac = buildCommon.makeVList([\n {type: \"elem\", elem: denomreset, shift: denomShift},\n {type: \"elem\", elem: mid, shift: midShift},\n {type: \"elem\", elem: numerreset, shift: -numShift},\n ], \"individualShift\", null, options);\n }\n\n // Since we manually change the style sometimes (with \\dfrac or \\tfrac),\n // account for the possible size change here.\n frac.height *= fstyle.sizeMultiplier / options.style.sizeMultiplier;\n frac.depth *= fstyle.sizeMultiplier / options.style.sizeMultiplier;\n\n // Rule 15e\n var delimSize;\n if (fstyle.size === Style.DISPLAY.size) {\n delimSize = fontMetrics.metrics.delim1;\n } else {\n delimSize = fontMetrics.metrics.getDelim2(fstyle);\n }\n\n var leftDelim;\n var rightDelim;\n if (group.value.leftDelim == null) {\n leftDelim = makeNullDelimiter(options);\n } else {\n leftDelim = delimiter.customSizedDelim(\n group.value.leftDelim, delimSize, true,\n options.withStyle(fstyle), group.mode);\n }\n if (group.value.rightDelim == null) {\n rightDelim = makeNullDelimiter(options);\n } else {\n rightDelim = delimiter.customSizedDelim(\n group.value.rightDelim, delimSize, true,\n options.withStyle(fstyle), group.mode);\n }\n\n return makeSpan(\n [\"mord\", options.style.reset(), fstyle.cls()],\n [leftDelim, makeSpan([\"mfrac\"], [frac]), rightDelim],\n options.getColor());\n};\n\ngroupTypes.array = function(group, options, prev) {\n var r;\n var c;\n var nr = group.value.body.length;\n var nc = 0;\n var body = new Array(nr);\n\n // Horizontal spacing\n var pt = 1 / fontMetrics.metrics.ptPerEm;\n var arraycolsep = 5 * pt; // \\arraycolsep in article.cls\n\n // Vertical spacing\n var baselineskip = 12 * pt; // see size10.clo\n // Default \\arraystretch from lttab.dtx\n // TODO(gagern): may get redefined once we have user-defined macros\n var arraystretch = utils.deflt(group.value.arraystretch, 1);\n var arrayskip = arraystretch * baselineskip;\n var arstrutHeight = 0.7 * arrayskip; // \\strutbox in ltfsstrc.dtx and\n var arstrutDepth = 0.3 * arrayskip; // \\@arstrutbox in lttab.dtx\n\n var totalHeight = 0;\n for (r = 0; r < group.value.body.length; ++r) {\n var inrow = group.value.body[r];\n var height = arstrutHeight; // \\@array adds an \\@arstrut\n var depth = arstrutDepth; // to each tow (via the template)\n\n if (nc < inrow.length) {\n nc = inrow.length;\n }\n\n var outrow = new Array(inrow.length);\n for (c = 0; c < inrow.length; ++c) {\n var elt = buildGroup(inrow[c], options);\n if (depth < elt.depth) {\n depth = elt.depth;\n }\n if (height < elt.height) {\n height = elt.height;\n }\n outrow[c] = elt;\n }\n\n var gap = 0;\n if (group.value.rowGaps[r]) {\n gap = group.value.rowGaps[r].value;\n switch (gap.unit) {\n case \"em\":\n gap = gap.number;\n break;\n case \"ex\":\n gap = gap.number * fontMetrics.metrics.emPerEx;\n break;\n default:\n console.error(\"Can't handle unit \" + gap.unit);\n gap = 0;\n }\n if (gap > 0) { // \\@argarraycr\n gap += arstrutDepth;\n if (depth < gap) {\n depth = gap; // \\@xargarraycr\n }\n gap = 0;\n }\n }\n\n outrow.height = height;\n outrow.depth = depth;\n totalHeight += height;\n outrow.pos = totalHeight;\n totalHeight += depth + gap; // \\@yargarraycr\n body[r] = outrow;\n }\n\n var offset = totalHeight / 2 + fontMetrics.metrics.axisHeight;\n var colDescriptions = group.value.cols || [];\n var cols = [];\n var colSep;\n var colDescrNum;\n for (c = 0, colDescrNum = 0;\n // Continue while either there are more columns or more column\n // descriptions, so trailing separators don't get lost.\n c < nc || colDescrNum < colDescriptions.length;\n ++c, ++colDescrNum) {\n\n var colDescr = colDescriptions[colDescrNum] || {};\n\n var firstSeparator = true;\n while (colDescr.type === \"separator\") {\n // If there is more than one separator in a row, add a space\n // between them.\n if (!firstSeparator) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width =\n fontMetrics.metrics.doubleRuleSep + \"em\";\n cols.push(colSep);\n }\n\n if (colDescr.separator === \"|\") {\n var separator = makeSpan(\n [\"vertical-separator\"],\n []);\n separator.style.height = totalHeight + \"em\";\n separator.style.verticalAlign =\n -(totalHeight - offset) + \"em\";\n\n cols.push(separator);\n } else {\n throw new ParseError(\n \"Invalid separator type: \" + colDescr.separator);\n }\n\n colDescrNum++;\n colDescr = colDescriptions[colDescrNum] || {};\n firstSeparator = false;\n }\n\n if (c >= nc) {\n continue;\n }\n\n var sepwidth;\n if (c > 0 || group.value.hskipBeforeAndAfter) {\n sepwidth = utils.deflt(colDescr.pregap, arraycolsep);\n if (sepwidth !== 0) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = sepwidth + \"em\";\n cols.push(colSep);\n }\n }\n\n var col = [];\n for (r = 0; r < nr; ++r) {\n var row = body[r];\n var elem = row[c];\n if (!elem) {\n continue;\n }\n var shift = row.pos - offset;\n elem.depth = row.depth;\n elem.height = row.height;\n col.push({type: \"elem\", elem: elem, shift: shift});\n }\n\n col = buildCommon.makeVList(col, \"individualShift\", null, options);\n col = makeSpan(\n [\"col-align-\" + (colDescr.align || \"c\")],\n [col]);\n cols.push(col);\n\n if (c < nc - 1 || group.value.hskipBeforeAndAfter) {\n sepwidth = utils.deflt(colDescr.postgap, arraycolsep);\n if (sepwidth !== 0) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = sepwidth + \"em\";\n cols.push(colSep);\n }\n }\n }\n body = makeSpan([\"mtable\"], cols);\n return makeSpan([\"mord\"], [body], options.getColor());\n};\n\ngroupTypes.spacing = function(group, options, prev) {\n if (group.value === \"\\\\ \" || group.value === \"\\\\space\" ||\n group.value === \" \" || group.value === \"~\") {\n // Spaces are generated by adding an actual space. Each of these\n // things has an entry in the symbols table, so these will be turned\n // into appropriate outputs.\n return makeSpan(\n [\"mord\", \"mspace\"],\n [buildCommon.mathsym(group.value, group.mode)]\n );\n } else {\n // Other kinds of spaces are of arbitrary width. We use CSS to\n // generate these.\n return makeSpan(\n [\"mord\", \"mspace\",\n buildCommon.spacingFunctions[group.value].className]);\n }\n};\n\ngroupTypes.llap = function(group, options, prev) {\n var inner = makeSpan(\n [\"inner\"], [buildGroup(group.value.body, options.reset())]);\n var fix = makeSpan([\"fix\"], []);\n return makeSpan(\n [\"llap\", options.style.cls()], [inner, fix]);\n};\n\ngroupTypes.rlap = function(group, options, prev) {\n var inner = makeSpan(\n [\"inner\"], [buildGroup(group.value.body, options.reset())]);\n var fix = makeSpan([\"fix\"], []);\n return makeSpan(\n [\"rlap\", options.style.cls()], [inner, fix]);\n};\n\ngroupTypes.op = function(group, options, prev) {\n // Operators are handled in the TeXbook pg. 443-444, rule 13(a).\n var supGroup;\n var subGroup;\n var hasLimits = false;\n if (group.type === \"supsub\" ) {\n // If we have limits, supsub will pass us its group to handle. Pull\n // out the superscript and subscript and set the group to the op in\n // its base.\n supGroup = group.value.sup;\n subGroup = group.value.sub;\n group = group.value.base;\n hasLimits = true;\n }\n\n // Most operators have a large successor symbol, but these don't.\n var noSuccessor = [\n \"\\\\smallint\",\n ];\n\n var large = false;\n if (options.style.size === Style.DISPLAY.size &&\n group.value.symbol &&\n !utils.contains(noSuccessor, group.value.body)) {\n\n // Most symbol operators get larger in displaystyle (rule 13)\n large = true;\n }\n\n var base;\n var baseShift = 0;\n var slant = 0;\n if (group.value.symbol) {\n // If this is a symbol, create the symbol.\n var style = large ? \"Size2-Regular\" : \"Size1-Regular\";\n base = buildCommon.makeSymbol(\n group.value.body, style, \"math\", options.getColor(),\n [\"op-symbol\", large ? \"large-op\" : \"small-op\", \"mop\"]);\n\n // Shift the symbol so its center lies on the axis (rule 13). It\n // appears that our fonts have the centers of the symbols already\n // almost on the axis, so these numbers are very small. Note we\n // don't actually apply this here, but instead it is used either in\n // the vlist creation or separately when there are no limits.\n baseShift = (base.height - base.depth) / 2 -\n fontMetrics.metrics.axisHeight *\n options.style.sizeMultiplier;\n\n // The slant of the symbol is just its italic correction.\n slant = base.italic;\n } else {\n // Otherwise, this is a text operator. Build the text from the\n // operator's name.\n // TODO(emily): Add a space in the middle of some of these\n // operators, like \\limsup\n var output = [];\n for (var i = 1; i < group.value.body.length; i++) {\n output.push(buildCommon.mathsym(group.value.body[i], group.mode));\n }\n base = makeSpan([\"mop\"], output, options.getColor());\n }\n\n if (hasLimits) {\n // IE 8 clips \\int if it is in a display: inline-block. We wrap it\n // in a new span so it is an inline, and works.\n base = makeSpan([], [base]);\n\n var supmid;\n var supKern;\n var submid;\n var subKern;\n // We manually have to handle the superscripts and subscripts. This,\n // aside from the kern calculations, is copied from supsub.\n if (supGroup) {\n var sup = buildGroup(\n supGroup, options.withStyle(options.style.sup()));\n supmid = makeSpan(\n [options.style.reset(), options.style.sup().cls()], [sup]);\n\n supKern = Math.max(\n fontMetrics.metrics.bigOpSpacing1,\n fontMetrics.metrics.bigOpSpacing3 - sup.depth);\n }\n\n if (subGroup) {\n var sub = buildGroup(\n subGroup, options.withStyle(options.style.sub()));\n submid = makeSpan(\n [options.style.reset(), options.style.sub().cls()],\n [sub]);\n\n subKern = Math.max(\n fontMetrics.metrics.bigOpSpacing2,\n fontMetrics.metrics.bigOpSpacing4 - sub.height);\n }\n\n // Build the final group as a vlist of the possible subscript, base,\n // and possible superscript.\n var finalGroup;\n var top;\n var bottom;\n if (!supGroup) {\n top = base.height - baseShift;\n\n finalGroup = buildCommon.makeVList([\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5},\n {type: \"elem\", elem: submid},\n {type: \"kern\", size: subKern},\n {type: \"elem\", elem: base},\n ], \"top\", top, options);\n\n // Here, we shift the limits by the slant of the symbol. Note\n // that we are supposed to shift the limits by 1/2 of the slant,\n // but since we are centering the limits adding a full slant of\n // margin will shift by 1/2 that.\n finalGroup.children[0].style.marginLeft = -slant + \"em\";\n } else if (!subGroup) {\n bottom = base.depth + baseShift;\n\n finalGroup = buildCommon.makeVList([\n {type: \"elem\", elem: base},\n {type: \"kern\", size: supKern},\n {type: \"elem\", elem: supmid},\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5},\n ], \"bottom\", bottom, options);\n\n // See comment above about slants\n finalGroup.children[1].style.marginLeft = slant + \"em\";\n } else if (!supGroup && !subGroup) {\n // This case probably shouldn't occur (this would mean the\n // supsub was sending us a group with no superscript or\n // subscript) but be safe.\n return base;\n } else {\n bottom = fontMetrics.metrics.bigOpSpacing5 +\n submid.height + submid.depth +\n subKern +\n base.depth + baseShift;\n\n finalGroup = buildCommon.makeVList([\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5},\n {type: \"elem\", elem: submid},\n {type: \"kern\", size: subKern},\n {type: \"elem\", elem: base},\n {type: \"kern\", size: supKern},\n {type: \"elem\", elem: supmid},\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5},\n ], \"bottom\", bottom, options);\n\n // See comment above about slants\n finalGroup.children[0].style.marginLeft = -slant + \"em\";\n finalGroup.children[2].style.marginLeft = slant + \"em\";\n }\n\n return makeSpan([\"mop\", \"op-limits\"], [finalGroup]);\n } else {\n if (group.value.symbol) {\n base.style.top = baseShift + \"em\";\n }\n\n return base;\n }\n};\n\ngroupTypes.katex = function(group, options, prev) {\n // The KaTeX logo. The offsets for the K and a were chosen to look\n // good, but the offsets for the T, E, and X were taken from the\n // definition of \\TeX in TeX (see TeXbook pg. 356)\n var k = makeSpan(\n [\"k\"], [buildCommon.mathsym(\"K\", group.mode)]);\n var a = makeSpan(\n [\"a\"], [buildCommon.mathsym(\"A\", group.mode)]);\n\n a.height = (a.height + 0.2) * 0.75;\n a.depth = (a.height - 0.2) * 0.75;\n\n var t = makeSpan(\n [\"t\"], [buildCommon.mathsym(\"T\", group.mode)]);\n var e = makeSpan(\n [\"e\"], [buildCommon.mathsym(\"E\", group.mode)]);\n\n e.height = (e.height - 0.2155);\n e.depth = (e.depth + 0.2155);\n\n var x = makeSpan(\n [\"x\"], [buildCommon.mathsym(\"X\", group.mode)]);\n\n return makeSpan(\n [\"katex-logo\", \"mord\"], [k, a, t, e, x], options.getColor());\n};\n\ngroupTypes.overline = function(group, options, prev) {\n // Overlines are handled in the TeXbook pg 443, Rule 9.\n\n // Build the inner group in the cramped style.\n var innerGroup = buildGroup(group.value.body,\n options.withStyle(options.style.cramp()));\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n options.style.sizeMultiplier;\n\n // Create the line above the body\n var line = makeSpan(\n [options.style.reset(), Style.TEXT.cls(), \"overline-line\"]);\n line.height = ruleWidth;\n line.maxFontSize = 1.0;\n\n // Generate the vlist, with the appropriate kerns\n var vlist = buildCommon.makeVList([\n {type: \"elem\", elem: innerGroup},\n {type: \"kern\", size: 3 * ruleWidth},\n {type: \"elem\", elem: line},\n {type: \"kern\", size: ruleWidth},\n ], \"firstBaseline\", null, options);\n\n return makeSpan([\"overline\", \"mord\"], [vlist], options.getColor());\n};\n\ngroupTypes.underline = function(group, options, prev) {\n // Underlines are handled in the TeXbook pg 443, Rule 10.\n\n // Build the inner group.\n var innerGroup = buildGroup(group.value.body, options);\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n options.style.sizeMultiplier;\n\n // Create the line above the body\n var line = makeSpan(\n [options.style.reset(), Style.TEXT.cls(), \"underline-line\"]);\n line.height = ruleWidth;\n line.maxFontSize = 1.0;\n\n // Generate the vlist, with the appropriate kerns\n var vlist = buildCommon.makeVList([\n {type: \"kern\", size: ruleWidth},\n {type: \"elem\", elem: line},\n {type: \"kern\", size: 3 * ruleWidth},\n {type: \"elem\", elem: innerGroup},\n ], \"top\", innerGroup.height, options);\n\n return makeSpan([\"underline\", \"mord\"], [vlist], options.getColor());\n};\n\ngroupTypes.sqrt = function(group, options, prev) {\n // Square roots are handled in the TeXbook pg. 443, Rule 11.\n\n // First, we do the same steps as in overline to build the inner group\n // and line\n var inner = buildGroup(group.value.body,\n options.withStyle(options.style.cramp()));\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n options.style.sizeMultiplier;\n\n var line = makeSpan(\n [options.style.reset(), Style.TEXT.cls(), \"sqrt-line\"], [],\n options.getColor());\n line.height = ruleWidth;\n line.maxFontSize = 1.0;\n\n var phi = ruleWidth;\n if (options.style.id < Style.TEXT.id) {\n phi = fontMetrics.metrics.xHeight;\n }\n\n // Calculate the clearance between the body and line\n var lineClearance = ruleWidth + phi / 4;\n\n var innerHeight =\n (inner.height + inner.depth) * options.style.sizeMultiplier;\n var minDelimiterHeight = innerHeight + lineClearance + ruleWidth;\n\n // Create a \\surd delimiter of the required minimum size\n var delim = makeSpan([\"sqrt-sign\"], [\n delimiter.customSizedDelim(\"\\\\surd\", minDelimiterHeight,\n false, options, group.mode)],\n options.getColor());\n\n var delimDepth = (delim.height + delim.depth) - ruleWidth;\n\n // Adjust the clearance based on the delimiter size\n if (delimDepth > inner.height + inner.depth + lineClearance) {\n lineClearance =\n (lineClearance + delimDepth - inner.height - inner.depth) / 2;\n }\n\n // Shift the delimiter so that its top lines up with the top of the line\n var delimShift = -(inner.height + lineClearance + ruleWidth) + delim.height;\n delim.style.top = delimShift + \"em\";\n delim.height -= delimShift;\n delim.depth += delimShift;\n\n // We add a special case here, because even when `inner` is empty, we\n // still get a line. So, we use a simple heuristic to decide if we\n // should omit the body entirely. (note this doesn't work for something\n // like `\\sqrt{\\rlap{x}}`, but if someone is doing that they deserve for\n // it not to work.\n var body;\n if (inner.height === 0 && inner.depth === 0) {\n body = makeSpan();\n } else {\n body = buildCommon.makeVList([\n {type: \"elem\", elem: inner},\n {type: \"kern\", size: lineClearance},\n {type: \"elem\", elem: line},\n {type: \"kern\", size: ruleWidth},\n ], \"firstBaseline\", null, options);\n }\n\n if (!group.value.index) {\n return makeSpan([\"sqrt\", \"mord\"], [delim, body]);\n } else {\n // Handle the optional root index\n\n // The index is always in scriptscript style\n var root = buildGroup(\n group.value.index,\n options.withStyle(Style.SCRIPTSCRIPT));\n var rootWrap = makeSpan(\n [options.style.reset(), Style.SCRIPTSCRIPT.cls()],\n [root]);\n\n // Figure out the height and depth of the inner part\n var innerRootHeight = Math.max(delim.height, body.height);\n var innerRootDepth = Math.max(delim.depth, body.depth);\n\n // The amount the index is shifted by. This is taken from the TeX\n // source, in the definition of `\\r@@t`.\n var toShift = 0.6 * (innerRootHeight - innerRootDepth);\n\n // Build a VList with the superscript shifted up correctly\n var rootVList = buildCommon.makeVList(\n [{type: \"elem\", elem: rootWrap}],\n \"shift\", -toShift, options);\n // Add a class surrounding it so we can add on the appropriate\n // kerning\n var rootVListWrap = makeSpan([\"root\"], [rootVList]);\n\n return makeSpan([\"sqrt\", \"mord\"], [rootVListWrap, delim, body]);\n }\n};\n\ngroupTypes.sizing = function(group, options, prev) {\n // Handle sizing operators like \\Huge. Real TeX doesn't actually allow\n // these functions inside of math expressions, so we do some special\n // handling.\n var inner = buildExpression(group.value.value,\n options.withSize(group.value.size), prev);\n\n var span = makeSpan([\"mord\"],\n [makeSpan([\"sizing\", \"reset-\" + options.size, group.value.size,\n options.style.cls()],\n inner)]);\n\n // Calculate the correct maxFontSize manually\n var fontSize = buildCommon.sizingMultiplier[group.value.size];\n span.maxFontSize = fontSize * options.style.sizeMultiplier;\n\n return span;\n};\n\ngroupTypes.styling = function(group, options, prev) {\n // Style changes are handled in the TeXbook on pg. 442, Rule 3.\n\n // Figure out what style we're changing to.\n var style = {\n \"display\": Style.DISPLAY,\n \"text\": Style.TEXT,\n \"script\": Style.SCRIPT,\n \"scriptscript\": Style.SCRIPTSCRIPT,\n };\n\n var newStyle = style[group.value.style];\n\n // Build the inner expression in the new style.\n var inner = buildExpression(\n group.value.value, options.withStyle(newStyle), prev);\n\n return makeSpan([options.style.reset(), newStyle.cls()], inner);\n};\n\ngroupTypes.font = function(group, options, prev) {\n var font = group.value.font;\n return buildGroup(group.value.body, options.withFont(font), prev);\n};\n\ngroupTypes.delimsizing = function(group, options, prev) {\n var delim = group.value.value;\n\n if (delim === \".\") {\n // Empty delimiters still count as elements, even though they don't\n // show anything.\n return makeSpan([groupToType[group.value.delimType]]);\n }\n\n // Use delimiter.sizedDelim to generate the delimiter.\n return makeSpan(\n [groupToType[group.value.delimType]],\n [delimiter.sizedDelim(\n delim, group.value.size, options, group.mode)]);\n};\n\ngroupTypes.leftright = function(group, options, prev) {\n // Build the inner expression\n var inner = buildExpression(group.value.body, options.reset());\n\n var innerHeight = 0;\n var innerDepth = 0;\n\n // Calculate its height and depth\n for (var i = 0; i < inner.length; i++) {\n innerHeight = Math.max(inner[i].height, innerHeight);\n innerDepth = Math.max(inner[i].depth, innerDepth);\n }\n\n // The size of delimiters is the same, regardless of what style we are\n // in. Thus, to correctly calculate the size of delimiter we need around\n // a group, we scale down the inner size based on the size.\n innerHeight *= options.style.sizeMultiplier;\n innerDepth *= options.style.sizeMultiplier;\n\n var leftDelim;\n if (group.value.left === \".\") {\n // Empty delimiters in \\left and \\right make null delimiter spaces.\n leftDelim = makeNullDelimiter(options);\n } else {\n // Otherwise, use leftRightDelim to generate the correct sized\n // delimiter.\n leftDelim = delimiter.leftRightDelim(\n group.value.left, innerHeight, innerDepth, options,\n group.mode);\n }\n // Add it to the beginning of the expression\n inner.unshift(leftDelim);\n\n var rightDelim;\n // Same for the right delimiter\n if (group.value.right === \".\") {\n rightDelim = makeNullDelimiter(options);\n } else {\n rightDelim = delimiter.leftRightDelim(\n group.value.right, innerHeight, innerDepth, options,\n group.mode);\n }\n // Add it to the end of the expression.\n inner.push(rightDelim);\n\n return makeSpan(\n [\"minner\", options.style.cls()], inner, options.getColor());\n};\n\ngroupTypes.rule = function(group, options, prev) {\n // Make an empty span for the rule\n var rule = makeSpan([\"mord\", \"rule\"], [], options.getColor());\n\n // Calculate the shift, width, and height of the rule, and account for units\n var shift = 0;\n if (group.value.shift) {\n shift = group.value.shift.number;\n if (group.value.shift.unit === \"ex\") {\n shift *= fontMetrics.metrics.xHeight;\n }\n }\n\n var width = group.value.width.number;\n if (group.value.width.unit === \"ex\") {\n width *= fontMetrics.metrics.xHeight;\n }\n\n var height = group.value.height.number;\n if (group.value.height.unit === \"ex\") {\n height *= fontMetrics.metrics.xHeight;\n }\n\n // The sizes of rules are absolute, so make it larger if we are in a\n // smaller style.\n shift /= options.style.sizeMultiplier;\n width /= options.style.sizeMultiplier;\n height /= options.style.sizeMultiplier;\n\n // Style the rule to the right size\n rule.style.borderRightWidth = width + \"em\";\n rule.style.borderTopWidth = height + \"em\";\n rule.style.bottom = shift + \"em\";\n\n // Record the height and width\n rule.width = width;\n rule.height = height + shift;\n rule.depth = -shift;\n\n return rule;\n};\n\ngroupTypes.accent = function(group, options, prev) {\n // Accents are handled in the TeXbook pg. 443, rule 12.\n var base = group.value.base;\n\n var supsubGroup;\n if (group.type === \"supsub\") {\n // If our base is a character box, and we have superscripts and\n // subscripts, the supsub will defer to us. In particular, we want\n // to attach the superscripts and subscripts to the inner body (so\n // that the position of the superscripts and subscripts won't be\n // affected by the height of the accent). We accomplish this by\n // sticking the base of the accent into the base of the supsub, and\n // rendering that, while keeping track of where the accent is.\n\n // The supsub group is the group that was passed in\n var supsub = group;\n // The real accent group is the base of the supsub group\n group = supsub.value.base;\n // The character box is the base of the accent group\n base = group.value.base;\n // Stick the character box into the base of the supsub group\n supsub.value.base = base;\n\n // Rerender the supsub group with its new base, and store that\n // result.\n supsubGroup = buildGroup(\n supsub, options.reset(), prev);\n }\n\n // Build the base group\n var body = buildGroup(\n base, options.withStyle(options.style.cramp()));\n\n // Calculate the skew of the accent. This is based on the line \"If the\n // nucleus is not a single character, let s = 0; otherwise set s to the\n // kern amount for the nucleus followed by the \\skewchar of its font.\"\n // Note that our skew metrics are just the kern between each character\n // and the skewchar.\n var skew;\n if (isCharacterBox(base)) {\n // If the base is a character box, then we want the skew of the\n // innermost character. To do that, we find the innermost character:\n var baseChar = getBaseElem(base);\n // Then, we render its group to get the symbol inside it\n var baseGroup = buildGroup(\n baseChar, options.withStyle(options.style.cramp()));\n // Finally, we pull the skew off of the symbol.\n skew = baseGroup.skew;\n // Note that we now throw away baseGroup, because the layers we\n // removed with getBaseElem might contain things like \\color which\n // we can't get rid of.\n // TODO(emily): Find a better way to get the skew\n } else {\n skew = 0;\n }\n\n // calculate the amount of space between the body and the accent\n var clearance = Math.min(body.height, fontMetrics.metrics.xHeight);\n\n // Build the accent\n var accent = buildCommon.makeSymbol(\n group.value.accent, \"Main-Regular\", \"math\", options.getColor());\n // Remove the italic correction of the accent, because it only serves to\n // shift the accent over to a place we don't want.\n accent.italic = 0;\n\n // The \\vec character that the fonts use is a combining character, and\n // thus shows up much too far to the left. To account for this, we add a\n // specific class which shifts the accent over to where we want it.\n // TODO(emily): Fix this in a better way, like by changing the font\n var vecClass = group.value.accent === \"\\\\vec\" ? \"accent-vec\" : null;\n\n var accentBody = makeSpan([\"accent-body\", vecClass], [\n makeSpan([], [accent])]);\n\n accentBody = buildCommon.makeVList([\n {type: \"elem\", elem: body},\n {type: \"kern\", size: -clearance},\n {type: \"elem\", elem: accentBody},\n ], \"firstBaseline\", null, options);\n\n // Shift the accent over by the skew. Note we shift by twice the skew\n // because we are centering the accent, so by adding 2*skew to the left,\n // we shift it to the right by 1*skew.\n accentBody.children[1].style.marginLeft = 2 * skew + \"em\";\n\n var accentWrap = makeSpan([\"mord\", \"accent\"], [accentBody]);\n\n if (supsubGroup) {\n // Here, we replace the \"base\" child of the supsub with our newly\n // generated accent.\n supsubGroup.children[0] = accentWrap;\n\n // Since we don't rerun the height calculation after replacing the\n // accent, we manually recalculate height.\n supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height);\n\n // Accents should always be ords, even when their innards are not.\n supsubGroup.classes[0] = \"mord\";\n\n return supsubGroup;\n } else {\n return accentWrap;\n }\n};\n\ngroupTypes.phantom = function(group, options, prev) {\n var elements = buildExpression(\n group.value.value,\n options.withPhantom(),\n prev\n );\n\n // \\phantom isn't supposed to affect the elements it contains.\n // See \"color\" for more details.\n return new buildCommon.makeFragment(elements);\n};\n\n/**\n * buildGroup is the function that takes a group and calls the correct groupType\n * function for it. It also handles the interaction of size and style changes\n * between parents and children.\n */\nvar buildGroup = function(group, options, prev) {\n if (!group) {\n return makeSpan();\n }\n\n if (groupTypes[group.type]) {\n // Call the groupTypes function\n var groupNode = groupTypes[group.type](group, options, prev);\n var multiplier;\n\n // If the style changed between the parent and the current group,\n // account for the size difference\n if (options.style !== options.parentStyle) {\n multiplier = options.style.sizeMultiplier /\n options.parentStyle.sizeMultiplier;\n\n groupNode.height *= multiplier;\n groupNode.depth *= multiplier;\n }\n\n // If the size changed between the parent and the current group, account\n // for that size difference.\n if (options.size !== options.parentSize) {\n multiplier = buildCommon.sizingMultiplier[options.size] /\n buildCommon.sizingMultiplier[options.parentSize];\n\n groupNode.height *= multiplier;\n groupNode.depth *= multiplier;\n }\n\n return groupNode;\n } else {\n throw new ParseError(\n \"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n\n/**\n * Take an entire parse tree, and build it into an appropriate set of HTML\n * nodes.\n */\nvar buildHTML = function(tree, options) {\n // buildExpression is destructive, so we need to make a clone\n // of the incoming tree so that it isn't accidentally changed\n tree = JSON.parse(JSON.stringify(tree));\n\n // Build the expression contained in the tree\n var expression = buildExpression(tree, options);\n var body = makeSpan([\"base\", options.style.cls()], expression);\n\n // Add struts, which ensure that the top of the HTML element falls at the\n // height of the expression, and the bottom of the HTML element falls at the\n // depth of the expression.\n var topStrut = makeSpan([\"strut\"]);\n var bottomStrut = makeSpan([\"strut\", \"bottom\"]);\n\n topStrut.style.height = body.height + \"em\";\n bottomStrut.style.height = (body.height + body.depth) + \"em\";\n // We'd like to use `vertical-align: top` but in IE 9 this lowers the\n // baseline of the box to the bottom of this strut (instead staying in the\n // normal place) so we use an absolute value for vertical-align instead\n bottomStrut.style.verticalAlign = -body.depth + \"em\";\n\n // Wrap the struts and body together\n var htmlNode = makeSpan([\"katex-html\"], [topStrut, bottomStrut, body]);\n\n htmlNode.setAttribute(\"aria-hidden\", \"true\");\n\n return htmlNode;\n};\n\nmodule.exports = buildHTML;\n","/**\n * This file converts a parse tree into a cooresponding MathML tree. The main\n * entry point is the `buildMathML` function, which takes a parse tree from the\n * parser.\n */\n\nvar buildCommon = require(\"./buildCommon\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar mathMLTree = require(\"./mathMLTree\");\nvar ParseError = require(\"./ParseError\");\nvar symbols = require(\"./symbols\");\nvar utils = require(\"./utils\");\n\nvar makeSpan = buildCommon.makeSpan;\nvar fontMap = buildCommon.fontMap;\n\n/**\n * Takes a symbol and converts it into a MathML text node after performing\n * optional replacement from symbols.js.\n */\nvar makeText = function(text, mode) {\n if (symbols[mode][text] && symbols[mode][text].replace) {\n text = symbols[mode][text].replace;\n }\n\n return new mathMLTree.TextNode(text);\n};\n\n/**\n * Returns the math variant as a string or null if none is required.\n */\nvar getVariant = function(group, options) {\n var font = options.font;\n if (!font) {\n return null;\n }\n\n var mode = group.mode;\n if (font === \"mathit\") {\n return \"italic\";\n }\n\n var value = group.value;\n if (utils.contains([\"\\\\imath\", \"\\\\jmath\"], value)) {\n return null;\n }\n\n if (symbols[mode][value] && symbols[mode][value].replace) {\n value = symbols[mode][value].replace;\n }\n\n var fontName = fontMap[font].fontName;\n if (fontMetrics.getCharacterMetrics(value, fontName)) {\n return fontMap[options.font].variant;\n }\n\n return null;\n};\n\n/**\n * Functions for handling the different types of groups found in the parse\n * tree. Each function should take a parse group and return a MathML node.\n */\nvar groupTypes = {};\n\ngroupTypes.mathord = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mi\",\n [makeText(group.value, group.mode)]);\n\n var variant = getVariant(group, options);\n if (variant) {\n node.setAttribute(\"mathvariant\", variant);\n }\n return node;\n};\n\ngroupTypes.textord = function(group, options) {\n var text = makeText(group.value, group.mode);\n\n var variant = getVariant(group, options) || \"normal\";\n\n var node;\n if (/[0-9]/.test(group.value)) {\n // TODO(kevinb) merge adjacent nodes\n // do it as a post processing step\n node = new mathMLTree.MathNode(\"mn\", [text]);\n if (options.font) {\n node.setAttribute(\"mathvariant\", variant);\n }\n } else {\n node = new mathMLTree.MathNode(\"mi\", [text]);\n node.setAttribute(\"mathvariant\", variant);\n }\n\n return node;\n};\n\ngroupTypes.bin = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.rel = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.open = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.close = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.inner = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.punct = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n node.setAttribute(\"separator\", \"true\");\n\n return node;\n};\n\ngroupTypes.ordgroup = function(group, options) {\n var inner = buildExpression(group.value, options);\n\n var node = new mathMLTree.MathNode(\"mrow\", inner);\n\n return node;\n};\n\ngroupTypes.text = function(group, options) {\n var inner = buildExpression(group.value.body, options);\n\n var node = new mathMLTree.MathNode(\"mtext\", inner);\n\n return node;\n};\n\ngroupTypes.color = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n\n var node = new mathMLTree.MathNode(\"mstyle\", inner);\n\n node.setAttribute(\"mathcolor\", group.value.color);\n\n return node;\n};\n\ngroupTypes.supsub = function(group, options) {\n var children = [buildGroup(group.value.base, options)];\n\n if (group.value.sub) {\n children.push(buildGroup(group.value.sub, options));\n }\n\n if (group.value.sup) {\n children.push(buildGroup(group.value.sup, options));\n }\n\n var nodeType;\n if (!group.value.sub) {\n nodeType = \"msup\";\n } else if (!group.value.sup) {\n nodeType = \"msub\";\n } else {\n nodeType = \"msubsup\";\n }\n\n var node = new mathMLTree.MathNode(nodeType, children);\n\n return node;\n};\n\ngroupTypes.genfrac = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mfrac\",\n [buildGroup(group.value.numer, options),\n buildGroup(group.value.denom, options)]);\n\n if (!group.value.hasBarLine) {\n node.setAttribute(\"linethickness\", \"0px\");\n }\n\n if (group.value.leftDelim != null || group.value.rightDelim != null) {\n var withDelims = [];\n\n if (group.value.leftDelim != null) {\n var leftOp = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(group.value.leftDelim)]);\n\n leftOp.setAttribute(\"fence\", \"true\");\n\n withDelims.push(leftOp);\n }\n\n withDelims.push(node);\n\n if (group.value.rightDelim != null) {\n var rightOp = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(group.value.rightDelim)]);\n\n rightOp.setAttribute(\"fence\", \"true\");\n\n withDelims.push(rightOp);\n }\n\n var outerNode = new mathMLTree.MathNode(\"mrow\", withDelims);\n\n return outerNode;\n }\n\n return node;\n};\n\ngroupTypes.array = function(group, options) {\n return new mathMLTree.MathNode(\n \"mtable\", group.value.body.map(function(row) {\n return new mathMLTree.MathNode(\n \"mtr\", row.map(function(cell) {\n return new mathMLTree.MathNode(\n \"mtd\", [buildGroup(cell, options)]);\n }));\n }));\n};\n\ngroupTypes.sqrt = function(group, options) {\n var node;\n if (group.value.index) {\n node = new mathMLTree.MathNode(\n \"mroot\", [\n buildGroup(group.value.body, options),\n buildGroup(group.value.index, options),\n ]);\n } else {\n node = new mathMLTree.MathNode(\n \"msqrt\", [buildGroup(group.value.body, options)]);\n }\n\n return node;\n};\n\ngroupTypes.leftright = function(group, options) {\n var inner = buildExpression(group.value.body, options);\n\n if (group.value.left !== \".\") {\n var leftNode = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.left, group.mode)]);\n\n leftNode.setAttribute(\"fence\", \"true\");\n\n inner.unshift(leftNode);\n }\n\n if (group.value.right !== \".\") {\n var rightNode = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.right, group.mode)]);\n\n rightNode.setAttribute(\"fence\", \"true\");\n\n inner.push(rightNode);\n }\n\n var outerNode = new mathMLTree.MathNode(\"mrow\", inner);\n\n return outerNode;\n};\n\ngroupTypes.accent = function(group, options) {\n var accentNode = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.accent, group.mode)]);\n\n var node = new mathMLTree.MathNode(\n \"mover\",\n [buildGroup(group.value.base, options),\n accentNode]);\n\n node.setAttribute(\"accent\", \"true\");\n\n return node;\n};\n\ngroupTypes.spacing = function(group) {\n var node;\n\n if (group.value === \"\\\\ \" || group.value === \"\\\\space\" ||\n group.value === \" \" || group.value === \"~\") {\n node = new mathMLTree.MathNode(\n \"mtext\", [new mathMLTree.TextNode(\"\\u00a0\")]);\n } else {\n node = new mathMLTree.MathNode(\"mspace\");\n\n node.setAttribute(\n \"width\", buildCommon.spacingFunctions[group.value].size);\n }\n\n return node;\n};\n\ngroupTypes.op = function(group) {\n var node;\n\n // TODO(emily): handle big operators using the `largeop` attribute\n\n if (group.value.symbol) {\n // This is a symbol. Just add the symbol.\n node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.body, group.mode)]);\n } else {\n // This is a text operator. Add all of the characters from the\n // operator's name.\n // TODO(emily): Add a space in the middle of some of these\n // operators, like \\limsup.\n node = new mathMLTree.MathNode(\n \"mi\", [new mathMLTree.TextNode(group.value.body.slice(1))]);\n }\n\n return node;\n};\n\ngroupTypes.katex = function(group) {\n var node = new mathMLTree.MathNode(\n \"mtext\", [new mathMLTree.TextNode(\"KaTeX\")]);\n\n return node;\n};\n\ngroupTypes.font = function(group, options) {\n var font = group.value.font;\n return buildGroup(group.value.body, options.withFont(font));\n};\n\ngroupTypes.delimsizing = function(group) {\n var children = [];\n\n if (group.value.value !== \".\") {\n children.push(makeText(group.value.value, group.mode));\n }\n\n var node = new mathMLTree.MathNode(\"mo\", children);\n\n if (group.value.delimType === \"open\" ||\n group.value.delimType === \"close\") {\n // Only some of the delimsizing functions act as fences, and they\n // return \"open\" or \"close\" delimTypes.\n node.setAttribute(\"fence\", \"true\");\n } else {\n // Explicitly disable fencing if it's not a fence, to override the\n // defaults.\n node.setAttribute(\"fence\", \"false\");\n }\n\n return node;\n};\n\ngroupTypes.styling = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n\n var node = new mathMLTree.MathNode(\"mstyle\", inner);\n\n var styleAttributes = {\n \"display\": [\"0\", \"true\"],\n \"text\": [\"0\", \"false\"],\n \"script\": [\"1\", \"false\"],\n \"scriptscript\": [\"2\", \"false\"],\n };\n\n var attr = styleAttributes[group.value.style];\n\n node.setAttribute(\"scriptlevel\", attr[0]);\n node.setAttribute(\"displaystyle\", attr[1]);\n\n return node;\n};\n\ngroupTypes.sizing = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n\n var node = new mathMLTree.MathNode(\"mstyle\", inner);\n\n // TODO(emily): This doesn't produce the correct size for nested size\n // changes, because we don't keep state of what style we're currently\n // in, so we can't reset the size to normal before changing it. Now\n // that we're passing an options parameter we should be able to fix\n // this.\n node.setAttribute(\n \"mathsize\", buildCommon.sizingMultiplier[group.value.size] + \"em\");\n\n return node;\n};\n\ngroupTypes.overline = function(group, options) {\n var operator = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n\n var node = new mathMLTree.MathNode(\n \"mover\",\n [buildGroup(group.value.body, options),\n operator]);\n node.setAttribute(\"accent\", \"true\");\n\n return node;\n};\n\ngroupTypes.underline = function(group, options) {\n var operator = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n\n var node = new mathMLTree.MathNode(\n \"munder\",\n [buildGroup(group.value.body, options),\n operator]);\n node.setAttribute(\"accentunder\", \"true\");\n\n return node;\n};\n\ngroupTypes.rule = function(group) {\n // TODO(emily): Figure out if there's an actual way to draw black boxes\n // in MathML.\n var node = new mathMLTree.MathNode(\"mrow\");\n\n return node;\n};\n\ngroupTypes.llap = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mpadded\", [buildGroup(group.value.body, options)]);\n\n node.setAttribute(\"lspace\", \"-1width\");\n node.setAttribute(\"width\", \"0px\");\n\n return node;\n};\n\ngroupTypes.rlap = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mpadded\", [buildGroup(group.value.body, options)]);\n\n node.setAttribute(\"width\", \"0px\");\n\n return node;\n};\n\ngroupTypes.phantom = function(group, options, prev) {\n var inner = buildExpression(group.value.value, options);\n return new mathMLTree.MathNode(\"mphantom\", inner);\n};\n\n/**\n * Takes a list of nodes, builds them, and returns a list of the generated\n * MathML nodes. A little simpler than the HTML version because we don't do any\n * previous-node handling.\n */\nvar buildExpression = function(expression, options) {\n var groups = [];\n for (var i = 0; i < expression.length; i++) {\n var group = expression[i];\n groups.push(buildGroup(group, options));\n }\n return groups;\n};\n\n/**\n * Takes a group from the parser and calls the appropriate groupTypes function\n * on it to produce a MathML node.\n */\nvar buildGroup = function(group, options) {\n if (!group) {\n return new mathMLTree.MathNode(\"mrow\");\n }\n\n if (groupTypes[group.type]) {\n // Call the groupTypes function\n return groupTypes[group.type](group, options);\n } else {\n throw new ParseError(\n \"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n\n/**\n * Takes a full parse tree and settings and builds a MathML representation of\n * it. In particular, we put the elements from building the parse tree into a\n * tag so we can also include that TeX source as an annotation.\n *\n * Note that we actually return a domTree element with a `