In pycodestyle 2.1.0, E305 was introduced, which requires two blank lines after top level declarations, too. See https://github.com/PyCQA/pycodestyle/issues/400 See also #10689; thanks @stepshal for first mentioning this issue and initial patches
		
			
				
	
	
		
			2908 lines
		
	
	
		
			86 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			2908 lines
		
	
	
		
			86 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# coding: utf-8
 | 
						|
from __future__ import unicode_literals
 | 
						|
 | 
						|
import binascii
 | 
						|
import collections
 | 
						|
import email
 | 
						|
import getpass
 | 
						|
import io
 | 
						|
import optparse
 | 
						|
import os
 | 
						|
import re
 | 
						|
import shlex
 | 
						|
import shutil
 | 
						|
import socket
 | 
						|
import struct
 | 
						|
import subprocess
 | 
						|
import sys
 | 
						|
import itertools
 | 
						|
import xml.etree.ElementTree
 | 
						|
 | 
						|
 | 
						|
try:
 | 
						|
    import urllib.request as compat_urllib_request
 | 
						|
except ImportError:  # Python 2
 | 
						|
    import urllib2 as compat_urllib_request
 | 
						|
 | 
						|
try:
 | 
						|
    import urllib.error as compat_urllib_error
 | 
						|
except ImportError:  # Python 2
 | 
						|
    import urllib2 as compat_urllib_error
 | 
						|
 | 
						|
try:
 | 
						|
    import urllib.parse as compat_urllib_parse
 | 
						|
except ImportError:  # Python 2
 | 
						|
    import urllib as compat_urllib_parse
 | 
						|
 | 
						|
try:
 | 
						|
    from urllib.parse import urlparse as compat_urllib_parse_urlparse
 | 
						|
except ImportError:  # Python 2
 | 
						|
    from urlparse import urlparse as compat_urllib_parse_urlparse
 | 
						|
 | 
						|
try:
 | 
						|
    import urllib.parse as compat_urlparse
 | 
						|
except ImportError:  # Python 2
 | 
						|
    import urlparse as compat_urlparse
 | 
						|
 | 
						|
try:
 | 
						|
    import urllib.response as compat_urllib_response
 | 
						|
except ImportError:  # Python 2
 | 
						|
    import urllib as compat_urllib_response
 | 
						|
 | 
						|
try:
 | 
						|
    import http.cookiejar as compat_cookiejar
 | 
						|
except ImportError:  # Python 2
 | 
						|
    import cookielib as compat_cookiejar
 | 
						|
 | 
						|
try:
 | 
						|
    import http.cookies as compat_cookies
 | 
						|
except ImportError:  # Python 2
 | 
						|
    import Cookie as compat_cookies
 | 
						|
 | 
						|
try:
 | 
						|
    import html.entities as compat_html_entities
 | 
						|
except ImportError:  # Python 2
 | 
						|
    import htmlentitydefs as compat_html_entities
 | 
						|
 | 
						|
try:  # Python >= 3.3
 | 
						|
    compat_html_entities_html5 = compat_html_entities.html5
 | 
						|
