| 
									
										
										
										
											2016-07-07 17:37:29 +08:00
										 |  |  | # coding: utf-8 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:36:29 +01:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-17 23:15:01 +08:00
										 |  |  | import binascii | 
					
						
							| 
									
										
										
										
											2015-02-28 21:42:16 +01:00
										 |  |  | import collections | 
					
						
							| 
									
										
										
										
											2015-10-17 23:15:01 +08:00
										 |  |  | import email | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | import getpass | 
					
						
							| 
									
										
										
										
											2015-10-17 23:15:01 +08:00
										 |  |  | import io | 
					
						
							| 
									
										
										
										
											2014-11-19 18:21:58 +01:00
										 |  |  | import optparse | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2014-11-23 10:49:19 +01:00
										 |  |  | import re | 
					
						
							| 
									
										
										
										
											2015-09-05 21:40:44 +06:00
										 |  |  | import shlex | 
					
						
							| 
									
										
										
										
											2015-02-28 21:42:16 +01:00
										 |  |  | import shutil | 
					
						
							| 
									
										
										
										
											2015-01-10 19:55:36 +01:00
										 |  |  | import socket | 
					
						
							| 
									
										
										
										
											2016-04-23 18:28:49 +08:00
										 |  |  | import struct | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | import subprocess | 
					
						
							|  |  |  | import sys | 
					
						
							| 
									
										
										
										
											2015-07-10 18:58:12 +08:00
										 |  |  | import itertools | 
					
						
							| 
									
										
										
										
											2015-10-25 20:04:55 +01:00
										 |  |  | import xml.etree.ElementTree | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     import urllib.request as compat_urllib_request | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  | except ImportError:  # Python 2 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     import urllib2 as compat_urllib_request | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     import urllib.error as compat_urllib_error | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  | except ImportError:  # Python 2 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     import urllib2 as compat_urllib_error | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     import urllib.parse as compat_urllib_parse | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  | except ImportError:  # Python 2 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     import urllib as compat_urllib_parse | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     from urllib.parse import urlparse as compat_urllib_parse_urlparse | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  | except ImportError:  # Python 2 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     from urlparse import urlparse as compat_urllib_parse_urlparse | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     import urllib.parse as compat_urlparse | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  | except ImportError:  # Python 2 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     import urlparse as compat_urlparse | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-17 23:15:01 +08:00
										 |  |  | try: | 
					
						
							|  |  |  |     import urllib.response as compat_urllib_response | 
					
						
							|  |  |  | except ImportError:  # Python 2 | 
					
						
							|  |  |  |     import urllib as compat_urllib_response | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | try: | 
					
						
							|  |  |  |     import http.cookiejar as compat_cookiejar | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  | except ImportError:  # Python 2 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     import cookielib as compat_cookiejar | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-29 23:20:37 +01:00
										 |  |  | try: | 
					
						
							|  |  |  |     import http.cookies as compat_cookies | 
					
						
							|  |  |  | except ImportError:  # Python 2 | 
					
						
							|  |  |  |     import Cookie as compat_cookies | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | try: | 
					
						
							|  |  |  |     import html.entities as compat_html_entities | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  | except ImportError:  # Python 2 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     import htmlentitydefs as compat_html_entities | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-10 15:05:24 +08:00
										 |  |  | try:  # Python >= 3.3 | 
					
						
							| 
									
										
										
										
											2016-06-10 18:12:57 +08:00
										 |  |  |     compat_html_entities_html5 = compat_html_entities.html5 | 
					
						
							|  |  |  | except AttributeError: | 
					
						
							| 
									
										
										
										
											2016-06-10 15:05:24 +08:00
										 |  |  |     # 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', | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | try: | 
					
						
							|  |  |  |     import http.client as compat_http_client | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  | except ImportError:  # Python 2 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-02 19:49:59 +00:00
										 |  |  | try: | 
					
						
							|  |  |  |     from html.parser import HTMLParser as compat_HTMLParser | 
					
						
							|  |  |  | except ImportError:  # Python 2 | 
					
						
							|  |  |  |     from HTMLParser import HTMLParser as compat_HTMLParser | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | try: | 
					
						
							|  |  |  |     from subprocess import DEVNULL | 
					
						
							|  |  |  |     compat_subprocess_get_DEVNULL = lambda: DEVNULL | 
					
						
							|  |  |  | except ImportError: | 
					
						
							|  |  |  |     compat_subprocess_get_DEVNULL = lambda: open(os.path.devnull, 'w') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-30 02:57:37 +01:00
										 |  |  | try: | 
					
						
							|  |  |  |     import http.server as compat_http_server | 
					
						
							|  |  |  | except ImportError: | 
					
						
							|  |  |  |     import BaseHTTPServer as compat_http_server | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-14 00:25:08 +02:00
										 |  |  | try: | 
					
						
							|  |  |  |     compat_str = unicode  # Python 2 | 
					
						
							|  |  |  | except NameError: | 
					
						
							|  |  |  |     compat_str = str | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | try: | 
					
						
							| 
									
										
										
										
											2015-07-17 22:58:13 +06:00
										 |  |  |     from urllib.parse import unquote_to_bytes as compat_urllib_parse_unquote_to_bytes | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     from urllib.parse import unquote as compat_urllib_parse_unquote | 
					
						
							| 
									
										
										
										
											2015-07-17 23:28:34 +06:00
										 |  |  |     from urllib.parse import unquote_plus as compat_urllib_parse_unquote_plus | 
					
						
							| 
									
										
										
										
											2015-07-17 22:58:13 +06:00
										 |  |  | except ImportError:  # Python 2 | 
					
						
							| 
									
										
										
										
											2015-07-18 18:32:52 +06:00
										 |  |  |     _asciire = (compat_urllib_parse._asciire if hasattr(compat_urllib_parse, '_asciire') | 
					
						
							| 
									
										
										
										
											2017-01-02 20:08:07 +08:00
										 |  |  |                 else re.compile(r'([\x00-\x7f]+)')) | 
					
						
							| 
									
										
										
										
											2015-07-18 00:24:39 +06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-17 23:32:43 +06:00
										 |  |  |     # HACK: The following are the correct unquote_to_bytes, unquote and unquote_plus | 
					
						
							| 
									
										
										
										
											2015-07-17 22:58:13 +06:00
										 |  |  |     # implementations from cpython 3.4.3's stdlib. Python 2's version | 
					
						
							|  |  |  |     # is apparently broken (see https://github.com/rg3/youtube-dl/pull/6244) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-17 01:31:29 -05:00
										 |  |  |     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'' | 
					
						
							| 
									
										
										
										
											2015-09-14 00:25:08 +02:00
										 |  |  |         if isinstance(string, compat_str): | 
					
						
							| 
									
										
										
										
											2015-07-17 01:31:29 -05:00
										 |  |  |             string = string.encode('utf-8') | 
					
						
							| 
									
										
										
										
											2015-07-17 22:58:13 +06:00
										 |  |  |         bits = string.split(b'%') | 
					
						
							| 
									
										
										
										
											2015-07-17 01:31:29 -05:00
										 |  |  |         if len(bits) == 1: | 
					
						
							|  |  |  |             return string | 
					
						
							|  |  |  |         res = [bits[0]] | 
					
						
							|  |  |  |         append = res.append | 
					
						
							|  |  |  |         for item in bits[1:]: | 
					
						
							|  |  |  |             try: | 
					
						
							| 
									
										
										
										
											2015-07-17 22:58:13 +06:00
										 |  |  |                 append(compat_urllib_parse._hextochr[item[:2]]) | 
					
						
							| 
									
										
										
										
											2015-07-17 01:31:29 -05:00
										 |  |  |                 append(item[2:]) | 
					
						
							| 
									
										
										
										
											2015-07-17 22:58:13 +06:00
										 |  |  |             except KeyError: | 
					
						
							| 
									
										
										
										
											2015-07-17 01:31:29 -05:00
										 |  |  |                 append(b'%') | 
					
						
							|  |  |  |                 append(item) | 
					
						
							|  |  |  |         return b''.join(res) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-17 01:50:43 -05:00
										 |  |  |     def compat_urllib_parse_unquote(string, encoding='utf-8', errors='replace'): | 
					
						
							| 
									
										
										
										
											2015-07-17 01:31:29 -05:00
										 |  |  |         """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' | 
					
						
							| 
									
										
										
										
											2015-07-18 00:24:39 +06:00
										 |  |  |         bits = _asciire.split(string) | 
					
						
							| 
									
										
										
										
											2015-07-17 01:31:29 -05:00
										 |  |  |         res = [bits[0]] | 
					
						
							|  |  |  |         append = res.append | 
					
						
							|  |  |  |         for i in range(1, len(bits), 2): | 
					
						
							| 
									
										
										
										
											2015-07-17 22:58:13 +06:00
										 |  |  |             append(compat_urllib_parse_unquote_to_bytes(bits[i]).decode(encoding, errors)) | 
					
						
							|  |  |  |             append(bits[i + 1]) | 
					
						
							| 
									
										
										
										
											2015-07-17 01:31:29 -05:00
										 |  |  |         return ''.join(res) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-17 23:28:34 +06:00
										 |  |  |     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) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-26 01:46:57 +06:00
										 |  |  | 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,)): | 
					
						
							| 
									
										
										
										
											2016-04-06 18:29:54 +08:00
										 |  |  |                 list_e = encode_list(e) | 
					
						
							|  |  |  |                 e = tuple(list_e) if isinstance(e, tuple) else list_e | 
					
						
							| 
									
										
										
										
											2016-03-26 01:46:57 +06:00
										 |  |  |             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) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-17 23:15:01 +08:00
										 |  |  | 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() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-14 15:37:17 +06:00
										 |  |  |             scheme, data = url.split(':', 1) | 
					
						
							|  |  |  |             mediatype, data = data.split(',', 1) | 
					
						
							| 
									
										
										
										
											2015-10-17 23:15:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |             # even base64 encoded data URLs might be quoted so unquote in any case: | 
					
						
							|  |  |  |             data = compat_urllib_parse_unquote_to_bytes(data) | 
					
						
							| 
									
										
										
										
											2016-02-14 15:37:17 +06:00
										 |  |  |             if mediatype.endswith(';base64'): | 
					
						
							| 
									
										
										
										
											2015-10-17 23:15:01 +08:00
										 |  |  |                 data = binascii.a2b_base64(data) | 
					
						
							|  |  |  |                 mediatype = mediatype[:-7] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if not mediatype: | 
					
						
							| 
									
										
										
										
											2016-02-14 15:37:17 +06:00
										 |  |  |                 mediatype = 'text/plain;charset=US-ASCII' | 
					
						
							| 
									
										
										
										
											2015-10-17 23:15:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |             headers = email.message_from_string( | 
					
						
							| 
									
										
										
										
											2016-02-14 15:37:17 +06:00
										 |  |  |                 'Content-type: %s\nContent-length: %d\n' % (mediatype, len(data))) | 
					
						
							| 
									
										
										
										
											2015-10-17 23:15:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |             return compat_urllib_response.addinfourl(io.BytesIO(data), headers, url) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-01 11:30:56 +01:00
										 |  |  | try: | 
					
						
							| 
									
										
										
										
											2015-02-01 11:36:59 +01:00
										 |  |  |     compat_basestring = basestring  # Python 2 | 
					
						
							| 
									
										
										
										
											2015-02-01 11:30:56 +01:00
										 |  |  | except NameError: | 
					
						
							| 
									
										
										
										
											2015-02-01 11:36:59 +01:00
										 |  |  |     compat_basestring = str | 
					
						
							| 
									
										
										
										
											2015-02-01 11:30:56 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-23 01:34:08 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | etree = xml.etree.ElementTree | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class _TreeBuilder(etree.TreeBuilder): | 
					
						
							|  |  |  |     def doctype(self, name, pubid, system): | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-17 19:42:56 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-25 20:04:55 +01:00
										 |  |  | if sys.version_info[0] >= 3: | 
					
						
							| 
									
										
										
										
											2016-05-23 01:34:08 +08:00
										 |  |  |     def compat_etree_fromstring(text): | 
					
						
							|  |  |  |         return etree.XML(text, parser=etree.XMLParser(target=_TreeBuilder())) | 
					
						
							| 
									
										
										
										
											2015-10-25 20:04:55 +01:00
										 |  |  | else: | 
					
						
							| 
									
										
										
										
											2015-10-29 13:58:40 +01:00
										 |  |  |     # python 2.x tries to encode unicode strings with ascii (see the | 
					
						
							|  |  |  |     # XMLParser._fixtext method) | 
					
						
							| 
									
										
										
										
											2015-10-26 16:41:24 +01:00
										 |  |  |     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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-25 20:04:55 +01:00
										 |  |  |     # 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: | 
					
						
							| 
									
										
										
										
											2016-05-23 01:34:08 +08:00
										 |  |  |             parser = etree.XMLParser(target=_TreeBuilder()) | 
					
						
							| 
									
										
										
										
											2015-10-25 20:04:55 +01:00
										 |  |  |         parser.feed(text) | 
					
						
							|  |  |  |         return parser.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _element_factory(*args, **kwargs): | 
					
						
							|  |  |  |         el = etree.Element(*args, **kwargs) | 
					
						
							|  |  |  |         for k, v in el.items(): | 
					
						
							| 
									
										
										
										
											2015-10-25 20:30:54 +01:00
										 |  |  |             if isinstance(v, bytes): | 
					
						
							|  |  |  |                 el.set(k, v.decode('utf-8')) | 
					
						
							| 
									
										
										
										
											2015-10-25 20:04:55 +01:00
										 |  |  |         return el | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def compat_etree_fromstring(text): | 
					
						
							| 
									
										
										
										
											2016-05-23 01:34:08 +08:00
										 |  |  |         doc = _XML(text, parser=etree.XMLParser(target=_TreeBuilder(element_factory=_element_factory))) | 
					
						
							| 
									
										
										
										
											2015-10-26 16:41:24 +01:00
										 |  |  |         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 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-29 16:03:39 +01:00
										 |  |  | if hasattr(etree, 'register_namespace'): | 
					
						
							|  |  |  |     compat_etree_register_namespace = etree.register_namespace | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     def compat_etree_register_namespace(prefix, uri): | 
					
						
							|  |  |  |         """Register a namespace prefix.
 | 
					
						
							|  |  |  |         The registry is global, and any existing mapping for either the | 
					
						
							|  |  |  |         given prefix or the namespace URI will be removed. | 
					
						
							|  |  |  |         *prefix* is the namespace prefix, *uri* is a namespace uri. Tags and | 
					
						
							|  |  |  |         attributes in this namespace will be serialized with prefix if possible. | 
					
						
							|  |  |  |         ValueError is raised if prefix is reserved or is invalid. | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         if re.match(r"ns\d+$", prefix): | 
					
						
							|  |  |  |             raise ValueError("Prefix format reserved for internal use") | 
					
						
							|  |  |  |         for k, v in list(etree._namespace_map.items()): | 
					
						
							|  |  |  |             if k == uri or v == prefix: | 
					
						
							|  |  |  |                 del etree._namespace_map[k] | 
					
						
							|  |  |  |         etree._namespace_map[uri] = prefix | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-18 02:51:38 +06:00
										 |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | try: | 
					
						
							|  |  |  |     from urllib.parse import parse_qs as compat_parse_qs | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  | except ImportError:  # Python 2 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     # 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, | 
					
						
							| 
									
										
										
										
											2014-11-23 21:39:15 +01:00
										 |  |  |                    encoding='utf-8', errors='replace'): | 
					
						
							| 
									
										
										
										
											2015-02-01 11:30:56 +01:00
										 |  |  |         qs, _coerce_result = qs, compat_str | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |         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: | 
					
						
							| 
									
										
										
										
											2016-02-14 15:37:17 +06:00
										 |  |  |                     raise ValueError('bad query field: %r' % (name_value,)) | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |                 # 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, | 
					
						
							| 
									
										
										
										
											2014-11-23 21:39:15 +01:00
										 |  |  |                         encoding='utf-8', errors='replace'): | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |         parsed_result = {} | 
					
						
							|  |  |  |         pairs = _parse_qsl(qs, keep_blank_values, strict_parsing, | 
					
						
							| 
									
										
										
										
											2014-11-23 21:39:15 +01:00
										 |  |  |                            encoding=encoding, errors=errors) | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |         for name, value in pairs: | 
					
						
							|  |  |  |             if name in parsed_result: | 
					
						
							|  |  |  |                 parsed_result[name].append(value) | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 parsed_result[name] = [value] | 
					
						
							|  |  |  |         return parsed_result | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							| 
									
										
										
										
											2016-05-10 15:58:25 +08:00
										 |  |  |     from shlex import quote as compat_shlex_quote | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | except ImportError:  # Python < 3.3 | 
					
						
							| 
									
										
										
										
											2016-05-10 15:58:25 +08:00
										 |  |  |     def compat_shlex_quote(s): | 
					
						
							| 
									
										
										
										
											2014-11-23 10:49:19 +01:00
										 |  |  |         if re.match(r'^[-_\w./]+$', s): | 
					
						
							|  |  |  |             return s | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             return "'" + s.replace("'", "'\"'\"'") + "'" | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-07 17:37:29 +08:00
										 |  |  | try: | 
					
						
							| 
									
										
										
										
											2016-07-07 22:30:58 +08:00
										 |  |  |     args = shlex.split('中文') | 
					
						
							|  |  |  |     assert (isinstance(args, list) and | 
					
						
							|  |  |  |             isinstance(args[0], compat_str) and | 
					
						
							|  |  |  |             args[0] == '中文') | 
					
						
							| 
									
										
										
										
											2015-09-05 21:40:44 +06:00
										 |  |  |     compat_shlex_split = shlex.split | 
					
						
							| 
									
										
										
										
											2016-07-07 22:30:58 +08:00
										 |  |  | except (AssertionError, UnicodeEncodeError): | 
					
						
							| 
									
										
										
										
											2015-09-05 21:40:44 +06:00
										 |  |  |     # 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): | 
					
						
							| 
									
										
										
										
											2015-09-14 00:25:08 +02:00
										 |  |  |         if isinstance(s, compat_str): | 
					
						
							| 
									
										
										
										
											2015-09-05 21:40:44 +06:00
										 |  |  |             s = s.encode('utf-8') | 
					
						
							| 
									
										
										
										
											2016-07-07 17:37:29 +08:00
										 |  |  |         return list(map(lambda s: s.decode('utf-8'), shlex.split(s, comments, posix))) | 
					
						
							| 
									
										
										
										
											2015-09-05 21:40:44 +06:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | def compat_ord(c): | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  |     if type(c) is int: | 
					
						
							|  |  |  |         return c | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         return ord(c) | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-03 19:24:24 +08:00
										 |  |  | compat_os_name = os._name if os.name == 'java' else os.name | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | if sys.version_info >= (3, 0): | 
					
						
							|  |  |  |     compat_getenv = os.getenv | 
					
						
							|  |  |  |     compat_expanduser = os.path.expanduser | 
					
						
							| 
									
										
										
										
											2016-05-09 21:55:03 +06:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def compat_setenv(key, value, env=os.environ): | 
					
						
							|  |  |  |         env[key] = value | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-09 21:55:03 +06:00
										 |  |  |     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) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     # 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-03 19:24:24 +08:00
										 |  |  |     if compat_os_name == 'posix': | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |         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 '/' | 
					
						
							| 
									
										
										
										
											2017-04-12 20:38:43 +01:00
										 |  |  |     elif compat_os_name in ('nt', 'ce'): | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |         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') | 
					
						
							| 
									
										
										
										
											2014-12-09 23:11:26 +01:00
										 |  |  |             elif 'HOMEPATH' not in os.environ: | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |                 return path | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 try: | 
					
						
							|  |  |  |                     drive = compat_getenv('HOMEDRIVE') | 
					
						
							|  |  |  |                 except KeyError: | 
					
						
							|  |  |  |                     drive = '' | 
					
						
							|  |  |  |                 userhome = os.path.join(drive, compat_getenv('HOMEPATH')) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  |             if i != 1:  # ~user | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |                 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): | 
					
						
							| 
									
										
										
										
											2014-11-26 11:48:09 +01:00
										 |  |  |         assert isinstance(s, compat_str) | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |         print(s) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if sys.version_info < (3, 0) and sys.platform == 'win32': | 
					
						
							|  |  |  |     def compat_getpass(prompt, *args, **kwargs): | 
					
						
							|  |  |  |         if isinstance(prompt, compat_str): | 
					
						
							| 
									
										
										
										
											2014-11-02 11:26:40 +01:00
										 |  |  |             from .utils import preferredencoding | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |             prompt = prompt.encode(preferredencoding()) | 
					
						
							|  |  |  |         return getpass.getpass(prompt, *args, **kwargs) | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     compat_getpass = getpass.getpass | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-05 00:43:55 +07:00
										 |  |  | try: | 
					
						
							|  |  |  |     compat_input = raw_input | 
					
						
							|  |  |  | except NameError:  # Python 3 | 
					
						
							|  |  |  |     compat_input = input | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-16 22:17:31 +08:00
										 |  |  | # Python < 2.6.5 require kwargs to be bytes | 
					
						
							| 
									
										
										
										
											2014-11-15 15:17:19 +01:00
										 |  |  | try: | 
					
						
							| 
									
										
										
										
											2014-12-12 12:42:33 +01:00
										 |  |  |     def _testfunc(x): | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  |     _testfunc(**{'x': 0}) | 
					
						
							| 
									
										
										
										
											2014-11-15 15:17:19 +01:00
										 |  |  | except TypeError: | 
					
						
							|  |  |  |     def compat_kwargs(kwargs): | 
					
						
							|  |  |  |         return dict((bytes(k), v) for k, v in kwargs.items()) | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     compat_kwargs = lambda kwargs: kwargs | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-19 18:21:58 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-25 19:44:31 +07:00
										 |  |  | try: | 
					
						
							|  |  |  |     compat_numeric_types = (int, float, long, complex) | 
					
						
							|  |  |  | except NameError:  # Python 3 | 
					
						
							|  |  |  |     compat_numeric_types = (int, float, complex) | 
					
						
							| 
									
										
										
										
											2016-03-05 23:07:25 +06:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-10 19:55:36 +01:00
										 |  |  | 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: | 
					
						
							| 
									
										
										
										
											2016-02-14 15:37:17 +06:00
										 |  |  |             raise socket.error('getaddrinfo returns an empty list') | 
					
						
							| 
									
										
										
										
											2015-01-10 19:55:36 +01:00
										 |  |  | else: | 
					
						
							|  |  |  |     compat_socket_create_connection = socket.create_connection | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-19 18:21:58 +01:00
										 |  |  | # Fix https://github.com/rg3/youtube-dl/issues/4223 | 
					
						
							|  |  |  | # See http://bugs.python.org/issue9161 for what is broken | 
					
						
							|  |  |  | def workaround_optparse_bug9161(): | 
					
						
							| 
									
										
										
										
											2014-11-20 07:21:12 +01:00
										 |  |  |     op = optparse.OptionParser() | 
					
						
							|  |  |  |     og = optparse.OptionGroup(op, 'foo') | 
					
						
							| 
									
										
										
										
											2014-11-19 18:21:58 +01:00
										 |  |  |     try: | 
					
						
							| 
									
										
										
										
											2014-11-20 07:21:12 +01:00
										 |  |  |         og.add_option('-t') | 
					
						
							| 
									
										
										
										
											2014-11-20 16:35:55 +01:00
										 |  |  |     except TypeError: | 
					
						
							| 
									
										
										
										
											2014-11-19 18:21:58 +01:00
										 |  |  |         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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-17 19:42:56 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-28 21:42:16 +01:00
										 |  |  | 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']) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-13 20:04:27 +08:00
										 |  |  |     def compat_get_terminal_size(fallback=(80, 24)): | 
					
						
							| 
									
										
										
										
											2015-10-06 14:28:14 +02:00
										 |  |  |         columns = compat_getenv('COLUMNS') | 
					
						
							| 
									
										
										
										
											2015-02-28 21:42:16 +01:00
										 |  |  |         if columns: | 
					
						
							|  |  |  |             columns = int(columns) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             columns = None | 
					
						
							| 
									
										
										
										
											2015-10-06 14:28:14 +02:00
										 |  |  |         lines = compat_getenv('LINES') | 
					
						
							| 
									
										
										
										
											2015-02-28 21:42:16 +01:00
										 |  |  |         if lines: | 
					
						
							|  |  |  |             lines = int(lines) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             lines = None | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-06 14:28:14 +02:00
										 |  |  |         if columns is None or lines is None or columns <= 0 or lines <= 0: | 
					
						
							| 
									
										
										
										
											2015-09-13 20:04:27 +08:00
										 |  |  |             try: | 
					
						
							|  |  |  |                 sp = subprocess.Popen( | 
					
						
							|  |  |  |                     ['stty', 'size'], | 
					
						
							|  |  |  |                     stdout=subprocess.PIPE, stderr=subprocess.PIPE) | 
					
						
							|  |  |  |                 out, err = sp.communicate() | 
					
						
							| 
									
										
										
										
											2015-10-06 22:02:28 +06:00
										 |  |  |                 _lines, _columns = map(int, out.split()) | 
					
						
							| 
									
										
										
										
											2015-09-13 20:04:27 +08:00
										 |  |  |             except Exception: | 
					
						
							|  |  |  |                 _columns, _lines = _terminal_size(*fallback) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-06 14:28:14 +02:00
										 |  |  |             if columns is None or columns <= 0: | 
					
						
							| 
									
										
										
										
											2015-09-13 20:04:27 +08:00
										 |  |  |                 columns = _columns | 
					
						
							| 
									
										
										
										
											2015-10-06 14:28:14 +02:00
										 |  |  |             if lines is None or lines <= 0: | 
					
						
							| 
									
										
										
										
											2015-09-13 20:04:27 +08:00
										 |  |  |                 lines = _lines | 
					
						
							| 
									
										
										
										
											2015-02-28 21:42:16 +01:00
										 |  |  |         return _terminal_size(columns, lines) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-10 18:58:12 +08:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2014-11-19 18:21:58 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-28 22:08:29 +02:00
										 |  |  | if sys.version_info >= (3, 0): | 
					
						
							|  |  |  |     from tokenize import tokenize as compat_tokenize_tokenize | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     from tokenize import generate_tokens as compat_tokenize_tokenize | 
					
						
							| 
									
										
										
										
											2014-11-19 18:21:58 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-23 18:28:49 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2016-05-03 16:50:16 +08:00
										 |  |  |     def compat_struct_pack(spec, *args): | 
					
						
							| 
									
										
										
										
											2016-04-23 18:28:49 +08:00
										 |  |  |         if isinstance(spec, compat_str): | 
					
						
							|  |  |  |             spec = spec.encode('ascii') | 
					
						
							|  |  |  |         return struct.pack(spec, *args) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-03 16:50:16 +08:00
										 |  |  |     def compat_struct_unpack(spec, *args): | 
					
						
							| 
									
										
										
										
											2016-04-23 18:28:49 +08:00
										 |  |  |         if isinstance(spec, compat_str): | 
					
						
							|  |  |  |             spec = spec.encode('ascii') | 
					
						
							|  |  |  |         return struct.unpack(spec, *args) | 
					
						
							|  |  |  | else: | 
					
						
							| 
									
										
										
										
											2016-05-03 16:50:16 +08:00
										 |  |  |     compat_struct_pack = struct.pack | 
					
						
							|  |  |  |     compat_struct_unpack = struct.unpack | 
					
						
							| 
									
										
										
										
											2016-04-23 18:28:49 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | __all__ = [ | 
					
						
							| 
									
										
										
										
											2016-01-02 19:49:59 +00:00
										 |  |  |     'compat_HTMLParser', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_HTTPError', | 
					
						
							| 
									
										
										
										
											2015-02-01 11:36:59 +01:00
										 |  |  |     'compat_basestring', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_chr', | 
					
						
							|  |  |  |     'compat_cookiejar', | 
					
						
							| 
									
										
										
										
											2015-07-29 23:20:37 +01:00
										 |  |  |     'compat_cookies', | 
					
						
							| 
									
										
										
										
											2015-10-25 20:04:55 +01:00
										 |  |  |     'compat_etree_fromstring', | 
					
						
							| 
									
										
										
										
											2017-02-01 20:15:25 +01:00
										 |  |  |     'compat_etree_register_namespace', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_expanduser', | 
					
						
							| 
									
										
										
										
											2015-02-28 21:42:16 +01:00
										 |  |  |     'compat_get_terminal_size', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_getenv', | 
					
						
							|  |  |  |     'compat_getpass', | 
					
						
							|  |  |  |     'compat_html_entities', | 
					
						
							| 
									
										
										
										
											2016-06-10 15:05:24 +08:00
										 |  |  |     'compat_html_entities_html5', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_http_client', | 
					
						
							| 
									
										
										
										
											2015-01-30 02:57:37 +01:00
										 |  |  |     'compat_http_server', | 
					
						
							| 
									
										
										
										
											2016-06-05 23:16:08 +02:00
										 |  |  |     'compat_input', | 
					
						
							| 
									
										
										
										
											2015-07-10 18:58:12 +08:00
										 |  |  |     'compat_itertools_count', | 
					
						
							| 
									
										
										
										
											2014-11-15 15:17:19 +01:00
										 |  |  |     'compat_kwargs', | 
					
						
							| 
									
										
										
										
											2016-03-05 23:07:25 +06:00
										 |  |  |     'compat_numeric_types', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_ord', | 
					
						
							| 
									
										
										
										
											2016-03-03 19:24:24 +08:00
										 |  |  |     'compat_os_name', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_parse_qs', | 
					
						
							|  |  |  |     'compat_print', | 
					
						
							| 
									
										
										
										
											2016-05-09 21:55:03 +06:00
										 |  |  |     'compat_setenv', | 
					
						
							| 
									
										
										
										
											2016-05-10 15:58:25 +08:00
										 |  |  |     'compat_shlex_quote', | 
					
						
							| 
									
										
										
										
											2015-09-05 21:40:44 +06:00
										 |  |  |     'compat_shlex_split', | 
					
						
							| 
									
										
										
										
											2015-01-10 19:55:36 +01:00
										 |  |  |     'compat_socket_create_connection', | 
					
						
							| 
									
										
										
										
											2015-01-11 15:13:03 +06:00
										 |  |  |     'compat_str', | 
					
						
							| 
									
										
										
										
											2016-05-03 16:50:16 +08:00
										 |  |  |     'compat_struct_pack', | 
					
						
							|  |  |  |     'compat_struct_unpack', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_subprocess_get_DEVNULL', | 
					
						
							| 
									
										
										
										
											2015-06-28 22:08:29 +02:00
										 |  |  |     'compat_tokenize_tokenize', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_urllib_error', | 
					
						
							|  |  |  |     'compat_urllib_parse', | 
					
						
							|  |  |  |     'compat_urllib_parse_unquote', | 
					
						
							| 
									
										
										
										
											2015-07-17 23:28:34 +06:00
										 |  |  |     'compat_urllib_parse_unquote_plus', | 
					
						
							| 
									
										
										
										
											2015-07-17 07:24:07 -05:00
										 |  |  |     'compat_urllib_parse_unquote_to_bytes', | 
					
						
							| 
									
										
										
										
											2016-03-26 01:46:57 +06:00
										 |  |  |     'compat_urllib_parse_urlencode', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_urllib_parse_urlparse', | 
					
						
							|  |  |  |     'compat_urllib_request', | 
					
						
							| 
									
										
										
										
											2015-10-17 23:15:01 +08:00
										 |  |  |     'compat_urllib_request_DataHandler', | 
					
						
							|  |  |  |     'compat_urllib_response', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  |     'compat_urlparse', | 
					
						
							|  |  |  |     'compat_urlretrieve', | 
					
						
							|  |  |  |     'compat_xml_parse_error', | 
					
						
							| 
									
										
										
										
											2016-03-18 02:51:38 +06:00
										 |  |  |     'compat_xpath', | 
					
						
							| 
									
										
										
										
											2014-11-19 18:21:58 +01:00
										 |  |  |     'workaround_optparse_bug9161', | 
					
						
							| 
									
										
										
										
											2014-11-02 11:23:40 +01:00
										 |  |  | ] |