except AttributeError:
 | 
						|
    # Copied from CPython 3.5.1 html/entities.py
 | 
						|
    compat_html_entities_html5 = {
 | 
						|
        'Aacute': '\xc1',
 | 
						|
        'aacute': '\xe1',
 | 
						|
        'Aacute;': '\xc1',
 | 
						|
        'aacute;': '\xe1',
 | 
						|
        'Abreve;': '\u0102',
 | 
						|
        'abreve;': '\u0103',
 | 
						|
        'ac;': '\u223e',
 | 
						|
        'acd;': '\u223f',
 | 
						|
        'acE;': '\u223e\u0333',
 | 
						|
        'Acirc': '\xc2',
 | 
						|
        'acirc': '\xe2',
 | 
						|
        'Acirc;': '\xc2',
 | 
						|
        'acirc;': '\xe2',
 | 
						|
        'acute': '\xb4',
 | 
						|
        'acute;': '\xb4',
 | 
						|
        'Acy;': '\u0410',
 | 
						|
        'acy;': '\u0430',
 | 
						|
        'AElig': '\xc6',
 | 
						|
        'aelig': '\xe6',
 | 
						|
        'AElig;': '\xc6',
 | 
						|
        'aelig;': '\xe6',
 | 
						|
        'af;': '\u2061',
 | 
						|
        'Afr;': '\U0001d504',
 | 
						|
        'afr;': '\U0001d51e',
 | 
						|
        'Agrave': '\xc0',
 | 
						|
        'agrave': '\xe0',
 | 
						|
        'Agrave;': '\xc0',
 | 
						|
        'agrave;': '\xe0',
 | 
						|
        'alefsym;': '\u2135',
 | 
						|
        'aleph;': '\u2135',
 | 
						|
        'Alpha;': '\u0391',
 | 
						|
        'alpha;': '\u03b1',
 | 
						|
        'Amacr;': '\u0100',
 | 
						|
        'amacr;': '\u0101',
 | 
						|
        'amalg;': '\u2a3f',
 | 
						|
        'AMP': '&',
 | 
						|
        'amp': '&',
 | 
						|
        'AMP;': '&',
 | 
						|
        'amp;': '&',
 | 
						|
        'And;': '\u2a53',
 | 
						|
        'and;': '\u2227',
 | 
						|
        'andand;': '\u2a55',
 | 
						|
        'andd;': '\u2a5c',
 | 
						|
        'andslope;': '\u2a58',
 | 
						|
        'andv;': '\u2a5a',
 | 
						|
        'ang;': '\u2220',
 | 
						|
        'ange;': '\u29a4',
 | 
						|
        'angle;': '\u2220',
 | 
						|
        'angmsd;': '\u2221',
 | 
						|
        'angmsdaa;': '\u29a8',
 | 
						|
        'angmsdab;': '\u29a9',
 | 
						|
        'angmsdac;': '\u29aa',
 | 
						|
        'angmsdad;': '\u29ab',
 | 
						|
        'angmsdae;': '\u29ac',
 | 
						|
        'angmsdaf;': '\u29ad',
 | 
						|
        'angmsdag;': '\u29ae',
 | 
						|
        'angmsdah;': '\u29af',
 | 
						|
        'angrt;': '\u221f',
 | 
						|
        'angrtvb;': '\u22be',
 | 
						|
        'angrtvbd;': '\u299d',
 | 
						|
        'angsph;': '\u2222',
 | 
						|
        'angst;': '\xc5',
 | 
						|
        'angzarr;': '\u237c',
 | 
						|
        'Aogon;': '\u0104',
 | 
						|
        'aogon;': '\u0105',
 | 
						|
        'Aopf;': '\U0001d538',
 | 
						|
        'aopf;': '\U0001d552',
 | 
						|
        'ap;': '\u2248',
 | 
						|
        'apacir;': '\u2a6f',
 | 
						|
        'apE;': '\u2a70',
 | 
						|
        'ape;': '\u224a',
 | 
						|
        'apid;': '\u224b',
 | 
						|
        'apos;': "'",
 | 
						|
        'ApplyFunction;': '\u2061',
 | 
						|
        'approx;': '\u2248',
 | 
						|
        'approxeq;': '\u224a',
 | 
						|
        'Aring': '\xc5',
 | 
						|
        'aring': '\xe5',
 | 
						|
        'Aring;': '\xc5',
 | 
						|
        'aring;': '\xe5',
 | 
						|
        'Ascr;': '\U0001d49c',
 | 
						|
        'ascr;': '\U0001d4b6',
 | 
						|
        'Assign;': '\u2254',
 | 
						|
        'ast;': '*',
 | 
						|
        'asymp;': '\u2248',
 | 
						|
        'asympeq;': '\u224d',
 | 
						|
        'Atilde': '\xc3',
 | 
						|
        'atilde': '\xe3',
 | 
						|
        'Atilde;': '\xc3',
 | 
						|
        'atilde;': '\xe3',
 | 
						|
        'Auml': '\xc4',
 | 
						|
        'auml': '\xe4',
 | 
						|
        'Auml;': '\xc4',
 | 
						|
        'auml;': '\xe4',
 | 
						|
        'awconint;': '\u2233',
 | 
						|
        'awint;': '\u2a11',
 | 
						|
        'backcong;': '\u224c',
 | 
						|
        'backepsilon;': '\u03f6',
 | 
						|
        'backprime;': '\u2035',
 | 
						|
        'backsim;': '\u223d',
 | 
						|
        'backsimeq;': '\u22cd',
 | 
						|
        'Backslash;': '\u2216',
 | 
						|
        'Barv;': '\u2ae7',
 | 
						|
        'barvee;': '\u22bd',
 | 
						|
        'Barwed;': '\u2306',
 | 
						|
        'barwed;': '\u2305',
 | 
						|
        'barwedge;': '\u2305',
 | 
						|
        'bbrk;': '\u23b5',
 | 
						|
        'bbrktbrk;': '\u23b6',
 | 
						|
        'bcong;': '\u224c',
 | 
						|
        'Bcy;': '\u0411',
 | 
						|
        'bcy;': '\u0431',
 | 
						|
        'bdquo;': '\u201e',
 | 
						|
        'becaus;': '\u2235',
 | 
						|
        'Because;': '\u2235',
 | 
						|
        'because;': '\u2235',
 | 
						|
        'bemptyv;': '\u29b0',
 | 
						|
        'bepsi;': '\u03f6',
 | 
						|
        'bernou;': '\u212c',
 | 
						|
        'Bernoullis;': '\u212c',
 | 
						|
        'Beta;': '\u0392',
 | 
						|
        'beta;': '\u03b2',
 | 
						|
        'beth;': '\u2136',
 | 
						|
        'between;': '\u226c',
 | 
						|
        'Bfr;': '\U0001d505',
 | 
						|
        'bfr;': '\U0001d51f',
 | 
						|
        'bigcap;': '\u22c2',
 | 
						|
        'bigcirc;': '\u25ef',
 | 
						|
        'bigcup;': '\u22c3',
 | 
						|
        'bigodot;': '\u2a00',
 | 
						|
        'bigoplus;': '\u2a01',
 | 
						|
        'bigotimes;': '\u2a02',
 | 
						|
        'bigsqcup;': '\u2a06',
 | 
						|
        'bigstar;': '\u2605',
 | 
						|
        'bigtriangledown;': '\u25bd',
 | 
						|
        'bigtriangleup;': '\u25b3',
 | 
						|
        'biguplus;': '\u2a04',
 | 
						|
        'bigvee;': '\u22c1',
 | 
						|
        'bigwedge;': '\u22c0',
 | 
						|
        'bkarow;': '\u290d',
 | 
						|
        'blacklozenge;': '\u29eb',
 | 
						|
        'blacksquare;': '\u25aa',
 | 
						|
        'blacktriangle;': '\u25b4',
 | 
						|
        'blacktriangledown;': '\u25be',
 | 
						|
        'blacktriangleleft;': '\u25c2',
 | 
						|
        'blacktriangleright;': '\u25b8',
 | 
						|
        'blank;': '\u2423',
 | 
						|
        'blk12;': '\u2592',
 | 
						|
        'blk14;': '\u2591',
 | 
						|
        'blk34;': '\u2593',
 | 
						|
        'block;': '\u2588',
 | 
						|
        'bne;': '=\u20e5',
 | 
						|
        'bnequiv;': '\u2261\u20e5',
 | 
						|
        'bNot;': '\u2aed',
 | 
						|
        'bnot;': '\u2310',
 | 
						|
        'Bopf;': '\U0001d539',
 | 
						|
        'bopf;': '\U0001d553',
 | 
						|
        'bot;': '\u22a5',
 | 
						|
        'bottom;': '\u22a5',
 | 
						|
        'bowtie;': '\u22c8',
 | 
						|
        'boxbox;': '\u29c9',
 | 
						|
        'boxDL;': '\u2557',
 | 
						|
        'boxDl;': '\u2556',
 | 
						|
        'boxdL;': '\u2555',
 | 
						|
        'boxdl;': '\u2510',
 | 
						|
        'boxDR;': '\u2554',
 | 
						|
        'boxDr;': '\u2553',
 | 
						|
        'boxdR;': '\u2552',
 | 
						|
        'boxdr;': '\u250c',
 | 
						|
        'boxH;': '\u2550',
 | 
						|
        'boxh;': '\u2500',
 | 
						|
        'boxHD;': '\u2566',
 | 
						|
        'boxHd;': '\u2564',
 | 
						|
        'boxhD;': '\u2565',
 | 
						|
        'boxhd;': '\u252c',
 | 
						|
        'boxHU;': '\u2569',
 | 
						|
        'boxHu;': '\u2567',
 | 
						|
        'boxhU;': '\u2568',
 | 
						|
        'boxhu;': '\u2534',
 | 
						|
        'boxminus;': '\u229f',
 | 
						|
        'boxplus;': '\u229e',
 | 
						|
        'boxtimes;': '\u22a0',
 | 
						|
        'boxUL;': '\u255d',
 | 
						|
        'boxUl;': '\u255c',
 | 
						|
        'boxuL;': '\u255b',
 | 
						|
        'boxul;': '\u2518',
 | 
						|
        'boxUR;': '\u255a',
 | 
						|
        'boxUr;': '\u2559',
 | 
						|
        'boxuR;': '\u2558',
 | 
						|
        'boxur;': '\u2514',
 | 
						|
        'boxV;': '\u2551',
 | 
						|
        'boxv;': '\u2502',
 | 
						|
        'boxVH;': '\u256c',
 | 
						|
        'boxVh;': '\u256b',
 | 
						|
        'boxvH;': '\u256a',
 | 
						|
        'boxvh;': '\u253c',
 | 
						|
        'boxVL;': '\u2563',
 | 
						|
        'boxVl;': '\u2562',
 | 
						|
        'boxvL;': '\u2561',
 | 
						|
        'boxvl;': '\u2524',
 | 
						|
        'boxVR;': '\u2560',
 | 
						|
        'boxVr;': '\u255f',
 | 
						|
        'boxvR;': '\u255e',
 | 
						|
        'boxvr;': '\u251c',
 | 
						|
        'bprime;': '\u2035',
 | 
						|
        'Breve;': '\u02d8',
 | 
						|
        'breve;': '\u02d8',
 | 
						|
        'brvbar': '\xa6',
 | 
						|
        'brvbar;': '\xa6',
 | 
						|
        'Bscr;': '\u212c',
 | 
						|
        'bscr;': '\U0001d4b7',
 | 
						|
        'bsemi;': '\u204f',
 | 
						|
        'bsim;': '\u223d',
 | 
						|
        'bsime;': '\u22cd',
 | 
						|
        'bsol;': '\\',
 | 
						|
        'bsolb;': '\u29c5',
 | 
						|
        'bsolhsub;': '\u27c8',
 | 
						|
        'bull;': '\u2022',
 | 
						|
        'bullet;': '\u2022',
 | 
						|
        'bump;': '\u224e',
 | 
						|
        'bumpE;': '\u2aae',
 | 
						|
        'bumpe;': '\u224f',
 | 
						|
        'Bumpeq;': '\u224e',
 | 
						|
        'bumpeq;': '\u224f',
 | 
						|
        'Cacute;': '\u0106',
 | 
						|
        'cacute;': '\u0107',
 | 
						|
        'Cap;': '\u22d2',
 | 
						|
        'cap;': '\u2229',
 | 
						|
        'capand;': '\u2a44',
 | 
						|
        'capbrcup;': '\u2a49',
 | 
						|
        'capcap;': '\u2a4b',
 | 
						|
        'capcup;': '\u2a47',
 | 
						|
        'capdot;': '\u2a40',
 | 
						|
        'CapitalDifferentialD;': '\u2145',
 | 
						|
        'caps;': '\u2229\ufe00',
 | 
						|
        'caret;': '\u2041',
 | 
						|
        'caron;': '\u02c7',
 | 
						|
        'Cayleys;': '\u212d',
 | 
						|
        'ccaps;': '\u2a4d',
 | 
						|
        'Ccaron;': '\u010c',
 | 
						|
        'ccaron;': '\u010d',
 | 
						|
        'Ccedil': '\xc7',
 | 
						|
        'ccedil': '\xe7',
 | 
						|
        'Ccedil;': '\xc7',
 | 
						|
        'ccedil;': '\xe7',
 | 
						|
        'Ccirc;': '\u0108',
 | 
						|
        'ccirc;': '\u0109',
 | 
						|
        'Cconint;': '\u2230',
 | 
						|
        'ccups;': '\u2a4c',
 | 
						|
        'ccupssm;': '\u2a50',
 | 
						|
        'Cdot;': '\u010a',
 | 
						|
        'cdot;': '\u010b',
 | 
						|
        'cedil': '\xb8',
 | 
						|
        'cedil;': '\xb8',
 | 
						|
        'Cedilla;': '\xb8',
 | 
						|
        'cemptyv;': '\u29b2',
 | 
						|
        'cent': '\xa2',
 | 
						|
        'cent;': '\xa2',
 | 
						|
        'CenterDot;': '\xb7',
 | 
						|
        'centerdot;': '\xb7',
 | 
						|
        'Cfr;': '\u212d',
 | 
						|
        'cfr;': '\U0001d520',
 | 
						|
        'CHcy;': '\u0427',
 | 
						|
        'chcy;': '\u0447',
 | 
						|
        'check;': '\u2713',
 | 
						|
        'checkmark;': '\u2713',
 | 
						|
        'Chi;': '\u03a7',
 | 
						|
        'chi;': '\u03c7',
 | 
						|
        'cir;': '\u25cb',
 | 
						|
        'circ;': '\u02c6',
 | 
						|
        'circeq;': '\u2257',
 | 
						|
        'circlearrowleft;': '\u21ba',
 | 
						|
        'circlearrowright;': '\u21bb',
 | 
						|
        'circledast;': '\u229b',
 | 
						|
        'circledcirc;': '\u229a',
 | 
						|
        'circleddash;': '\u229d',
 | 
						|
        'CircleDot;': '\u2299',
 | 
						|
        'circledR;': '\xae',
 | 
						|
        'circledS;': '\u24c8',
 | 
						|
        'CircleMinus;': '\u2296',
 | 
						|
        'CirclePlus;': '\u2295',
 | 
						|
        'CircleTimes;': '\u2297',
 | 
						|
        'cirE;': '\u29c3',
 | 
						|
        'cire;': '\u2257',
 | 
						|
        'cirfnint;': '\u2a10',
 | 
						|
        'cirmid;': '\u2aef',
 | 
						|
        'cirscir;': '\u29c2',
 | 
						|
        'ClockwiseContourIntegral;': '\u2232',
 | 
						|
        'CloseCurlyDoubleQuote;': '\u201d',
 | 
						|
        'CloseCurlyQuote;': '\u2019',
 | 
						|
        'clubs;': '\u2663',
 | 
						|
        'clubsuit;': '\u2663',
 | 
						|
        'Colon;': '\u2237',
 | 
						|
        'colon;': ':',
 | 
						|
        'Colone;': '\u2a74',
 | 
						|
        'colone;': '\u2254',
 | 
						|
        'coloneq;': '\u2254',
 | 
						|
        'comma;': ',',
 | 
						|
        'commat;': '@',
 | 
						|
        'comp;': '\u2201',
 | 
						|
        'compfn;': '\u2218',
 | 
						|
        'complement;': '\u2201',
 | 
						|
        'complexes;': '\u2102',
 | 
						|
        'cong;': '\u2245',
 | 
						|
        'congdot;': '\u2a6d',
 | 
						|
        'Congruent;': '\u2261',
 | 
						|
        'Conint;': '\u222f',
 | 
						|
        'conint;': '\u222e',
 | 
						|
        'ContourIntegral;': '\u222e',
 | 
						|
        'Copf;': '\u2102',
 | 
						|
        'copf;': '\U0001d554',
 | 
						|
        'coprod;': '\u2210',
 | 
						|
        'Coproduct;': '\u2210',
 | 
						|
        'COPY': '\xa9',
 | 
						|
        'copy': '\xa9',
 | 
						|
        'COPY;': '\xa9',
 | 
						|
        'copy;': '\xa9',
 | 
						|
        'copysr;': '\u2117',
 | 
						|
        'CounterClockwiseContourIntegral;': '\u2233',
 | 
						|
        'crarr;': '\u21b5',
 | 
						|
        'Cross;': '\u2a2f',
 | 
						|
        'cross;': '\u2717',
 | 
						|
        'Cscr;': '\U0001d49e',
 | 
						|
        'cscr;': '\U0001d4b8',
 | 
						|
        'csub;': '\u2acf',
 | 
						|
        'csube;': '\u2ad1',
 | 
						|
        'csup;': '\u2ad0',
 | 
						|
        'csupe;': '\u2ad2',
 | 
						|
        'ctdot;': '\u22ef',
 | 
						|
        'cudarrl;': '\u2938',
 | 
						|
        'cudarrr;': '\u2935',
 | 
						|
        'cuepr;': '\u22de',
 | 
						|
        'cuesc;': '\u22df',
 | 
						|
        'cularr;': '\u21b6',
 | 
						|
        'cularrp;': '\u293d',
 | 
						|
        'Cup;': '\u22d3',
 | 
						|
        'cup;': '\u222a',
 | 
						|
        'cupbrcap;': '\u2a48',
 | 
						|
        'CupCap;': '\u224d',
 | 
						|
        'cupcap;': '\u2a46',
 | 
						|
        'cupcup;': '\u2a4a',
 | 
						|
        'cupdot;': '\u228d',
 | 
						|
        'cupor;': '\u2a45',
 | 
						|
        'cups;': '\u222a\ufe00',
 | 
						|
        'curarr;': '\u21b7',
 | 
						|
        'curarrm;': '\u293c',
 | 
						|
        'curlyeqprec;': '\u22de',
 | 
						|
        'curlyeqsucc;': '\u22df',
 | 
						|
        'curlyvee;': '\u22ce',
 | 
						|
        'curlywedge;': '\u22cf',
 | 
						|
        'curren': '\xa4',
 | 
						|
        'curren;': '\xa4',
 | 
						|
        'curvearrowleft;': '\u21b6',
 | 
						|
        'curvearrowright;': '\u21b7',
 | 
						|
        'cuvee;': '\u22ce',
 | 
						|
        'cuwed;': '\u22cf',
 | 
						|
        'cwconint;': '\u2232',
 | 
						|
        'cwint;': '\u2231',
 | 
						|
        'cylcty;': '\u232d',
 | 
						|
        'Dagger;': '\u2021',
 | 
						|
        'dagger;': '\u2020',
 | 
						|
        'daleth;': '\u2138',
 | 
						|
        'Darr;': '\u21a1',
 | 
						|
        'dArr;': '\u21d3',
 | 
						|
        'darr;': '\u2193',
 | 
						|
        'dash;': '\u2010',
 | 
						|
        'Dashv;': '\u2ae4',
 | 
						|
        'dashv;': '\u22a3',
 | 
						|
        'dbkarow;': '\u290f',
 | 
						|
        'dblac;': '\u02dd',
 | 
						|
        'Dcaron;': '\u010e',
 | 
						|
        'dcaron;': '\u010f',
 | 
						|
        'Dcy;': '\u0414',
 | 
						|
        'dcy;': '\u0434',
 | 
						|
        'DD;': '\u2145',
 | 
						|
        'dd;': '\u2146',
 | 
						|
        'ddagger;': '\u2021',
 | 
						|
        'ddarr;': '\u21ca',
 | 
						|
        'DDotrahd;': '\u2911',
 | 
						|
        'ddotseq;': '\u2a77',
 | 
						|
        'deg': '\xb0',
 | 
						|
        'deg;': '\xb0',
 | 
						|
        'Del;': '\u2207',
 | 
						|
        'Delta;': '\u0394',
 | 
						|
        'delta;': '\u03b4',
 | 
						|
        'demptyv;': '\u29b1',
 | 
						|
        'dfisht;': '\u297f',
 | 
						|
        'Dfr;': '\U0001d507',
 | 
						|
        'dfr;': '\U0001d521',
 | 
						|
        'dHar;': '\u2965',
 | 
						|
        'dharl;': '\u21c3',
 | 
						|
        'dharr;': '\u21c2',
 | 
						|
        'DiacriticalAcute;': '\xb4',
 | 
						|
        'DiacriticalDot;': '\u02d9',
 | 
						|
        'DiacriticalDoubleAcute;': '\u02dd',
 | 
						|
        'DiacriticalGrave;': '`',
 | 
						|
        'DiacriticalTilde;': '\u02dc',
 | 
						|
        'diam;': '\u22c4',
 | 
						|
        'Diamond;': '\u22c4',
 | 
						|
        'diamond;': '\u22c4',
 | 
						|
        'diamondsuit;': '\u2666',
 | 
						|
        'diams;': '\u2666',
 | 
						|
        'die;': '\xa8',
 | 
						|
        'DifferentialD;': '\u2146',
 | 
						|
        'digamma;': '\u03dd',
 | 
						|
        'disin;': '\u22f2',
 | 
						|
        'div;': '\xf7',
 | 
						|
        'divide': '\xf7',
 | 
						|
        'divide;': '\xf7',
 | 
						|
        'divideontimes;': '\u22c7',
 | 
						|
        'divonx;': '\u22c7',
 | 
						|
        'DJcy;': '\u0402',
 | 
						|
        'djcy;': '\u0452',
 | 
						|
        'dlcorn;': '\u231e',
 | 
						|
        'dlcrop;': '\u230d',
 | 
						|
        'dollar;': '$',
 | 
						|
        'Dopf;': '\U0001d53b',
 | 
						|
        'dopf;': '\U0001d555',
 | 
						|
        'Dot;': '\xa8',
 | 
						|
        'dot;': '\u02d9',
 | 
						|
        'DotDot;': '\u20dc',
 | 
						|
        'doteq;': '\u2250',
 | 
						|
        'doteqdot;': '\u2251',
 | 
						|
        'DotEqual;': '\u2250',
 | 
						|
        'dotminus;': '\u2238',
 | 
						|
        'dotplus;': '\u2214',
 | 
						|
        'dotsquare;': '\u22a1',
 | 
						|
        'doublebarwedge;': '\u2306',
 | 
						|
        'DoubleContourIntegral;': '\u222f',
 | 
						|
        'DoubleDot;': '\xa8',
 | 
						|
        'DoubleDownArrow;': '\u21d3',
 | 
						|
        'DoubleLeftArrow;': '\u21d0',
 | 
						|
        'DoubleLeftRightArrow;': '\u21d4',
 | 
						|
        'DoubleLeftTee;': '\u2ae4',
 | 
						|
        'DoubleLongLeftArrow;': '\u27f8',
 | 
						|
        'DoubleLongLeftRightArrow;': '\u27fa',
 | 
						|
        'DoubleLongRightArrow;': '\u27f9',
 | 
						|
        'DoubleRightArrow;': '\u21d2',
 | 
						|
        'DoubleRightTee;': '\u22a8',
 | 
						|
        'DoubleUpArrow;': '\u21d1',
 | 
						|
        'DoubleUpDownArrow;': '\u21d5',
 | 
						|
        'DoubleVerticalBar;': '\u2225',
 | 
						|
        'DownArrow;': '\u2193',
 | 
						|
        'Downarrow;': '\u21d3',
 | 
						|
        'downarrow;': '\u2193',
 | 
						|
        'DownArrowBar;': '\u2913',
 | 
						|
        'DownArrowUpArrow;': '\u21f5',
 | 
						|
        'DownBreve;': '\u0311',
 | 
						|
        'downdownarrows;': '\u21ca',
 | 
						|
        'downharpoonleft;': '\u21c3',
 | 
						|
        'downharpoonright;': '\u21c2',
 | 
						|
        'DownLeftRightVector;': '\u2950',
 | 
						|
        'DownLeftTeeVector;': '\u295e',
 | 
						|
        'DownLeftVector;': '\u21bd',
 | 
						|
        'DownLeftVectorBar;': '\u2956',
 | 
						|
        'DownRightTeeVector;': '\u295f',
 | 
						|
        'DownRightVector;': '\u21c1',
 | 
						|
        'DownRightVectorBar;': '\u2957',
 | 
						|
        'DownTee;': '\u22a4',
 | 
						|
        'DownTeeArrow;': '\u21a7',
 | 
						|
        'drbkarow;': '\u2910',
 | 
						|
        'drcorn;': '\u231f',
 | 
						|
        'drcrop;': '\u230c',
 | 
						|
        'Dscr;': '\U0001d49f',
 | 
						|
        'dscr;': '\U0001d4b9',
 | 
						|
        'DScy;': '\u0405',
 | 
						|
        'dscy;': '\u0455',
 | 
						|
        'dsol;': '\u29f6',
 | 
						|
        'Dstrok;': '\u0110',
 | 
						|
        'dstrok;': '\u0111',
 | 
						|
        'dtdot;': '\u22f1',
 | 
						|
        'dtri;': '\u25bf',
 | 
						|
        'dtrif;': '\u25be',
 | 
						|
        'duarr;': '\u21f5',
 | 
						|
        'duhar;': '\u296f',
 | 
						|
        'dwangle;': '\u29a6',
 | 
						|
        'DZcy;': '\u040f',
 | 
						|
        'dzcy;': '\u045f',
 | 
						|
        'dzigrarr;': '\u27ff',
 | 
						|
        'Eacute': '\xc9',
 | 
						|
        'eacute': '\xe9',
 | 
						|
        'Eacute;': '\xc9',
 | 
						|
        'eacute;': '\xe9',
 | 
						|
        'easter;': '\u2a6e',
 | 
						|
        'Ecaron;': '\u011a',
 | 
						|
        'ecaron;': '\u011b',
 | 
						|
        'ecir;': '\u2256',
 | 
						|
        'Ecirc': '\xca',
 | 
						|
        'ecirc': '\xea',
 | 
						|
        'Ecirc;': '\xca',
 | 
						|
        'ecirc;': '\xea',
 | 
						|
        'ecolon;': '\u2255',
 | 
						|
        'Ecy;': '\u042d',
 | 
						|
        'ecy;': '\u044d',
 | 
						|
        'eDDot;': '\u2a77',
 | 
						|
        'Edot;': '\u0116',
 | 
						|
        'eDot;': '\u2251',
 | 
						|
        'edot;': '\u0117',
 | 
						|
        'ee;': '\u2147',
 | 
						|
        'efDot;': '\u2252',
 | 
						|
        'Efr;': '\U0001d508',
 | 
						|
        'efr;': '\U0001d522',
 | 
						|
        'eg;': '\u2a9a',
 | 
						|
        'Egrave': '\xc8',
 | 
						|
        'egrave': '\xe8',
 | 
						|
        'Egrave;': '\xc8',
 | 
						|
        'egrave;': '\xe8',
 | 
						|
        'egs;': '\u2a96',
 | 
						|
        'egsdot;': '\u2a98',
 | 
						|
        'el;': '\u2a99',
 | 
						|
        'Element;': '\u2208',
 | 
						|
        'elinters;': '\u23e7',
 | 
						|
        'ell;': '\u2113',
 | 
						|
        'els;': '\u2a95',
 | 
						|
        'elsdot;': '\u2a97',
 | 
						|
        'Emacr;': '\u0112',
 | 
						|
        'emacr;': '\u0113',
 | 
						|
        'empty;': '\u2205',
 | 
						|
        'emptyset;': '\u2205',
 | 
						|
        'EmptySmallSquare;': '\u25fb',
 | 
						|
        'emptyv;': '\u2205',
 | 
						|
        'EmptyVerySmallSquare;': '\u25ab',
 | 
						|
        'emsp13;': '\u2004',
 | 
						|
        'emsp14;': '\u2005',
 | 
						|
        'emsp;': '\u2003',
 | 
						|
        'ENG;': '\u014a',
 | 
						|
        'eng;': '\u014b',
 | 
						|
        'ensp;': '\u2002',
 | 
						|
        'Eogon;': '\u0118',
 | 
						|
        'eogon;': '\u0119',
 | 
						|
        'Eopf;': '\U0001d53c',
 | 
						|
        'eopf;': '\U0001d556',
 | 
						|
        'epar;': '\u22d5',
 | 
						|
        'eparsl;': '\u29e3',
 | 
						|
        'eplus;': '\u2a71',
 | 
						|
        'epsi;': '\u03b5',
 | 
						|
        'Epsilon;': '\u0395',
 | 
						|
        'epsilon;': '\u03b5',
 | 
						|
        'epsiv;': '\u03f5',
 | 
						|
        'eqcirc;': '\u2256',
 | 
						|
        'eqcolon;': '\u2255',
 | 
						|
        'eqsim;': '\u2242',
 | 
						|
        'eqslantgtr;': '\u2a96',
 | 
						|
        'eqslantless;': '\u2a95',
 | 
						|
        'Equal;': '\u2a75',
 | 
						|
        'equals;': '=',
 | 
						|
        'EqualTilde;': '\u2242',
 | 
						|
        'equest;': '\u225f',
 | 
						|
        'Equilibrium;': '\u21cc',
 | 
						|
        'equiv;': '\u2261',
 | 
						|
        'equivDD;': '\u2a78',
 | 
						|
        'eqvparsl;': '\u29e5',
 | 
						|
        'erarr;': '\u2971',
 | 
						|
        'erDot;': '\u2253',
 | 
						|
        'Escr;': '\u2130',
 | 
						|
        'escr;': '\u212f',
 | 
						|
        'esdot;': '\u2250',
 | 
						|
        'Esim;': '\u2a73',
 | 
						|
        'esim;': '\u2242',
 | 
						|
        'Eta;': '\u0397',
 | 
						|
        'eta;': '\u03b7',
 | 
						|
        'ETH': '\xd0',
 | 
						|
        'eth': '\xf0',
 | 
						|
        'ETH;': '\xd0',
 | 
						|
        'eth;': '\xf0',
 | 
						|
        'Euml': '\xcb',
 | 
						|
        'euml': '\xeb',
 | 
						|
        'Euml;': '\xcb',
 | 
						|
        'euml;': '\xeb',
 | 
						|
        'euro;': '\u20ac',
 | 
						|
        'excl;': '!',
 | 
						|
        'exist;': '\u2203',
 | 
						|
        'Exists;': '\u2203',
 | 
						|
        'expectation;': '\u2130',
 | 
						|
        'ExponentialE;': '\u2147',
 | 
						|
        'exponentiale;': '\u2147',
 | 
						|
        'fallingdotseq;': '\u2252',
 | 
						|
        'Fcy;': '\u0424',
 | 
						|
        'fcy;': '\u0444',
 | 
						|
        'female;': '\u2640',
 | 
						|
        'ffilig;': '\ufb03',
 | 
						|
        'fflig;': '\ufb00',
 | 
						|
        'ffllig;': '\ufb04',
 | 
						|
        'Ffr;': '\U0001d509',
 | 
						|
        'ffr;': '\U0001d523',
 | 
						|
        'filig;': '\ufb01',
 | 
						|
        'FilledSmallSquare;': '\u25fc',
 | 
						|
        'FilledVerySmallSquare;': '\u25aa',
 | 
						|
        'fjlig;': 'fj',
 | 
						|
        'flat;': '\u266d',
 | 
						|
        'fllig;': '\ufb02',
 | 
						|
        'fltns;': '\u25b1',
 | 
						|
        'fnof;': '\u0192',
 | 
						|
        'Fopf;': '\U0001d53d',
 | 
						|
        'fopf;': '\U0001d557',
 | 
						|
        'ForAll;': '\u2200',
 | 
						|
        'forall;': '\u2200',
 | 
						|
        'fork;': '\u22d4',
 | 
						|
        'forkv;': '\u2ad9',
 | 
						|
        'Fouriertrf;': '\u2131',
 | 
						|
        'fpartint;': '\u2a0d',
 | 
						|
        'frac12': '\xbd',
 | 
						|
        'frac12;': '\xbd',
 | 
						|
        'frac13;': '\u2153',
 | 
						|
        'frac14': '\xbc',
 | 
						|
        'frac14;': '\xbc',
 | 
						|
        'frac15;': '\u2155',
 | 
						|
        'frac16;': '\u2159',
 | 
						|
        'frac18;': '\u215b',
 | 
						|
        'frac23;': '\u2154',
 | 
						|
        'frac25;': '\u2156',
 | 
						|
        'frac34': '\xbe',
 | 
						|
        'frac34;': '\xbe',
 | 
						|
        'frac35;': '\u2157',
 | 
						|
        'frac38;': '\u215c',
 | 
						|
        'frac45;': '\u2158',
 | 
						|
        'frac56;': '\u215a',
 | 
						|
        'frac58;': '\u215d',
 | 
						|
        'frac78;': '\u215e',
 | 
						|
        'frasl;': '\u2044',
 | 
						|
        'frown;': '\u2322',
 | 
						|
        'Fscr;': '\u2131',
 | 
						|
        'fscr;': '\U0001d4bb',
 | 
						|
        'gacute;': '\u01f5',
 | 
						|
        'Gamma;': '\u0393',
 | 
						|
        'gamma;': '\u03b3',
 | 
						|
        'Gammad;': '\u03dc',
 | 
						|
        'gammad;': '\u03dd',
 | 
						|
        'gap;': '\u2a86',
 | 
						|
        'Gbreve;': '\u011e',
 | 
						|
        'gbreve;': '\u011f',
 | 
						|
        'Gcedil;': '\u0122',
 | 
						|
        'Gcirc;': '\u011c',
 | 
						|
        'gcirc;': '\u011d',
 | 
						|
        'Gcy;': '\u0413',
 | 
						|
        'gcy;': '\u0433',
 | 
						|
        'Gdot;': '\u0120',
 | 
						|
        'gdot;': '\u0121',
 | 
						|
        'gE;': '\u2267',
 | 
						|
        'ge;': '\u2265',
 | 
						|
        'gEl;': '\u2a8c',
 | 
						|
        'gel;': '\u22db',
 | 
						|
        'geq;': '\u2265',
 | 
						|
        'geqq;': '\u2267',
 | 
						|
        'geqslant;': '\u2a7e',
 | 
						|
        'ges;': '\u2a7e',
 | 
						|
        'gescc;': '\u2aa9',
 | 
						|
        'gesdot;': '\u2a80',
 | 
						|
        'gesdoto;': '\u2a82',
 | 
						|
        'gesdotol;': '\u2a84',
 | 
						|
        'gesl;': '\u22db\ufe00',
 | 
						|
        'gesles;': '\u2a94',
 | 
						|
        'Gfr;': '\U0001d50a',
 | 
						|
        'gfr;': '\U0001d524',
 | 
						|
        'Gg;': '\u22d9',
 | 
						|
        'gg;': '\u226b',
 | 
						|
        'ggg;': '\u22d9',
 | 
						|
        'gimel;': '\u2137',
 | 
						|
        'GJcy;': '\u0403',
 | 
						|
        'gjcy;': '\u0453',
 | 
						|
        'gl;': '\u2277',
 | 
						|
        'gla;': '\u2aa5',
 | 
						|
        'glE;': '\u2a92',
 | 
						|
        'glj;': '\u2aa4',
 | 
						|
        'gnap;': '\u2a8a',
 | 
						|
        'gnapprox;': '\u2a8a',
 | 
						|
        'gnE;': '\u2269',
 | 
						|
        'gne;': '\u2a88',
 | 
						|
        'gneq;': '\u2a88',
 | 
						|
        'gneqq;': '\u2269',
 | 
						|
        'gnsim;': '\u22e7',
 | 
						|
        'Gopf;': '\U0001d53e',
 | 
						|
        'gopf;': '\U0001d558',
 | 
						|
        'grave;': '`',
 | 
						|
        'GreaterEqual;': '\u2265',
 | 
						|
        'GreaterEqualLess;': '\u22db',
 | 
						|
        'GreaterFullEqual;': '\u2267',
 | 
						|
        'GreaterGreater;': '\u2aa2',
 | 
						|
        'GreaterLess;': '\u2277',
 | 
						|
        'GreaterSlantEqual;': '\u2a7e',
 | 
						|
        'GreaterTilde;': '\u2273',
 | 
						|
        'Gscr;': '\U0001d4a2',
 | 
						|
        'gscr;': '\u210a',
 | 
						|
        'gsim;': '\u2273',
 | 
						|
        'gsime;': '\u2a8e',
 | 
						|
        'gsiml;': '\u2a90',
 | 
						|
        'GT': '>',
 | 
						|
        'gt': '>',
 | 
						|
        'GT;': '>',
 | 
						|
        'Gt;': '\u226b',
 | 
						|
        'gt;': '>',
 | 
						|
        'gtcc;': '\u2aa7',
 | 
						|
        'gtcir;': '\u2a7a',
 | 
						|
        'gtdot;': '\u22d7',
 | 
						|
        'gtlPar;': '\u2995',
 | 
						|
        'gtquest;': '\u2a7c',
 | 
						|
        'gtrapprox;': '\u2a86',
 | 
						|
        'gtrarr;': '\u2978',
 | 
						|
        'gtrdot;': '\u22d7',
 | 
						|
        'gtreqless;': '\u22db',
 | 
						|
        'gtreqqless;': '\u2a8c',
 | 
						|
        'gtrless;': '\u2277',
 | 
						|
        'gtrsim;': '\u2273',
 | 
						|
        'gvertneqq;': '\u2269\ufe00',
 | 
						|
        'gvnE;': '\u2269\ufe00',
 | 
						|
        'Hacek;': '\u02c7',
 | 
						|
        'hairsp;': '\u200a',
 | 
						|
        'half;': '\xbd',
 | 
						|
        'hamilt;': '\u210b',
 | 
						|
        'HARDcy;': '\u042a',
 | 
						|
        'hardcy;': '\u044a',
 | 
						|
        'hArr;': '\u21d4',
 | 
						|
        'harr;': '\u2194',
 | 
						|
        'harrcir;': '\u2948',
 | 
						|
        'harrw;': '\u21ad',
 | 
						|
        'Hat;': '^',
 | 
						|
        'hbar;': '\u210f',
 | 
						|
        'Hcirc;': '\u0124',
 | 
						|
        'hcirc;': '\u0125',
 | 
						|
        'hearts;': '\u2665',
 | 
						|
        'heartsuit;': '\u2665',
 | 
						|
        'hellip;': '\u2026',
 | 
						|
        'hercon;': '\u22b9',
 | 
						|
        'Hfr;': '\u210c',
 | 
						|
        'hfr;': '\U0001d525',
 | 
						|
        'HilbertSpace;': '\u210b',
 | 
						|
        'hksearow;': '\u2925',
 | 
						|
        'hkswarow;': '\u2926',
 | 
						|
        'hoarr;': '\u21ff',
 | 
						|
        'homtht;': '\u223b',
 | 
						|
        'hookleftarrow;': '\u21a9',
 | 
						|
        'hookrightarrow;': '\u21aa',
 | 
						|
        'Hopf;': '\u210d',
 | 
						|
        'hopf;': '\U0001d559',
 | 
						|
        'horbar;': '\u2015',
 | 
						|
        'HorizontalLine;': '\u2500',
 | 
						|
        'Hscr;': '\u210b',
 | 
						|
        'hscr;': '\U0001d4bd',
 | 
						|
        'hslash;': '\u210f',
 | 
						|
        'Hstrok;': '\u0126',
 | 
						|
        'hstrok;': '\u0127',
 | 
						|
        'HumpDownHump;': '\u224e',
 | 
						|
        'HumpEqual;': '\u224f',
 | 
						|
        'hybull;': '\u2043',
 | 
						|
        'hyphen;': '\u2010',
 | 
						|
        'Iacute': '\xcd',
 | 
						|
        'iacute': '\xed',
 | 
						|
        'Iacute;': '\xcd',
 | 
						|
        'iacute;': '\xed',
 | 
						|
        'ic;': '\u2063',
 | 
						|
        'Icirc': '\xce',
 | 
						|
        'icirc': '\xee',
 | 
						|
        'Icirc;': '\xce',
 | 
						|
        'icirc;': '\xee',
 | 
						|
        'Icy;': '\u0418',
 | 
						|
        'icy;': '\u0438',
 | 
						|
        'Idot;': '\u0130',
 | 
						|
        'IEcy;': '\u0415',
 | 
						|
        'iecy;': '\u0435',
 | 
						|
        'iexcl': '\xa1',
 | 
						|
        'iexcl;': '\xa1',
 | 
						|
        'iff;': '\u21d4',
 | 
						|
        'Ifr;': '\u2111',
 | 
						|
        'ifr;': '\U0001d526',
 | 
						|
        'Igrave': '\xcc',
 | 
						|
        'igrave': '\xec',
 | 
						|
        'Igrave;': '\xcc',
 | 
						|
        'igrave;': '\xec',
 | 
						|
        'ii;': '\u2148',
 | 
						|
        'iiiint;': '\u2a0c',
 | 
						|
        'iiint;': '\u222d',
 | 
						|
        'iinfin;': '\u29dc',
 | 
						|
        'iiota;': '\u2129',
 | 
						|
        'IJlig;': '\u0132',
 | 
						|
        'ijlig;': '\u0133',
 | 
						|
        'Im;': '\u2111',
 | 
						|
        'Imacr;': '\u012a',
 | 
						|
        'imacr;': '\u012b',
 | 
						|
        'image;': '\u2111',
 | 
						|
        'ImaginaryI;': '\u2148',
 | 
						|
        'imagline;': '\u2110',
 | 
						|
        'imagpart;': '\u2111',
 | 
						|
        'imath;': '\u0131',
 | 
						|
        'imof;': '\u22b7',
 | 
						|
        'imped;': '\u01b5',
 | 
						|
        'Implies;': '\u21d2',
 | 
						|
        'in;': '\u2208',
 | 
						|
        'incare;': '\u2105',
 | 
						|
        'infin;': '\u221e',
 | 
						|
        'infintie;': '\u29dd',
 | 
						|
        'inodot;': '\u0131',
 | 
						|
        'Int;': '\u222c',
 | 
						|
        'int;': '\u222b',
 | 
						|
        'intcal;': '\u22ba',
 | 
						|
        'integers;': '\u2124',
 | 
						|
        'Integral;': '\u222b',
 | 
						|
        'intercal;': '\u22ba',
 | 
						|
        'Intersection;': '\u22c2',
 | 
						|
        'intlarhk;': '\u2a17',
 | 
						|
        'intprod;': '\u2a3c',
 | 
						|
        'InvisibleComma;': '\u2063',
 | 
						|
        'InvisibleTimes;': '\u2062',
 | 
						|
        'IOcy;': '\u0401',
 | 
						|
        'iocy;': '\u0451',
 | 
						|
        'Iogon;': '\u012e',
 | 
						|
        'iogon;': '\u012f',
 | 
						|
        'Iopf;': '\U0001d540',
 | 
						|
        'iopf;': '\U0001d55a',
 | 
						|
        'Iota;': '\u0399',
 | 
						|
        'iota;': '\u03b9',
 | 
						|
        'iprod;': '\u2a3c',
 | 
						|
        'iquest': '\xbf',
 | 
						|
        'iquest;': '\xbf',
 | 
						|
        'Iscr;': '\u2110',
 | 
						|
        'iscr;': '\U0001d4be',
 | 
						|
        'isin;': '\u2208',
 | 
						|
        'isindot;': '\u22f5',
 | 
						|
        'isinE;': '\u22f9',
 | 
						|
        'isins;': '\u22f4',
 | 
						|
        'isinsv;': '\u22f3',
 | 
						|
        'isinv;': '\u2208',
 | 
						|
        'it;': '\u2062',
 | 
						|
        'Itilde;': '\u0128',
 | 
						|
        'itilde;': '\u0129',
 | 
						|
        'Iukcy;': '\u0406',
 | 
						|
        'iukcy;': '\u0456',
 | 
						|
        'Iuml': '\xcf',
 | 
						|
        'iuml': '\xef',
 | 
						|
        'Iuml;': '\xcf',
 | 
						|
        'iuml;': '\xef',
 | 
						|
        'Jcirc;': '\u0134',
 | 
						|
        'jcirc;': '\u0135',
 | 
						|
        'Jcy;': '\u0419',
 | 
						|
        'jcy;': '\u0439',
 | 
						|
        'Jfr;': '\U0001d50d',
 | 
						|
        'jfr;': '\U0001d527',
 | 
						|
        'jmath;': '\u0237',
 | 
						|
        'Jopf;': '\U0001d541',
 | 
						|
        'jopf;': '\U0001d55b',
 | 
						|
        'Jscr;': '\U0001d4a5',
 | 
						|
        'jscr;': '\U0001d4bf',
 | 
						|
        'Jsercy;': '\u0408',
 | 
						|
        'jsercy;': '\u0458',
 | 
						|
        'Jukcy;': '\u0404',
 | 
						|
        'jukcy;': '\u0454',
 | 
						|
        'Kappa;': '\u039a',
 | 
						|
        'kappa;': '\u03ba',
 | 
						|
        'kappav;': '\u03f0',
 | 
						|
        'Kcedil;': '\u0136',
 | 
						|
        'kcedil;': '\u0137',
 | 
						|
        'Kcy;': '\u041a',
 | 
						|
        'kcy;': '\u043a',
 | 
						|
        'Kfr;': '\U0001d50e',
 | 
						|
        'kfr;': '\U0001d528',
 | 
						|
        'kgreen;': '\u0138',
 | 
						|
        'KHcy;': '\u0425',
 | 
						|
        'khcy;': '\u0445',
 | 
						|
        'KJcy;': '\u040c',
 | 
						|
        'kjcy;': '\u045c',
 | 
						|
        'Kopf;': '\U0001d542',
 | 
						|
        'kopf;': '\U0001d55c',
 | 
						|
        'Kscr;': '\U0001d4a6',
 | 
						|
        'kscr;': '\U0001d4c0',
 | 
						|
        'lAarr;': '\u21da',
 | 
						|
        'Lacute;': '\u0139',
 | 
						|
        'lacute;': '\u013a',
 | 
						|
        'laemptyv;': '\u29b4',
 | 
						|
        'lagran;': '\u2112',
 | 
						|
        'Lambda;': '\u039b',
 | 
						|
        'lambda;': '\u03bb',
 | 
						|
        'Lang;': '\u27ea',
 | 
						|
        'lang;': '\u27e8',
 | 
						|
        'langd;': '\u2991',
 | 
						|
        'langle;': '\u27e8',
 | 
						|
        'lap;': '\u2a85',
 | 
						|
        'Laplacetrf;': '\u2112',
 | 
						|
        'laquo': '\xab',
 | 
						|
        'laquo;': '\xab',
 | 
						|
        'Larr;': '\u219e',
 | 
						|
        'lArr;': '\u21d0',
 | 
						|
        'larr;': '\u2190',
 | 
						|
        'larrb;': '\u21e4',
 | 
						|
        'larrbfs;': '\u291f',
 | 
						|
        'larrfs;': '\u291d',
 | 
						|
        'larrhk;': '\u21a9',
 | 
						|
        'larrlp;': '\u21ab',
 | 
						|
        'larrpl;': '\u2939',
 | 
						|
        'larrsim;': '\u2973',
 | 
						|
        'larrtl;': '\u21a2',
 | 
						|
        'lat;': '\u2aab',
 | 
						|
        'lAtail;': '\u291b',
 | 
						|
        'latail;': '\u2919',
 | 
						|
        'late;': '\u2aad',
 | 
						|
        'lates;': '\u2aad\ufe00',
 | 
						|
        'lBarr;': '\u290e',
 | 
						|
        'lbarr;': '\u290c',
 | 
						|
        'lbbrk;': '\u2772',
 | 
						|
        'lbrace;': '{',
 | 
						|
        'lbrack;': '[',
 | 
						|
        'lbrke;': '\u298b',
 | 
						|
        'lbrksld;': '\u298f',
 | 
						|
        'lbrkslu;': '\u298d',
 | 
						|
        'Lcaron;': '\u013d',
 | 
						|
        'lcaron;': '\u013e',
 | 
						|
        'Lcedil;': '\u013b',
 | 
						|
        'lcedil;': '\u013c',
 | 
						|
        'lceil;': '\u2308',
 | 
						|
        'lcub;': '{',
 | 
						|
        'Lcy;': '\u041b',
 | 
						|
        'lcy;': '\u043b',
 | 
						|
        'ldca;': '\u2936',
 | 
						|
        'ldquo;': '\u201c',
 | 
						|
        'ldquor;': '\u201e',
 | 
						|
        'ldrdhar;': '\u2967',
 | 
						|
        'ldrushar;': '\u294b',
 | 
						|
        'ldsh;': '\u21b2',
 | 
						|
        'lE;': '\u2266',
 | 
						|
        'le;': '\u2264',
 | 
						|
        'LeftAngleBracket;': '\u27e8',
 | 
						|
        'LeftArrow;': '\u2190',
 | 
						|
        'Leftarrow;': '\u21d0',
 | 
						|
        'leftarrow;': '\u2190',
 | 
						|
        'LeftArrowBar;': '\u21e4',
 | 
						|
        'LeftArrowRightArrow;': '\u21c6',
 | 
						|
        'leftarrowtail;': '\u21a2',
 | 
						|
        'LeftCeiling;': '\u2308',
 | 
						|
        'LeftDoubleBracket;': '\u27e6',
 | 
						|
        'LeftDownTeeVector;': '\u2961',
 | 
						|
        'LeftDownVector;': '\u21c3',
 | 
						|
        'LeftDownVectorBar;': '\u2959',
 | 
						|
        'LeftFloor;': '\u230a',
 | 
						|
        'leftharpoondown;': '\u21bd',
 | 
						|
        'leftharpoonup;': '\u21bc',
 | 
						|
        'leftleftarrows;': '\u21c7',
 | 
						|
        'LeftRightArrow;': '\u2194',
 | 
						|
        'Leftrightarrow;': '\u21d4',
 | 
						|
        'leftrightarrow;': '\u2194',
 | 
						|
        'leftrightarrows;': '\u21c6',
 | 
						|
        'leftrightharpoons;': '\u21cb',
 | 
						|
        'leftrightsquigarrow;': '\u21ad',
 | 
						|
        'LeftRightVector;': '\u294e',
 | 
						|
        'LeftTee;': '\u22a3',
 | 
						|
        'LeftTeeArrow;': '\u21a4',
 | 
						|
        'LeftTeeVector;': '\u295a',
 | 
						|
        'leftthreetimes;': '\u22cb',
 | 
						|
        'LeftTriangle;': '\u22b2',
 | 
						|
        'LeftTriangleBar;': '\u29cf',
 | 
						|
        'LeftTriangleEqual;': '\u22b4',
 | 
						|
        'LeftUpDownVector;': '\u2951',
 | 
						|
        'LeftUpTeeVector;': '\u2960',
 | 
						|
        'LeftUpVector;': '\u21bf',
 | 
						|
        'LeftUpVectorBar;': '\u2958',
 | 
						|
        'LeftVector;': '\u21bc',
 | 
						|
        'LeftVectorBar;': '\u2952',
 | 
						|
        'lEg;': '\u2a8b',
 | 
						|
        'leg;': '\u22da',
 | 
						|
        'leq;': '\u2264',
 | 
						|
        'leqq;': '\u2266',
 | 
						|
        'leqslant;': '\u2a7d',
 | 
						|
        'les;': '\u2a7d',
 | 
						|
        'lescc;': '\u2aa8',
 | 
						|
        'lesdot;': '\u2a7f',
 | 
						|
        'lesdoto;': '\u2a81',
 | 
						|
        'lesdotor;': '\u2a83',
 | 
						|
        'lesg;': '\u22da\ufe00',
 | 
						|
        'lesges;': '\u2a93',
 | 
						|
        'lessapprox;': '\u2a85',
 | 
						|
        'lessdot;': '\u22d6',
 | 
						|
        'lesseqgtr;': '\u22da',
 | 
						|
        'lesseqqgtr;': '\u2a8b',
 | 
						|
        'LessEqualGreater;': '\u22da',
 | 
						|
        'LessFullEqual;': '\u2266',
 | 
						|
        'LessGreater;': '\u2276',
 | 
						|
        'lessgtr;': '\u2276',
 | 
						|
        'LessLess;': '\u2aa1',
 | 
						|
        'lesssim;': '\u2272',
 | 
						|
        'LessSlantEqual;': '\u2a7d',
 | 
						|
        'LessTilde;': '\u2272',
 | 
						|
        'lfisht;': '\u297c',
 | 
						|
        'lfloor;': '\u230a',
 | 
						|
        'Lfr;': '\U0001d50f',
 | 
						|
        'lfr;': '\U0001d529',
 | 
						|
        'lg;': '\u2276',
 | 
						|
        'lgE;': '\u2a91',
 | 
						|
        'lHar;': '\u2962',
 | 
						|
        'lhard;': '\u21bd',
 | 
						|
        'lharu;': '\u21bc',
 | 
						|
        'lharul;': '\u296a',
 | 
						|
        'lhblk;': '\u2584',
 | 
						|
        'LJcy;': '\u0409',
 | 
						|
        'ljcy;': '\u0459',
 | 
						|
        'Ll;': '\u22d8',
 | 
						|
        'll;': '\u226a',
 | 
						|
        'llarr;': '\u21c7',
 | 
						|
        'llcorner;': '\u231e',
 | 
						|
        'Lleftarrow;': '\u21da',
 | 
						|
        'llhard;': '\u296b',
 | 
						|
        'lltri;': '\u25fa',
 | 
						|
        'Lmidot;': '\u013f',
 | 
						|
        'lmidot;': '\u0140',
 | 
						|
        'lmoust;': '\u23b0',
 | 
						|
        'lmoustache;': '\u23b0',
 | 
						|
        'lnap;': '\u2a89',
 | 
						|
        'lnapprox;': '\u2a89',
 | 
						|
        'lnE;': '\u2268',
 | 
						|
        'lne;': '\u2a87',
 | 
						|
        'lneq;': '\u2a87',
 | 
						|
        'lneqq;': '\u2268',
 | 
						|
        'lnsim;': '\u22e6',
 | 
						|
        'loang;': '\u27ec',
 | 
						|
        'loarr;': '\u21fd',
 | 
						|
        'lobrk;': '\u27e6',
 | 
						|
        'LongLeftArrow;': '\u27f5',
 | 
						|
        'Longleftarrow;': '\u27f8',
 | 
						|
        'longleftarrow;': '\u27f5',
 | 
						|
        'LongLeftRightArrow;': '\u27f7',
 | 
						|
        'Longleftrightarrow;': '\u27fa',
 | 
						|
        'longleftrightarrow;': '\u27f7',
 | 
						|
        'longmapsto;': '\u27fc',
 | 
						|
        'LongRightArrow;': '\u27f6',
 | 
						|
        'Longrightarrow;': '\u27f9',
 | 
						|
        'longrightarrow;': '\u27f6',
 | 
						|
        'looparrowleft;': '\u21ab',
 | 
						|
        'looparrowright;': '\u21ac',
 | 
						|
        'lopar;': '\u2985',
 | 
						|
        'Lopf;': '\U0001d543',
 | 
						|
        'lopf;': '\U0001d55d',
 | 
						|
        'loplus;': '\u2a2d',
 | 
						|
        'lotimes;': '\u2a34',
 | 
						|
        'lowast;': '\u2217',
 | 
						|
        'lowbar;': '_',
 | 
						|
        'LowerLeftArrow;': '\u2199',
 | 
						|
        'LowerRightArrow;': '\u2198',
 | 
						|
        'loz;': '\u25ca',
 | 
						|
        'lozenge;': '\u25ca',
 | 
						|
        'lozf;': '\u29eb',
 | 
						|
        'lpar;': '(',
 | 
						|
        'lparlt;': '\u2993',
 | 
						|
        'lrarr;': '\u21c6',
 | 
						|
        'lrcorner;': '\u231f',
 | 
						|
        'lrhar;': '\u21cb',
 | 
						|
        'lrhard;': '\u296d',
 | 
						|
        'lrm;': '\u200e',
 | 
						|
        'lrtri;': '\u22bf',
 | 
						|
        'lsaquo;': '\u2039',
 | 
						|
        'Lscr;': '\u2112',
 | 
						|
        'lscr;': '\U0001d4c1',
 | 
						|
        'Lsh;': '\u21b0',
 | 
						|
        'lsh;': '\u21b0',
 | 
						|
        'lsim;': '\u2272',
 | 
						|
        'lsime;': '\u2a8d',
 | 
						|
        'lsimg;': '\u2a8f',
 | 
						|
        'lsqb;': '[',
 | 
						|
        'lsquo;': '\u2018',
 | 
						|
        'lsquor;': '\u201a',
 | 
						|
        'Lstrok;': '\u0141',
 | 
						|
        'lstrok;': '\u0142',
 | 
						|
        'LT': '<',
 | 
						|
        'lt': '<',
 | 
						|
        'LT;': '<',
 | 
						|
        'Lt;': '\u226a',
 | 
						|
        'lt;': '<',
 | 
						|
        'ltcc;': '\u2aa6',
 | 
						|
        'ltcir;': '\u2a79',
 | 
						|
        'ltdot;': '\u22d6',
 | 
						|
        'lthree;': '\u22cb',
 | 
						|
        'ltimes;': '\u22c9',
 | 
						|
        'ltlarr;': '\u2976',
 | 
						|
        'ltquest;': '\u2a7b',
 | 
						|
        'ltri;': '\u25c3',
 | 
						|
        'ltrie;': '\u22b4',
 | 
						|
        'ltrif;': '\u25c2',
 | 
						|
        'ltrPar;': '\u2996',
 | 
						|
        'lurdshar;': '\u294a',
 | 
						|
        'luruhar;': '\u2966',
 | 
						|
        'lvertneqq;': '\u2268\ufe00',
 | 
						|
        'lvnE;': '\u2268\ufe00',
 | 
						|
        'macr': '\xaf',
 | 
						|
        'macr;': '\xaf',
 | 
						|
        'male;': '\u2642',
 | 
						|
        'malt;': '\u2720',
 | 
						|
        'maltese;': '\u2720',
 | 
						|
        'Map;': '\u2905',
 | 
						|
        'map;': '\u21a6',
 | 
						|
        'mapsto;': '\u21a6',
 | 
						|
        'mapstodown;': '\u21a7',
 | 
						|
        'mapstoleft;': '\u21a4',
 | 
						|
        'mapstoup;': '\u21a5',
 | 
						|
        'marker;': '\u25ae',
 | 
						|
        'mcomma;': '\u2a29',
 | 
						|
        'Mcy;': '\u041c',
 | 
						|
        'mcy;': '\u043c',
 | 
						|
        'mdash;': '\u2014',
 | 
						|
        'mDDot;': '\u223a',
 | 
						|
        'measuredangle;': '\u2221',
 | 
						|
        'MediumSpace;': '\u205f',
 | 
						|
        'Mellintrf;': '\u2133',
 | 
						|
        'Mfr;': '\U0001d510',
 | 
						|
        'mfr;': '\U0001d52a',
 | 
						|
        'mho;': '\u2127',
 | 
						|
        'micro': '\xb5',
 | 
						|
        'micro;': '\xb5',
 | 
						|
        'mid;': '\u2223',
 | 
						|
        'midast;': '*',
 | 
						|
        'midcir;': '\u2af0',
 | 
						|
        'middot': '\xb7',
 | 
						|
        'middot;': '\xb7',
 | 
						|
        'minus;': '\u2212',
 | 
						|
        'minusb;': '\u229f',
 | 
						|
        'minusd;': '\u2238',
 | 
						|
        'minusdu;': '\u2a2a',
 | 
						|
        'MinusPlus;': '\u2213',
 | 
						|
        'mlcp;': '\u2adb',
 | 
						|
        'mldr;': '\u2026',
 | 
						|
        'mnplus;': '\u2213',
 | 
						|
        'models;': '\u22a7',
 | 
						|
        'Mopf;': '\U0001d544',
 | 
						|
        'mopf;': '\U0001d55e',
 | 
						|
        'mp;': '\u2213',
 | 
						|
        'Mscr;': '\u2133',
 | 
						|
        'mscr;': '\U0001d4c2',
 | 
						|
        'mstpos;': '\u223e',
 | 
						|
        'Mu;': '\u039c',
 | 
						|
        'mu;': '\u03bc',
 | 
						|
        'multimap;': '\u22b8',
 | 
						|
        'mumap;': '\u22b8',
 | 
						|
        'nabla;': '\u2207',
 | 
						|
        'Nacute;': '\u0143',
 | 
						|
        'nacute;': '\u0144',
 | 
						|
        'nang;': '\u2220\u20d2',
 | 
						|
        'nap;': '\u2249',
 | 
						|
        'napE;': '\u2a70\u0338',
 | 
						|
        'napid;': '\u224b\u0338',
 | 
						|
        'napos;': '\u0149',
 | 
						|
        'napprox;': '\u2249',
 | 
						|
        'natur;': '\u266e',
 | 
						|
        'natural;': '\u266e',
 | 
						|
        'naturals;': '\u2115',
 | 
						|
        'nbsp': '\xa0',
 | 
						|
        'nbsp;': '\xa0',
 | 
						|
        'nbump;': '\u224e\u0338',
 | 
						|
        'nbumpe;': '\u224f\u0338',
 | 
						|
        'ncap;': '\u2a43',
 | 
						|
        'Ncaron;': '\u0147',
 | 
						|
        'ncaron;': '\u0148',
 | 
						|
        'Ncedil;': '\u0145',
 | 
						|
        'ncedil;': '\u0146',
 | 
						|
        'ncong;': '\u2247',
 | 
						|
        'ncongdot;': '\u2a6d\u0338',
 | 
						|
        'ncup;': '\u2a42',
 | 
						|
        'Ncy;': '\u041d',
 | 
						|
        'ncy;': '\u043d',
 | 
						|
        'ndash;': '\u2013',
 | 
						|
        'ne;': '\u2260',
 | 
						|
        'nearhk;': '\u2924',
 | 
						|
        'neArr;': '\u21d7',
 | 
						|
        'nearr;': '\u2197',
 | 
						|
        'nearrow;': '\u2197',
 | 
						|
        'nedot;': '\u2250\u0338',
 | 
						|
        'NegativeMediumSpace;': '\u200b',
 | 
						|
        'NegativeThickSpace;': '\u200b',
 | 
						|
        'NegativeThinSpace;': '\u200b',
 | 
						|
        'NegativeVeryThinSpace;': '\u200b',
 | 
						|
        'nequiv;': '\u2262',
 | 
						|
        'nesear;': '\u2928',
 | 
						|
        'nesim;': '\u2242\u0338',
 | 
						|
        'NestedGreaterGreater;': '\u226b',
 | 
						|
        'NestedLessLess;': '\u226a',
 | 
						|
        'NewLine;': '\n',
 | 
						|
        'nexist;': '\u2204',
 | 
						|
        'nexists;': '\u2204',
 | 
						|
        'Nfr;': '\U0001d511',
 | 
						|
        'nfr;': '\U0001d52b',
 | 
						|
        'ngE;': '\u2267\u0338',
 | 
						|
        'nge;': '\u2271',
 | 
						|
        'ngeq;': '\u2271',
 | 
						|
        'ngeqq;': '\u2267\u0338',
 | 
						|
        'ngeqslant;': '\u2a7e\u0338',
 | 
						|
        'nges;': '\u2a7e\u0338',
 | 
						|
        'nGg;': '\u22d9\u0338',
 | 
						|
        'ngsim;': '\u2275',
 | 
						|
        'nGt;': '\u226b\u20d2',
 | 
						|
        'ngt;': '\u226f',
 | 
						|
        'ngtr;': '\u226f',
 | 
						|
        'nGtv;': '\u226b\u0338',
 | 
						|
        'nhArr;': '\u21ce',
 | 
						|
        'nharr;': '\u21ae',
 | 
						|
        'nhpar;': '\u2af2',
 | 
						|
        'ni;': '\u220b',
 | 
						|
        'nis;': '\u22fc',
 | 
						|
        'nisd;': '\u22fa',
 | 
						|
        'niv;': '\u220b',
 | 
						|
        'NJcy;': '\u040a',
 | 
						|
        'njcy;': '\u045a',
 | 
						|
        'nlArr;': '\u21cd',
 | 
						|
        'nlarr;': '\u219a',
 | 
						|
        'nldr;': '\u2025',
 | 
						|
        'nlE;': '\u2266\u0338',
 | 
						|
        'nle;': '\u2270',
 | 
						|
        'nLeftarrow;': '\u21cd',
 | 
						|
        'nleftarrow;': '\u219a',
 | 
						|
        'nLeftrightarrow;': '\u21ce',
 | 
						|
        'nleftrightarrow;': '\u21ae',
 | 
						|
        'nleq;': '\u2270',
 | 
						|
        'nleqq;': '\u2266\u0338',
 | 
						|
        'nleqslant;': '\u2a7d\u0338',
 | 
						|
        'nles;': '\u2a7d\u0338',
 | 
						|
        'nless;': '\u226e',
 | 
						|
        'nLl;': '\u22d8\u0338',
 | 
						|
        'nlsim;': '\u2274',
 | 
						|
        'nLt;': '\u226a\u20d2',
 | 
						|
        'nlt;': '\u226e',
 | 
						|
        'nltri;': '\u22ea',
 | 
						|
        'nltrie;': '\u22ec',
 | 
						|
        'nLtv;': '\u226a\u0338',
 | 
						|
        'nmid;': '\u2224',
 | 
						|
        'NoBreak;': '\u2060',
 | 
						|
        'NonBreakingSpace;': '\xa0',
 | 
						|
        'Nopf;': '\u2115',
 | 
						|
        'nopf;': '\U0001d55f',
 | 
						|
        'not': '\xac',
 | 
						|
        'Not;': '\u2aec',
 | 
						|
        'not;': '\xac',
 | 
						|
        'NotCongruent;': '\u2262',
 | 
						|
        'NotCupCap;': '\u226d',
 | 
						|
        'NotDoubleVerticalBar;': '\u2226',
 | 
						|
        'NotElement;': '\u2209',
 | 
						|
        'NotEqual;': '\u2260',
 | 
						|
        'NotEqualTilde;': '\u2242\u0338',
 | 
						|
        'NotExists;': '\u2204',
 | 
						|
        'NotGreater;': '\u226f',
 | 
						|
        'NotGreaterEqual;': '\u2271',
 | 
						|
        'NotGreaterFullEqual;': '\u2267\u0338',
 | 
						|
        'NotGreaterGreater;': '\u226b\u0338',
 | 
						|
        'NotGreaterLess;': '\u2279',
 | 
						|
        'NotGreaterSlantEqual;': '\u2a7e\u0338',
 | 
						|
        'NotGreaterTilde;': '\u2275',
 | 
						|
        'NotHumpDownHump;': '\u224e\u0338',
 | 
						|
        'NotHumpEqual;': '\u224f\u0338',
 | 
						|
        'notin;': '\u2209',
 | 
						|
        'notindot;': '\u22f5\u0338',
 | 
						|
        'notinE;': '\u22f9\u0338',
 | 
						|
        'notinva;': '\u2209',
 | 
						|
        'notinvb;': '\u22f7',
 | 
						|
        'notinvc;': '\u22f6',
 | 
						|
        'NotLeftTriangle;': '\u22ea',
 | 
						|
        'NotLeftTriangleBar;': '\u29cf\u0338',
 | 
						|
        'NotLeftTriangleEqual;': '\u22ec',
 | 
						|
        'NotLess;': '\u226e',
 | 
						|
        'NotLessEqual;': '\u2270',
 | 
						|
        'NotLessGreater;': '\u2278',
 | 
						|
        'NotLessLess;': '\u226a\u0338',
 | 
						|
        'NotLessSlantEqual;': '\u2a7d\u0338',
 | 
						|
        'NotLessTilde;': '\u2274',
 | 
						|
        'NotNestedGreaterGreater;': '\u2aa2\u0338',
 | 
						|
        'NotNestedLessLess;': '\u2aa1\u0338',
 | 
						|
        'notni;': '\u220c',
 | 
						|
        'notniva;': '\u220c',
 | 
						|
        'notnivb;': '\u22fe',
 | 
						|
        'notnivc;': '\u22fd',
 | 
						|
        'NotPrecedes;': '\u2280',
 | 
						|
        'NotPrecedesEqual;': '\u2aaf\u0338',
 | 
						|
        'NotPrecedesSlantEqual;': '\u22e0',
 | 
						|
        'NotReverseElement;': '\u220c',
 | 
						|
        'NotRightTriangle;': '\u22eb',
 | 
						|
        'NotRightTriangleBar;': '\u29d0\u0338',
 | 
						|
        'NotRightTriangleEqual;': '\u22ed',
 | 
						|
        'NotSquareSubset;': '\u228f\u0338',
 | 
						|
        'NotSquareSubsetEqual;': '\u22e2',
 | 
						|
        'NotSquareSuperset;': '\u2290\u0338',
 | 
						|
        'NotSquareSupersetEqual;': '\u22e3',
 | 
						|
        'NotSubset;': '\u2282\u20d2',
 | 
						|
        'NotSubsetEqual;': '\u2288',
 | 
						|
        'NotSucceeds;': '\u2281',
 | 
						|
        'NotSucceedsEqual;': '\u2ab0\u0338',
 | 
						|
        'NotSucceedsSlantEqual;': '\u22e1',
 | 
						|
        'NotSucceedsTilde;': '\u227f\u0338',
 | 
						|
        'NotSuperset;': '\u2283\u20d2',
 | 
						|
        'NotSupersetEqual;': '\u2289',
 | 
						|
        'NotTilde;': '\u2241',
 | 
						|
        'NotTildeEqual;': '\u2244',
 | 
						|
        'NotTildeFullEqual;': '\u2247',
 | 
						|
        'NotTildeTilde;': '\u2249',
 | 
						|
        'NotVerticalBar;': '\u2224',
 | 
						|
        'npar;': '\u2226',
 | 
						|
        'nparallel;': '\u2226',
 | 
						|
        'nparsl;': '\u2afd\u20e5',
 | 
						|
        'npart;': '\u2202\u0338',
 | 
						|
        'npolint;': '\u2a14',
 | 
						|
        'npr;': '\u2280',
 | 
						|
        'nprcue;': '\u22e0',
 | 
						|
        'npre;': '\u2aaf\u0338',
 | 
						|
        'nprec;': '\u2280',
 | 
						|
        'npreceq;': '\u2aaf\u0338',
 | 
						|
        'nrArr;': '\u21cf',
 | 
						|
        'nrarr;': '\u219b',
 | 
						|
        'nrarrc;': '\u2933\u0338',
 | 
						|
        'nrarrw;': '\u219d\u0338',
 | 
						|
        'nRightarrow;': '\u21cf',
 | 
						|
        'nrightarrow;': '\u219b',
 | 
						|
        'nrtri;': '\u22eb',
 | 
						|
        'nrtrie;': '\u22ed',
 | 
						|
        'nsc;': '\u2281',
 | 
						|
        'nsccue;': '\u22e1',
 | 
						|
        'nsce;': '\u2ab0\u0338',
 | 
						|
        'Nscr;': '\U0001d4a9',
 | 
						|
        'nscr;': '\U0001d4c3',
 | 
						|
        'nshortmid;': '\u2224',
 | 
						|
        'nshortparallel;': '\u2226',
 | 
						|
        'nsim;': '\u2241',
 | 
						|
        'nsime;': '\u2244',
 | 
						|
        'nsimeq;': '\u2244',
 | 
						|
        'nsmid;': '\u2224',
 | 
						|
        'nspar;': '\u2226',
 | 
						|
        'nsqsube;': '\u22e2',
 | 
						|
        'nsqsupe;': '\u22e3',
 | 
						|
        'nsub;': '\u2284',
 | 
						|
        'nsubE;': '\u2ac5\u0338',
 | 
						|
        'nsube;': '\u2288',
 | 
						|
        'nsubset;': '\u2282\u20d2',
 | 
						|
        'nsubseteq;': '\u2288',
 | 
						|
        'nsubseteqq;': '\u2ac5\u0338',
 | 
						|
        'nsucc;': '\u2281',
 | 
						|
        'nsucceq;': '\u2ab0\u0338',
 | 
						|
        'nsup;': '\u2285',
 | 
						|
        'nsupE;': '\u2ac6\u0338',
 | 
						|
        'nsupe;': '\u2289',
 | 
						|
        'nsupset;': '\u2283\u20d2',
 | 
						|
        'nsupseteq;': '\u2289',
 | 
						|
        'nsupseteqq;': '\u2ac6\u0338',
 | 
						|
        'ntgl;': '\u2279',
 | 
						|
        'Ntilde': '\xd1',
 | 
						|
        'ntilde': '\xf1',
 | 
						|
        'Ntilde;': '\xd1',
 | 
						|
        'ntilde;': '\xf1',
 | 
						|
        'ntlg;': '\u2278',
 | 
						|
        'ntriangleleft;': '\u22ea',
 | 
						|
        'ntrianglelefteq;': '\u22ec',
 | 
						|
        'ntriangleright;': '\u22eb',
 | 
						|
        'ntrianglerighteq;': '\u22ed',
 | 
						|
        'Nu;': '\u039d',
 | 
						|
        'nu;': '\u03bd',
 | 
						|
        'num;': '#',
 | 
						|
        'numero;': '\u2116',
 | 
						|
        'numsp;': '\u2007',
 | 
						|
        'nvap;': '\u224d\u20d2',
 | 
						|
        'nVDash;': '\u22af',
 | 
						|
        'nVdash;': '\u22ae',
 | 
						|
        'nvDash;': '\u22ad',
 | 
						|
        'nvdash;': '\u22ac',
 | 
						|
        'nvge;': '\u2265\u20d2',
 | 
						|
        'nvgt;': '>\u20d2',
 | 
						|
        'nvHarr;': '\u2904',
 | 
						|
        'nvinfin;': '\u29de',
 | 
						|
        'nvlArr;': '\u2902',
 | 
						|
        'nvle;': '\u2264\u20d2',
 | 
						|
        'nvlt;': '<\u20d2',
 | 
						|
        'nvltrie;': '\u22b4\u20d2',
 | 
						|
        'nvrArr;': '\u2903',
 | 
						|
        'nvrtrie;': '\u22b5\u20d2',
 | 
						|
        'nvsim;': '\u223c\u20d2',
 | 
						|
        'nwarhk;': '\u2923',
 | 
						|
        'nwArr;': '\u21d6',
 | 
						|
        'nwarr;': '\u2196',
 | 
						|
        'nwarrow;': '\u2196',
 | 
						|
        'nwnear;': '\u2927',
 | 
						|
        'Oacute': '\xd3',
 | 
						|
        'oacute': '\xf3',
 | 
						|
        'Oacute;': '\xd3',
 | 
						|
        'oacute;': '\xf3',
 | 
						|
        'oast;': '\u229b',
 | 
						|
        'ocir;': '\u229a',
 | 
						|
        'Ocirc': '\xd4',
 | 
						|
        'ocirc': '\xf4',
 | 
						|
        'Ocirc;': '\xd4',
 | 
						|
        'ocirc;': '\xf4',
 | 
						|
        'Ocy;': '\u041e',
 | 
						|
        'ocy;': '\u043e',
 | 
						|
        'odash;': '\u229d',
 | 
						|
        'Odblac;': '\u0150',
 | 
						|
        'odblac;': '\u0151',
 | 
						|
        'odiv;': '\u2a38',
 | 
						|
        'odot;': '\u2299',
 | 
						|
        'odsold;': '\u29bc',
 | 
						|
        'OElig;': '\u0152',
 | 
						|
        'oelig;': '\u0153',
 | 
						|
        'ofcir;': '\u29bf',
 | 
						|
        'Ofr;': '\U0001d512',
 | 
						|
        'ofr;': '\U0001d52c',
 | 
						|
        'ogon;': '\u02db',
 | 
						|
        'Ograve': '\xd2',
 | 
						|
        'ograve': '\xf2',
 | 
						|
        'Ograve;': '\xd2',
 | 
						|
        'ograve;': '\xf2',
 | 
						|
        'ogt;': '\u29c1',
 | 
						|
        'ohbar;': '\u29b5',
 | 
						|
        'ohm;': '\u03a9',
 | 
						|
        'oint;': '\u222e',
 | 
						|
        'olarr;': '\u21ba',
 | 
						|
        'olcir;': '\u29be',
 | 
						|
        'olcross;': '\u29bb',
 | 
						|
        'oline;': '\u203e',
 | 
						|
        'olt;': '\u29c0',
 | 
						|
        'Omacr;': '\u014c',
 | 
						|
        'omacr;': '\u014d',
 | 
						|
        'Omega;': '\u03a9',
 | 
						|
        'omega;': '\u03c9',
 | 
						|
        'Omicron;': '\u039f',
 | 
						|
        'omicron;': '\u03bf',
 | 
						|
        'omid;': '\u29b6',
 | 
						|
        'ominus;': '\u2296',
 | 
						|
        'Oopf;': '\U0001d546',
 | 
						|
        'oopf;': '\U0001d560',
 | 
						|
        'opar;': '\u29b7',
 | 
						|
        'OpenCurlyDoubleQuote;': '\u201c',
 | 
						|
        'OpenCurlyQuote;': '\u2018',
 | 
						|
        'operp;': '\u29b9',
 | 
						|
        'oplus;': '\u2295',
 | 
						|
        'Or;': '\u2a54',
 | 
						|
        'or;': '\u2228',
 | 
						|
        'orarr;': '\u21bb',
 | 
						|
        'ord;': '\u2a5d',
 | 
						|
        'order;': '\u2134',
 | 
						|
        'orderof;': '\u2134',
 | 
						|
        'ordf': '\xaa',
 | 
						|
        'ordf;': '\xaa',
 | 
						|
        'ordm': '\xba',
 | 
						|
        'ordm;': '\xba',
 | 
						|
        'origof;': '\u22b6',
 | 
						|
        'oror;': '\u2a56',
 | 
						|
        'orslope;': '\u2a57',
 | 
						|
        'orv;': '\u2a5b',
 | 
						|
        'oS;': '\u24c8',
 | 
						|
        'Oscr;': '\U0001d4aa',
 | 
						|
        'oscr;': '\u2134',
 | 
						|
        'Oslash': '\xd8',
 | 
						|
        'oslash': '\xf8',
 | 
						|
        'Oslash;': '\xd8',
 | 
						|
        'oslash;': '\xf8',
 | 
						|
        'osol;': '\u2298',
 | 
						|
        'Otilde': '\xd5',
 | 
						|
        'otilde': '\xf5',
 | 
						|
        'Otilde;': '\xd5',
 | 
						|
        'otilde;': '\xf5',
 | 
						|
        'Otimes;': '\u2a37',
 | 
						|
        'otimes;': '\u2297',
 | 
						|
        'otimesas;': '\u2a36',
 | 
						|
        'Ouml': '\xd6',
 | 
						|
        'ouml': '\xf6',
 | 
						|
        'Ouml;': '\xd6',
 | 
						|
        'ouml;': '\xf6',
 | 
						|
        'ovbar;': '\u233d',
 | 
						|
        'OverBar;': '\u203e',
 | 
						|
        'OverBrace;': '\u23de',
 | 
						|
        'OverBracket;': '\u23b4',
 | 
						|
        'OverParenthesis;': '\u23dc',
 | 
						|
        'par;': '\u2225',
 | 
						|
        'para': '\xb6',
 | 
						|
        'para;': '\xb6',
 | 
						|
        'parallel;': '\u2225',
 | 
						|
        'parsim;': '\u2af3',
 | 
						|
        'parsl;': '\u2afd',
 | 
						|
        'part;': '\u2202',
 | 
						|
        'PartialD;': '\u2202',
 | 
						|
        'Pcy;': '\u041f',
 | 
						|
        'pcy;': '\u043f',
 | 
						|
        'percnt;': '%',
 | 
						|
        'period;': '.',
 | 
						|
        'permil;': '\u2030',
 | 
						|
        'perp;': '\u22a5',
 | 
						|
        'pertenk;': '\u2031',
 | 
						|
        'Pfr;': '\U0001d513',
 | 
						|
        'pfr;': '\U0001d52d',
 | 
						|
        'Phi;': '\u03a6',
 | 
						|
        'phi;': '\u03c6',
 | 
						|
        'phiv;': '\u03d5',
 | 
						|
        'phmmat;': '\u2133',
 | 
						|
        'phone;': '\u260e',
 | 
						|
        'Pi;': '\u03a0',
 | 
						|
        'pi;': '\u03c0',
 | 
						|
        'pitchfork;': '\u22d4',
 | 
						|
        'piv;': '\u03d6',
 | 
						|
        'planck;': '\u210f',
 | 
						|
        'planckh;': '\u210e',
 | 
						|
        'plankv;': '\u210f',
 | 
						|
        'plus;': '+',
 | 
						|
        'plusacir;': '\u2a23',
 | 
						|
        'plusb;': '\u229e',
 | 
						|
        'pluscir;': '\u2a22',
 | 
						|
        'plusdo;': '\u2214',
 | 
						|
        'plusdu;': '\u2a25',
 | 
						|
        'pluse;': '\u2a72',
 | 
						|
        'PlusMinus;': '\xb1',
 | 
						|
        'plusmn': '\xb1',
 | 
						|
        'plusmn;': '\xb1',
 | 
						|
        'plussim;': '\u2a26',
 | 
						|
        'plustwo;': '\u2a27',
 | 
						|
        'pm;': '\xb1',
 | 
						|
        'Poincareplane;': '\u210c',
 | 
						|
        'pointint;': '\u2a15',
 | 
						|
        'Popf;': '\u2119',
 | 
						|
        'popf;': '\U0001d561',
 | 
						|
        'pound': '\xa3',
 | 
						|
        'pound;': '\xa3',
 | 
						|
        'Pr;': '\u2abb',
 | 
						|
        'pr;': '\u227a',
 | 
						|
        'prap;': '\u2ab7',
 | 
						|
        'prcue;': '\u227c',
 | 
						|
        'prE;': '\u2ab3',
 | 
						|
        'pre;': '\u2aaf',
 | 
						|
        'prec;': '\u227a',
 | 
						|
        'precapprox;': '\u2ab7',
 | 
						|
        'preccurlyeq;': '\u227c',
 | 
						|
        'Precedes;': '\u227a',
 | 
						|
        'PrecedesEqual;': '\u2aaf',
 | 
						|
        'PrecedesSlantEqual;': '\u227c',
 | 
						|
        'PrecedesTilde;': '\u227e',
 | 
						|
        'preceq;': '\u2aaf',
 | 
						|
        'precnapprox;': '\u2ab9',
 | 
						|
        'precneqq;': '\u2ab5',
 | 
						|
        'precnsim;': '\u22e8',
 | 
						|
        'precsim;': '\u227e',
 | 
						|
        'Prime;': '\u2033',
 | 
						|
        'prime;': '\u2032',
 | 
						|
        'primes;': '\u2119',
 | 
						|
        'prnap;': '\u2ab9',
 | 
						|
        'prnE;': '\u2ab5',
 | 
						|
        'prnsim;': '\u22e8',
 | 
						|
        'prod;': '\u220f',
 | 
						|
        'Product;': '\u220f',
 | 
						|
        'profalar;': '\u232e',
 | 
						|
        'profline;': '\u2312',
 | 
						|
        'profsurf;': '\u2313',
 | 
						|
        'prop;': '\u221d',
 | 
						|
        'Proportion;': '\u2237',
 | 
						|
        'Proportional;': '\u221d',
 | 
						|
        'propto;': '\u221d',
 | 
						|
        'prsim;': '\u227e',
 | 
						|
        'prurel;': '\u22b0',
 | 
						|
        'Pscr;': '\U0001d4ab',
 | 
						|
        'pscr;': '\U0001d4c5',
 | 
						|
        'Psi;': '\u03a8',
 | 
						|
        'psi;': '\u03c8',
 | 
						|
        'puncsp;': '\u2008',
 | 
						|
        'Qfr;': '\U0001d514',
 | 
						|
        'qfr;': '\U0001d52e',
 | 
						|
        'qint;': '\u2a0c',
 | 
						|
        'Qopf;': '\u211a',
 | 
						|
        'qopf;': '\U0001d562',
 | 
						|
        'qprime;': '\u2057',
 | 
						|
        'Qscr;': '\U0001d4ac',
 | 
						|
        'qscr;': '\U0001d4c6',
 | 
						|
        'quaternions;': '\u210d',
 | 
						|
        'quatint;': '\u2a16',
 | 
						|
        'quest;': '?',
 | 
						|
        'questeq;': '\u225f',
 | 
						|
        'QUOT': '"',
 | 
						|
        'quot': '"',
 | 
						|
        'QUOT;': '"',
 | 
						|
        'quot;': '"',
 | 
						|
        'rAarr;': '\u21db',
 | 
						|
        'race;': '\u223d\u0331',
 | 
						|
        'Racute;': '\u0154',
 | 
						|
        'racute;': '\u0155',
 | 
						|
        'radic;': '\u221a',
 | 
						|
        'raemptyv;': '\u29b3',
 | 
						|
        'Rang;': '\u27eb',
 | 
						|
        'rang;': '\u27e9',
 | 
						|
        'rangd;': '\u2992',
 | 
						|
        'range;': '\u29a5',
 | 
						|
        'rangle;': '\u27e9',
 | 
						|
        'raquo': '\xbb',
 | 
						|
        'raquo;': '\xbb',
 | 
						|
        'Rarr;': '\u21a0',
 | 
						|
        'rArr;': '\u21d2',
 | 
						|
        'rarr;': '\u2192',
 | 
						|
        'rarrap;': '\u2975',
 | 
						|
        'rarrb;': '\u21e5',
 | 
						|
        'rarrbfs;': '\u2920',
 | 
						|
        'rarrc;': '\u2933',
 | 
						|
        'rarrfs;': '\u291e',
 | 
						|
        'rarrhk;': '\u21aa',
 | 
						|
        'rarrlp;': '\u21ac',
 | 
						|
        'rarrpl;': '\u2945',
 | 
						|
        'rarrsim;': '\u2974',
 | 
						|
        'Rarrtl;': '\u2916',
 | 
						|
        'rarrtl;': '\u21a3',
 | 
						|
        'rarrw;': '\u219d',
 | 
						|
        'rAtail;': '\u291c',
 | 
						|
        'ratail;': '\u291a',
 | 
						|
        'ratio;': '\u2236',
 | 
						|
        'rationals;': '\u211a',
 | 
						|
        'RBarr;': '\u2910',
 | 
						|
        'rBarr;': '\u290f',
 | 
						|
        'rbarr;': '\u290d',
 | 
						|
        'rbbrk;': '\u2773',
 | 
						|
        'rbrace;': '}',
 | 
						|
        'rbrack;': ']',
 | 
						|
        'rbrke;': '\u298c',
 | 
						|
        'rbrksld;': '\u298e',
 | 
						|
        'rbrkslu;': '\u2990',
 | 
						|
        'Rcaron;': '\u0158',
 | 
						|
        'rcaron;': '\u0159',
 | 
						|
        'Rcedil;': '\u0156',
 | 
						|
        'rcedil;': '\u0157',
 | 
						|
        'rceil;': '\u2309',
 | 
						|
        'rcub;': '}',
 | 
						|
        'Rcy;': '\u0420',
 | 
						|
        'rcy;': '\u0440',
 | 
						|
        'rdca;': '\u2937',
 | 
						|
        'rdldhar;': '\u2969',
 | 
						|
        'rdquo;': '\u201d',
 | 
						|
        'rdquor;': '\u201d',
 | 
						|
        'rdsh;': '\u21b3',
 | 
						|
        'Re;': '\u211c',
 | 
						|
        'real;': '\u211c',
 | 
						|
        'realine;': '\u211b',
 | 
						|
        'realpart;': '\u211c',
 | 
						|
        'reals;': '\u211d',
 | 
						|
        'rect;': '\u25ad',
 | 
						|
        'REG': '\xae',
 | 
						|
        'reg': '\xae',
 | 
						|
        'REG;': '\xae',
 | 
						|
        'reg;': '\xae',
 | 
						|
        'ReverseElement;': '\u220b',
 | 
						|
        'ReverseEquilibrium;': '\u21cb',
 | 
						|
        'ReverseUpEquilibrium;': '\u296f',
 | 
						|
        'rfisht;': '\u297d',
 | 
						|
        'rfloor;': '\u230b',
 | 
						|
        'Rfr;': '\u211c',
 | 
						|
        'rfr;': '\U0001d52f',
 | 
						|
        'rHar;': '\u2964',
 | 
						|
        'rhard;': '\u21c1',
 | 
						|
        'rharu;': '\u21c0',
 | 
						|
        'rharul;': '\u296c',
 | 
						|
        'Rho;': '\u03a1',
 | 
						|
        'rho;': '\u03c1',
 | 
						|
        'rhov;': '\u03f1',
 | 
						|
        'RightAngleBracket;': '\u27e9',
 | 
						|
        'RightArrow;': '\u2192',
 | 
						|
        'Rightarrow;': '\u21d2',
 | 
						|
        'rightarrow;': '\u2192',
 | 
						|
        'RightArrowBar;': '\u21e5',
 | 
						|
        'RightArrowLeftArrow;': '\u21c4',
 | 
						|
        'rightarrowtail;': '\u21a3',
 | 
						|
        'RightCeiling;': '\u2309',
 | 
						|
        'RightDoubleBracket;': '\u27e7',
 | 
						|
        'RightDownTeeVector;': '\u295d',
 | 
						|
        'RightDownVector;': '\u21c2',
 | 
						|
        'RightDownVectorBar;': '\u2955',
 | 
						|
        'RightFloor;': '\u230b',
 | 
						|
        'rightharpoondown;': '\u21c1',
 | 
						|
        'rightharpoonup;': '\u21c0',
 | 
						|
        'rightleftarrows;': '\u21c4',
 | 
						|
        'rightleftharpoons;': '\u21cc',
 | 
						|
        'rightrightarrows;': '\u21c9',
 | 
						|
        'rightsquigarrow;': '\u219d',
 | 
						|
        'RightTee;': '\u22a2',
 | 
						|
        'RightTeeArrow;': '\u21a6',
 | 
						|
        'RightTeeVector;': '\u295b',
 | 
						|
        'rightthreetimes;': '\u22cc',
 | 
						|
        'RightTriangle;': '\u22b3',
 | 
						|
        'RightTriangleBar;': '\u29d0',
 | 
						|
        'RightTriangleEqual;': '\u22b5',
 | 
						|
        'RightUpDownVector;': '\u294f',
 | 
						|
        'RightUpTeeVector;': '\u295c',
 | 
						|
        'RightUpVector;': '\u21be',
 | 
						|
        'RightUpVectorBar;': '\u2954',
 | 
						|
        'RightVector;': '\u21c0',
 | 
						|
        'RightVectorBar;': '\u2953',
 | 
						|
        'ring;': '\u02da',
 | 
						|
        'risingdotseq;': '\u2253',
 | 
						|
        'rlarr;': '\u21c4',
 | 
						|
        'rlhar;': '\u21cc',
 | 
						|
        'rlm;': '\u200f',
 | 
						|
        'rmoust;': '\u23b1',
 | 
						|
        'rmoustache;': '\u23b1',
 | 
						|
        'rnmid;': '\u2aee',
 | 
						|
        'roang;': '\u27ed',
 | 
						|
        'roarr;': '\u21fe',
 | 
						|
        'robrk;': '\u27e7',
 | 
						|
        'ropar;': '\u2986',
 | 
						|
        'Ropf;': '\u211d',
 | 
						|
        'ropf;': '\U0001d563',
 | 
						|
        'roplus;': '\u2a2e',
 | 
						|
        'rotimes;': '\u2a35',
 | 
						|
        'RoundImplies;': '\u2970',
 | 
						|
        'rpar;': ')',
 | 
						|
        'rpargt;': '\u2994',
 | 
						|
        'rppolint;': '\u2a12',
 | 
						|
        'rrarr;': '\u21c9',
 | 
						|
        'Rrightarrow;': '\u21db',
 | 
						|
        'rsaquo;': '\u203a',
 | 
						|
        'Rscr;': '\u211b',
 | 
						|
        'rscr;': '\U0001d4c7',
 | 
						|
        'Rsh;': '\u21b1',
 | 
						|
        'rsh;': '\u21b1',
 | 
						|
        'rsqb;': ']',
 | 
						|
        'rsquo;': '\u2019',
 | 
						|
        'rsquor;': '\u2019',
 | 
						|
        'rthree;': '\u22cc',
 | 
						|
        'rtimes;': '\u22ca',
 | 
						|
        'rtri;': '\u25b9',
 | 
						|
        'rtrie;': '\u22b5',
 | 
						|
        'rtrif;': '\u25b8',
 | 
						|
        'rtriltri;': '\u29ce',
 | 
						|
        'RuleDelayed;': '\u29f4',
 | 
						|
        'ruluhar;': '\u2968',
 | 
						|
        'rx;': '\u211e',
 | 
						|
        'Sacute;': '\u015a',
 | 
						|
        'sacute;': '\u015b',
 | 
						|
        'sbquo;': '\u201a',
 | 
						|
        'Sc;': '\u2abc',
 | 
						|
        'sc;': '\u227b',
 | 
						|
        'scap;': '\u2ab8',
 | 
						|
        'Scaron;': '\u0160',
 | 
						|
        'scaron;': '\u0161',
 | 
						|
        'sccue;': '\u227d',
 | 
						|
        'scE;': '\u2ab4',
 | 
						|
        'sce;': '\u2ab0',
 | 
						|
        'Scedil;': '\u015e',
 | 
						|
        'scedil;': '\u015f',
 | 
						|
        'Scirc;': '\u015c',
 | 
						|
        'scirc;': '\u015d',
 | 
						|
        'scnap;': '\u2aba',
 | 
						|
        'scnE;': '\u2ab6',
 | 
						|
        'scnsim;': '\u22e9',
 | 
						|
        'scpolint;': '\u2a13',
 | 
						|
        'scsim;': '\u227f',
 | 
						|
        'Scy;': '\u0421',
 | 
						|
        'scy;': '\u0441',
 | 
						|
        'sdot;': '\u22c5',
 | 
						|
        'sdotb;': '\u22a1',
 | 
						|
        'sdote;': '\u2a66',
 | 
						|
        'searhk;': '\u2925',
 | 
						|
        'seArr;': '\u21d8',
 | 
						|
        'searr;': '\u2198',
 | 
						|
        'searrow;': '\u2198',
 | 
						|
        'sect': '\xa7',
 | 
						|
        'sect;': '\xa7',
 | 
						|
        'semi;': ';',
 | 
						|
        'seswar;': '\u2929',
 | 
						|
        'setminus;': '\u2216',
 | 
						|
        'setmn;': '\u2216',
 | 
						|
        'sext;': '\u2736',
 | 
						|
        'Sfr;': '\U0001d516',
 | 
						|
        'sfr;': '\U0001d530',
 | 
						|
        'sfrown;': '\u2322',
 | 
						|
        'sharp;': '\u266f',
 | 
						|
        'SHCHcy;': '\u0429',
 | 
						|
        'shchcy;': '\u0449',
 | 
						|
        'SHcy;': '\u0428',
 | 
						|
        'shcy;': '\u0448',
 | 
						|
        'ShortDownArrow;': '\u2193',
 | 
						|
        'ShortLeftArrow;': '\u2190',
 | 
						|
        'shortmid;': '\u2223',
 | 
						|
        'shortparallel;': '\u2225',
 | 
						|
        'ShortRightArrow;': '\u2192',
 | 
						|
        'ShortUpArrow;': '\u2191',
 | 
						|
        'shy': '\xad',
 | 
						|
        'shy;': '\xad',
 | 
						|
        'Sigma;': '\u03a3',
 | 
						|
        'sigma;': '\u03c3',
 | 
						|
        'sigmaf;': '\u03c2',
 | 
						|
        'sigmav;': '\u03c2',
 | 
						|
        'sim;': '\u223c',
 | 
						|
        'simdot;': '\u2a6a',
 | 
						|
        'sime;': '\u2243',
 | 
						|
        'simeq;': '\u2243',
 | 
						|
        'simg;': '\u2a9e',
 | 
						|
        'simgE;': '\u2aa0',
 | 
						|
        'siml;': '\u2a9d',
 | 
						|
        'simlE;': '\u2a9f',
 | 
						|
        'simne;': '\u2246',
 | 
						|
        'simplus;': '\u2a24',
 | 
						|
        'simrarr;': '\u2972',
 | 
						|
        'slarr;': '\u2190',
 | 
						|
        'SmallCircle;': '\u2218',
 | 
						|
        'smallsetminus;': '\u2216',
 | 
						|
        'smashp;': '\u2a33',
 | 
						|
        'smeparsl;': '\u29e4',
 | 
						|
        'smid;': '\u2223',
 | 
						|
        'smile;': '\u2323',
 | 
						|
        'smt;': '\u2aaa',
 | 
						|
        'smte;': '\u2aac',
 | 
						|
        'smtes;': '\u2aac\ufe00',
 | 
						|
        'SOFTcy;': '\u042c',
 | 
						|
        'softcy;': '\u044c',
 | 
						|
        'sol;': '/',
 | 
						|
        'solb;': '\u29c4',
 | 
						|
        'solbar;': '\u233f',
 | 
						|
        'Sopf;': '\U0001d54a',
 | 
						|
        'sopf;': '\U0001d564',
 | 
						|
        'spades;': '\u2660',
 | 
						|
        'spadesuit;': '\u2660',
 | 
						|
        'spar;': '\u2225',
 | 
						|
        'sqcap;': '\u2293',
 | 
						|
        'sqcaps;': '\u2293\ufe00',
 | 
						|
        'sqcup;': '\u2294',
 | 
						|
        'sqcups;': '\u2294\ufe00',
 | 
						|
        'Sqrt;': '\u221a',
 | 
						|
        'sqsub;': '\u228f',
 | 
						|
        'sqsube;': '\u2291',
 | 
						|
        'sqsubset;': '\u228f',
 | 
						|
        'sqsubseteq;': '\u2291',
 | 
						|
        'sqsup;': '\u2290',
 | 
						|
        'sqsupe;': '\u2292',
 | 
						|
        'sqsupset;': '\u2290',
 | 
						|
        'sqsupseteq;': '\u2292',
 | 
						|
        'squ;': '\u25a1',
 | 
						|
        'Square;': '\u25a1',
 | 
						|
        'square;': '\u25a1',
 | 
						|
        'SquareIntersection;': '\u2293',
 | 
						|
        'SquareSubset;': '\u228f',
 | 
						|
        'SquareSubsetEqual;': '\u2291',
 | 
						|
        'SquareSuperset;': '\u2290',
 | 
						|
        'SquareSupersetEqual;': '\u2292',
 | 
						|
        'SquareUnion;': '\u2294',
 | 
						|
        'squarf;': '\u25aa',
 | 
						|
        'squf;': '\u25aa',
 | 
						|
        'srarr;': '\u2192',
 | 
						|
        'Sscr;': '\U0001d4ae',
 | 
						|
        'sscr;': '\U0001d4c8',
 | 
						|
        'ssetmn;': '\u2216',
 | 
						|
        'ssmile;': '\u2323',
 | 
						|
        'sstarf;': '\u22c6',
 | 
						|
        'Star;': '\u22c6',
 | 
						|
        'star;': '\u2606',
 | 
						|
        'starf;': '\u2605',
 | 
						|
        'straightepsilon;': '\u03f5',
 | 
						|
        'straightphi;': '\u03d5',
 | 
						|
        'strns;': '\xaf',
 | 
						|
        'Sub;': '\u22d0',
 | 
						|
        'sub;': '\u2282',
 | 
						|
        'subdot;': '\u2abd',
 | 
						|
        'subE;': '\u2ac5',
 | 
						|
        'sube;': '\u2286',
 | 
						|
        'subedot;': '\u2ac3',
 | 
						|
        'submult;': '\u2ac1',
 | 
						|
        'subnE;': '\u2acb',
 | 
						|
        'subne;': '\u228a',
 | 
						|
        'subplus;': '\u2abf',
 | 
						|
        'subrarr;': '\u2979',
 | 
						|
        'Subset;': '\u22d0',
 | 
						|
        'subset;': '\u2282',
 | 
						|
        'subseteq;': '\u2286',
 | 
						|
        'subseteqq;': '\u2ac5',
 | 
						|
        'SubsetEqual;': '\u2286',
 | 
						|
        'subsetneq;': '\u228a',
 | 
						|
        'subsetneqq;': '\u2acb',
 | 
						|
        'subsim;': '\u2ac7',
 | 
						|
        'subsub;': '\u2ad5',
 | 
						|
        'subsup;': '\u2ad3',
 | 
						|
        'succ;': '\u227b',
 | 
						|
        'succapprox;': '\u2ab8',
 | 
						|
        'succcurlyeq;': '\u227d',
 | 
						|
        'Succeeds;': '\u227b',
 | 
						|
        'SucceedsEqual;': '\u2ab0',
 | 
						|
        'SucceedsSlantEqual;': '\u227d',
 | 
						|
        'SucceedsTilde;': '\u227f',
 | 
						|
        'succeq;': '\u2ab0',
 | 
						|
        'succnapprox;': '\u2aba',
 | 
						|
        'succneqq;': '\u2ab6',
 | 
						|
        'succnsim;': '\u22e9',
 | 
						|
        'succsim;': '\u227f',
 | 
						|
        'SuchThat;': '\u220b',
 | 
						|
        'Sum;': '\u2211',
 | 
						|
        'sum;': '\u2211',
 | 
						|
        'sung;': '\u266a',
 | 
						|
        'sup1': '\xb9',
 | 
						|
        'sup1;': '\xb9',
 | 
						|
        'sup2': '\xb2',
 | 
						|
        'sup2;': '\xb2',
 | 
						|
        'sup3': '\xb3',
 | 
						|
        'sup3;': '\xb3',
 | 
						|
        'Sup;': '\u22d1',
 | 
						|
        'sup;': '\u2283',
 | 
						|
        'supdot;': '\u2abe',
 | 
						|
        'supdsub;': '\u2ad8',
 | 
						|
        'supE;': '\u2ac6',
 | 
						|
        'supe;': '\u2287',
 | 
						|
        'supedot;': '\u2ac4',
 | 
						|
        'Superset;': '\u2283',
 | 
						|
        'SupersetEqual;': '\u2287',
 | 
						|
        'suphsol;': '\u27c9',
 | 
						|
        'suphsub;': '\u2ad7',
 | 
						|
        'suplarr;': '\u297b',
 | 
						|
        'supmult;': '\u2ac2',
 | 
						|
        'supnE;': '\u2acc',
 | 
						|
        'supne;': '\u228b',
 | 
						|
        'supplus;': '\u2ac0',
 | 
						|
        'Supset;': '\u22d1',
 | 
						|
        'supset;': '\u2283',
 | 
						|
        'supseteq;': '\u2287',
 | 
						|
        'supseteqq;': '\u2ac6',
 | 
						|
        'supsetneq;': '\u228b',
 | 
						|
        'supsetneqq;': '\u2acc',
 | 
						|
        'supsim;': '\u2ac8',
 | 
						|
        'supsub;': '\u2ad4',
 | 
						|
        'supsup;': '\u2ad6',
 | 
						|
        'swarhk;': '\u2926',
 | 
						|
        'swArr;': '\u21d9',
 | 
						|
        'swarr;': '\u2199',
 | 
						|
        'swarrow;': '\u2199',
 | 
						|
        'swnwar;': '\u292a',
 | 
						|
        'szlig': '\xdf',
 | 
						|
        'szlig;': '\xdf',
 | 
						|
        'Tab;': '\t',
 | 
						|
        'target;': '\u2316',
 | 
						|
        'Tau;': '\u03a4',
 | 
						|
        'tau;': '\u03c4',
 | 
						|
        'tbrk;': '\u23b4',
 | 
						|
        'Tcaron;': '\u0164',
 | 
						|
        'tcaron;': '\u0165',
 | 
						|
        'Tcedil;': '\u0162',
 | 
						|
        'tcedil;': '\u0163',
 | 
						|
        'Tcy;': '\u0422',
 | 
						|
        'tcy;': '\u0442',
 | 
						|
        'tdot;': '\u20db',
 | 
						|
        'telrec;': '\u2315',
 | 
						|
        'Tfr;': '\U0001d517',
 | 
						|
        'tfr;': '\U0001d531',
 | 
						|
        'there4;': '\u2234',
 | 
						|
        'Therefore;': '\u2234',
 | 
						|
        'therefore;': '\u2234',
 | 
						|
        'Theta;': '\u0398',
 | 
						|
        'theta;': '\u03b8',
 | 
						|
        'thetasym;': '\u03d1',
 | 
						|
        'thetav;': '\u03d1',
 | 
						|
        'thickapprox;': '\u2248',
 | 
						|
        'thicksim;': '\u223c',
 | 
						|
        'ThickSpace;': '\u205f\u200a',
 | 
						|
        'thinsp;': '\u2009',
 | 
						|
        'ThinSpace;': '\u2009',
 | 
						|
        'thkap;': '\u2248',
 | 
						|
        'thksim;': '\u223c',
 | 
						|
        'THORN': '\xde',
 | 
						|
        'thorn': '\xfe',
 | 
						|
        'THORN;': '\xde',
 | 
						|
        'thorn;': '\xfe',
 | 
						|
        'Tilde;': '\u223c',
 | 
						|
        'tilde;': '\u02dc',
 | 
						|
        'TildeEqual;': '\u2243',
 | 
						|
        'TildeFullEqual;': '\u2245',
 | 
						|
        'TildeTilde;': '\u2248',
 | 
						|
        'times': '\xd7',
 | 
						|
        'times;': '\xd7',
 | 
						|
        'timesb;': '\u22a0',
 | 
						|
        'timesbar;': '\u2a31',
 | 
						|
        'timesd;': '\u2a30',
 | 
						|
        'tint;': '\u222d',
 | 
						|
        'toea;': '\u2928',
 | 
						|
        'top;': '\u22a4',
 | 
						|
        'topbot;': '\u2336',
 | 
						|
        'topcir;': '\u2af1',
 | 
						|
        'Topf;': '\U0001d54b',
 | 
						|
        'topf;': '\U0001d565',
 | 
						|
        'topfork;': '\u2ada',
 | 
						|
        'tosa;': '\u2929',
 | 
						|
        'tprime;': '\u2034',
 | 
						|
        'TRADE;': '\u2122',
 | 
						|
        'trade;': '\u2122',
 | 
						|
        'triangle;': '\u25b5',
 | 
						|
        'triangledown;': '\u25bf',
 | 
						|
        'triangleleft;': '\u25c3',
 | 
						|
        'trianglelefteq;': '\u22b4',
 | 
						|
        'triangleq;': '\u225c',
 | 
						|
        'triangleright;': '\u25b9',
 | 
						|
        'trianglerighteq;': '\u22b5',
 | 
						|
        'tridot;': '\u25ec',
 | 
						|
        'trie;': '\u225c',
 | 
						|
        'triminus;': '\u2a3a',
 | 
						|
        'TripleDot;': '\u20db',
 | 
						|
        'triplus;': '\u2a39',
 | 
						|
        'trisb;': '\u29cd',
 | 
						|
        'tritime;': '\u2a3b',
 | 
						|
        'trpezium;': '\u23e2',
 | 
						|
        'Tscr;': '\U0001d4af',
 | 
						|
        'tscr;': '\U0001d4c9',
 | 
						|
        'TScy;': '\u0426',
 | 
						|
        'tscy;': '\u0446',
 | 
						|
        'TSHcy;': '\u040b',
 | 
						|
        'tshcy;': '\u045b',
 | 
						|
        'Tstrok;': '\u0166',
 | 
						|
        'tstrok;': '\u0167',
 | 
						|
        'twixt;': '\u226c',
 | 
						|
        'twoheadleftarrow;': '\u219e',
 | 
						|
        'twoheadrightarrow;': '\u21a0',
 | 
						|
        'Uacute': '\xda',
 | 
						|
        'uacute': '\xfa',
 | 
						|
        'Uacute;': '\xda',
 | 
						|
        'uacute;': '\xfa',
 | 
						|
        'Uarr;': '\u219f',
 | 
						|
        'uArr;': '\u21d1',
 | 
						|
        'uarr;': '\u2191',
 | 
						|
        'Uarrocir;': '\u2949',
 | 
						|
        'Ubrcy;': '\u040e',
 | 
						|
        'ubrcy;': '\u045e',
 | 
						|
        'Ubreve;': '\u016c',
 | 
						|
        'ubreve;': '\u016d',
 | 
						|
        'Ucirc': '\xdb',
 | 
						|
        'ucirc': '\xfb',
 | 
						|
        'Ucirc;': '\xdb',
 | 
						|
        'ucirc;': '\xfb',
 | 
						|
        'Ucy;': '\u0423',
 | 
						|
        'ucy;': '\u0443',
 | 
						|
        'udarr;': '\u21c5',
 | 
						|
        'Udblac;': '\u0170',
 | 
						|
        'udblac;': '\u0171',
 | 
						|
        'udhar;': '\u296e',
 | 
						|
        'ufisht;': '\u297e',
 | 
						|
        'Ufr;': '\U0001d518',
 | 
						|
        'ufr;': '\U0001d532',
 | 
						|
        'Ugrave': '\xd9',
 | 
						|
        'ugrave': '\xf9',
 | 
						|
        'Ugrave;': '\xd9',
 | 
						|
        'ugrave;': '\xf9',
 | 
						|
        'uHar;': '\u2963',
 | 
						|
        'uharl;': '\u21bf',
 | 
						|
        'uharr;': '\u21be',
 | 
						|
        'uhblk;': '\u2580',
 | 
						|
        'ulcorn;': '\u231c',
 | 
						|
        'ulcorner;': '\u231c',
 | 
						|
        'ulcrop;': '\u230f',
 | 
						|
        'ultri;': '\u25f8',
 | 
						|
        'Umacr;': '\u016a',
 | 
						|
        'umacr;': '\u016b',
 | 
						|
        'uml': '\xa8',
 | 
						|
        'uml;': '\xa8',
 | 
						|
        'UnderBar;': '_',
 | 
						|
        'UnderBrace;': '\u23df',
 | 
						|
        'UnderBracket;': '\u23b5',
 | 
						|
        'UnderParenthesis;': '\u23dd',
 | 
						|
        'Union;': '\u22c3',
 | 
						|
        'UnionPlus;': '\u228e',
 | 
						|
        'Uogon;': '\u0172',
 | 
						|
        'uogon;': '\u0173',
 | 
						|
        'Uopf;': '\U0001d54c',
 | 
						|
        'uopf;': '\U0001d566',
 | 
						|
        'UpArrow;': '\u2191',
 | 
						|
        'Uparrow;': '\u21d1',
 | 
						|
        'uparrow;': '\u2191',
 | 
						|
        'UpArrowBar;': '\u2912',
 | 
						|
        'UpArrowDownArrow;': '\u21c5',
 | 
						|
        'UpDownArrow;': '\u2195',
 | 
						|
        'Updownarrow;': '\u21d5',
 | 
						|
        'updownarrow;': '\u2195',
 | 
						|
        'UpEquilibrium;': '\u296e',
 | 
						|
        'upharpoonleft;': '\u21bf',
 | 
						|
        'upharpoonright;': '\u21be',
 | 
						|
        'uplus;': '\u228e',
 | 
						|
        'UpperLeftArrow;': '\u2196',
 | 
						|
        'UpperRightArrow;': '\u2197',
 | 
						|
        'Upsi;': '\u03d2',
 | 
						|
        'upsi;': '\u03c5',
 | 
						|
        'upsih;': '\u03d2',
 | 
						|
        'Upsilon;': '\u03a5',
 | 
						|
        'upsilon;': '\u03c5',
 | 
						|
        'UpTee;': '\u22a5',
 | 
						|
        'UpTeeArrow;': '\u21a5',
 | 
						|
        'upuparrows;': '\u21c8',
 | 
						|
        'urcorn;': '\u231d',
 | 
						|
        'urcorner;': '\u231d',
 | 
						|
        'urcrop;': '\u230e',
 | 
						|
        'Uring;': '\u016e',
 | 
						|
        'uring;': '\u016f',
 | 
						|
        'urtri;': '\u25f9',
 | 
						|
        'Uscr;': '\U0001d4b0',
 | 
						|
        'uscr;': '\U0001d4ca',
 | 
						|
        'utdot;': '\u22f0',
 | 
						|
        'Utilde;': '\u0168',
 | 
						|
        'utilde;': '\u0169',
 | 
						|
        'utri;': '\u25b5',
 | 
						|
        'utrif;': '\u25b4',
 | 
						|
        'uuarr;': '\u21c8',
 | 
						|
        'Uuml': '\xdc',
 | 
						|
        'uuml': '\xfc',
 | 
						|
        'Uuml;': '\xdc',
 | 
						|
        'uuml;': '\xfc',
 | 
						|
        'uwangle;': '\u29a7',
 | 
						|
        'vangrt;': '\u299c',
 | 
						|
        'varepsilon;': '\u03f5',
 | 
						|
        'varkappa;': '\u03f0',
 | 
						|
        'varnothing;': '\u2205',
 | 
						|
        'varphi;': '\u03d5',
 | 
						|
        'varpi;': '\u03d6',
 | 
						|
        'varpropto;': '\u221d',
 | 
						|
        'vArr;': '\u21d5',
 | 
						|
        'varr;': '\u2195',
 | 
						|
        'varrho;': '\u03f1',
 | 
						|
        'varsigma;': '\u03c2',
 | 
						|
        'varsubsetneq;': '\u228a\ufe00',
 | 
						|
        'varsubsetneqq;': '\u2acb\ufe00',
 | 
						|
        'varsupsetneq;': '\u228b\ufe00',
 | 
						|
        'varsupsetneqq;': '\u2acc\ufe00',
 | 
						|
        'vartheta;': '\u03d1',
 | 
						|
        'vartriangleleft;': '\u22b2',
 | 
						|
        'vartriangleright;': '\u22b3',
 | 
						|
        'Vbar;': '\u2aeb',
 | 
						|
        'vBar;': '\u2ae8',
 | 
						|
        'vBarv;': '\u2ae9',
 | 
						|
        'Vcy;': '\u0412',
 | 
						|
        'vcy;': '\u0432',
 | 
						|
        'VDash;': '\u22ab',
 | 
						|
        'Vdash;': '\u22a9',
 | 
						|
        'vDash;': '\u22a8',
 | 
						|
        'vdash;': '\u22a2',
 | 
						|
        'Vdashl;': '\u2ae6',
 | 
						|
        'Vee;': '\u22c1',
 | 
						|
        'vee;': '\u2228',
 | 
						|
        'veebar;': '\u22bb',
 | 
						|
        'veeeq;': '\u225a',
 | 
						|
        'vellip;': '\u22ee',
 | 
						|
        'Verbar;': '\u2016',
 | 
						|
        'verbar;': '|',
 | 
						|
        'Vert;': '\u2016',
 | 
						|
        'vert;': '|',
 | 
						|
        'VerticalBar;': '\u2223',
 | 
						|
        'VerticalLine;': '|',
 | 
						|
        'VerticalSeparator;': '\u2758',
 | 
						|
        'VerticalTilde;': '\u2240',
 | 
						|
        'VeryThinSpace;': '\u200a',
 | 
						|
        'Vfr;': '\U0001d519',
 | 
						|
        'vfr;': '\U0001d533',
 | 
						|
        'vltri;': '\u22b2',
 | 
						|
        'vnsub;': '\u2282\u20d2',
 | 
						|
        'vnsup;': '\u2283\u20d2',
 | 
						|
        'Vopf;': '\U0001d54d',
 | 
						|
        'vopf;': '\U0001d567',
 | 
						|
        'vprop;': '\u221d',
 | 
						|
        'vrtri;': '\u22b3',
 | 
						|
        'Vscr;': '\U0001d4b1',
 | 
						|
        'vscr;': '\U0001d4cb',
 | 
						|
        'vsubnE;': '\u2acb\ufe00',
 | 
						|
        'vsubne;': '\u228a\ufe00',
 | 
						|
        'vsupnE;': '\u2acc\ufe00',
 | 
						|
        'vsupne;': '\u228b\ufe00',
 | 
						|
        'Vvdash;': '\u22aa',
 | 
						|
        'vzigzag;': '\u299a',
 | 
						|
        'Wcirc;': '\u0174',
 | 
						|
        'wcirc;': '\u0175',
 | 
						|
        'wedbar;': '\u2a5f',
 | 
						|
        'Wedge;': '\u22c0',
 | 
						|
        'wedge;': '\u2227',
 | 
						|
        'wedgeq;': '\u2259',
 | 
						|
        'weierp;': '\u2118',
 | 
						|
        'Wfr;': '\U0001d51a',
 | 
						|
        'wfr;': '\U0001d534',
 | 
						|
        'Wopf;': '\U0001d54e',
 | 
						|
        'wopf;': '\U0001d568',
 | 
						|
        'wp;': '\u2118',
 | 
						|
        'wr;': '\u2240',
 | 
						|
        'wreath;': '\u2240',
 | 
						|
        'Wscr;': '\U0001d4b2',
 | 
						|
        'wscr;': '\U0001d4cc',
 | 
						|
        'xcap;': '\u22c2',
 | 
						|
        'xcirc;': '\u25ef',
 | 
						|
        'xcup;': '\u22c3',
 | 
						|
        'xdtri;': '\u25bd',
 | 
						|
        'Xfr;': '\U0001d51b',
 | 
						|
        'xfr;': '\U0001d535',
 | 
						|
        'xhArr;': '\u27fa',
 | 
						|
        'xharr;': '\u27f7',
 | 
						|
        'Xi;': '\u039e',
 | 
						|
        'xi;': '\u03be',
 | 
						|
        'xlArr;': '\u27f8',
 | 
						|
        'xlarr;': '\u27f5',
 | 
						|
        'xmap;': '\u27fc',
 | 
						|
        'xnis;': '\u22fb',
 | 
						|
        'xodot;': '\u2a00',
 | 
						|
        'Xopf;': '\U0001d54f',
 | 
						|
        'xopf;': '\U0001d569',
 | 
						|
        'xoplus;': '\u2a01',
 | 
						|
        'xotime;': '\u2a02',
 | 
						|
        'xrArr;': '\u27f9',
 | 
						|
        'xrarr;': '\u27f6',
 | 
						|
        'Xscr;': '\U0001d4b3',
 | 
						|
        'xscr;': '\U0001d4cd',
 | 
						|
        'xsqcup;': '\u2a06',
 | 
						|
        'xuplus;': '\u2a04',
 | 
						|
        'xutri;': '\u25b3',
 | 
						|
        'xvee;': '\u22c1',
 | 
						|
        'xwedge;': '\u22c0',
 | 
						|
        'Yacute': '\xdd',
 | 
						|
        'yacute': '\xfd',
 | 
						|
        'Yacute;': '\xdd',
 | 
						|
        'yacute;': '\xfd',
 | 
						|
        'YAcy;': '\u042f',
 | 
						|
        'yacy;': '\u044f',
 | 
						|
        'Ycirc;': '\u0176',
 | 
						|
        'ycirc;': '\u0177',
 | 
						|
        'Ycy;': '\u042b',
 | 
						|
        'ycy;': '\u044b',
 | 
						|
        'yen': '\xa5',
 | 
						|
        'yen;': '\xa5',
 | 
						|
        'Yfr;': '\U0001d51c',
 | 
						|
        'yfr;': '\U0001d536',
 | 
						|
        'YIcy;': '\u0407',
 | 
						|
        'yicy;': '\u0457',
 | 
						|
        'Yopf;': '\U0001d550',
 | 
						|
        'yopf;': '\U0001d56a',
 | 
						|
        'Yscr;': '\U0001d4b4',
 | 
						|
        'yscr;': '\U0001d4ce',
 | 
						|
        'YUcy;': '\u042e',
 | 
						|
        'yucy;': '\u044e',
 | 
						|
        'yuml': '\xff',
 | 
						|
        'Yuml;': '\u0178',
 | 
						|
        'yuml;': '\xff',
 | 
						|
        'Zacute;': '\u0179',
 | 
						|
        'zacute;': '\u017a',
 | 
						|
        'Zcaron;': '\u017d',
 | 
						|
        'zcaron;': '\u017e',
 | 
						|
        'Zcy;': '\u0417',
 | 
						|
        'zcy;': '\u0437',
 | 
						|
        'Zdot;': '\u017b',
 | 
						|
        'zdot;': '\u017c',
 | 
						|
        'zeetrf;': '\u2128',
 | 
						|
        'ZeroWidthSpace;': '\u200b',
 | 
						|
        'Zeta;': '\u0396',
 | 
						|
        'zeta;': '\u03b6',
 | 
						|
        'Zfr;': '\u2128',
 | 
						|
        'zfr;': '\U0001d537',
 | 
						|
        'ZHcy;': '\u0416',
 | 
						|
        'zhcy;': '\u0436',
 | 
						|
        'zigrarr;': '\u21dd',
 | 
						|
        'Zopf;': '\u2124',
 | 
						|
        'zopf;': '\U0001d56b',
 | 
						|
        'Zscr;': '\U0001d4b5',
 | 
						|
        'zscr;': '\U0001d4cf',
 | 
						|
        'zwj;': '\u200d',
 | 
						|
        'zwnj;': '\u200c',
 | 
						|
    }
 | 
						|
 | 
						|
try:
 | 
						|
    import http.client as compat_http_client
 | 
						|
except ImportError:  # Python 2
 | 
						|
    import httplib as compat_http_client
 | 
						|
 | 
						|
try:
 | 
						|
    from urllib.error import HTTPError as compat_HTTPError
 | 
						|
except ImportError:  # Python 2
 | 
						|
    from urllib2 import HTTPError as compat_HTTPError
 | 
						|
 | 
						|
try:
 | 
						|
    from urllib.request import urlretrieve as compat_urlretrieve
 | 
						|
except ImportError:  # Python 2
 | 
						|
    from urllib import urlretrieve as compat_urlretrieve
 | 
						|
 | 
						|
try:
 | 
						|
    from html.parser import HTMLParser as compat_HTMLParser
 | 
						|
except ImportError:  # Python 2
 | 
						|
    from HTMLParser import HTMLParser as compat_HTMLParser
 | 
						|
 | 
						|
try:
 | 
						|
    from subprocess import DEVNULL
 | 
						|
    compat_subprocess_get_DEVNULL = lambda: DEVNULL
 | 
						|
except ImportError:
 | 
						|
    compat_subprocess_get_DEVNULL = lambda: open(os.path.devnull, 'w')
 | 
						|
 | 
						|
try:
 | 
						|
    import http.server as compat_http_server
 | 
						|
except ImportError:
 | 
						|
    import BaseHTTPServer as compat_http_server
 | 
						|
 | 
						|
try:
 | 
						|
    compat_str = unicode  # Python 2
 | 
						|
except NameError:
 | 
						|
    compat_str = str
 | 
						|
 | 
						|
try:
 | 
						|
    from urllib.parse import unquote_to_bytes as compat_urllib_parse_unquote_to_bytes
 | 
						|
    from urllib.parse import unquote as compat_urllib_parse_unquote
 | 
						|
    from urllib.parse import unquote_plus as compat_urllib_parse_unquote_plus
 | 
						|
except ImportError:  # Python 2
 | 
						|
    _asciire = (compat_urllib_parse._asciire if hasattr(compat_urllib_parse, '_asciire')
 | 
						|
                else re.compile('([\x00-\x7f]+)'))
 | 
						|
 | 
						|
    # HACK: The following are the correct unquote_to_bytes, unquote and unquote_plus
 | 
						|
    # implementations from cpython 3.4.3's stdlib. Python 2's version
 | 
						|
    # is apparently broken (see https://github.com/rg3/youtube-dl/pull/6244)
 | 
						|
 | 
						|
    def compat_urllib_parse_unquote_to_bytes(string):
 | 
						|
        """unquote_to_bytes('abc%20def') -> b'abc def'."""
 | 
						|
        # Note: strings are encoded as UTF-8. This is only an issue if it contains
 | 
						|
        # unescaped non-ASCII characters, which URIs should not.
 | 
						|
        if not string:
 | 
						|
            # Is it a string-like object?
 | 
						|
            string.split
 | 
						|
            return b''
 | 
						|
        if isinstance(string, compat_str):
 | 
						|
            string = string.encode('utf-8')
 | 
						|
        bits = string.split(b'%')
 | 
						|
        if len(bits) == 1:
 | 
						|
            return string
 | 
						|
        res = [bits[0]]
 | 
						|
        append = res.append
 | 
						|
        for item in bits[1:]:
 | 
						|
            try:
 | 
						|
                append(compat_urllib_parse._hextochr[item[:2]])
 | 
						|
                append(item[2:])
 | 
						|
            except KeyError:
 | 
						|
                append(b'%')
 | 
						|
                append(item)
 | 
						|
        return b''.join(res)
 | 
						|
 | 
						|
    def compat_urllib_parse_unquote(string, encoding='utf-8', errors='replace'):
 | 
						|
        """Replace %xx escapes by their single-character equivalent. The optional
 | 
						|
        encoding and errors parameters specify how to decode percent-encoded
 | 
						|
        sequences into Unicode characters, as accepted by the bytes.decode()
 | 
						|
        method.
 | 
						|
        By default, percent-encoded sequences are decoded with UTF-8, and invalid
 | 
						|
        sequences are replaced by a placeholder character.
 | 
						|
 | 
						|
        unquote('abc%20def') -> 'abc def'.
 | 
						|
        """
 | 
						|
        if '%' not in string:
 | 
						|
            string.split
 | 
						|
            return string
 | 
						|
        if encoding is None:
 | 
						|
            encoding = 'utf-8'
 | 
						|
        if errors is None:
 | 
						|
            errors = 'replace'
 | 
						|
        bits = _asciire.split(string)
 | 
						|
        res = [bits[0]]
 | 
						|
        append = res.append
 | 
						|
        for i in range(1, len(bits), 2):
 | 
						|
            append(compat_urllib_parse_unquote_to_bytes(bits[i]).decode(encoding, errors))
 | 
						|
            append(bits[i + 1])
 | 
						|
        return ''.join(res)
 | 
						|
 | 
						|
    def compat_urllib_parse_unquote_plus(string, encoding='utf-8', errors='replace'):
 | 
						|
        """Like unquote(), but also replace plus signs by spaces, as required for
 | 
						|
        unquoting HTML form values.
 | 
						|
 | 
						|
        unquote_plus('%7e/abc+def') -> '~/abc def'
 | 
						|
        """
 | 
						|
        string = string.replace('+', ' ')
 | 
						|
        return compat_urllib_parse_unquote(string, encoding, errors)
 | 
						|
 | 
						|
try:
 | 
						|
    from urllib.parse import urlencode as compat_urllib_parse_urlencode
 | 
						|
except ImportError:  # Python 2
 | 
						|
    # Python 2 will choke in urlencode on mixture of byte and unicode strings.
 | 
						|
    # Possible solutions are to either port it from python 3 with all
 | 
						|
    # the friends or manually ensure input query contains only byte strings.
 | 
						|
    # We will stick with latter thus recursively encoding the whole query.
 | 
						|
    def compat_urllib_parse_urlencode(query, doseq=0, encoding='utf-8'):
 | 
						|
        def encode_elem(e):
 | 
						|
            if isinstance(e, dict):
 | 
						|
                e = encode_dict(e)
 | 
						|
            elif isinstance(e, (list, tuple,)):
 | 
						|
                list_e = encode_list(e)
 | 
						|
                e = tuple(list_e) if isinstance(e, tuple) else list_e
 | 
						|
            elif isinstance(e, compat_str):
 | 
						|
                e = e.encode(encoding)
 | 
						|
            return e
 | 
						|
 | 
						|
        def encode_dict(d):
 | 
						|
            return dict((encode_elem(k), encode_elem(v)) for k, v in d.items())
 | 
						|
 | 
						|
        def encode_list(l):
 | 
						|
            return [encode_elem(e) for e in l]
 | 
						|
 | 
						|
        return compat_urllib_parse.urlencode(encode_elem(query), doseq=doseq)
 | 
						|
 | 
						|
try:
 | 
						|
    from urllib.request import DataHandler as compat_urllib_request_DataHandler
 | 
						|
except ImportError:  # Python < 3.4
 | 
						|
    # Ported from CPython 98774:1733b3bd46db, Lib/urllib/request.py
 | 
						|
    class compat_urllib_request_DataHandler(compat_urllib_request.BaseHandler):
 | 
						|
        def data_open(self, req):
 | 
						|
            # data URLs as specified in RFC 2397.
 | 
						|
            #
 | 
						|
            # ignores POSTed data
 | 
						|
            #
 | 
						|
            # syntax:
 | 
						|
            # dataurl   := "data:" [ mediatype ] [ ";base64" ] "," data
 | 
						|
            # mediatype := [ type "/" subtype ] *( ";" parameter )
 | 
						|
            # data      := *urlchar
 | 
						|
            # parameter := attribute "=" value
 | 
						|
            url = req.get_full_url()
 | 
						|
 | 
						|
            scheme, data = url.split(':', 1)
 | 
						|
            mediatype, data = data.split(',', 1)
 | 
						|
 | 
						|
            # even base64 encoded data URLs might be quoted so unquote in any case:
 | 
						|
            data = compat_urllib_parse_unquote_to_bytes(data)
 | 
						|
            if mediatype.endswith(';base64'):
 | 
						|
                data = binascii.a2b_base64(data)
 | 
						|
                mediatype = mediatype[:-7]
 | 
						|
 | 
						|
            if not mediatype:
 | 
						|
                mediatype = 'text/plain;charset=US-ASCII'
 | 
						|
 | 
						|
            headers = email.message_from_string(
 | 
						|
                'Content-type: %s\nContent-length: %d\n' % (mediatype, len(data)))
 | 
						|
 | 
						|
            return compat_urllib_response.addinfourl(io.BytesIO(data), headers, url)
 | 
						|
 | 
						|
try:
 | 
						|
    compat_basestring = basestring  # Python 2
 | 
						|
except NameError:
 | 
						|
    compat_basestring = str
 | 
						|
 | 
						|
try:
 | 
						|
    compat_chr = unichr  # Python 2
 | 
						|
except NameError:
 | 
						|
    compat_chr = chr
 | 
						|
 | 
						|
try:
 | 
						|
    from xml.etree.ElementTree import ParseError as compat_xml_parse_error
 | 
						|
except ImportError:  # Python 2.6
 | 
						|
    from xml.parsers.expat import ExpatError as compat_xml_parse_error
 | 
						|
 | 
						|
 | 
						|
etree = xml.etree.ElementTree
 | 
						|
 | 
						|
 | 
						|
class _TreeBuilder(etree.TreeBuilder):
 | 
						|
    def doctype(self, name, pubid, system):
 | 
						|
        pass
 | 
						|
 | 
						|
 | 
						|
if sys.version_info[0] >= 3:
 | 
						|
    def compat_etree_fromstring(text):
 | 
						|
        return etree.XML(text, parser=etree.XMLParser(target=_TreeBuilder()))
 | 
						|
else:
 | 
						|
    # python 2.x tries to encode unicode strings with ascii (see the
 | 
						|
    # XMLParser._fixtext method)
 | 
						|
    try:
 | 
						|
        _etree_iter = etree.Element.iter
 | 
						|
    except AttributeError:  # Python <=2.6
 | 
						|
        def _etree_iter(root):
 | 
						|
            for el in root.findall('*'):
 | 
						|
                yield el
 | 
						|
                for sub in _etree_iter(el):
 | 
						|
                    yield sub
 | 
						|
 | 
						|
    # on 2.6 XML doesn't have a parser argument, function copied from CPython
 | 
						|
    # 2.7 source
 | 
						|
    def _XML(text, parser=None):
 | 
						|
        if not parser:
 | 
						|
            parser = etree.XMLParser(target=_TreeBuilder())
 | 
						|
        parser.feed(text)
 | 
						|
        return parser.close()
 | 
						|
 | 
						|
    def _element_factory(*args, **kwargs):
 | 
						|
        el = etree.Element(*args, **kwargs)
 | 
						|
        for k, v in el.items():
 | 
						|
            if isinstance(v, bytes):
 | 
						|
                el.set(k, v.decode('utf-8'))
 | 
						|
        return el
 | 
						|
 | 
						|
    def compat_etree_fromstring(text):
 | 
						|
        doc = _XML(text, parser=etree.XMLParser(target=_TreeBuilder(element_factory=_element_factory)))
 | 
						|
        for el in _etree_iter(doc):
 | 
						|
            if el.text is not None and isinstance(el.text, bytes):
 | 
						|
                el.text = el.text.decode('utf-8')
 | 
						|
        return doc
 | 
						|
 | 
						|
if sys.version_info < (2, 7):
 | 
						|
    # Here comes the crazy part: In 2.6, if the xpath is a unicode,
 | 
						|
    # .//node does not match if a node is a direct child of . !
 | 
						|
    def compat_xpath(xpath):
 | 
						|
        if isinstance(xpath, compat_str):
 | 
						|
            xpath = xpath.encode('ascii')
 | 
						|
        return xpath
 | 
						|
else:
 | 
						|
    compat_xpath = lambda xpath: xpath
 | 
						|
 | 
						|
try:
 | 
						|
    from urllib.parse import parse_qs as compat_parse_qs
 | 
						|
except ImportError:  # Python 2
 | 
						|
    # HACK: The following is the correct parse_qs implementation from cpython 3's stdlib.
 | 
						|
    # Python 2's version is apparently totally broken
 | 
						|
 | 
						|
    def _parse_qsl(qs, keep_blank_values=False, strict_parsing=False,
 | 
						|
                   encoding='utf-8', errors='replace'):
 | 
						|
        qs, _coerce_result = qs, compat_str
 | 
						|
        pairs = [s2 for s1 in qs.split('&') for s2 in s1.split(';')]
 | 
						|
        r = []
 | 
						|
        for name_value in pairs:
 | 
						|
            if not name_value and not strict_parsing:
 | 
						|
                continue
 | 
						|
            nv = name_value.split('=', 1)
 | 
						|
            if len(nv) != 2:
 | 
						|
                if strict_parsing:
 | 
						|
                    raise ValueError('bad query field: %r' % (name_value,))
 | 
						|
                # Handle case of a control-name with no equal sign
 | 
						|
                if keep_blank_values:
 | 
						|
                    nv.append('')
 | 
						|
                else:
 | 
						|
                    continue
 | 
						|
            if len(nv[1]) or keep_blank_values:
 | 
						|
                name = nv[0].replace('+', ' ')
 | 
						|
                name = compat_urllib_parse_unquote(
 | 
						|
                    name, encoding=encoding, errors=errors)
 | 
						|
                name = _coerce_result(name)
 | 
						|
                value = nv[1].replace('+', ' ')
 | 
						|
                value = compat_urllib_parse_unquote(
 | 
						|
                    value, encoding=encoding, errors=errors)
 | 
						|
                value = _coerce_result(value)
 | 
						|
                r.append((name, value))
 | 
						|
        return r
 | 
						|
 | 
						|
    def compat_parse_qs(qs, keep_blank_values=False, strict_parsing=False,
 | 
						|
                        encoding='utf-8', errors='replace'):
 | 
						|
        parsed_result = {}
 | 
						|
        pairs = _parse_qsl(qs, keep_blank_values, strict_parsing,
 | 
						|
                           encoding=encoding, errors=errors)
 | 
						|
        for name, value in pairs:
 | 
						|
            if name in parsed_result:
 | 
						|
                parsed_result[name].append(value)
 | 
						|
            else:
 | 
						|
                parsed_result[name] = [value]
 | 
						|
        return parsed_result
 | 
						|
 | 
						|
try:
 | 
						|
    from shlex import quote as compat_shlex_quote
 | 
						|
except ImportError:  # Python < 3.3
 | 
						|
    def compat_shlex_quote(s):
 | 
						|
        if re.match(r'^[-_\w./]+$', s):
 | 
						|
            return s
 | 
						|
        else:
 | 
						|
            return "'" + s.replace("'", "'\"'\"'") + "'"
 | 
						|
 | 
						|
 | 
						|
try:
 | 
						|
    args = shlex.split('中文')
 | 
						|
    assert (isinstance(args, list) and
 | 
						|
            isinstance(args[0], compat_str) and
 | 
						|
            args[0] == '中文')
 | 
						|
    compat_shlex_split = shlex.split
 | 
						|
except (AssertionError, UnicodeEncodeError):
 | 
						|
    # Working around shlex issue with unicode strings on some python 2
 | 
						|
    # versions (see http://bugs.python.org/issue1548891)
 | 
						|
    def compat_shlex_split(s, comments=False, posix=True):
 | 
						|
        if isinstance(s, compat_str):
 | 
						|
            s = s.encode('utf-8')
 | 
						|
        return list(map(lambda s: s.decode('utf-8'), shlex.split(s, comments, posix)))
 | 
						|
 | 
						|
 | 
						|
def compat_ord(c):
 | 
						|
    if type(c) is int:
 | 
						|
        return c
 | 
						|
    else:
 | 
						|
        return ord(c)
 | 
						|
 | 
						|
 | 
						|
compat_os_name = os._name if os.name == 'java' else os.name
 | 
						|
 | 
						|
 | 
						|
if sys.version_info >= (3, 0):
 | 
						|
    compat_getenv = os.getenv
 | 
						|
    compat_expanduser = os.path.expanduser
 | 
						|
 | 
						|
    def compat_setenv(key, value, env=os.environ):
 | 
						|
        env[key] = value
 | 
						|
else:
 | 
						|
    # Environment variables should be decoded with filesystem encoding.
 | 
						|
    # Otherwise it will fail if any non-ASCII characters present (see #3854 #3217 #2918)
 | 
						|
 | 
						|
    def compat_getenv(key, default=None):
 | 
						|
        from .utils import get_filesystem_encoding
 | 
						|
        env = os.getenv(key, default)
 | 
						|
        if env:
 | 
						|
            env = env.decode(get_filesystem_encoding())
 | 
						|
        return env
 | 
						|
 | 
						|
    def compat_setenv(key, value, env=os.environ):
 | 
						|
        def encode(v):
 | 
						|
            from .utils import get_filesystem_encoding
 | 
						|
            return v.encode(get_filesystem_encoding()) if isinstance(v, compat_str) else v
 | 
						|
        env[encode(key)] = encode(value)
 | 
						|
 | 
						|
    # HACK: The default implementations of os.path.expanduser from cpython do not decode
 | 
						|
    # environment variables with filesystem encoding. We will work around this by
 | 
						|
    # providing adjusted implementations.
 | 
						|
    # The following are os.path.expanduser implementations from cpython 2.7.8 stdlib
 | 
						|
    # for different platforms with correct environment variables decoding.
 | 
						|
 | 
						|
    if compat_os_name == 'posix':
 | 
						|
        def compat_expanduser(path):
 | 
						|
            """Expand ~ and ~user constructions.  If user or $HOME is unknown,
 | 
						|
            do nothing."""
 | 
						|
            if not path.startswith('~'):
 | 
						|
                return path
 | 
						|
            i = path.find('/', 1)
 | 
						|
            if i < 0:
 | 
						|
                i = len(path)
 | 
						|
            if i == 1:
 | 
						|
                if 'HOME' not in os.environ:
 | 
						|
                    import pwd
 | 
						|
                    userhome = pwd.getpwuid(os.getuid()).pw_dir
 | 
						|
                else:
 | 
						|
                    userhome = compat_getenv('HOME')
 | 
						|
            else:
 | 
						|
                import pwd
 | 
						|
                try:
 | 
						|
                    pwent = pwd.getpwnam(path[1:i])
 | 
						|
                except KeyError:
 | 
						|
                    return path
 | 
						|
                userhome = pwent.pw_dir
 | 
						|
            userhome = userhome.rstrip('/')
 | 
						|
            return (userhome + path[i:]) or '/'
 | 
						|
    elif compat_os_name == 'nt' or compat_os_name == 'ce':
 | 
						|
        def compat_expanduser(path):
 | 
						|
            """Expand ~ and ~user constructs.
 | 
						|
 | 
						|
            If user or $HOME is unknown, do nothing."""
 | 
						|
            if path[:1] != '~':
 | 
						|
                return path
 | 
						|
            i, n = 1, len(path)
 | 
						|
            while i < n and path[i] not in '/\\':
 | 
						|
                i = i + 1
 | 
						|
 | 
						|
            if 'HOME' in os.environ:
 | 
						|
                userhome = compat_getenv('HOME')
 | 
						|
            elif 'USERPROFILE' in os.environ:
 | 
						|
                userhome = compat_getenv('USERPROFILE')
 | 
						|
            elif 'HOMEPATH' not in os.environ:
 | 
						|
                return path
 | 
						|
            else:
 | 
						|
                try:
 | 
						|
                    drive = compat_getenv('HOMEDRIVE')
 | 
						|
                except KeyError:
 | 
						|
                    drive = ''
 | 
						|
                userhome = os.path.join(drive, compat_getenv('HOMEPATH'))
 | 
						|
 | 
						|
            if i != 1:  # ~user
 | 
						|
                userhome = os.path.join(os.path.dirname(userhome), path[1:i])
 | 
						|
 | 
						|
            return userhome + path[i:]
 | 
						|
    else:
 | 
						|
        compat_expanduser = os.path.expanduser
 | 
						|
 | 
						|
 | 
						|
if sys.version_info < (3, 0):
 | 
						|
    def compat_print(s):
 | 
						|
        from .utils import preferredencoding
 | 
						|
        print(s.encode(preferredencoding(), 'xmlcharrefreplace'))
 | 
						|
else:
 | 
						|
    def compat_print(s):
 | 
						|
        assert isinstance(s, compat_str)
 | 
						|
        print(s)
 | 
						|
 | 
						|
 | 
						|
if sys.version_info < (3, 0) and sys.platform == 'win32':
 | 
						|
    def compat_getpass(prompt, *args, **kwargs):
 | 
						|
        if isinstance(prompt, compat_str):
 | 
						|
            from .utils import preferredencoding
 | 
						|
            prompt = prompt.encode(preferredencoding())
 | 
						|
        return getpass.getpass(prompt, *args, **kwargs)
 | 
						|
else:
 | 
						|
    compat_getpass = getpass.getpass
 | 
						|
 | 
						|
try:
 | 
						|
    compat_input = raw_input
 | 
						|
except NameError:  # Python 3
 | 
						|
    compat_input = input
 | 
						|
 | 
						|
# Python < 2.6.5 require kwargs to be bytes
 | 
						|
try:
 | 
						|
    def _testfunc(x):
 | 
						|
        pass
 | 
						|
    _testfunc(**{'x': 0})
 | 
						|
except TypeError:
 | 
						|
    def compat_kwargs(kwargs):
 | 
						|
        return dict((bytes(k), v) for k, v in kwargs.items())
 | 
						|
else:
 | 
						|
    compat_kwargs = lambda kwargs: kwargs
 | 
						|
 | 
						|
 | 
						|
if sys.version_info < (2, 7):
 | 
						|
    def compat_socket_create_connection(address, timeout, source_address=None):
 | 
						|
        host, port = address
 | 
						|
        err = None
 | 
						|
        for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
 | 
						|
            af, socktype, proto, canonname, sa = res
 | 
						|
            sock = None
 | 
						|
            try:
 | 
						|
                sock = socket.socket(af, socktype, proto)
 | 
						|
                sock.settimeout(timeout)
 | 
						|
                if source_address:
 | 
						|
                    sock.bind(source_address)
 | 
						|
                sock.connect(sa)
 | 
						|
                return sock
 | 
						|
            except socket.error as _:
 | 
						|
                err = _
 | 
						|
                if sock is not None:
 | 
						|
                    sock.close()
 | 
						|
        if err is not None:
 | 
						|
            raise err
 | 
						|
        else:
 | 
						|
            raise socket.error('getaddrinfo returns an empty list')
 | 
						|
else:
 | 
						|
    compat_socket_create_connection = socket.create_connection
 | 
						|
 | 
						|
 | 
						|
# Fix https://github.com/rg3/youtube-dl/issues/4223
 | 
						|
# See http://bugs.python.org/issue9161 for what is broken
 | 
						|
def workaround_optparse_bug9161():
 | 
						|
    op = optparse.OptionParser()
 | 
						|
    og = optparse.OptionGroup(op, 'foo')
 | 
						|
    try:
 | 
						|
        og.add_option('-t')
 | 
						|
    except TypeError:
 | 
						|
        real_add_option = optparse.OptionGroup.add_option
 | 
						|
 | 
						|
        def _compat_add_option(self, *args, **kwargs):
 | 
						|
            enc = lambda v: (
 | 
						|
                v.encode('ascii', 'replace') if isinstance(v, compat_str)
 | 
						|
                else v)
 | 
						|
            bargs = [enc(a) for a in args]
 | 
						|
            bkwargs = dict(
 | 
						|
                (k, enc(v)) for k, v in kwargs.items())
 | 
						|
            return real_add_option(self, *bargs, **bkwargs)
 | 
						|
        optparse.OptionGroup.add_option = _compat_add_option
 | 
						|
 | 
						|
 | 
						|
if hasattr(shutil, 'get_terminal_size'):  # Python >= 3.3
 | 
						|
    compat_get_terminal_size = shutil.get_terminal_size
 | 
						|
else:
 | 
						|
    _terminal_size = collections.namedtuple('terminal_size', ['columns', 'lines'])
 | 
						|
 | 
						|
    def compat_get_terminal_size(fallback=(80, 24)):
 | 
						|
        columns = compat_getenv('COLUMNS')
 | 
						|
        if columns:
 | 
						|
            columns = int(columns)
 | 
						|
        else:
 | 
						|
            columns = None
 | 
						|
        lines = compat_getenv('LINES')
 | 
						|
        if lines:
 | 
						|
            lines = int(lines)
 | 
						|
        else:
 | 
						|
            lines = None
 | 
						|
 | 
						|
        if columns is None or lines is None or columns <= 0 or lines <= 0:
 | 
						|
            try:
 | 
						|
                sp = subprocess.Popen(
 | 
						|
                    ['stty', 'size'],
 | 
						|
                    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | 
						|
                out, err = sp.communicate()
 | 
						|
                _lines, _columns = map(int, out.split())
 | 
						|
            except Exception:
 | 
						|
                _columns, _lines = _terminal_size(*fallback)
 | 
						|
 | 
						|
            if columns is None or columns <= 0:
 | 
						|
                columns = _columns
 | 
						|
            if lines is None or lines <= 0:
 | 
						|
                lines = _lines
 | 
						|
        return _terminal_size(columns, lines)
 | 
						|
 | 
						|
try:
 | 
						|
    itertools.count(start=0, step=1)
 | 
						|
    compat_itertools_count = itertools.count
 | 
						|
except TypeError:  # Python 2.6
 | 
						|
    def compat_itertools_count(start=0, step=1):
 | 
						|
        n = start
 | 
						|
        while True:
 | 
						|
            yield n
 | 
						|
            n += step
 | 
						|
 | 
						|
if sys.version_info >= (3, 0):
 | 
						|
    from tokenize import tokenize as compat_tokenize_tokenize
 | 
						|
else:
 | 
						|
    from tokenize import generate_tokens as compat_tokenize_tokenize
 | 
						|
 | 
						|
 | 
						|
try:
 | 
						|
    struct.pack('!I', 0)
 | 
						|
except TypeError:
 | 
						|
    # In Python 2.6 and 2.7.x < 2.7.7, struct requires a bytes argument
 | 
						|
    # See https://bugs.python.org/issue19099
 | 
						|
    def compat_struct_pack(spec, *args):
 | 
						|
        if isinstance(spec, compat_str):
 | 
						|
            spec = spec.encode('ascii')
 | 
						|
        return struct.pack(spec, *args)
 | 
						|
 | 
						|
    def compat_struct_unpack(spec, *args):
 | 
						|
        if isinstance(spec, compat_str):
 | 
						|
            spec = spec.encode('ascii')
 | 
						|
        return struct.unpack(spec, *args)
 | 
						|
else:
 | 
						|
    compat_struct_pack = struct.pack
 | 
						|
    compat_struct_unpack = struct.unpack
 | 
						|
 | 
						|
 | 
						|
__all__ = [
 | 
						|
    'compat_HTMLParser',
 | 
						|
    'compat_HTTPError',
 | 
						|
    'compat_basestring',
 | 
						|
    'compat_chr',
 | 
						|
    'compat_cookiejar',
 | 
						|
    'compat_cookies',
 | 
						|
    'compat_etree_fromstring',
 | 
						|
    'compat_expanduser',
 | 
						|
    'compat_get_terminal_size',
 | 
						|
    'compat_getenv',
 | 
						|
    'compat_getpass',
 | 
						|
    'compat_html_entities',
 | 
						|
    'compat_html_entities_html5',
 | 
						|
    'compat_http_client',
 | 
						|
    'compat_http_server',
 | 
						|
    'compat_input',
 | 
						|
    'compat_itertools_count',
 | 
						|
    'compat_kwargs',
 | 
						|
    'compat_ord',
 | 
						|
    'compat_os_name',
 | 
						|
    'compat_parse_qs',
 | 
						|
    'compat_print',
 | 
						|
    'compat_setenv',
 | 
						|
    'compat_shlex_quote',
 | 
						|
    'compat_shlex_split',
 | 
						|
    'compat_socket_create_connection',
 | 
						|
    'compat_str',
 | 
						|
    'compat_struct_pack',
 | 
						|
    'compat_struct_unpack',
 | 
						|
    'compat_subprocess_get_DEVNULL',
 | 
						|
    'compat_tokenize_tokenize',
 | 
						|
    'compat_urllib_error',
 | 
						|
    'compat_urllib_parse',
 | 
						|
    'compat_urllib_parse_unquote',
 | 
						|
    'compat_urllib_parse_unquote_plus',
 | 
						|
    'compat_urllib_parse_unquote_to_bytes',
 | 
						|
    'compat_urllib_parse_urlencode',
 | 
						|
    'compat_urllib_parse_urlparse',
 | 
						|
    'compat_urllib_request',
 | 
						|
    'compat_urllib_request_DataHandler',
 | 
						|
    'compat_urllib_response',
 | 
						|
    'compat_urlparse',
 | 
						|
    'compat_urlretrieve',
 | 
						|
    'compat_xml_parse_error',
 | 
						|
    'compat_xpath',
 | 
						|
    'workaround_optparse_bug9161',
 | 
						|
]
 |