=0;r--)"inline"===e.tokens[r].type&&c.test(e.tokens[r].content)&&s(e.tokens[r].children,e)}},{"../common/utils":5}],37:[function(e,r,t){"use strict";function n(e,r,t){this.src=e,this.env=t,this.tokens=[],this.inlineMode=!1,this.md=r}var s=e("../token");n.prototype.Token=s,r.exports=n},{"../token":50}],38:[function(e,r,t){"use strict";var n=e("../common/url_schemas"),s=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,i=/^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/;r.exports=function(e,r){var t,o,a,c,l,u,p=e.pos;return 60!==e.src.charCodeAt(p)?!1:(t=e.src.slice(p),t.indexOf(">")<0?!1:i.test(t)?(o=t.match(i),n.indexOf(o[1].toLowerCase())<0?!1:(c=o[0].slice(1,-1),l=e.md.normalizeLink(c),e.md.validateLink(l)?(r||(u=e.push("link_open","a",1),u.attrs=[["href",l]],u=e.push("text","",0),u.content=e.md.normalizeLinkText(c),u=e.push("link_close","a",-1)),e.pos+=o[0].length,!0):!1)):s.test(t)?(a=t.match(s),c=a[0].slice(1,-1),l=e.md.normalizeLink("mailto:"+c),e.md.validateLink(l)?(r||(u=e.push("link_open","a",1),u.attrs=[["href",l]],u.markup="autolink",u.info="auto",u=e.push("text","",0),u.content=e.md.normalizeLinkText(c),u=e.push("link_close","a",-1),u.markup="autolink",u.info="auto"),e.pos+=a[0].length,!0):!1):!1)}},{"../common/url_schemas":4}],39:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s,i,o,a,c=e.pos,l=e.src.charCodeAt(c);if(96!==l)return!1;for(t=c,c++,n=e.posMax;n>c&&96===e.src.charCodeAt(c);)c++;for(s=e.src.slice(t,c),i=o=c;-1!==(i=e.src.indexOf("`",o));){for(o=i+1;n>o&&96===e.src.charCodeAt(o);)o++;if(o-i===s.length)return r||(a=e.push("code_inline","code",0),a.markup=s,a.content=e.src.slice(c,i).replace(/[ \n]+/g," ").trim()),e.pos=o,!0}return r||(e.pending+=s),e.pos+=s.length,!0}},{}],40:[function(e,r,t){"use strict";function n(e,r){var t,n,a,c,l,u,p,h,f,d=r,m=!0,g=!0,_=e.posMax,b=e.src.charCodeAt(r);for(t=r>0?e.src.charCodeAt(r-1):32;_>d&&e.src.charCodeAt(d)===b;)d++;return a=d-r,n=_>d?e.src.charCodeAt(d):32,p=o(t)||i(String.fromCharCode(t)),f=o(n)||i(String.fromCharCode(n)),u=s(t),h=s(n),h?m=!1:f&&(u||p||(m=!1)),u?g=!1:p&&(h||f||(g=!1)),95===b?(c=m&&(!g||p),l=g&&(!m||f)):(c=m,l=g),{can_open:c,can_close:l,delims:a}}var s=e("../common/utils").isWhiteSpace,i=e("../common/utils").isPunctChar,o=e("../common/utils").isMdAsciiPunct;r.exports=function(e,r){var t,s,i,o,a,c,l,u,p=e.posMax,h=e.pos,f=e.src.charCodeAt(h);if(95!==f&&42!==f)return!1;if(r)return!1;if(l=n(e,h),t=l.delims,!l.can_open)return e.pos+=t,e.pending+=e.src.slice(h,e.pos),!0;for(e.pos=h+t,c=[t];e.posa){c.push(o-a);break}if(a-=o,0===c.length)break;e.pos+=o,o=c.pop()}if(0===c.length){t=o,i=!0;break}e.pos+=s;continue}l.can_open&&c.push(s),e.pos+=s}if(!i)return e.pos=h,!1;for(e.posMax=e.pos,e.pos=h+t,s=t;s>1;s-=2)u=e.push("strong_open","strong",1),u.markup=String.fromCharCode(f)+String.fromCharCode(f);for(s%2&&(u=e.push("em_open","em",1),u.markup=String.fromCharCode(f)),e.md.inline.tokenize(e),s%2&&(u=e.push("em_close","em",-1),u.markup=String.fromCharCode(f)),s=t;s>1;s-=2)u=e.push("strong_close","strong",-1),u.markup=String.fromCharCode(f)+String.fromCharCode(f);return e.pos=e.posMax+t,e.posMax=p,!0}},{"../common/utils":5}],41:[function(e,r,t){"use strict";var n=e("../common/entities"),s=e("../common/utils").has,i=e("../common/utils").isValidEntityCode,o=e("../common/utils").fromCodePoint,a=/^((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,c=/^&([a-z][a-z0-9]{1,31});/i;r.exports=function(e,r){var t,l,u,p=e.pos,h=e.posMax;if(38!==e.src.charCodeAt(p))return!1;if(h>p+1)if(t=e.src.charCodeAt(p+1),35===t){if(u=e.src.slice(p).match(a))return r||(l="x"===u[1][0].toLowerCase()?parseInt(u[1].slice(1),16):parseInt(u[1],10),e.pending+=o(i(l)?l:65533)),e.pos+=u[0].length,!0}else if(u=e.src.slice(p).match(c),u&&s(n,u[1]))return r||(e.pending+=n[u[1]]),e.pos+=u[0].length,!0;return r||(e.pending+="&"),e.pos++,!0}},{"../common/entities":1,"../common/utils":5}],42:[function(e,r,t){"use strict";for(var n=[],s=0;256>s;s++)n.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(e){n[e.charCodeAt(0)]=1}),r.exports=function(e,r){var t,s=e.pos,i=e.posMax;if(92!==e.src.charCodeAt(s))return!1;if(s++,i>s){if(t=e.src.charCodeAt(s),256>t&&0!==n[t])return r||(e.pending+=e.src[s]),e.pos+=2,!0;if(10===t){for(r||e.push("hardbreak","br",0),s++;i>s&&32===e.src.charCodeAt(s);)s++;return e.pos=s,!0}}return r||(e.pending+="\\"),e.pos++,!0}},{}],43:[function(e,r,t){"use strict";function n(e){var r=32|e;return r>=97&&122>=r}var s=e("../common/html_re").HTML_TAG_RE;r.exports=function(e,r){var t,i,o,a,c=e.pos;return e.md.options.html?(o=e.posMax,60!==e.src.charCodeAt(c)||c+2>=o?!1:(t=e.src.charCodeAt(c+1),(33===t||63===t||47===t||n(t))&&(i=e.src.slice(c).match(s))?(r||(a=e.push("html_inline","",0),a.content=e.src.slice(c,c+i[0].length)),e.pos+=i[0].length,!0):!1)):!1}},{"../common/html_re":3}],44:[function(e,r,t){"use strict";var n=e("../helpers/parse_link_label"),s=e("../helpers/parse_link_destination"),i=e("../helpers/parse_link_title"),o=e("../common/utils").normalizeReference;r.exports=function(e,r){var t,a,c,l,u,p,h,f,d,m,g,_,b="",k=e.pos,v=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(u=e.pos+2,l=n(e,e.pos+1,!1),0>l)return!1;if(p=l+1,v>p&&40===e.src.charCodeAt(p)){for(p++;v>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(p>=v)return!1;for(_=p,f=s(e.src,p,e.posMax),f.ok&&(b=e.md.normalizeLink(f.str),e.md.validateLink(b)?p=f.pos:b=""),_=p;v>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(f=i(e.src,p,e.posMax),v>p&&_!==p&&f.ok)for(d=f.str,p=f.pos;v>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);else d="";if(p>=v||41!==e.src.charCodeAt(p))return e.pos=k,!1;p++}else{if("undefined"==typeof e.env.references)return!1;for(;v>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(v>p&&91===e.src.charCodeAt(p)?(_=p+1,p=n(e,p),p>=0?c=e.src.slice(_,p++):p=l+1):p=l+1,c||(c=e.src.slice(u,l)),h=e.env.references[o(c)],!h)return e.pos=k,!1;b=h.href,d=h.title}if(!r){e.pos=u,e.posMax=l;var x=new e.md.inline.State(e.src.slice(u,l),e.md,e.env,g=[]);x.md.inline.tokenize(x),m=e.push("image","img",0),m.attrs=t=[["src",b],["alt",""]],m.children=g,d&&t.push(["title",d])}return e.pos=p,e.posMax=v,!0}},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_label":8,"../helpers/parse_link_title":9}],45:[function(e,r,t){"use strict";var n=e("../helpers/parse_link_label"),s=e("../helpers/parse_link_destination"),i=e("../helpers/parse_link_title"),o=e("../common/utils").normalizeReference;r.exports=function(e,r){var t,a,c,l,u,p,h,f,d,m,g="",_=e.pos,b=e.posMax,k=e.pos;if(91!==e.src.charCodeAt(e.pos))return!1;if(u=e.pos+1,l=n(e,e.pos,!0),0>l)return!1;if(p=l+1,b>p&&40===e.src.charCodeAt(p)){for(p++;b>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(p>=b)return!1;for(k=p,h=s(e.src,p,e.posMax),h.ok&&(g=e.md.normalizeLink(h.str),e.md.validateLink(g)?p=h.pos:g=""),k=p;b>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(h=i(e.src,p,e.posMax),b>p&&k!==p&&h.ok)for(d=h.str,p=h.pos;b>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);else d="";if(p>=b||41!==e.src.charCodeAt(p))return e.pos=_,!1;p++}else{if("undefined"==typeof e.env.references)return!1;for(;b>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(b>p&&91===e.src.charCodeAt(p)?(k=p+1,p=n(e,p),p>=0?c=e.src.slice(k,p++):p=l+1):p=l+1,c||(c=e.src.slice(u,l)),f=e.env.references[o(c)],!f)return e.pos=_,!1;g=f.href,d=f.title}return r||(e.pos=u,e.posMax=l,m=e.push("link_open","a",1),m.attrs=t=[["href",g]],d&&t.push(["title",d]),e.md.inline.tokenize(e),m=e.push("link_close","a",-1)),e.pos=p,e.posMax=b,!0}},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_label":8,"../helpers/parse_link_title":9}],46:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s=e.pos;if(10!==e.src.charCodeAt(s))return!1;for(t=e.pending.length-1,n=e.posMax,r||(t>=0&&32===e.pending.charCodeAt(t)?t>=1&&32===e.pending.charCodeAt(t-1)?(e.pending=e.pending.replace(/ +$/,""),e.push("hardbreak","br",0)):(e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0)):e.push("softbreak","br",0)),s++;n>s&&32===e.src.charCodeAt(s);)s++;return e.pos=s,!0}},{}],47:[function(e,r,t){"use strict";function n(e,r,t,n){this.src=e,this.env=t,this.md=r,this.tokens=n,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={}}var s=e("../token");n.prototype.pushPending=function(){var e=new s("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e},n.prototype.push=function(e,r,t){this.pending&&this.pushPending();var n=new s(e,r,t);return 0>t&&this.level--,n.level=this.level,t>0&&this.level++,this.pendingLevel=this.level,this.tokens.push(n),n},n.prototype.Token=s,r.exports=n},{"../token":50}],48:[function(e,r,t){"use strict";function n(e,r){var t,n,a,c,l,u,p,h=r,f=!0,d=!0,m=e.posMax,g=e.src.charCodeAt(r);for(t=r>0?e.src.charCodeAt(r-1):32;m>h&&e.src.charCodeAt(h)===g;)h++;return h>=m&&(f=!1),a=h-r,n=m>h?e.src.charCodeAt(h):32,l=o(t)||i(String.fromCharCode(t)),p=o(n)||i(String.fromCharCode(n)),c=s(t),u=s(n),u?f=!1:p&&(c||l||(f=!1)),c?d=!1:l&&(u||p||(d=!1)),{can_open:f,can_close:d,delims:a}}var s=e("../common/utils").isWhiteSpace,i=e("../common/utils").isPunctChar,o=e("../common/utils").isMdAsciiPunct;r.exports=function(e,r){var t,s,i,o,a,c,l,u=e.posMax,p=e.pos,h=e.src.charCodeAt(p);if(126!==h)return!1;if(r)return!1;if(c=n(e,p),t=c.delims,!c.can_open)return e.pos+=t,e.pending+=e.src.slice(p,e.pos),!0;if(a=Math.floor(t/2),0>=a)return!1;for(e.pos=p+t;e.pos=a){e.pos+=s-2,o=!0;break}a-=i,e.pos+=s;continue}c.can_open&&(a+=i),e.pos+=s}return o?(e.posMax=e.pos,e.pos=p+2,l=e.push("s_open","s",1),l.markup="~~",e.md.inline.tokenize(e),l=e.push("s_close","s",-1),l.markup="~~",e.pos=e.posMax+2,e.posMax=u,!0):(e.pos=p,!1)}},{"../common/utils":5}],49:[function(e,r,t){"use strict";function n(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}r.exports=function(e,r){for(var t=e.pos;tt;t++)if(r[t][0]===e)return t;return-1},n.prototype.attrPush=function(e){this.attrs?this.attrs.push(e):this.attrs=[e]},r.exports=n},{}],51:[function(r,t,n){(function(r){!function(s){function i(e){throw RangeError(M[e])}function o(e,r){for(var t=e.length;t--;)e[t]=r(e[t]);return e}function a(e,r){return o(e.split(T),r).join(".")}function c(e){for(var r,t,n=[],s=0,i=e.length;i>s;)r=e.charCodeAt(s++),r>=55296&&56319>=r&&i>s?(t=e.charCodeAt(s++),56320==(64512&t)?n.push(((1023&r)<<10)+(1023&t)+65536):(n.push(r),s--)):n.push(r);return n}function l(e){return o(e,function(e){var r="";return e>65535&&(e-=65536,r+=B(e>>>10&1023|55296),e=56320|1023&e),r+=B(e)}).join("")}function u(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:A}function p(e,r){return e+22+75*(26>e)-((0!=r)<<5)}function h(e,r,t){var n=0;for(e=t?I(e/D):e>>1,e+=I(e/r);e>R*w>>1;n+=A)e=I(e/R);return I(n+(R+1)*e/(e+q))}function f(e){var r,t,n,s,o,a,c,p,f,d,m=[],g=e.length,_=0,b=S,k=E;for(t=e.lastIndexOf(F),0>t&&(t=0),n=0;t>n;++n)e.charCodeAt(n)>=128&&i("not-basic"),m.push(e.charCodeAt(n));for(s=t>0?t+1:0;g>s;){for(o=_,a=1,c=A;s>=g&&i("invalid-input"),p=u(e.charCodeAt(s++)),(p>=A||p>I((y-_)/a))&&i("overflow"),_+=p*a,f=k>=c?C:c>=k+w?w:c-k,!(f>p);c+=A)d=A-f,a>I(y/d)&&i("overflow"),a*=d;r=m.length+1,k=h(_-o,r,0==o),I(_/r)>y-b&&i("overflow"),b+=I(_/r),_%=r,m.splice(_++,0,b)}return l(m)}function d(e){var r,t,n,s,o,a,l,u,f,d,m,g,_,b,k,v=[];for(e=c(e),g=e.length,r=S,t=0,o=E,a=0;g>a;++a)m=e[a],128>m&&v.push(B(m));for(n=s=v.length,s&&v.push(F);g>n;){for(l=y,a=0;g>a;++a)m=e[a],m>=r&&l>m&&(l=m);for(_=n+1,l-r>I((y-t)/_)&&i("overflow"),t+=(l-r)*_,r=l,a=0;g>a;++a)if(m=e[a],r>m&&++t>y&&i("overflow"),m==r){for(u=t,f=A;d=o>=f?C:f>=o+w?w:f-o,!(d>u);f+=A)k=u-d,b=A-d,v.push(B(p(d+k%b,0))),u=I(k/b);v.push(B(p(u,0))),o=h(t,_,n==s),t=0,++n}++t,++r}return v.join("")}function m(e){return a(e,function(e){return z.test(e)?f(e.slice(4).toLowerCase()):e})}function g(e){return a(e,function(e){return L.test(e)?"xn--"+d(e):e})}var _="object"==typeof n&&n,b="object"==typeof t&&t&&t.exports==_&&t,k="object"==typeof r&&r;(k.global===k||k.window===k)&&(s=k);var v,x,y=2147483647,A=36,C=1,w=26,q=38,D=700,E=72,S=128,F="-",z=/^xn--/,L=/[^ -~]/,T=/\x2E|\u3002|\uFF0E|\uFF61/g,M={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},R=A-C,I=Math.floor,B=String.fromCharCode;if(v={version:"1.2.4",ucs2:{decode:c,encode:l},decode:f,encode:d,toASCII:g,toUnicode:m},"function"==typeof e&&"object"==typeof e.amd&&e.amd)e("punycode",function(){return v});else if(_&&!_.nodeType)if(b)b.exports=v;else for(x in v)v.hasOwnProperty(x)&&(_[x]=v[x]);else s.punycode=v}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],52:[function(e,r,t){r.exports={Aacute:"\xc1",aacute:"\xe1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223e",acd:"\u223f",acE:"\u223e\u0333",Acirc:"\xc2",acirc:"\xe2",acute:"\xb4",Acy:"\u0410",acy:"\u0430",AElig:"\xc6",aelig:"\xe6",af:"\u2061",Afr:"\ud835\udd04",afr:"\ud835\udd1e",Agrave:"\xc0",agrave:"\xe0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03b1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2a3f",amp:"&",AMP:"&",andand:"\u2a55",And:"\u2a53",and:"\u2227",andd:"\u2a5c",andslope:"\u2a58",andv:"\u2a5a",ang:"\u2220",ange:"\u29a4",angle:"\u2220",angmsdaa:"\u29a8",angmsdab:"\u29a9",angmsdac:"\u29aa",angmsdad:"\u29ab",angmsdae:"\u29ac",angmsdaf:"\u29ad",angmsdag:"\u29ae",angmsdah:"\u29af",angmsd:"\u2221",angrt:"\u221f",angrtvb:"\u22be",angrtvbd:"\u299d",angsph:"\u2222",angst:"\xc5",angzarr:"\u237c",Aogon:"\u0104",aogon:"\u0105",Aopf:"\ud835\udd38",aopf:"\ud835\udd52",apacir:"\u2a6f",ap:"\u2248",apE:"\u2a70",ape:"\u224a",apid:"\u224b",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224a",Aring:"\xc5",aring:"\xe5",Ascr:"\ud835\udc9c",ascr:"\ud835\udcb6",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224d",Atilde:"\xc3",atilde:"\xe3",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:"\u2305",Barwed:"\u2306",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:"\ud835\udd05",bfr:"\ud835\udd1f",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:"\ud835\udd39",bopf:"\ud835\udd53",bot:"\u22a5",bottom:"\u22a5",bowtie:"\u22c8",boxbox:"\u29c9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250c",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252c",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229f",boxplus:"\u229e",boxtimes:"\u22a0",boxul:"\u2518",boxuL:"\u255b",boxUl:"\u255c",boxUL:"\u255d",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255a",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253c",boxvH:"\u256a",boxVh:"\u256b",boxVH:"\u256c",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251c",boxvR:"\u255e",boxVr:"\u255f",boxVR:"\u2560",bprime:"\u2035",breve:"\u02d8",Breve:"\u02d8",brvbar:"\xa6",bscr:"\ud835\udcb7",Bscr:"\u212c",bsemi:"\u204f",bsim:"\u223d",bsime:"\u22cd",bsolb:"\u29c5",bsol:"\\",bsolhsub:"\u27c8",bull:"\u2022",bullet:"\u2022",bump:"\u224e",bumpE:"\u2aae",bumpe:"\u224f",Bumpeq:"\u224e",bumpeq:"\u224f",Cacute:"\u0106",cacute:"\u0107",capand:"\u2a44",capbrcup:"\u2a49",capcap:"\u2a4b",cap:"\u2229",Cap:"\u22d2",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",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2a4c",ccupssm:"\u2a50",Cdot:"\u010a",cdot:"\u010b",cedil:"\xb8",Cedilla:"\xb8",cemptyv:"\u29b2",cent:"\xa2",centerdot:"\xb7",CenterDot:"\xb7",cfr:"\ud835\udd20",Cfr:"\u212d",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03a7",chi:"\u03c7",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",cir:"\u25cb",cirE:"\u29c3",cire:"\u2257",cirfnint:"\u2a10",cirmid:"\u2aef",cirscir:"\u29c2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201d",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2a74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2a6d",Congruent:"\u2261",conint:"\u222e",Conint:"\u222f",ContourIntegral:"\u222e",copf:"\ud835\udd54",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xa9",COPY:"\xa9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21b5",cross:"\u2717",Cross:"\u2a2f",Cscr:"\ud835\udc9e",cscr:"\ud835\udcb8",csub:"\u2acf",csube:"\u2ad1",csup:"\u2ad0",csupe:"\u2ad2",ctdot:"\u22ef",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22de",cuesc:"\u22df",cularr:"\u21b6",cularrp:"\u293d",cupbrcap:"\u2a48",cupcap:"\u2a46",CupCap:"\u224d",cup:"\u222a",Cup:"\u22d3",cupcup:"\u2a4a",cupdot:"\u228d",cupor:"\u2a45",cups:"\u222a\ufe00",curarr:"\u21b7",curarrm:"\u293c",curlyeqprec:"\u22de",curlyeqsucc:"\u22df",curlyvee:"\u22ce",curlywedge:"\u22cf",curren:"\xa4",curvearrowleft:"\u21b6",curvearrowright:"\u21b7",cuvee:"\u22ce",cuwed:"\u22cf",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232d",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21a1",dArr:"\u21d3",dash:"\u2010",Dashv:"\u2ae4",dashv:"\u22a3",dbkarow:"\u290f",dblac:"\u02dd",Dcaron:"\u010e",dcaron:"\u010f",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21ca",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2a77",deg:"\xb0",Del:"\u2207",Delta:"\u0394",delta:"\u03b4",demptyv:"\u29b1",dfisht:"\u297f",Dfr:"\ud835\udd07",dfr:"\ud835\udd21",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",divideontimes:"\u22c7",divonx:"\u22c7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231e",dlcrop:"\u230d",dollar:"$",Dopf:"\ud835\udd3b",dopf:"\ud835\udd55",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",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21d3",DownArrowUpArrow:"\u21f5",DownBreve:"\u0311",downdownarrows:"\u21ca",downharpoonleft:"\u21c3",downharpoonright:"\u21c2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295e",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21bd",DownRightTeeVector:"\u295f",DownRightVectorBar:"\u2957",DownRightVector:"\u21c1",DownTeeArrow:"\u21a7",DownTee:"\u22a4",drbkarow:"\u2910",drcorn:"\u231f",drcrop:"\u230c",Dscr:"\ud835\udc9f",dscr:"\ud835\udcb9",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",easter:"\u2a6e",Ecaron:"\u011a",ecaron:"\u011b",Ecirc:"\xca",ecirc:"\xea",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042d",ecy:"\u044d",eDDot:"\u2a77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\ud835\udd08",efr:"\ud835\udd22",eg:"\u2a9a",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:"\ud835\udd3c",eopf:"\ud835\udd56",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:"\u212f",Escr:"\u2130",esdot:"\u2250",Esim:"\u2a73",esim:"\u2242",Eta:"\u0397",eta:"\u03b7",ETH:"\xd0",eth:"\xf0",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:"\ud835\udd09",ffr:"\ud835\udd23",filig:"\ufb01",FilledSmallSquare:"\u25fc",FilledVerySmallSquare:"\u25aa",fjlig:"fj",flat:"\u266d",fllig:"\ufb02",fltns:"\u25b1",fnof:"\u0192",Fopf:"\ud835\udd3d",fopf:"\ud835\udd57",forall:"\u2200",ForAll:"\u2200",fork:"\u22d4",forkv:"\u2ad9",Fouriertrf:"\u2131",fpartint:"\u2a0d",frac12:"\xbd",frac13:"\u2153",frac14:"\xbc",frac15:"\u2155",frac16:"\u2159",frac18:"\u215b",frac23:"\u2154",frac25:"\u2156",frac34:"\xbe",frac35:"\u2157",frac38:"\u215c",frac45:"\u2158",frac56:"\u215a",frac58:"\u215d",frac78:"\u215e",frasl:"\u2044",frown:"\u2322",fscr:"\ud835\udcbb",Fscr:"\u2131",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:"\u2265",gE:"\u2267",gEl:"\u2a8c",gel:"\u22db",geq:"\u2265",geqq:"\u2267",geqslant:"\u2a7e",gescc:"\u2aa9",ges:"\u2a7e",gesdot:"\u2a80",gesdoto:"\u2a82",gesdotol:"\u2a84",gesl:"\u22db\ufe00",gesles:"\u2a94",Gfr:"\ud835\udd0a",gfr:"\ud835\udd24",gg:"\u226b",Gg:"\u22d9",ggg:"\u22d9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2aa5",gl:"\u2277",glE:"\u2a92",glj:"\u2aa4",gnap:"\u2a8a",gnapprox:"\u2a8a",gne:"\u2a88",gnE:"\u2269",gneq:"\u2a88",gneqq:"\u2269",gnsim:"\u22e7",Gopf:"\ud835\udd3e",gopf:"\ud835\udd58",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22db",GreaterFullEqual:"\u2267",GreaterGreater:"\u2aa2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2a7e",GreaterTilde:"\u2273",Gscr:"\ud835\udca2",gscr:"\u210a",gsim:"\u2273",gsime:"\u2a8e",gsiml:"\u2a90",gtcc:"\u2aa7",gtcir:"\u2a7a",gt:">",GT:">",Gt:"\u226b",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",harrcir:"\u2948",harr:"\u2194",hArr:"\u21d4",harrw:"\u21ad",Hat:"^",hbar:"\u210f",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22b9",hfr:"\ud835\udd25",Hfr:"\u210c",HilbertSpace:"\u210b",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21ff",homtht:"\u223b",hookleftarrow:"\u21a9",hookrightarrow:"\u21aa",hopf:"\ud835\udd59",Hopf:"\u210d",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\ud835\udcbd",Hscr:"\u210b",hslash:"\u210f",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224e",HumpEqual:"\u224f",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xcd",iacute:"\xed",ic:"\u2063",Icirc:"\xce",icirc:"\xee",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xa1",iff:"\u21d4",ifr:"\ud835\udd26",Ifr:"\u2111",Igrave:"\xcc",igrave:"\xec",ii:"\u2148",iiiint:"\u2a0c",iiint:"\u222d",iinfin:"\u29dc",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012a",imacr:"\u012b",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22b7",imped:"\u01b5",Implies:"\u21d2",incare:"\u2105","in":"\u2208",infin:"\u221e",infintie:"\u29dd",inodot:"\u0131",intcal:"\u22ba","int":"\u222b",Int:"\u222c",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:"\ud835\udd40",iopf:"\ud835\udd5a",Iota:"\u0399",iota:"\u03b9",iprod:"\u2a3c",iquest:"\xbf",iscr:"\ud835\udcbe",Iscr:"\u2110",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",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\ud835\udd0d",jfr:"\ud835\udd27",jmath:"\u0237",Jopf:"\ud835\udd41",jopf:"\ud835\udd5b",Jscr:"\ud835\udca5",jscr:"\ud835\udcbf",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039a",kappa:"\u03ba",kappav:"\u03f0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041a",kcy:"\u043a",Kfr:"\ud835\udd0e",kfr:"\ud835\udd28",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040c",kjcy:"\u045c",
+Kopf:"\ud835\udd42",kopf:"\ud835\udd5c",Kscr:"\ud835\udca6",kscr:"\ud835\udcc0",lAarr:"\u21da",Lacute:"\u0139",lacute:"\u013a",laemptyv:"\u29b4",lagran:"\u2112",Lambda:"\u039b",lambda:"\u03bb",lang:"\u27e8",Lang:"\u27ea",langd:"\u2991",langle:"\u27e8",lap:"\u2a85",Laplacetrf:"\u2112",laquo:"\xab",larrb:"\u21e4",larrbfs:"\u291f",larr:"\u2190",Larr:"\u219e",lArr:"\u21d0",larrfs:"\u291d",larrhk:"\u21a9",larrlp:"\u21ab",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21a2",latail:"\u2919",lAtail:"\u291b",lat:"\u2aab",late:"\u2aad",lates:"\u2aad\ufe00",lbarr:"\u290c",lBarr:"\u290e",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:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27e8",LeftArrowBar:"\u21e4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21d0",LeftArrowRightArrow:"\u21c6",leftarrowtail:"\u21a2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27e6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21c3",LeftFloor:"\u230a",leftharpoondown:"\u21bd",leftharpoonup:"\u21bc",leftleftarrows:"\u21c7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21d4",leftrightarrows:"\u21c6",leftrightharpoons:"\u21cb",leftrightsquigarrow:"\u21ad",LeftRightVector:"\u294e",LeftTeeArrow:"\u21a4",LeftTee:"\u22a3",LeftTeeVector:"\u295a",leftthreetimes:"\u22cb",LeftTriangleBar:"\u29cf",LeftTriangle:"\u22b2",LeftTriangleEqual:"\u22b4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21bf",LeftVectorBar:"\u2952",LeftVector:"\u21bc",lEg:"\u2a8b",leg:"\u22da",leq:"\u2264",leqq:"\u2266",leqslant:"\u2a7d",lescc:"\u2aa8",les:"\u2a7d",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:"\ud835\udd0f",lfr:"\ud835\udd29",lg:"\u2276",lgE:"\u2a91",lHar:"\u2962",lhard:"\u21bd",lharu:"\u21bc",lharul:"\u296a",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21c7",ll:"\u226a",Ll:"\u22d8",llcorner:"\u231e",Lleftarrow:"\u21da",llhard:"\u296b",lltri:"\u25fa",Lmidot:"\u013f",lmidot:"\u0140",lmoustache:"\u23b0",lmoust:"\u23b0",lnap:"\u2a89",lnapprox:"\u2a89",lne:"\u2a87",lnE:"\u2268",lneq:"\u2a87",lneqq:"\u2268",lnsim:"\u22e6",loang:"\u27ec",loarr:"\u21fd",lobrk:"\u27e6",longleftarrow:"\u27f5",LongLeftArrow:"\u27f5",Longleftarrow:"\u27f8",longleftrightarrow:"\u27f7",LongLeftRightArrow:"\u27f7",Longleftrightarrow:"\u27fa",longmapsto:"\u27fc",longrightarrow:"\u27f6",LongRightArrow:"\u27f6",Longrightarrow:"\u27f9",looparrowleft:"\u21ab",looparrowright:"\u21ac",lopar:"\u2985",Lopf:"\ud835\udd43",lopf:"\ud835\udd5d",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:"\ud835\udcc1",Lscr:"\u2112",lsh:"\u21b0",Lsh:"\u21b0",lsim:"\u2272",lsime:"\u2a8d",lsimg:"\u2a8f",lsqb:"[",lsquo:"\u2018",lsquor:"\u201a",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2aa6",ltcir:"\u2a79",lt:"<",LT:"<",Lt:"\u226a",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",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:"\ud835\udd10",mfr:"\ud835\udd2a",mho:"\u2127",micro:"\xb5",midast:"*",midcir:"\u2af0",mid:"\u2223",middot:"\xb7",minusb:"\u229f",minus:"\u2212",minusd:"\u2238",minusdu:"\u2a2a",MinusPlus:"\u2213",mlcp:"\u2adb",mldr:"\u2026",mnplus:"\u2213",models:"\u22a7",Mopf:"\ud835\udd44",mopf:"\ud835\udd5e",mp:"\u2213",mscr:"\ud835\udcc2",Mscr:"\u2133",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",natural:"\u266e",naturals:"\u2115",natur:"\u266e",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",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21d7",nearrow:"\u2197",ne:"\u2260",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:"\ud835\udd11",nfr:"\ud835\udd2b",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:"\u21ae",nhArr:"\u21ce",nhpar:"\u2af2",ni:"\u220b",nis:"\u22fc",nisd:"\u22fa",niv:"\u220b",NJcy:"\u040a",njcy:"\u045a",nlarr:"\u219a",nlArr:"\u21cd",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219a",nLeftarrow:"\u21cd",nleftrightarrow:"\u21ae",nLeftrightarrow:"\u21ce",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:"\ud835\udd5f",Nopf:"\u2115",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",NotLeftTriangleBar:"\u29cf\u0338",NotLeftTriangle:"\u22ea",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",NotRightTriangleBar:"\u29d0\u0338",NotRightTriangle:"\u22eb",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",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2afd\u20e5",npart:"\u2202\u0338",npolint:"\u2a14",npr:"\u2280",nprcue:"\u22e0",nprec:"\u2280",npreceq:"\u2aaf\u0338",npre:"\u2aaf\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219b",nrArr:"\u21cf",nrarrw:"\u219d\u0338",nrightarrow:"\u219b",nRightarrow:"\u21cf",nrtri:"\u22eb",nrtrie:"\u22ed",nsc:"\u2281",nsccue:"\u22e1",nsce:"\u2ab0\u0338",Nscr:"\ud835\udca9",nscr:"\ud835\udcc3",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",ntlg:"\u2278",ntriangleleft:"\u22ea",ntrianglelefteq:"\u22ec",ntriangleright:"\u22eb",ntrianglerighteq:"\u22ed",Nu:"\u039d",nu:"\u03bd",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224d\u20d2",nvdash:"\u22ac",nvDash:"\u22ad",nVdash:"\u22ae",nVDash:"\u22af",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:"\u2196",nwArr:"\u21d6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xd3",oacute:"\xf3",oast:"\u229b",Ocirc:"\xd4",ocirc:"\xf4",ocir:"\u229a",Ocy:"\u041e",ocy:"\u043e",odash:"\u229d",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2a38",odot:"\u2299",odsold:"\u29bc",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29bf",Ofr:"\ud835\udd12",ofr:"\ud835\udd2c",ogon:"\u02db",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:"\ud835\udd46",oopf:"\ud835\udd60",opar:"\u29b7",OpenCurlyDoubleQuote:"\u201c",OpenCurlyQuote:"\u2018",operp:"\u29b9",oplus:"\u2295",orarr:"\u21bb",Or:"\u2a54",or:"\u2228",ord:"\u2a5d",order:"\u2134",orderof:"\u2134",ordf:"\xaa",ordm:"\xba",origof:"\u22b6",oror:"\u2a56",orslope:"\u2a57",orv:"\u2a5b",oS:"\u24c8",Oscr:"\ud835\udcaa",oscr:"\u2134",Oslash:"\xd8",oslash:"\xf8",osol:"\u2298",Otilde:"\xd5",otilde:"\xf5",otimesas:"\u2a36",Otimes:"\u2a37",otimes:"\u2297",Ouml:"\xd6",ouml:"\xf6",ovbar:"\u233d",OverBar:"\u203e",OverBrace:"\u23de",OverBracket:"\u23b4",OverParenthesis:"\u23dc",para:"\xb6",parallel:"\u2225",par:"\u2225",parsim:"\u2af3",parsl:"\u2afd",part:"\u2202",PartialD:"\u2202",Pcy:"\u041f",pcy:"\u043f",percnt:"%",period:".",permil:"\u2030",perp:"\u22a5",pertenk:"\u2031",Pfr:"\ud835\udd13",pfr:"\ud835\udd2d",Phi:"\u03a6",phi:"\u03c6",phiv:"\u03d5",phmmat:"\u2133",phone:"\u260e",Pi:"\u03a0",pi:"\u03c0",pitchfork:"\u22d4",piv:"\u03d6",planck:"\u210f",planckh:"\u210e",plankv:"\u210f",plusacir:"\u2a23",plusb:"\u229e",pluscir:"\u2a22",plus:"+",plusdo:"\u2214",plusdu:"\u2a25",pluse:"\u2a72",PlusMinus:"\xb1",plusmn:"\xb1",plussim:"\u2a26",plustwo:"\u2a27",pm:"\xb1",Poincareplane:"\u210c",pointint:"\u2a15",popf:"\ud835\udd61",Popf:"\u2119",pound:"\xa3",prap:"\u2ab7",Pr:"\u2abb",pr:"\u227a",prcue:"\u227c",precapprox:"\u2ab7",prec:"\u227a",preccurlyeq:"\u227c",Precedes:"\u227a",PrecedesEqual:"\u2aaf",PrecedesSlantEqual:"\u227c",PrecedesTilde:"\u227e",preceq:"\u2aaf",precnapprox:"\u2ab9",precneqq:"\u2ab5",precnsim:"\u22e8",pre:"\u2aaf",prE:"\u2ab3",precsim:"\u227e",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2ab9",prnE:"\u2ab5",prnsim:"\u22e8",prod:"\u220f",Product:"\u220f",profalar:"\u232e",profline:"\u2312",profsurf:"\u2313",prop:"\u221d",Proportional:"\u221d",Proportion:"\u2237",propto:"\u221d",prsim:"\u227e",prurel:"\u22b0",Pscr:"\ud835\udcab",pscr:"\ud835\udcc5",Psi:"\u03a8",psi:"\u03c8",puncsp:"\u2008",Qfr:"\ud835\udd14",qfr:"\ud835\udd2e",qint:"\u2a0c",qopf:"\ud835\udd62",Qopf:"\u211a",qprime:"\u2057",Qscr:"\ud835\udcac",qscr:"\ud835\udcc6",quaternions:"\u210d",quatint:"\u2a16",quest:"?",questeq:"\u225f",quot:'"',QUOT:'"',rAarr:"\u21db",race:"\u223d\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221a",raemptyv:"\u29b3",rang:"\u27e9",Rang:"\u27eb",rangd:"\u2992",range:"\u29a5",rangle:"\u27e9",raquo:"\xbb",rarrap:"\u2975",rarrb:"\u21e5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21a0",rArr:"\u21d2",rarrfs:"\u291e",rarrhk:"\u21aa",rarrlp:"\u21ac",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21a3",rarrw:"\u219d",ratail:"\u291a",rAtail:"\u291c",ratio:"\u2236",rationals:"\u211a",rbarr:"\u290d",rBarr:"\u290f",RBarr:"\u2910",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",real:"\u211c",realine:"\u211b",realpart:"\u211c",reals:"\u211d",Re:"\u211c",rect:"\u25ad",reg:"\xae",REG:"\xae",ReverseElement:"\u220b",ReverseEquilibrium:"\u21cb",ReverseUpEquilibrium:"\u296f",rfisht:"\u297d",rfloor:"\u230b",rfr:"\ud835\udd2f",Rfr:"\u211c",rHar:"\u2964",rhard:"\u21c1",rharu:"\u21c0",rharul:"\u296c",Rho:"\u03a1",rho:"\u03c1",rhov:"\u03f1",RightAngleBracket:"\u27e9",RightArrowBar:"\u21e5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21d2",RightArrowLeftArrow:"\u21c4",rightarrowtail:"\u21a3",RightCeiling:"\u2309",RightDoubleBracket:"\u27e7",RightDownTeeVector:"\u295d",RightDownVectorBar:"\u2955",RightDownVector:"\u21c2",RightFloor:"\u230b",rightharpoondown:"\u21c1",rightharpoonup:"\u21c0",rightleftarrows:"\u21c4",rightleftharpoons:"\u21cc",rightrightarrows:"\u21c9",rightsquigarrow:"\u219d",RightTeeArrow:"\u21a6",RightTee:"\u22a2",RightTeeVector:"\u295b",rightthreetimes:"\u22cc",RightTriangleBar:"\u29d0",RightTriangle:"\u22b3",RightTriangleEqual:"\u22b5",RightUpDownVector:"\u294f",RightUpTeeVector:"\u295c",RightUpVectorBar:"\u2954",RightUpVector:"\u21be",RightVectorBar:"\u2953",RightVector:"\u21c0",ring:"\u02da",risingdotseq:"\u2253",rlarr:"\u21c4",rlhar:"\u21cc",rlm:"\u200f",rmoustache:"\u23b1",rmoust:"\u23b1",rnmid:"\u2aee",roang:"\u27ed",roarr:"\u21fe",robrk:"\u27e7",ropar:"\u2986",ropf:"\ud835\udd63",Ropf:"\u211d",roplus:"\u2a2e",rotimes:"\u2a35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2a12",rrarr:"\u21c9",Rrightarrow:"\u21db",rsaquo:"\u203a",rscr:"\ud835\udcc7",Rscr:"\u211b",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",scap:"\u2ab8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2abc",sc:"\u227b",sccue:"\u227d",sce:"\u2ab0",scE:"\u2ab4",Scedil:"\u015e",scedil:"\u015f",Scirc:"\u015c",scirc:"\u015d",scnap:"\u2aba",scnE:"\u2ab6",scnsim:"\u22e9",scpolint:"\u2a13",scsim:"\u227f",Scy:"\u0421",scy:"\u0441",sdotb:"\u22a1",sdot:"\u22c5",sdote:"\u2a66",searhk:"\u2925",searr:"\u2198",seArr:"\u21d8",searrow:"\u2198",sect:"\xa7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\ud835\udd16",sfr:"\ud835\udd30",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",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",solbar:"\u233f",solb:"\u29c4",sol:"/",Sopf:"\ud835\udd4a",sopf:"\ud835\udd64",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",square:"\u25a1",Square:"\u25a1",SquareIntersection:"\u2293",SquareSubset:"\u228f",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25aa",squ:"\u25a1",squf:"\u25aa",srarr:"\u2192",Sscr:"\ud835\udcae",sscr:"\ud835\udcc8",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22c6",Star:"\u22c6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03f5",straightphi:"\u03d5",strns:"\xaf",sub:"\u2282",Sub:"\u22d0",subdot:"\u2abd",subE:"\u2ac5",sube:"\u2286",subedot:"\u2ac3",submult:"\u2ac1",subnE:"\u2acb",subne:"\u228a",subplus:"\u2abf",subrarr:"\u2979",subset:"\u2282",Subset:"\u22d0",subseteq:"\u2286",subseteqq:"\u2ac5",SubsetEqual:"\u2286",subsetneq:"\u228a",subsetneqq:"\u2acb",subsim:"\u2ac7",subsub:"\u2ad5",subsup:"\u2ad3",succapprox:"\u2ab8",succ:"\u227b",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",sup2:"\xb2",sup3:"\xb3",sup:"\u2283",Sup:"\u22d1",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:"\u2283",Supset:"\u22d1",supseteq:"\u2287",supseteqq:"\u2ac6",supsetneq:"\u228b",supsetneqq:"\u2acc",supsim:"\u2ac8",supsub:"\u2ad4",supsup:"\u2ad6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21d9",swarrow:"\u2199",swnwar:"\u292a",szlig:"\xdf",Tab:" ",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:"\ud835\udd17",tfr:"\ud835\udd31",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03b8",thetasym:"\u03d1",thetav:"\u03d1",thickapprox:"\u2248",thicksim:"\u223c",ThickSpace:"\u205f\u200a",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223c",THORN:"\xde",thorn:"\xfe",tilde:"\u02dc",Tilde:"\u223c",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2a31",timesb:"\u22a0",times:"\xd7",timesd:"\u2a30",tint:"\u222d",toea:"\u2928",topbot:"\u2336",topcir:"\u2af1",top:"\u22a4",Topf:"\ud835\udd4b",topf:"\ud835\udd65",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:"\ud835\udcaf",tscr:"\ud835\udcc9",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040b",tshcy:"\u045b",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226c",twoheadleftarrow:"\u219e",twoheadrightarrow:"\u21a0",Uacute:"\xda",uacute:"\xfa",uarr:"\u2191",Uarr:"\u219f",uArr:"\u21d1",Uarrocir:"\u2949",Ubrcy:"\u040e",ubrcy:"\u045e",Ubreve:"\u016c",ubreve:"\u016d",Ucirc:"\xdb",ucirc:"\xfb",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21c5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296e",ufisht:"\u297e",Ufr:"\ud835\udd18",ufr:"\ud835\udd32",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",UnderBar:"_",UnderBrace:"\u23df",UnderBracket:"\u23b5",UnderParenthesis:"\u23dd",Union:"\u22c3",UnionPlus:"\u228e",Uogon:"\u0172",uogon:"\u0173",Uopf:"\ud835\udd4c",uopf:"\ud835\udd66",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21d1",UpArrowDownArrow:"\u21c5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21d5",UpEquilibrium:"\u296e",upharpoonleft:"\u21bf",upharpoonright:"\u21be",uplus:"\u228e",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03c5",Upsi:"\u03d2",upsih:"\u03d2",Upsilon:"\u03a5",upsilon:"\u03c5",UpTeeArrow:"\u21a5",UpTee:"\u22a5",upuparrows:"\u21c8",urcorn:"\u231d",urcorner:"\u231d",urcrop:"\u230e",Uring:"\u016e",uring:"\u016f",urtri:"\u25f9",Uscr:"\ud835\udcb0",uscr:"\ud835\udcca",utdot:"\u22f0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25b5",utrif:"\u25b4",uuarr:"\u21c8",Uuml:"\xdc",uuml:"\xfc",uwangle:"\u29a7",vangrt:"\u299c",varepsilon:"\u03f5",varkappa:"\u03f0",varnothing:"\u2205",varphi:"\u03d5",varpi:"\u03d6",varpropto:"\u221d",varr:"\u2195",vArr:"\u21d5",varrho:"\u03f1",varsigma:"\u03c2",varsubsetneq:"\u228a\ufe00",varsubsetneqq:"\u2acb\ufe00",varsupsetneq:"\u228b\ufe00",varsupsetneqq:"\u2acc\ufe00",vartheta:"\u03d1",vartriangleleft:"\u22b2",vartriangleright:"\u22b3",vBar:"\u2ae8",Vbar:"\u2aeb",vBarv:"\u2ae9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22a2",vDash:"\u22a8",Vdash:"\u22a9",VDash:"\u22ab",Vdashl:"\u2ae6",veebar:"\u22bb",vee:"\u2228",Vee:"\u22c1",veeeq:"\u225a",vellip:"\u22ee",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200a",Vfr:"\ud835\udd19",vfr:"\ud835\udd33",vltri:"\u22b2",vnsub:"\u2282\u20d2",vnsup:"\u2283\u20d2",Vopf:"\ud835\udd4d",vopf:"\ud835\udd67",vprop:"\u221d",vrtri:"\u22b3",Vscr:"\ud835\udcb1",vscr:"\ud835\udccb",vsubnE:"\u2acb\ufe00",vsubne:"\u228a\ufe00",vsupnE:"\u2acc\ufe00",vsupne:"\u228b\ufe00",Vvdash:"\u22aa",vzigzag:"\u299a",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2a5f",wedge:"\u2227",Wedge:"\u22c0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\ud835\udd1a",wfr:"\ud835\udd34",Wopf:"\ud835\udd4e",wopf:"\ud835\udd68",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\ud835\udcb2",wscr:"\ud835\udccc",xcap:"\u22c2",xcirc:"\u25ef",xcup:"\u22c3",xdtri:"\u25bd",Xfr:"\ud835\udd1b",xfr:"\ud835\udd35",xharr:"\u27f7",xhArr:"\u27fa",Xi:"\u039e",xi:"\u03be",xlarr:"\u27f5",xlArr:"\u27f8",xmap:"\u27fc",xnis:"\u22fb",xodot:"\u2a00",Xopf:"\ud835\udd4f",xopf:"\ud835\udd69",xoplus:"\u2a01",xotime:"\u2a02",xrarr:"\u27f6",xrArr:"\u27f9",Xscr:"\ud835\udcb3",xscr:"\ud835\udccd",xsqcup:"\u2a06",xuplus:"\u2a04",xutri:"\u25b3",xvee:"\u22c1",xwedge:"\u22c0",Yacute:"\xdd",yacute:"\xfd",YAcy:"\u042f",yacy:"\u044f",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042b",ycy:"\u044b",yen:"\xa5",Yfr:"\ud835\udd1c",yfr:"\ud835\udd36",YIcy:"\u0407",yicy:"\u0457",Yopf:"\ud835\udd50",yopf:"\ud835\udd6a",Yscr:"\ud835\udcb4",yscr:"\ud835\udcce",YUcy:"\u042e",yucy:"\u044e",yuml:"\xff",Yuml:"\u0178",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:"\ud835\udd37",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21dd",zopf:"\ud835\udd6b",Zopf:"\u2124",Zscr:"\ud835\udcb5",zscr:"\ud835\udccf",zwj:"\u200d",zwnj:"\u200c"}},{}],53:[function(e,r,t){"use strict";function n(e){var r=Array.prototype.slice.call(arguments,1);return r.forEach(function(r){r&&Object.keys(r).forEach(function(t){e[t]=r[t]})}),e}function s(e){return Object.prototype.toString.call(e)}function i(e){return"[object String]"===s(e)}function o(e){return"[object Object]"===s(e)}function a(e){return"[object RegExp]"===s(e)}function c(e){return"[object Function]"===s(e)}function l(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function u(e){return Object.keys(e||{}).reduce(function(e,r){return e||b.hasOwnProperty(r)},!1)}function p(e){e.__index__=-1,e.__text_cache__=""}function h(e){return function(r,t){var n=r.slice(t);return e.test(n)?n.match(e)[0].length:0}}function f(){return function(e,r){r.normalize(e)}}function d(r){function t(e){return e.replace("%TLDS%",u.src_tlds)}function s(e,r){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+r)}var u=r.re=n({},e("./lib/re")),d=r.__tlds__.slice();r.__tlds_replaced__||d.push(v),d.push(u.src_xn),u.src_tlds=d.join("|"),u.email_fuzzy=RegExp(t(u.tpl_email_fuzzy),"i"),u.link_fuzzy=RegExp(t(u.tpl_link_fuzzy),"i"),u.link_no_ip_fuzzy=RegExp(t(u.tpl_link_no_ip_fuzzy),"i"),u.host_fuzzy_test=RegExp(t(u.tpl_host_fuzzy_test),"i");var m=[];r.__compiled__={},Object.keys(r.__schemas__).forEach(function(e){var t=r.__schemas__[e];if(null!==t){var n={validate:null,link:null};return r.__compiled__[e]=n,o(t)?(a(t.validate)?n.validate=h(t.validate):c(t.validate)?n.validate=t.validate:s(e,t),void(c(t.normalize)?n.normalize=t.normalize:t.normalize?s(e,t):n.normalize=f())):i(t)?void m.push(e):void s(e,t)}}),m.forEach(function(e){r.__compiled__[r.__schemas__[e]]&&(r.__compiled__[e].validate=r.__compiled__[r.__schemas__[e]].validate,r.__compiled__[e].normalize=r.__compiled__[r.__schemas__[e]].normalize)}),r.__compiled__[""]={validate:null,normalize:f()};var g=Object.keys(r.__compiled__).filter(function(e){return e.length>0&&r.__compiled__[e]}).map(l).join("|");r.re.schema_test=RegExp("(^|(?!_)(?:>|"+u.src_ZPCc+"))("+g+")","i"),r.re.schema_search=RegExp("(^|(?!_)(?:>|"+u.src_ZPCc+"))("+g+")","ig"),r.re.pretest=RegExp("("+r.re.schema_test.source+")|("+r.re.host_fuzzy_test.source+")|@","i"),p(r)}function m(e,r){var t=e.__index__,n=e.__last_index__,s=e.__text_cache__.slice(t,n);this.schema=e.__schema__.toLowerCase(),this.index=t+r,this.lastIndex=n+r,this.raw=s,this.text=s,this.url=s}function g(e,r){var t=new m(e,r);return e.__compiled__[t.schema].normalize(t,e),t}function _(e,r){return this instanceof _?(r||u(e)&&(r=e,e={}),this.__opts__=n({},b,r),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},k,e),this.__compiled__={},this.__tlds__=x,this.__tlds_replaced__=!1,this.re={},void d(this)):new _(e,r)}var b={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1},k={"http:":{validate:function(e,r,t){var n=e.slice(r);return t.re.http||(t.re.http=new RegExp("^\\/\\/"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.http.test(n)?n.match(t.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,r,t){var n=e.slice(r);return t.re.no_http||(t.re.no_http=new RegExp("^"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.no_http.test(n)?r>=3&&":"===e[r-3]?0:n.match(t.re.no_http)[0].length:0}},"mailto:":{validate:function(e,r,t){var n=e.slice(r);return t.re.mailto||(t.re.mailto=new RegExp("^"+t.re.src_email_name+"@"+t.re.src_host_strict,"i")),t.re.mailto.test(n)?n.match(t.re.mailto)[0].length:0}}},v="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",x="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");_.prototype.add=function(e,r){return this.__schemas__[e]=r,d(this),this},_.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},_.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var r,t,n,s,i,o,a,c,l;if(this.re.schema_test.test(e))for(a=this.re.schema_search,a.lastIndex=0;null!==(r=a.exec(e));)if(s=this.testSchemaAt(e,r[2],a.lastIndex)){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+s;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=e.search(this.re.host_fuzzy_test),c>=0&&(this.__index__<0||c=0&&null!==(n=e.match(this.re.email_fuzzy))&&(i=n.index+n[1].length,o=n.index+n[0].length,(this.__index__<0||ithis.__last_index__)&&(this.__schema__="mailto:",this.__index__=i,this.__last_index__=o))),this.__index__>=0},_.prototype.pretest=function(e){return this.re.pretest.test(e)},_.prototype.testSchemaAt=function(e,r,t){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(e,t,this):0},_.prototype.match=function(e){var r=0,t=[];this.__index__>=0&&this.__text_cache__===e&&(t.push(g(this,r)),r=this.__last_index__);for(var n=r?e.slice(r):e;this.test(n);)t.push(g(this,r)),n=n.slice(this.__last_index__),r+=this.__last_index__;return t.length?t:null},_.prototype.tlds=function(e,r){return e=Array.isArray(e)?e:[e],r?(this.__tlds__=this.__tlds__.concat(e).sort().filter(function(e,r,t){return e!==t[r-1]}).reverse(),d(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,d(this),this)},_.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},r.exports=_},{"./lib/re":54}],54:[function(e,r,t){"use strict";var n=t.src_Any=e("uc.micro/properties/Any/regex").source,s=t.src_Cc=e("uc.micro/categories/Cc/regex").source,i=t.src_Z=e("uc.micro/categories/Z/regex").source,o=t.src_P=e("uc.micro/categories/P/regex").source,a=t.src_ZPCc=[i,o,s].join("|"),c=t.src_ZCc=[i,s].join("|"),l="(?:(?!"+a+")"+n+")",u="(?:(?![0-9]|"+a+")"+n+")",p=t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";t.src_auth="(?:(?:(?!"+c+").)+@)?";var h=t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",f=t.src_host_terminator="(?=$|"+a+")(?!-|_|:\\d|\\.-|\\.(?!$|"+a+"))",d=t.src_path="(?:[/?#](?:(?!"+c+"|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+c+"|\\]).)*\\]|\\((?:(?!"+c+"|[)]).)*\\)|\\{(?:(?!"+c+'|[}]).)*\\}|\\"(?:(?!'+c+'|["]).)+\\"|\\\'(?:(?!'+c+"|[']).)+\\'|\\'(?="+l+").|\\.{2,3}[a-zA-Z0-9%/]|\\.(?!"+c+"|[.]).|\\-(?!--(?:[^-]|$))(?:-*)|\\,(?!"+c+").|\\!(?!"+c+"|[!]).|\\?(?!"+c+"|[?]).)+|\\/)?",m=t.src_email_name='[\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]+',g=t.src_xn="xn--[a-z0-9\\-]{1,59}",_=t.src_domain_root="(?:"+g+"|"+u+"{1,63})",b=t.src_domain="(?:"+g+"|(?:"+l+")|(?:"+l+"(?:-(?!-)|"+l+"){0,61}"+l+"))",k=t.src_host="(?:"+p+"|(?:(?:(?:"+b+")\\.)*"+_+"))",v=t.tpl_host_fuzzy="(?:"+p+"|(?:(?:(?:"+b+")\\.)+(?:%TLDS%)))",x=t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+b+")\\.)+(?:%TLDS%))";t.src_host_strict=k+f;var y=t.tpl_host_fuzzy_strict=v+f;t.src_host_port_strict=k+h+f;var A=t.tpl_host_port_fuzzy_strict=v+h+f,C=t.tpl_host_port_no_ip_fuzzy_strict=x+h+f;t.tpl_host_fuzzy_test="localhost|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+a+"|$))",t.tpl_email_fuzzy="(^|>|"+c+")("+m+"@"+y+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|]|"+a+"))((?![$+<=>^`|])"+A+d+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|]|"+a+"))((?![$+<=>^`|])"+C+d+")"},{"uc.micro/categories/Cc/regex":60,"uc.micro/categories/P/regex":62,"uc.micro/categories/Z/regex":63,"uc.micro/properties/Any/regex":65}],55:[function(e,r,t){"use strict";function n(e){var r,t,n=i[e];if(n)return n;for(n=i[e]=[],r=0;128>r;r++)t=String.fromCharCode(r),n.push(t);for(r=0;rr;r+=3)s=parseInt(e.slice(r+1,r+3),16),128>s?l+=t[s]:192===(224&s)&&n>r+3&&(i=parseInt(e.slice(r+4,r+6),16),128===(192&i))?(c=s<<6&1984|63&i,l+=128>c?"\ufffd\ufffd":String.fromCharCode(c),r+=3):224===(240&s)&&n>r+6&&(i=parseInt(e.slice(r+4,r+6),16),o=parseInt(e.slice(r+7,r+9),16),128===(192&i)&&128===(192&o))?(c=s<<12&61440|i<<6&4032|63&o,l+=2048>c||c>=55296&&57343>=c?"\ufffd\ufffd\ufffd":String.fromCharCode(c),r+=6):240===(248&s)&&n>r+9&&(i=parseInt(e.slice(r+4,r+6),16),o=parseInt(e.slice(r+7,r+9),16),a=parseInt(e.slice(r+10,r+12),16),128===(192&i)&&128===(192&o)&&128===(192&a))?(c=s<<18&1835008|i<<12&258048|o<<6&4032|63&a,65536>c||c>1114111?l+="\ufffd\ufffd\ufffd\ufffd":(c-=65536,l+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),
+r+=9):l+="\ufffd";return l})}var i={};s.defaultChars=";/?:@&=+$,#",s.componentChars="",r.exports=s},{}],56:[function(e,r,t){"use strict";function n(e){var r,t,n=i[e];if(n)return n;for(n=i[e]=[],r=0;128>r;r++)t=String.fromCharCode(r),n.push(/^[0-9a-z]$/i.test(t)?t:"%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;ri;i++)if(a=e.charCodeAt(i),t&&37===a&&o>i+2&&/^[0-9a-f]{2}$/i.test(e.slice(i+1,i+3)))u+=e.slice(i,i+3),i+=2;else if(128>a)u+=l[a];else if(a>=55296&&57343>=a){if(a>=55296&&56319>=a&&o>i+1&&(c=e.charCodeAt(i+1),c>=56320&&57343>=c)){u+=encodeURIComponent(e[i]+e[i+1]),i++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[i]);return u}var i={};s.defaultChars=";/?:@&=+$,-_.!~*'()#",s.componentChars="-_.!~*'()",r.exports=s},{}],57:[function(e,r,t){"use strict";r.exports=function(e){var r="";return r+=e.protocol||"",r+=e.slashes?"//":"",r+=e.auth?e.auth+"@":"",r+=e.hostname&&-1!==e.hostname.indexOf(":")?"["+e.hostname+"]":e.hostname||"",r+=e.port?":"+e.port:"",r+=e.pathname||"",r+=e.search||"",r+=e.hash||""}},{}],58:[function(e,r,t){"use strict";r.exports.encode=e("./encode"),r.exports.decode=e("./decode"),r.exports.format=e("./format"),r.exports.parse=e("./parse")},{"./decode":55,"./encode":56,"./format":57,"./parse":59}],59:[function(e,r,t){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}function s(e,r){if(e&&e instanceof n)return e;var t=new n;return t.parse(e,r),t}var i=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,a=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["<",">",'"',"`"," ","\r","\n"," "],l=["{","}","|","\\","^","`"].concat(c),u=["'"].concat(l),p=["%","/","?",";","#"].concat(u),h=["/","?","#"],f=255,d=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},_={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};n.prototype.parse=function(e,r){var t,n,s,o,c,l=e;if(l=l.trim(),!r&&1===e.split("#").length){var u=a.exec(l);if(u)return this.pathname=u[1],u[2]&&(this.search=u[2]),this}var b=i.exec(l);if(b&&(b=b[0],s=b.toLowerCase(),this.protocol=b,l=l.substr(b.length)),(r||b||l.match(/^\/\/[^@\/]+@[^@\/]+/))&&(c="//"===l.substr(0,2),!c||b&&g[b]||(l=l.substr(2),this.slashes=!0)),!g[b]&&(c||b&&!_[b])){var k=-1;for(t=0;to)&&(k=o);var v,x;for(x=-1===k?l.lastIndexOf("@"):l.lastIndexOf("@",k),-1!==x&&(v=l.slice(0,x),l=l.slice(x+1),this.auth=v),k=-1,t=0;to)&&(k=o);-1===k&&(k=l.length),":"===l[k-1]&&k--;var y=l.slice(0,k);l=l.slice(k),this.parseHost(y),this.hostname=this.hostname||"";var A="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!A){var C=this.hostname.split(/\./);for(t=0,n=C.length;n>t;t++){var w=C[t];if(w&&!w.match(d)){for(var q="",D=0,E=w.length;E>D;D++)q+=w.charCodeAt(D)>127?"x":w[D];if(!q.match(d)){var S=C.slice(0,t),F=C.slice(t+1),z=w.match(m);z&&(S.push(z[1]),F.unshift(z[2])),F.length&&(l=F.join(".")+l),this.hostname=S.join(".");break}}}}this.hostname.length>f&&(this.hostname=""),A&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var L=l.indexOf("#");-1!==L&&(this.hash=l.substr(L),l=l.slice(0,L));var T=l.indexOf("?");return-1!==T&&(this.search=l.substr(T),l=l.slice(0,T)),l&&(this.pathname=l),_[s]&&this.hostname&&!this.pathname&&(this.pathname=""),this},n.prototype.parseHost=function(e){var r=o.exec(e);r&&(r=r[0],":"!==r&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)},r.exports=s},{}],60:[function(e,r,t){r.exports=/[\0-\x1F\x7F-\x9F]/},{}],61:[function(e,r,t){r.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},{}],62:[function(e,r,t){r.exports=/[!-#%-\*,-/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDE38-\uDE3D]|\uD805[\uDCC6\uDDC1-\uDDC9\uDE41-\uDE43]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F/},{}],63:[function(e,r,t){r.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},{}],64:[function(e,r,t){r.exports.Any=e("./properties/Any/regex"),r.exports.Cc=e("./categories/Cc/regex"),r.exports.Cf=e("./categories/Cf/regex"),r.exports.P=e("./categories/P/regex"),r.exports.Z=e("./categories/Z/regex")},{"./categories/Cc/regex":60,"./categories/Cf/regex":61,"./categories/P/regex":62,"./categories/Z/regex":63,"./properties/Any/regex":65}],65:[function(e,r,t){r.exports=/[\0-\uD7FF\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF]/},{}],66:[function(e,r,t){"use strict";r.exports=e("./lib/")},{"./lib/":10}]},{},[66])(66)});
\ No newline at end of file
From 4401922b2e08e1e4379ea474f0f9a695c429ec13 Mon Sep 17 00:00:00 2001
From: Vitaly Puzrin
Date: Sat, 18 Jul 2015 07:53:07 +0300
Subject: [PATCH 010/320] 4.4.0 released
---
CHANGELOG.md | 7 +++++++
package.json | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9d0b78722..6d0030452 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+4.4.0 / 2015-07-18
+------------------
+
+- Updated HTML blocks logic to CM 0.21 spec.
+- Minor fixes.
+
+
4.3.1 / 2015-07-15
------------------
diff --git a/package.json b/package.json
index 8e5e3edc4..356d130ae 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "markdown-it",
- "version": "4.3.1",
+ "version": "4.4.0",
"description": "Markdown-it - modern pluggable markdown parser.",
"keywords": [
"markdown",
From b2aee1a9789c74e5eba16ac71d6a7b256fc61067 Mon Sep 17 00:00:00 2001
From: Alex Kocharin
Date: Wed, 22 Jul 2015 16:09:25 +0300
Subject: [PATCH 011/320] Expand tabs only when it's needed, as per CommonMark
0.21
---
lib/common/utils.js | 10 +++
lib/parser_block.js | 2 +-
lib/rules_block/blockquote.js | 65 ++++++++++++---
lib/rules_block/code.js | 4 +-
lib/rules_block/fence.js | 6 +-
lib/rules_block/heading.js | 6 +-
lib/rules_block/hr.js | 6 +-
lib/rules_block/html_block.js | 2 +-
lib/rules_block/lheading.js | 4 +-
lib/rules_block/list.js | 62 +++++++++++---
lib/rules_block/paragraph.js | 4 +-
lib/rules_block/reference.js | 21 +++--
lib/rules_block/state_block.js | 70 +++++++++++-----
lib/rules_block/table.js | 4 +-
lib/rules_core/normalize.js | 21 +----
lib/rules_inline/escape.js | 8 +-
lib/rules_inline/image.js | 9 +-
lib/rules_inline/link.js | 9 +-
test/fixtures/commonmark/bad.txt | 83 -------------------
test/fixtures/commonmark/good.txt | 52 ++++++++++++
.../markdown-it/commonmark_extras.txt | 27 ++++++
21 files changed, 298 insertions(+), 177 deletions(-)
diff --git a/lib/common/utils.js b/lib/common/utils.js
index 34ac68938..9a8bceed1 100644
--- a/lib/common/utils.js
+++ b/lib/common/utils.js
@@ -151,6 +151,15 @@ function escapeRE (str) {
////////////////////////////////////////////////////////////////////////////////
+function isSpace(code) {
+ switch (code) {
+ case 0x09:
+ case 0x20:
+ return true;
+ }
+ return false;
+}
+
// Zs (unicode class) || [\t\f\v\r\n]
function isWhiteSpace(code) {
if (code >= 0x2000 && code <= 0x200A) { return true; }
@@ -258,6 +267,7 @@ exports.fromCodePoint = fromCodePoint;
// exports.replaceEntities = replaceEntities;
exports.escapeHtml = escapeHtml;
exports.arrayReplaceAt = arrayReplaceAt;
+exports.isSpace = isSpace;
exports.isWhiteSpace = isWhiteSpace;
exports.isMdAsciiPunct = isMdAsciiPunct;
exports.isPunctChar = isPunctChar;
diff --git a/lib/parser_block.js b/lib/parser_block.js
index 921c8512a..84f1e2b44 100644
--- a/lib/parser_block.js
+++ b/lib/parser_block.js
@@ -59,7 +59,7 @@ ParserBlock.prototype.tokenize = function (state, startLine, endLine) {
// Termination condition for nested calls.
// Nested calls currently used for blockquotes & lists
- if (state.tShift[line] < state.blkIndent) { break; }
+ if (state.sCount[line] < state.blkIndent) { break; }
// If nesting level exceeded - skip tail to the end. That's not ordinary
// situation and we should not care about content.
diff --git a/lib/rules_block/blockquote.js b/lib/rules_block/blockquote.js
index 0e5a43b61..30c37024e 100644
--- a/lib/rules_block/blockquote.js
+++ b/lib/rules_block/blockquote.js
@@ -2,9 +2,11 @@
'use strict';
+var isSpace = require('../common/utils').isSpace;
+
module.exports = function blockquote(state, startLine, endLine, silent) {
- var nextLine, lastLineEmpty, oldTShift, oldBMarks, oldIndent, oldParentType, lines,
+ var nextLine, lastLineEmpty, oldTShift, oldSCount, oldBMarks, oldIndent, oldParentType, lines, initial, offset, ch,
terminatorRules, token,
i, l, terminate,
pos = state.bMarks[startLine] + state.tShift[startLine],
@@ -17,19 +19,39 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
// so no point trying to find the end of it in silent mode
if (silent) { return true; }
- // skip one optional space after '>'
+ // skip one optional space (but not tab, check cmark impl) after '>'
if (state.src.charCodeAt(pos) === 0x20) { pos++; }
oldIndent = state.blkIndent;
state.blkIndent = 0;
+ // skip spaces after ">" and re-calculate offset
+ initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);
+
oldBMarks = [ state.bMarks[startLine] ];
state.bMarks[startLine] = pos;
- // check if we have an empty blockquote
- pos = pos < max ? state.skipSpaces(pos) : pos;
+ while (pos < max) {
+ ch = state.src.charCodeAt(pos);
+
+ if (isSpace(ch)) {
+ if (ch === 0x09) {
+ offset += 4 - offset % 4;
+ } else {
+ offset++;
+ }
+ } else {
+ break;
+ }
+
+ pos++;
+ }
+
lastLineEmpty = pos >= max;
+ oldSCount = [ state.sCount[startLine] ];
+ state.sCount[startLine] = offset - initial;
+
oldTShift = [ state.tShift[startLine] ];
state.tShift[startLine] = pos - state.bMarks[startLine];
@@ -54,7 +76,7 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
// - - -
// ```
for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {
- if (state.tShift[nextLine] < oldIndent) { break; }
+ if (state.sCount[nextLine] < oldIndent) { break; }
pos = state.bMarks[nextLine] + state.tShift[nextLine];
max = state.eMarks[nextLine];
@@ -67,15 +89,36 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
if (state.src.charCodeAt(pos++) === 0x3E/* > */) {
// This line is inside the blockquote.
- // skip one optional space after '>'
+ // skip one optional space (but not tab, check cmark impl) after '>'
if (state.src.charCodeAt(pos) === 0x20) { pos++; }
+ // skip spaces after ">" and re-calculate offset
+ initial = offset = state.sCount[nextLine] + pos - (state.bMarks[nextLine] + state.tShift[nextLine]);
+
oldBMarks.push(state.bMarks[nextLine]);
state.bMarks[nextLine] = pos;
- pos = pos < max ? state.skipSpaces(pos) : pos;
+ while (pos < max) {
+ ch = state.src.charCodeAt(pos);
+
+ if (isSpace(ch)) {
+ if (ch === 0x09) {
+ offset += 4 - offset % 4;
+ } else {
+ offset++;
+ }
+ } else {
+ break;
+ }
+
+ pos++;
+ }
+
lastLineEmpty = pos >= max;
+ oldSCount.push(state.sCount[nextLine]);
+ state.sCount[nextLine] = offset - initial;
+
oldTShift.push(state.tShift[nextLine]);
state.tShift[nextLine] = pos - state.bMarks[nextLine];
continue;
@@ -96,12 +139,11 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
oldBMarks.push(state.bMarks[nextLine]);
oldTShift.push(state.tShift[nextLine]);
+ oldSCount.push(state.sCount[nextLine]);
- // A negative number means that this is a paragraph continuation;
+ // A negative indentation means that this is a paragraph continuation
//
- // Any negative number will do the job here, but it's better for it
- // to be large enough to make any bugs obvious.
- state.tShift[nextLine] = -1;
+ state.sCount[nextLine] = -1;
}
oldParentType = state.parentType;
@@ -124,6 +166,7 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
for (i = 0; i < oldTShift.length; i++) {
state.bMarks[i + startLine] = oldBMarks[i];
state.tShift[i + startLine] = oldTShift[i];
+ state.sCount[i + startLine] = oldSCount[i];
}
state.blkIndent = oldIndent;
diff --git a/lib/rules_block/code.js b/lib/rules_block/code.js
index dcf33360e..74bc42a98 100644
--- a/lib/rules_block/code.js
+++ b/lib/rules_block/code.js
@@ -6,7 +6,7 @@
module.exports = function code(state, startLine, endLine/*, silent*/) {
var nextLine, last, token;
- if (state.tShift[startLine] - state.blkIndent < 4) { return false; }
+ if (state.sCount[startLine] - state.blkIndent < 4) { return false; }
last = nextLine = startLine + 1;
@@ -15,7 +15,7 @@ module.exports = function code(state, startLine, endLine/*, silent*/) {
nextLine++;
continue;
}
- if (state.tShift[nextLine] - state.blkIndent >= 4) {
+ if (state.sCount[nextLine] - state.blkIndent >= 4) {
nextLine++;
last = nextLine;
continue;
diff --git a/lib/rules_block/fence.js b/lib/rules_block/fence.js
index cf72e7836..a02bd5f54 100644
--- a/lib/rules_block/fence.js
+++ b/lib/rules_block/fence.js
@@ -47,7 +47,7 @@ module.exports = function fence(state, startLine, endLine, silent) {
pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];
max = state.eMarks[nextLine];
- if (pos < max && state.tShift[nextLine] < state.blkIndent) {
+ if (pos < max && state.sCount[nextLine] < state.blkIndent) {
// non-empty line with negative indent should stop the list:
// - ```
// test
@@ -56,7 +56,7 @@ module.exports = function fence(state, startLine, endLine, silent) {
if (state.src.charCodeAt(pos) !== marker) { continue; }
- if (state.tShift[nextLine] - state.blkIndent >= 4) {
+ if (state.sCount[nextLine] - state.blkIndent >= 4) {
// closing fence should be indented less than 4 spaces
continue;
}
@@ -77,7 +77,7 @@ module.exports = function fence(state, startLine, endLine, silent) {
}
// If a fence has heading spaces, they should be removed from its inner block
- len = state.tShift[startLine];
+ len = state.sCount[startLine];
state.line = nextLine + (haveEndMarker ? 1 : 0);
diff --git a/lib/rules_block/heading.js b/lib/rules_block/heading.js
index 1cf472309..9b8eee480 100644
--- a/lib/rules_block/heading.js
+++ b/lib/rules_block/heading.js
@@ -2,6 +2,8 @@
'use strict';
+var isSpace = require('../common/utils').isSpace;
+
module.exports = function heading(state, startLine, endLine, silent) {
var ch, level, tmp, token,
@@ -26,9 +28,9 @@ module.exports = function heading(state, startLine, endLine, silent) {
// Let's cut tails like ' ### ' from the end of string
- max = state.skipCharsBack(max, 0x20, pos); // space
+ max = state.skipSpacesBack(max, pos);
tmp = state.skipCharsBack(max, 0x23, pos); // #
- if (tmp > pos && state.src.charCodeAt(tmp - 1) === 0x20/* space */) {
+ if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {
max = tmp;
}
diff --git a/lib/rules_block/hr.js b/lib/rules_block/hr.js
index 0abaf6628..8638f046b 100644
--- a/lib/rules_block/hr.js
+++ b/lib/rules_block/hr.js
@@ -2,6 +2,8 @@
'use strict';
+var isSpace = require('../common/utils').isSpace;
+
module.exports = function hr(state, startLine, endLine, silent) {
var marker, cnt, ch, token,
@@ -17,12 +19,12 @@ module.exports = function hr(state, startLine, endLine, silent) {
return false;
}
- // markers can be mixed with spaces, but there should be at least 3 one
+ // markers can be mixed with spaces, but there should be at least 3 of them
cnt = 1;
while (pos < max) {
ch = state.src.charCodeAt(pos++);
- if (ch !== marker && ch !== 0x20/* space */) { return false; }
+ if (ch !== marker && !isSpace(ch)) { return false; }
if (ch === marker) { cnt++; }
}
diff --git a/lib/rules_block/html_block.js b/lib/rules_block/html_block.js
index 0d9426bc4..abef36dc0 100644
--- a/lib/rules_block/html_block.js
+++ b/lib/rules_block/html_block.js
@@ -48,7 +48,7 @@ module.exports = function html_block(state, startLine, endLine, silent) {
// Let's roll down till block end.
if (!HTML_SEQUENCES[i][1].test(lineText)) {
for (; nextLine < endLine; nextLine++) {
- if (state.tShift[nextLine] < state.blkIndent) { break; }
+ if (state.sCount[nextLine] < state.blkIndent) { break; }
pos = state.bMarks[nextLine] + state.tShift[nextLine];
max = state.eMarks[nextLine];
diff --git a/lib/rules_block/lheading.js b/lib/rules_block/lheading.js
index 8668fd04d..76343bf74 100644
--- a/lib/rules_block/lheading.js
+++ b/lib/rules_block/lheading.js
@@ -8,11 +8,11 @@ module.exports = function lheading(state, startLine, endLine/*, silent*/) {
next = startLine + 1;
if (next >= endLine) { return false; }
- if (state.tShift[next] < state.blkIndent) { return false; }
+ if (state.sCount[next] < state.blkIndent) { return false; }
// Scan next line
- if (state.tShift[next] - state.blkIndent > 3) { return false; }
+ if (state.sCount[next] - state.blkIndent > 3) { return false; }
pos = state.bMarks[next] + state.tShift[next];
max = state.eMarks[next];
diff --git a/lib/rules_block/list.js b/lib/rules_block/list.js
index 49b9a5bbb..bb28e6bea 100644
--- a/lib/rules_block/list.js
+++ b/lib/rules_block/list.js
@@ -2,11 +2,13 @@
'use strict';
+var isSpace = require('../common/utils').isSpace;
+
// Search `[-+*][\n ]`, returns next pos arter marker on success
// or -1 on fail.
function skipBulletListMarker(state, startLine) {
- var marker, pos, max;
+ var marker, pos, max, ch;
pos = state.bMarks[startLine] + state.tShift[startLine];
max = state.eMarks[startLine];
@@ -19,9 +21,13 @@ function skipBulletListMarker(state, startLine) {
return -1;
}
- if (pos < max && state.src.charCodeAt(pos) !== 0x20) {
- // " 1.test " - is not a list item
- return -1;
+ if (pos < max) {
+ ch = state.src.charCodeAt(pos);
+
+ if (!isSpace(ch)) {
+ // " -test " - is not a list item
+ return -1;
+ }
}
return pos;
@@ -66,9 +72,13 @@ function skipOrderedListMarker(state, startLine) {
}
- if (pos < max && state.src.charCodeAt(pos) !== 0x20/* space */) {
- // " 1.test " - is not a list item
- return -1;
+ if (pos < max) {
+ ch = state.src.charCodeAt(pos);
+
+ if (!isSpace(ch)) {
+ // " 1.test " - is not a list item
+ return -1;
+ }
}
return pos;
}
@@ -89,13 +99,18 @@ function markTightParagraphs(state, idx) {
module.exports = function list(state, startLine, endLine, silent) {
var nextLine,
+ initial,
+ offset,
indent,
oldTShift,
oldIndent,
+ oldLIndent,
oldTight,
oldParentType,
start,
posAfterMarker,
+ ch,
+ pos,
max,
indentAfterMarker,
markerValue,
@@ -154,14 +169,34 @@ module.exports = function list(state, startLine, endLine, silent) {
terminatorRules = state.md.block.ruler.getRules('list');
while (nextLine < endLine) {
- contentStart = state.skipSpaces(posAfterMarker);
+ pos = posAfterMarker;
max = state.eMarks[nextLine];
+ initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);
+
+ while (pos < max) {
+ ch = state.src.charCodeAt(pos);
+
+ if (isSpace(ch)) {
+ if (ch === 0x09) {
+ offset += 4 - offset % 4;
+ } else {
+ offset++;
+ }
+ } else {
+ break;
+ }
+
+ pos++;
+ }
+
+ contentStart = pos;
+
if (contentStart >= max) {
// trimming space in "- \n 3" case, indent is 1 here
indentAfterMarker = 1;
} else {
- indentAfterMarker = contentStart - posAfterMarker;
+ indentAfterMarker = offset - initial;
}
// If we have more than 4 spaces, the indent is 1
@@ -170,7 +205,7 @@ module.exports = function list(state, startLine, endLine, silent) {
// " - test"
// ^^^^^ - calculating total length of this thing
- indent = (posAfterMarker - state.bMarks[nextLine]) + indentAfterMarker;
+ indent = initial + indentAfterMarker;
// Run subparser & write tokens
token = state.push('list_item_open', 'li', 1);
@@ -180,11 +215,13 @@ module.exports = function list(state, startLine, endLine, silent) {
oldIndent = state.blkIndent;
oldTight = state.tight;
oldTShift = state.tShift[startLine];
+ oldLIndent = state.sCount[startLine];
oldParentType = state.parentType;
- state.tShift[startLine] = contentStart - state.bMarks[startLine];
state.blkIndent = indent;
state.tight = true;
state.parentType = 'list';
+ state.tShift[startLine] = contentStart - state.bMarks[startLine];
+ state.sCount[startLine] = offset;
state.md.block.tokenize(state, startLine, endLine, true);
@@ -198,6 +235,7 @@ module.exports = function list(state, startLine, endLine, silent) {
state.blkIndent = oldIndent;
state.tShift[startLine] = oldTShift;
+ state.sCount[startLine] = oldLIndent;
state.tight = oldTight;
state.parentType = oldParentType;
@@ -217,7 +255,7 @@ module.exports = function list(state, startLine, endLine, silent) {
//
// Try to check if list is terminated or continued.
//
- if (state.tShift[nextLine] < state.blkIndent) { break; }
+ if (state.sCount[nextLine] < state.blkIndent) { break; }
// fail if terminating block found
terminate = false;
diff --git a/lib/rules_block/paragraph.js b/lib/rules_block/paragraph.js
index d9dca2576..18a860d93 100644
--- a/lib/rules_block/paragraph.js
+++ b/lib/rules_block/paragraph.js
@@ -13,10 +13,10 @@ module.exports = function paragraph(state, startLine/*, endLine*/) {
for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
// this would be a code block normally, but after paragraph
// it's considered a lazy continuation regardless of what's there
- if (state.tShift[nextLine] - state.blkIndent > 3) { continue; }
+ if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }
// quirk for blockquotes, this line should already be checked by that rule
- if (state.tShift[nextLine] < 0) { continue; }
+ if (state.sCount[nextLine] < 0) { continue; }
// Some tags can terminate paragraph without empty line.
terminate = false;
diff --git a/lib/rules_block/reference.js b/lib/rules_block/reference.js
index 260726b01..23f662bb9 100644
--- a/lib/rules_block/reference.js
+++ b/lib/rules_block/reference.js
@@ -4,6 +4,7 @@
var parseLinkDestination = require('../helpers/parse_link_destination');
var parseLinkTitle = require('../helpers/parse_link_title');
var normalizeReference = require('../common/utils').normalizeReference;
+var isSpace = require('../common/utils').isSpace;
module.exports = function reference(state, startLine, _endLine, silent) {
@@ -48,10 +49,10 @@ module.exports = function reference(state, startLine, _endLine, silent) {
for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
// this would be a code block normally, but after paragraph
// it's considered a lazy continuation regardless of what's there
- if (state.tShift[nextLine] - state.blkIndent > 3) { continue; }
+ if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }
// quirk for blockquotes, this line should already be checked by that rule
- if (state.tShift[nextLine] < 0) { continue; }
+ if (state.sCount[nextLine] < 0) { continue; }
// Some tags can terminate paragraph without empty line.
terminate = false;
@@ -92,7 +93,7 @@ module.exports = function reference(state, startLine, _endLine, silent) {
ch = str.charCodeAt(pos);
if (ch === 0x0A) {
lines++;
- } else if (ch === 0x20) {
+ } else if (isSpace(ch)) {
/*eslint no-empty:0*/
} else {
break;
@@ -121,7 +122,7 @@ module.exports = function reference(state, startLine, _endLine, silent) {
ch = str.charCodeAt(pos);
if (ch === 0x0A) {
lines++;
- } else if (ch === 0x20) {
+ } else if (isSpace(ch)) {
/*eslint no-empty:0*/
} else {
break;
@@ -142,7 +143,11 @@ module.exports = function reference(state, startLine, _endLine, silent) {
}
// skip trailing spaces until the rest of the line
- while (pos < max && str.charCodeAt(pos) === 0x20/* space */) { pos++; }
+ while (pos < max) {
+ ch = str.charCodeAt(pos);
+ if (!isSpace(ch)) { break; }
+ pos++;
+ }
if (pos < max && str.charCodeAt(pos) !== 0x0A) {
if (title) {
@@ -151,7 +156,11 @@ module.exports = function reference(state, startLine, _endLine, silent) {
title = '';
pos = destEndPos;
lines = destEndLineNo;
- while (pos < max && str.charCodeAt(pos) === 0x20/* space */) { pos++; }
+ while (pos < max) {
+ ch = str.charCodeAt(pos);
+ if (!isSpace(ch)) { break; }
+ pos++;
+ }
}
}
diff --git a/lib/rules_block/state_block.js b/lib/rules_block/state_block.js
index 7f608b382..f08bdb2d8 100644
--- a/lib/rules_block/state_block.js
+++ b/lib/rules_block/state_block.js
@@ -3,10 +3,11 @@
'use strict';
var Token = require('../token');
+var isSpace = require('../common/utils').isSpace;
function StateBlock(src, md, env, tokens) {
- var ch, s, start, pos, len, indent, indent_found;
+ var ch, s, start, pos, len, indent, offset, indent_found;
this.src = src;
@@ -23,7 +24,8 @@ function StateBlock(src, md, env, tokens) {
this.bMarks = []; // line begin offsets for fast jumps
this.eMarks = []; // line end offsets for fast jumps
- this.tShift = []; // indent for each line
+ this.tShift = []; // offsets of the first non-space characters (tabs not expanded)
+ this.sCount = []; // indents for each line (tabs expanded)
// block parser variables
this.blkIndent = 0; // required block content indent
@@ -42,15 +44,20 @@ function StateBlock(src, md, env, tokens) {
// Create caches
// Generate markers.
s = this.src;
- indent = 0;
indent_found = false;
- for (start = pos = indent = 0, len = s.length; pos < len; pos++) {
+ for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {
ch = s.charCodeAt(pos);
if (!indent_found) {
- if (ch === 0x20/* space */) {
+ if (isSpace(ch)) {
indent++;
+
+ if (ch === 0x09) {
+ offset += 4 - offset % 4;
+ } else {
+ offset++;
+ }
continue;
} else {
indent_found = true;
@@ -62,9 +69,11 @@ function StateBlock(src, md, env, tokens) {
this.bMarks.push(start);
this.eMarks.push(pos);
this.tShift.push(indent);
+ this.sCount.push(offset);
indent_found = false;
indent = 0;
+ offset = 0;
start = pos + 1;
}
}
@@ -73,6 +82,7 @@ function StateBlock(src, md, env, tokens) {
this.bMarks.push(s.length);
this.eMarks.push(s.length);
this.tShift.push(0);
+ this.sCount.push(0);
this.lineMax = this.bMarks.length - 1; // don't count last fake line
}
@@ -106,8 +116,21 @@ StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {
// Skip spaces from given position.
StateBlock.prototype.skipSpaces = function skipSpaces(pos) {
+ var ch;
+
for (var max = this.src.length; pos < max; pos++) {
- if (this.src.charCodeAt(pos) !== 0x20/* space */) { break; }
+ ch = this.src.charCodeAt(pos);
+ if (!isSpace(ch)) { break; }
+ }
+ return pos;
+};
+
+// Skip spaces from given position in reverse.
+StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {
+ if (pos <= min) { return pos; }
+
+ while (pos > min) {
+ if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1; }
}
return pos;
};
@@ -132,28 +155,18 @@ StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {
// cut lines range from source.
StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {
- var i, first, last, queue, shift,
+ var i, lineIndent, ch, first, last, queue, lineStart,
line = begin;
if (begin >= end) {
return '';
}
- // Opt: don't use push queue for single line;
- if (line + 1 === end) {
- first = this.bMarks[line] + Math.min(this.tShift[line], indent);
- last = this.eMarks[end - 1] + (keepLastLF ? 1 : 0);
- return this.src.slice(first, last);
- }
-
queue = new Array(end - begin);
for (i = 0; line < end; line++, i++) {
- shift = this.tShift[line];
- if (shift > indent) { shift = indent; }
- if (shift < 0) { shift = 0; }
-
- first = this.bMarks[line] + shift;
+ lineIndent = 0;
+ lineStart = first = this.bMarks[line];
if (line + 1 < end || keepLastLF) {
// No need for bounds check because we have fake entry on tail.
@@ -162,6 +175,25 @@ StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF
last = this.eMarks[line];
}
+ while (first < last && lineIndent < indent) {
+ ch = this.src.charCodeAt(first);
+
+ if (isSpace(ch)) {
+ if (ch === 0x09) {
+ lineIndent += 4 - lineIndent % 4;
+ } else {
+ lineIndent++;
+ }
+ } else if (first - lineStart < this.tShift[line]) {
+ // patched tShift masked characters to look like spaces (blockquotes, list markers)
+ lineIndent++;
+ } else {
+ break;
+ }
+
+ first++;
+ }
+
queue[i] = this.src.slice(first, last);
}
diff --git a/lib/rules_block/table.js b/lib/rules_block/table.js
index 1e1c0e9d4..c45badb8c 100644
--- a/lib/rules_block/table.js
+++ b/lib/rules_block/table.js
@@ -62,7 +62,7 @@ module.exports = function table(state, startLine, endLine, silent) {
nextLine = startLine + 1;
- if (state.tShift[nextLine] < state.blkIndent) { return false; }
+ if (state.sCount[nextLine] < state.blkIndent) { return false; }
// first character of the second line should be '|' or '-'
@@ -137,7 +137,7 @@ module.exports = function table(state, startLine, endLine, silent) {
token.map = tbodyLines = [ startLine + 2, 0 ];
for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {
- if (state.tShift[nextLine] < state.blkIndent) { break; }
+ if (state.sCount[nextLine] < state.blkIndent) { break; }
lineText = getLine(state, nextLine).trim();
if (lineText.indexOf('|') === -1) { break; }
diff --git a/lib/rules_core/normalize.js b/lib/rules_core/normalize.js
index 415209591..bff5d519a 100644
--- a/lib/rules_core/normalize.js
+++ b/lib/rules_core/normalize.js
@@ -3,13 +3,12 @@
'use strict';
-var TABS_SCAN_RE = /[\n\t]/g;
var NEWLINES_RE = /\r[\n\u0085]|[\u2424\u2028\u0085]/g;
var NULL_RE = /\u0000/g;
module.exports = function inline(state) {
- var str, lineStart, lastTabPos;
+ var str;
// Normalize newlines
str = state.src.replace(NEWLINES_RE, '\n');
@@ -17,23 +16,5 @@ module.exports = function inline(state) {
// Replace NULL characters
str = str.replace(NULL_RE, '\uFFFD');
- // Replace tabs with proper number of spaces (1..4)
- if (str.indexOf('\t') >= 0) {
- lineStart = 0;
- lastTabPos = 0;
-
- str = str.replace(TABS_SCAN_RE, function (match, offset) {
- var result;
- if (str.charCodeAt(offset) === 0x0A) {
- lineStart = offset + 1;
- lastTabPos = 0;
- return match;
- }
- result = ' '.slice((offset - lineStart - lastTabPos) % 4);
- lastTabPos = offset - lineStart + 1;
- return result;
- });
- }
-
state.src = str;
};
diff --git a/lib/rules_inline/escape.js b/lib/rules_inline/escape.js
index ff32832da..e0996e0c6 100644
--- a/lib/rules_inline/escape.js
+++ b/lib/rules_inline/escape.js
@@ -2,6 +2,8 @@
'use strict';
+var isSpace = require('../common/utils').isSpace;
+
var ESCAPED = [];
for (var i = 0; i < 256; i++) { ESCAPED.push(0); }
@@ -33,7 +35,11 @@ module.exports = function escape(state, silent) {
pos++;
// skip leading whitespaces from next line
- while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; }
+ while (pos < max) {
+ ch = state.src.charCodeAt(pos);
+ if (!isSpace(ch)) { break; }
+ pos++;
+ }
state.pos = pos;
return true;
diff --git a/lib/rules_inline/image.js b/lib/rules_inline/image.js
index a5e1630cd..32355e0b8 100644
--- a/lib/rules_inline/image.js
+++ b/lib/rules_inline/image.js
@@ -6,6 +6,7 @@ var parseLinkLabel = require('../helpers/parse_link_label');
var parseLinkDestination = require('../helpers/parse_link_destination');
var parseLinkTitle = require('../helpers/parse_link_title');
var normalizeReference = require('../common/utils').normalizeReference;
+var isSpace = require('../common/utils').isSpace;
module.exports = function image(state, silent) {
@@ -45,7 +46,7 @@ module.exports = function image(state, silent) {
pos++;
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
if (pos >= max) { return false; }
@@ -67,7 +68,7 @@ module.exports = function image(state, silent) {
start = pos;
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
// [link]( "title" )
@@ -81,7 +82,7 @@ module.exports = function image(state, silent) {
// ^^ skipping these spaces
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
} else {
title = '';
@@ -102,7 +103,7 @@ module.exports = function image(state, silent) {
// ^^ optional whitespace (can include newlines)
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {
diff --git a/lib/rules_inline/link.js b/lib/rules_inline/link.js
index 8e9e54e75..b4a8808c1 100644
--- a/lib/rules_inline/link.js
+++ b/lib/rules_inline/link.js
@@ -6,6 +6,7 @@ var parseLinkLabel = require('../helpers/parse_link_label');
var parseLinkDestination = require('../helpers/parse_link_destination');
var parseLinkTitle = require('../helpers/parse_link_title');
var normalizeReference = require('../common/utils').normalizeReference;
+var isSpace = require('../common/utils').isSpace;
module.exports = function link(state, silent) {
@@ -43,7 +44,7 @@ module.exports = function link(state, silent) {
pos++;
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
if (pos >= max) { return false; }
@@ -65,7 +66,7 @@ module.exports = function link(state, silent) {
start = pos;
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
// [link]( "title" )
@@ -79,7 +80,7 @@ module.exports = function link(state, silent) {
// ^^ skipping these spaces
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
} else {
title = '';
@@ -100,7 +101,7 @@ module.exports = function link(state, silent) {
// ^^ optional whitespace (can include newlines)
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {
diff --git a/test/fixtures/commonmark/bad.txt b/test/fixtures/commonmark/bad.txt
index b5c78a757..9a799f9a9 100644
--- a/test/fixtures/commonmark/bad.txt
+++ b/test/fixtures/commonmark/bad.txt
@@ -1,86 +1,3 @@
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-src line: 259
-
-.
- foo baz bim
-.
-foo baz bim
-
-.
-
-error:
-
-foo baz bim
-
-
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-src line: 266
-
-.
- foo baz bim
-.
-foo baz bim
-
-.
-
-error:
-
-foo baz bim
-
-
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-src line: 273
-
-.
- a a
- ὐ a
-.
-a a
-ὐ a
-
-.
-
-error:
-
-a a
-ὐ a
-
-
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-src line: 295
-
-.
-> foo bar
-.
-
-foo bar
-
-.
-
-error:
-
-
-foo bar
-
-
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-src line: 4737
-
-.
-\ \A\a\ \3\φ\«
-.
-\ \A\a\ \3\φ\«
-.
-
-error:
-
-\ \A\a\ \3\φ\«
-
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src line: 6241
diff --git a/test/fixtures/commonmark/good.txt b/test/fixtures/commonmark/good.txt
index 296c819f1..bdb86d346 100644
--- a/test/fixtures/commonmark/good.txt
+++ b/test/fixtures/commonmark/good.txt
@@ -1,3 +1,35 @@
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+src line: 259
+
+.
+ foo baz bim
+.
+foo baz bim
+
+.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+src line: 266
+
+.
+ foo baz bim
+.
+foo baz bim
+
+.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+src line: 273
+
+.
+ a a
+ ὐ a
+.
+a a
+ὐ a
+
+.
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src line: 282
@@ -14,6 +46,17 @@ src line: 282
.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+src line: 295
+
+.
+> foo bar
+.
+
+foo bar
+
+.
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src line: 324
@@ -3945,6 +3988,15 @@ src line: 4728
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+src line: 4737
+
+.
+\ \A\a\ \3\φ\«
+.
+\ \A\a\ \3\φ\«
+.
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src line: 4746
diff --git a/test/fixtures/markdown-it/commonmark_extras.txt b/test/fixtures/markdown-it/commonmark_extras.txt
index fe302ae21..e6b615b62 100644
--- a/test/fixtures/markdown-it/commonmark_extras.txt
+++ b/test/fixtures/markdown-it/commonmark_extras.txt
@@ -245,3 +245,30 @@ test
foo
.
+
+Coverage. Tabs in blockquotes.
+.
+ > foo
+ > bar
+.
+
+ foo
+ bar
+
+
+.
+
+Coverage. Tabs in lists.
+.
+1. foo
+
+ bar
+.
+
+-
+
foo
+ bar
+
+
+
+.
From c4428457e59f19e0a65fd7b643df9fde9bf29cd2 Mon Sep 17 00:00:00 2001
From: Vitaly Puzrin
Date: Tue, 28 Jul 2015 07:03:53 +0300
Subject: [PATCH 012/320] contribution info update
---
CONTRIBUTING.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3926c6a8b..6e2aa8c66 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -10,5 +10,6 @@
Keep issues for bug reports, suggestions and so on.
2. Make sure to read [dev info](https://github.com/markdown-it/markdown-it/tree/master/docs)
prior to ask about plugins development.
-3. Issues of "question" type are closed after several days of inactivity,
+3. __Provide examples with [demo](https://markdown-it.github.io/) when possible.__
+4. Issues of "question" type are closed after several days of inactivity,
if not qualified as bug report, enhancement etc (see 1).
From 4350cedde23a1491fc90677d8c2dee648ef267c9 Mon Sep 17 00:00:00 2001
From: Steve Dougherty
Date: Thu, 30 Jul 2015 00:49:11 -0400
Subject: [PATCH 013/320] sample.md: fix spelling of "subscript" and
"superscript"
---
support/demo_template/sample.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/support/demo_template/sample.md b/support/demo_template/sample.md
index f0b2e8b54..f894c1d35 100644
--- a/support/demo_template/sample.md
+++ b/support/demo_template/sample.md
@@ -172,7 +172,7 @@ The killer feature of `markdown-it` is very effective support of
see [how to change output](https://github.com/markdown-it/markdown-it-emoji#change-output) with twemoji.
-### [Subscipt](https://github.com/markdown-it/markdown-it-sub) / [Superscirpt](https://github.com/markdown-it/markdown-it-sup)
+### [Subscript](https://github.com/markdown-it/markdown-it-sub) / [Superscript](https://github.com/markdown-it/markdown-it-sup)
- 19^th^
- H~2~O
From bf424c8a491b9303bdca350251364e814629e44b Mon Sep 17 00:00:00 2001
From: Vitaly Puzrin
Date: Thu, 13 Aug 2015 05:39:59 +0300
Subject: [PATCH 014/320] deps update, configs & code cleanup
---
.eslintrc | 2 +-
.npmignore | 10 ----------
README.md | 2 +-
lib/index.js | 4 ++--
lib/presets/commonmark.js | 2 +-
lib/presets/default.js | 2 +-
lib/presets/zero.js | 2 +-
lib/renderer.js | 10 +++++-----
package.json | 14 ++++++++++----
support/demo_template/index.js | 8 ++++----
test/misc.js | 2 +-
11 files changed, 27 insertions(+), 31 deletions(-)
delete mode 100644 .npmignore
diff --git a/.eslintrc b/.eslintrc
index 9e75c7b6c..2f8e009cd 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -99,7 +99,7 @@ rules:
quotes: [ 2, single, avoid-escape ]
radix: 2
semi: 2
- space-after-keywords: [ 2, always, , { "checkFunctionKeyword": true } ]
+ space-after-keywords: [ 2, always ]
space-before-blocks: 2
space-in-brackets: [ 2, always, { propertyName: false } ]
space-in-parens: [ 2, never ]
diff --git a/.npmignore b/.npmignore
deleted file mode 100644
index 75355260f..000000000
--- a/.npmignore
+++ /dev/null
@@ -1,10 +0,0 @@
-benchmark/
-coverage/
-demo/
-docs/
-apidoc/
-support/
-test/
-Makefile
-.*
-*.log
diff --git a/README.md b/README.md
index d49b81d44..fd3a590f2 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
[](https://travis-ci.org/markdown-it/markdown-it)
[](https://www.npmjs.org/package/markdown-it)
-[](https://coveralls.io/r/markdown-it/markdown-it?branch=master)
+[](https://coveralls.io/github/markdown-it/markdown-it?branch=master)
[](https://gitter.im/markdown-it/markdown-it)
> Markdown parser done right. Fast and easy to extend.
diff --git a/lib/index.js b/lib/index.js
index 9f43048fb..558c97dae 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -57,7 +57,7 @@ function normalizeLink(url) {
if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
try {
parsed.hostname = punycode.toASCII(parsed.hostname);
- } catch(er) {}
+ } catch (er) { /**/ }
}
}
@@ -77,7 +77,7 @@ function normalizeLinkText(url) {
if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
try {
parsed.hostname = punycode.toUnicode(parsed.hostname);
- } catch(er) {}
+ } catch (er) { /**/ }
}
}
diff --git a/lib/presets/commonmark.js b/lib/presets/commonmark.js
index cb29bcf76..99e5b2b0f 100644
--- a/lib/presets/commonmark.js
+++ b/lib/presets/commonmark.js
@@ -19,7 +19,7 @@ module.exports = {
//
// For example, you can use '«»„“' for Russian, '„“‚‘' for German,
// and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
- quotes: '\u201c\u201d\u2018\u2019' /* “”‘’ */,
+ quotes: '\u201c\u201d\u2018\u2019', /* “”‘’ */
// Highlighter function. Should return escaped HTML,
// or '' if input not changed
diff --git a/lib/presets/default.js b/lib/presets/default.js
index 7c2d3b48b..d0dffa6ea 100644
--- a/lib/presets/default.js
+++ b/lib/presets/default.js
@@ -19,7 +19,7 @@ module.exports = {
//
// For example, you can use '«»„“' for Russian, '„“‚‘' for German,
// and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
- quotes: '\u201c\u201d\u2018\u2019' /* “”‘’ */,
+ quotes: '\u201c\u201d\u2018\u2019', /* “”‘’ */
// Highlighter function. Should return escaped HTML,
// or '' if input not changed
diff --git a/lib/presets/zero.js b/lib/presets/zero.js
index 2d9cbdfc3..eda6dbac2 100644
--- a/lib/presets/zero.js
+++ b/lib/presets/zero.js
@@ -20,7 +20,7 @@ module.exports = {
//
// For example, you can use '«»„“' for Russian, '„“‚‘' for German,
// and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
- quotes: '\u201c\u201d\u2018\u2019' /* “”‘’ */,
+ quotes: '\u201c\u201d\u2018\u2019', /* “”‘’ */
// Highlighter function. Should return escaped HTML,
// or '' if input not changed
diff --git a/lib/renderer.js b/lib/renderer.js
index 9c9bca98d..b1000d547 100644
--- a/lib/renderer.js
+++ b/lib/renderer.js
@@ -28,7 +28,7 @@ default_rules.code_block = function (tokens, idx /*, options, env */) {
};
-default_rules.fence = function (tokens, idx, options, env, self) {
+default_rules.fence = function (tokens, idx, options, env, slf) {
var token = tokens[idx],
info = token.info ? unescapeAll(token.info).trim() : '',
langName = '',
@@ -45,13 +45,13 @@ default_rules.fence = function (tokens, idx, options, env, self) {
highlighted = escapeHtml(token.content);
}
- return ''
+ return ''
+ highlighted
+ '
\n';
};
-default_rules.image = function (tokens, idx, options, env, self) {
+default_rules.image = function (tokens, idx, options, env, slf) {
var token = tokens[idx];
// "alt" attr MUST be set, even if empty. Because it's mandatory and
@@ -60,9 +60,9 @@ default_rules.image = function (tokens, idx, options, env, self) {
// Replace content with actual value
token.attrs[token.attrIndex('alt')][1] =
- self.renderInlineAsText(token.children, options, env);
+ slf.renderInlineAsText(token.children, options, env);
- return self.renderToken(tokens, idx, options);
+ return slf.renderToken(tokens, idx, options);
};
diff --git a/package.json b/package.json
index 356d130ae..1494144fc 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,12 @@
"scripts": {
"test": "make test"
},
+ "files": [
+ "index.js",
+ "bin/",
+ "lib/",
+ "dist/"
+ ],
"dependencies": {
"argparse": "~1.0.2",
"entities": "~1.1.1",
@@ -29,10 +35,10 @@
"autoprefixer-stylus": "~0.5.0",
"benchmark": "~1.0.0",
"browserify": "*",
- "chai": "^2.2.0",
- "commonmark": "~0.18.1",
+ "chai": "^3.2.0",
+ "commonmark": "~0.21.0",
"coveralls": "~2.11.2",
- "eslint": "0.13.0",
+ "eslint": "0.24.0",
"eslint-plugin-nodeca": "^1.0.0",
"istanbul": "*",
"jade": "~1.9.2",
@@ -47,7 +53,7 @@
"markdown-it-sub": "^1.0.0",
"markdown-it-sup": "^1.0.0",
"markdown-it-testgen": "~0.1.3",
- "marked": "0.3.3",
+ "marked": "0.3.5",
"stylus": "~0.50.0",
"mocha": "*",
"uglify-js": "*"
diff --git a/support/demo_template/index.js b/support/demo_template/index.js
index 39f40ea1a..5a793590f 100644
--- a/support/demo_template/index.js
+++ b/support/demo_template/index.js
@@ -28,12 +28,12 @@ defaults.highlight = function (str, lang) {
if (lang && hljs.getLanguage(lang)) {
try {
return hljs.highlight(lang, str).value;
- } catch (__) {}
+ } catch (__) { /**/ }
}
try {
return hljs.highlightAuto(str).value;
- } catch (__) {}
+ } catch (__) { /**/ }
return '';
};
@@ -95,14 +95,14 @@ function mdInit() {
//
// - We track only headings and paragraphs on first level. That's enough.
// - Footnotes content causes jumps. Level limit filter it automatically.
- function injectLineNumbers(tokens, idx, options, env, self) {
+ function injectLineNumbers(tokens, idx, options, env, slf) {
var line;
if (tokens[idx].map && tokens[idx].level === 0) {
line = tokens[idx].map[0];
tokens[idx].attrPush([ 'class', 'line' ]);
tokens[idx].attrPush([ 'data-line', String(line) ]);
}
- return self.renderToken(tokens, idx, options, env, self);
+ return slf.renderToken(tokens, idx, options, env, slf);
}
mdHtml.renderer.rules.paragraph_open = mdHtml.renderer.rules.heading_open = injectLineNumbers;
diff --git a/test/misc.js b/test/misc.js
index 32e6ea7b6..82e2381ee 100644
--- a/test/misc.js
+++ b/test/misc.js
@@ -32,7 +32,7 @@ describe('API', function () {
it('plugin', function () {
var succeeded = false;
- function plugin(self, opts) { if (opts === 'bar') { succeeded = true; } }
+ function plugin(slf, opts) { if (opts === 'bar') { succeeded = true; } }
var md = markdownit();
From 7a888ec9a259dec2eb8f13e6b644480d6701739a Mon Sep 17 00:00:00 2001
From: Thomas Reggi
Date: Sat, 22 Aug 2015 14:26:39 -0400
Subject: [PATCH 015/320] typo for for*
---
lib/index.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/index.js b/lib/index.js
index 558c97dae..6b301e8ff 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -483,7 +483,7 @@ MarkdownIt.prototype.use = function (plugin /*, params, ... */) {
* AST).
*
* `env` is used to pass data between "distributed" rules and return additional
- * metadata like reference info, needed for for renderer. It also can be used to
+ * metadata like reference info, needed for the renderer. It also can be used to
* inject data in specific cases. Usually, you will be ok to pass `{}`,
* and then pass updated object to renderer.
**/
From 255d62d39122694872ddce840e2141379ac3deca Mon Sep 17 00:00:00 2001
From: Vitaly Puzrin
Date: Sun, 23 Aug 2015 12:38:25 +0300
Subject: [PATCH 016/320] Added iframe to list of block tags
---
CHANGELOG.md | 7 +++++++
lib/common/html_blocks.js | 1 +
2 files changed, 8 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6d0030452..74bc18548 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+4.5.0 / WIP
+------------------
+
+- Keep tabs (don't replace with spaces)
+- Don't wrap iframes with paragraphs (according to spec update).
+
+
4.4.0 / 2015-07-18
------------------
diff --git a/lib/common/html_blocks.js b/lib/common/html_blocks.js
index d13c17de7..515fb0019 100644
--- a/lib/common/html_blocks.js
+++ b/lib/common/html_blocks.js
@@ -35,6 +35,7 @@ module.exports = [
'header',
'hr',
'html',
+ 'iframe',
'legend',
'li',
'link',
From 44655c78dc997f10591a82b16896f042e5cdd780 Mon Sep 17 00:00:00 2001
From: Chia-liang Kao
Date: Sat, 19 Sep 2015 22:02:25 -0700
Subject: [PATCH 017/320] autolinker is required for benchmark
---
package.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/package.json b/package.json
index 1494144fc..45e554713 100644
--- a/package.json
+++ b/package.json
@@ -32,6 +32,7 @@
},
"devDependencies": {
"ansi": "~0.3.0",
+ "autolinker": "^0.18.1",
"autoprefixer-stylus": "~0.5.0",
"benchmark": "~1.0.0",
"browserify": "*",
From 378ac9074e393354253281fbe243860732d1f631 Mon Sep 17 00:00:00 2001
From: Alex Kocharin
Date: Fri, 25 Sep 2015 18:53:55 +0300
Subject: [PATCH 018/320] Change emphasis parsing algorithm
Tokenize first, and replace tokens with emphasis tags on
a second pass using an algorithm close to one used in CM.
---
docs/4.0_migration.md | 10 +-
docs/5.0_migration.md | 18 ++
lib/index.js | 7 +
lib/parser_inline.js | 35 ++-
lib/presets/commonmark.js | 5 +
lib/presets/zero.js | 4 +
lib/rules_inline/balance_pairs.js | 36 +++
lib/rules_inline/emphasis.js | 257 ++++++++------------
lib/rules_inline/image.js | 6 +-
lib/rules_inline/state_inline.js | 72 +++++-
lib/rules_inline/strikethrough.js | 199 +++++++--------
lib/rules_inline/text_collapse.js | 33 +++
test/fixtures/commonmark/bad.txt | 14 --
test/fixtures/commonmark/good.txt | 9 +
test/fixtures/markdown-it/strikethrough.txt | 9 +
test/misc.js | 5 -
16 files changed, 421 insertions(+), 298 deletions(-)
create mode 100644 docs/5.0_migration.md
create mode 100644 lib/rules_inline/balance_pairs.js
create mode 100644 lib/rules_inline/text_collapse.js
diff --git a/docs/4.0_migration.md b/docs/4.0_migration.md
index 75a255d1f..f8abedfc4 100644
--- a/docs/4.0_migration.md
+++ b/docs/4.0_migration.md
@@ -6,14 +6,14 @@ authors should update their packages.
## For users
-External API did not changed.
+External API did not change.
-- If you used `markdown-it` with plugins - make shure to update those.
+- If you used `markdown-it` with plugins - make sure to update those.
- If you modified renderer - see dev info below.
-- If you did not used plugins and renderer modification - no chanches needed.
+- If you did not use plugins and renderer modification - no changes needed.
-## For Developpers
+## For developers
### Tokens and renderer
@@ -25,7 +25,7 @@ External API did not changed.
repos in this org.
- [Renderer](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)
methods were unified. Number of custom renderer rules were significantly reduced.
- Custom renderer functions need update due tokens format change.
+ Custom renderer functions need update due to tokens format change.
### Other changes
diff --git a/docs/5.0_migration.md b/docs/5.0_migration.md
new file mode 100644
index 000000000..334621028
--- /dev/null
+++ b/docs/5.0_migration.md
@@ -0,0 +1,18 @@
+Migration to v5
+===============
+
+v5 has the same external API as v4, only internals were changed. Plugins that introduce block elements might need an update.
+
+## For users
+
+External API did not change.
+
+- If you use `markdown-it` with plugins, make sure to update them.
+
+
+## For plugin developers
+
+- added `stateBlock.sCount` to calculate indents instead of `stateBlock.tShift`, it only differs if tabs are present:
+ - `stateBlock.tShift` is used to calculate a number of *characters* (tab is 1 character)
+ - `stateBlock.sCount` is used to calculate the block *offset* (tab is 1-4 characters depending on position)
+
diff --git a/lib/index.js b/lib/index.js
index 6b301e8ff..d6ab79d87 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -382,6 +382,9 @@ MarkdownIt.prototype.configure = function (presets) {
if (presets.components[name].rules) {
self[name].ruler.enableOnly(presets.components[name].rules);
}
+ if (presets.components[name].rules2) {
+ self[name].ruler2.enableOnly(presets.components[name].rules2);
+ }
});
}
return this;
@@ -414,6 +417,8 @@ MarkdownIt.prototype.enable = function (list, ignoreInvalid) {
result = result.concat(this[chain].ruler.enable(list, true));
}, this);
+ result = result.concat(this.inline.ruler2.enable(list, true));
+
var missed = list.filter(function (name) { return result.indexOf(name) < 0; });
if (missed.length && !ignoreInvalid) {
@@ -440,6 +445,8 @@ MarkdownIt.prototype.disable = function (list, ignoreInvalid) {
result = result.concat(this[chain].ruler.disable(list, true));
}, this);
+ result = result.concat(this.inline.ruler2.disable(list, true));
+
var missed = list.filter(function (name) { return result.indexOf(name) < 0; });
if (missed.length && !ignoreInvalid) {
diff --git a/lib/parser_inline.js b/lib/parser_inline.js
index a19a5de88..e89a71b6b 100644
--- a/lib/parser_inline.js
+++ b/lib/parser_inline.js
@@ -17,8 +17,8 @@ var _rules = [
[ 'newline', require('./rules_inline/newline') ],
[ 'escape', require('./rules_inline/escape') ],
[ 'backticks', require('./rules_inline/backticks') ],
- [ 'strikethrough', require('./rules_inline/strikethrough') ],
- [ 'emphasis', require('./rules_inline/emphasis') ],
+ [ 'strikethrough', require('./rules_inline/strikethrough').tokenize ],
+ [ 'emphasis', require('./rules_inline/emphasis').tokenize ],
[ 'link', require('./rules_inline/link') ],
[ 'image', require('./rules_inline/image') ],
[ 'autolink', require('./rules_inline/autolink') ],
@@ -26,11 +26,20 @@ var _rules = [
[ 'entity', require('./rules_inline/entity') ]
];
+var _rules2 = [
+ [ 'balance_pairs', require('./rules_inline/balance_pairs') ],
+ [ 'strikethrough', require('./rules_inline/strikethrough').postProcess ],
+ [ 'emphasis', require('./rules_inline/emphasis').postProcess ],
+ [ 'text_collapse', require('./rules_inline/text_collapse') ]
+];
+
/**
* new ParserInline()
**/
function ParserInline() {
+ var i;
+
/**
* ParserInline#ruler -> Ruler
*
@@ -38,9 +47,21 @@ function ParserInline() {
**/
this.ruler = new Ruler();
- for (var i = 0; i < _rules.length; i++) {
+ for (i = 0; i < _rules.length; i++) {
this.ruler.push(_rules[i][0], _rules[i][1]);
}
+
+ /**
+ * ParserInline#ruler2 -> Ruler
+ *
+ * [[Ruler]] instance. Second ruler used for post-processing
+ * (e.g. in emphasis-like rules).
+ **/
+ this.ruler2 = new Ruler();
+
+ for (i = 0; i < _rules2.length; i++) {
+ this.ruler2.push(_rules2[i][0], _rules2[i][1]);
+ }
}
@@ -119,9 +140,17 @@ ParserInline.prototype.tokenize = function (state) {
* Process input string and push inline tokens into `outTokens`
**/
ParserInline.prototype.parse = function (str, md, env, outTokens) {
+ var i, rules, len;
var state = new this.State(str, md, env, outTokens);
this.tokenize(state);
+
+ rules = this.ruler2.getRules('');
+ len = rules.length;
+
+ for (i = 0; i < len; i++) {
+ rules[i](state);
+ }
};
diff --git a/lib/presets/commonmark.js b/lib/presets/commonmark.js
index 99e5b2b0f..b0aaabcc2 100644
--- a/lib/presets/commonmark.js
+++ b/lib/presets/commonmark.js
@@ -68,6 +68,11 @@ module.exports = {
'link',
'newline',
'text'
+ ],
+ rules2: [
+ 'balance_pairs',
+ 'emphasis',
+ 'text_collapse'
]
}
}
diff --git a/lib/presets/zero.js b/lib/presets/zero.js
index eda6dbac2..fd0376f27 100644
--- a/lib/presets/zero.js
+++ b/lib/presets/zero.js
@@ -51,6 +51,10 @@ module.exports = {
inline: {
rules: [
'text'
+ ],
+ rules2: [
+ 'balance_pairs',
+ 'text_collapse'
]
}
}
diff --git a/lib/rules_inline/balance_pairs.js b/lib/rules_inline/balance_pairs.js
new file mode 100644
index 000000000..4ec2845cb
--- /dev/null
+++ b/lib/rules_inline/balance_pairs.js
@@ -0,0 +1,36 @@
+// For each opening emphasis-like marker find a matching closing one
+//
+'use strict';
+
+
+module.exports = function link_pairs(state) {
+ var i, j, lastDelim, currDelim,
+ delimiters = state.delimiters,
+ max = state.delimiters.length;
+
+ for (i = 0; i < max; i++) {
+ lastDelim = delimiters[i];
+
+ if (!lastDelim.close) { continue; }
+
+ j = i - lastDelim.jump - 1;
+
+ while (j >= 0) {
+ currDelim = delimiters[j];
+
+ if (currDelim.open &&
+ currDelim.marker === lastDelim.marker &&
+ currDelim.end < 0 &&
+ currDelim.level === lastDelim.level) {
+
+ lastDelim.jump = i - j;
+ lastDelim.open = false;
+ currDelim.end = i;
+ currDelim.jump = 0;
+ break;
+ }
+
+ j -= currDelim.jump + 1;
+ }
+ }
+};
diff --git a/lib/rules_inline/emphasis.js b/lib/rules_inline/emphasis.js
index 051d2d073..fa26e6130 100644
--- a/lib/rules_inline/emphasis.js
+++ b/lib/rules_inline/emphasis.js
@@ -3,172 +3,121 @@
'use strict';
-var isWhiteSpace = require('../common/utils').isWhiteSpace;
-var isPunctChar = require('../common/utils').isPunctChar;
-var isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;
-
-
-// parse sequence of emphasis markers,
-// "start" should point at a valid marker
-function scanDelims(state, start) {
- var pos = start, lastChar, nextChar, count, can_open, can_close,
- isLastWhiteSpace, isLastPunctChar,
- isNextWhiteSpace, isNextPunctChar,
- left_flanking = true,
- right_flanking = true,
- max = state.posMax,
+// Insert each marker as a separate text token, and add it to delimiter list
+//
+module.exports.tokenize = function emphasis(state, silent) {
+ var i, scanned, token,
+ start = state.pos,
marker = state.src.charCodeAt(start);
- // treat beginning of the line as a whitespace
- lastChar = start > 0 ? state.src.charCodeAt(start - 1) : 0x20;
-
- while (pos < max && state.src.charCodeAt(pos) === marker) { pos++; }
-
- count = pos - start;
-
- // treat end of the line as a whitespace
- nextChar = pos < max ? state.src.charCodeAt(pos) : 0x20;
-
- isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
- isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
-
- isLastWhiteSpace = isWhiteSpace(lastChar);
- isNextWhiteSpace = isWhiteSpace(nextChar);
-
- if (isNextWhiteSpace) {
- left_flanking = false;
- } else if (isNextPunctChar) {
- if (!(isLastWhiteSpace || isLastPunctChar)) {
- left_flanking = false;
- }
+ if (silent) { return false; }
+
+ if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false; }
+
+ scanned = state.scanDelims(state.pos, marker === 0x2A);
+
+ for (i = 0; i < scanned.length; i++) {
+ token = state.push('text', '', 0);
+ token.content = String.fromCharCode(marker);
+
+ state.delimiters.push({
+ // Char code of the starting marker (number).
+ //
+ marker: marker,
+
+ // An amount of characters before this one that's equivalent to
+ // current one. In plain English: if this delimiter does not open
+ // an emphasis, neither do previous `jump` characters.
+ //
+ // Used to skip sequences like "*****" in one step, for 1st asterisk
+ // value will be 0, for 2nd it's 1 and so on.
+ //
+ jump: i,
+
+ // A position of the token this delimiter corresponds to.
+ //
+ token: state.tokens.length - 1,
+
+ // Token level.
+ //
+ level: state.level,
+
+ // If this delimiter is matched as a valid opener, `end` will be
+ // equal to its position, otherwise it's `-1`.
+ //
+ end: -1,
+
+ // Boolean flags that determine if this delimiter could open or close
+ // an emphasis.
+ //
+ open: scanned.can_open,
+ close: scanned.can_close
+ });
}
- if (isLastWhiteSpace) {
- right_flanking = false;
- } else if (isLastPunctChar) {
- if (!(isNextWhiteSpace || isNextPunctChar)) {
- right_flanking = false;
- }
- }
+ state.pos += scanned.length;
- if (marker === 0x5F /* _ */) {
- // "_" inside a word can neither open nor close an emphasis
- can_open = left_flanking && (!right_flanking || isLastPunctChar);
- can_close = right_flanking && (!left_flanking || isNextPunctChar);
- } else {
- can_open = left_flanking;
- can_close = right_flanking;
- }
+ return true;
+};
- return {
- can_open: can_open,
- can_close: can_close,
- delims: count
- };
-}
-
-module.exports = function emphasis(state, silent) {
- var startCount,
- count,
- found,
- oldCount,
- newCount,
- stack,
- res,
- token,
- max = state.posMax,
- start = state.pos,
- marker = state.src.charCodeAt(start);
- if (marker !== 0x5F/* _ */ && marker !== 0x2A /* * */) { return false; }
- if (silent) { return false; } // don't run any pairs in validation mode
+// Walk through delimiter list and replace text tokens with tags
+//
+module.exports.postProcess = function emphasis(state) {
+ var i,
+ startDelim,
+ endDelim,
+ token,
+ ch,
+ isStrong,
+ delimiters = state.delimiters,
+ max = state.delimiters.length;
- res = scanDelims(state, start);
- startCount = res.delims;
- if (!res.can_open) {
- state.pos += startCount;
- // Earlier we checked !silent, but this implementation does not need it
- state.pending += state.src.slice(start, state.pos);
- return true;
- }
+ for (i = 0; i < max; i++) {
+ startDelim = delimiters[i];
- state.pos = start + startCount;
- stack = [ startCount ];
-
- while (state.pos < max) {
- if (state.src.charCodeAt(state.pos) === marker) {
- res = scanDelims(state, state.pos);
- count = res.delims;
- if (res.can_close) {
- oldCount = stack.pop();
- newCount = count;
-
- while (oldCount !== newCount) {
- if (newCount < oldCount) {
- stack.push(oldCount - newCount);
- break;
- }
-
- // assert(newCount > oldCount)
- newCount -= oldCount;
-
- if (stack.length === 0) { break; }
- state.pos += oldCount;
- oldCount = stack.pop();
- }
-
- if (stack.length === 0) {
- startCount = oldCount;
- found = true;
- break;
- }
- state.pos += count;
- continue;
- }
-
- if (res.can_open) { stack.push(count); }
- state.pos += count;
+ if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {
continue;
}
- state.md.inline.skipToken(state);
- }
-
- if (!found) {
- // parser failed to find ending tag, so it's not valid emphasis
- state.pos = start;
- return false;
- }
-
- // found!
- state.posMax = state.pos;
- state.pos = start + startCount;
-
- // Earlier we checked !silent, but this implementation does not need it
-
- // we have `startCount` starting and ending markers,
- // now trying to serialize them into tokens
- for (count = startCount; count > 1; count -= 2) {
- token = state.push('strong_open', 'strong', 1);
- token.markup = String.fromCharCode(marker) + String.fromCharCode(marker);
- }
- if (count % 2) {
- token = state.push('em_open', 'em', 1);
- token.markup = String.fromCharCode(marker);
- }
-
- state.md.inline.tokenize(state);
+ // Process only opening markers
+ if (startDelim.end === -1) {
+ continue;
+ }
- if (count % 2) {
- token = state.push('em_close', 'em', -1);
- token.markup = String.fromCharCode(marker);
- }
- for (count = startCount; count > 1; count -= 2) {
- token = state.push('strong_close', 'strong', -1);
- token.markup = String.fromCharCode(marker) + String.fromCharCode(marker);
+ endDelim = delimiters[startDelim.end];
+
+ // If the next delimiter has the same marker and is adjacent to this one,
+ // merge those into one strong delimiter.
+ //
+ // `whatever` -> `whatever`
+ //
+ isStrong = i + 1 < max &&
+ delimiters[i + 1].end === startDelim.end - 1 &&
+ delimiters[i + 1].token === startDelim.token + 1 &&
+ delimiters[startDelim.end - 1].token === endDelim.token - 1 &&
+ delimiters[i + 1].marker === startDelim.marker;
+
+ ch = String.fromCharCode(startDelim.marker);
+
+ token = state.tokens[startDelim.token];
+ token.type = isStrong ? 'strong_open' : 'em_open';
+ token.tag = isStrong ? 'strong' : 'em';
+ token.nesting = 1;
+ token.markup = isStrong ? ch + ch : ch;
+ token.content = '';
+
+ token = state.tokens[endDelim.token];
+ token.type = isStrong ? 'strong_close' : 'em_close';
+ token.tag = isStrong ? 'strong' : 'em';
+ token.nesting = -1;
+ token.markup = isStrong ? ch + ch : ch;
+ token.content = '';
+
+ if (isStrong) {
+ state.tokens[delimiters[i + 1].token].content = '';
+ state.tokens[delimiters[startDelim.end - 1].token].content = '';
+ i++;
+ }
}
-
- state.pos = state.posMax + startCount;
- state.posMax = max;
- return true;
};
diff --git a/lib/rules_inline/image.js b/lib/rules_inline/image.js
index 32355e0b8..167b8614a 100644
--- a/lib/rules_inline/image.js
+++ b/lib/rules_inline/image.js
@@ -136,16 +136,12 @@ module.exports = function image(state, silent) {
// so all that's left to do is to call tokenizer.
//
if (!silent) {
- state.pos = labelStart;
- state.posMax = labelEnd;
-
- var newState = new state.md.inline.State(
+ state.md.inline.parse(
state.src.slice(labelStart, labelEnd),
state.md,
state.env,
tokens = []
);
- newState.md.inline.tokenize(newState);
token = state.push('image', 'img', 0);
token.attrs = attrs = [ [ 'src', href ], [ 'alt', '' ] ];
diff --git a/lib/rules_inline/state_inline.js b/lib/rules_inline/state_inline.js
index 8b3a5fc32..2847496c8 100644
--- a/lib/rules_inline/state_inline.js
+++ b/lib/rules_inline/state_inline.js
@@ -3,7 +3,11 @@
'use strict';
-var Token = require('../token');
+var Token = require('../token');
+var isWhiteSpace = require('../common/utils').isWhiteSpace;
+var isPunctChar = require('../common/utils').isPunctChar;
+var isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;
+
function StateInline(src, md, env, outTokens) {
this.src = src;
@@ -19,6 +23,8 @@ function StateInline(src, md, env, outTokens) {
this.cache = {}; // Stores { start: end } pairs. Useful for backtrack
// optimization of pairs parse (emphasis, strikes).
+
+ this.delimiters = []; // Emphasis-like delimiters
}
@@ -53,6 +59,70 @@ StateInline.prototype.push = function (type, tag, nesting) {
return token;
};
+
+// Scan a sequence of emphasis-like markers, and determine whether
+// it can start an emphasis sequence or end an emphasis sequence.
+//
+// - start - position to scan from (it should point at a valid marker);
+// - canSplitWord - determine if these markers can be found inside a word
+//
+StateInline.prototype.scanDelims = function (start, canSplitWord) {
+ var pos = start, lastChar, nextChar, count, can_open, can_close,
+ isLastWhiteSpace, isLastPunctChar,
+ isNextWhiteSpace, isNextPunctChar,
+ left_flanking = true,
+ right_flanking = true,
+ max = this.posMax,
+ marker = this.src.charCodeAt(start);
+
+ // treat beginning of the line as a whitespace
+ lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;
+
+ while (pos < max && this.src.charCodeAt(pos) === marker) { pos++; }
+
+ count = pos - start;
+
+ // treat end of the line as a whitespace
+ nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;
+
+ isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
+ isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
+
+ isLastWhiteSpace = isWhiteSpace(lastChar);
+ isNextWhiteSpace = isWhiteSpace(nextChar);
+
+ if (isNextWhiteSpace) {
+ left_flanking = false;
+ } else if (isNextPunctChar) {
+ if (!(isLastWhiteSpace || isLastPunctChar)) {
+ left_flanking = false;
+ }
+ }
+
+ if (isLastWhiteSpace) {
+ right_flanking = false;
+ } else if (isLastPunctChar) {
+ if (!(isNextWhiteSpace || isNextPunctChar)) {
+ right_flanking = false;
+ }
+ }
+
+ if (!canSplitWord) {
+ can_open = left_flanking && (!right_flanking || isLastPunctChar);
+ can_close = right_flanking && (!left_flanking || isNextPunctChar);
+ } else {
+ can_open = left_flanking;
+ can_close = right_flanking;
+ }
+
+ return {
+ can_open: can_open,
+ can_close: can_close,
+ length: count
+ };
+};
+
+
// re-export Token class to use in block rules
StateInline.prototype.Token = Token;
diff --git a/lib/rules_inline/strikethrough.js b/lib/rules_inline/strikethrough.js
index 5787687d2..03472412e 100644
--- a/lib/rules_inline/strikethrough.js
+++ b/lib/rules_inline/strikethrough.js
@@ -3,138 +3,115 @@
'use strict';
-var isWhiteSpace = require('../common/utils').isWhiteSpace;
-var isPunctChar = require('../common/utils').isPunctChar;
-var isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;
-
-
-// parse sequence of markers,
-// "start" should point at a valid marker
-function scanDelims(state, start) {
- var pos = start, lastChar, nextChar, count,
- isLastWhiteSpace, isLastPunctChar,
- isNextWhiteSpace, isNextPunctChar,
- can_open = true,
- can_close = true,
- max = state.posMax,
+// Insert each marker as a separate text token, and add it to delimiter list
+//
+module.exports.tokenize = function strikethrough(state, silent) {
+ var i, scanned, token, len, ch,
+ start = state.pos,
marker = state.src.charCodeAt(start);
- // treat beginning of the line as a whitespace
- lastChar = start > 0 ? state.src.charCodeAt(start - 1) : 0x20;
+ if (silent) { return false; }
- while (pos < max && state.src.charCodeAt(pos) === marker) { pos++; }
+ if (marker !== 0x7E/* ~ */) { return false; }
- if (pos >= max) {
- can_open = false;
- }
+ scanned = state.scanDelims(state.pos, true);
+ len = scanned.length;
+ ch = String.fromCharCode(marker);
- count = pos - start;
+ if (len < 2) { return false; }
- // treat end of the line as a whitespace
- nextChar = pos < max ? state.src.charCodeAt(pos) : 0x20;
+ if (len % 2) {
+ token = state.push('text', '', 0);
+ token.content = ch;
+ len--;
+ }
- isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
- isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
+ for (i = 0; i < len; i += 2) {
+ token = state.push('text', '', 0);
+ token.content = ch + ch;
+
+ state.delimiters.push({
+ marker: marker,
+ jump: i,
+ token: state.tokens.length - 1,
+ level: state.level,
+ end: -1,
+ open: scanned.can_open,
+ close: scanned.can_close
+ });
+ }
- isLastWhiteSpace = isWhiteSpace(lastChar);
- isNextWhiteSpace = isWhiteSpace(nextChar);
+ state.pos += scanned.length;
- if (isNextWhiteSpace) {
- can_open = false;
- } else if (isNextPunctChar) {
- if (!(isLastWhiteSpace || isLastPunctChar)) {
- can_open = false;
- }
- }
+ return true;
+};
- if (isLastWhiteSpace) {
- can_close = false;
- } else if (isLastPunctChar) {
- if (!(isNextWhiteSpace || isNextPunctChar)) {
- can_close = false;
- }
- }
- return {
- can_open: can_open,
- can_close: can_close,
- delims: count
- };
-}
-
-
-module.exports = function strikethrough(state, silent) {
- var startCount,
- count,
- tagCount,
- found,
- stack,
- res,
+// Walk through delimiter list and replace text tokens with tags
+//
+module.exports.postProcess = function strikethrough(state) {
+ var i, j,
+ startDelim,
+ endDelim,
token,
- max = state.posMax,
- start = state.pos,
- marker = state.src.charCodeAt(start);
+ loneMarkers = [],
+ delimiters = state.delimiters,
+ max = state.delimiters.length;
- if (marker !== 0x7E/* ~ */) { return false; }
- if (silent) { return false; } // don't run any pairs in validation mode
-
- res = scanDelims(state, start);
- startCount = res.delims;
- if (!res.can_open) {
- state.pos += startCount;
- // Earlier we checked !silent, but this implementation does not need it
- state.pending += state.src.slice(start, state.pos);
- return true;
- }
+ for (i = 0; i < max; i++) {
+ startDelim = delimiters[i];
- stack = Math.floor(startCount / 2);
- if (stack <= 0) { return false; }
- state.pos = start + startCount;
-
- while (state.pos < max) {
- if (state.src.charCodeAt(state.pos) === marker) {
- res = scanDelims(state, state.pos);
- count = res.delims;
- tagCount = Math.floor(count / 2);
- if (res.can_close) {
- if (tagCount >= stack) {
- state.pos += count - 2;
- found = true;
- break;
- }
- stack -= tagCount;
- state.pos += count;
- continue;
- }
-
- if (res.can_open) { stack += tagCount; }
- state.pos += count;
+ if (startDelim.marker !== 0x7E/* ~ */) {
continue;
}
- state.md.inline.skipToken(state);
- }
+ if (startDelim.end === -1) {
+ continue;
+ }
- if (!found) {
- // parser failed to find ending tag, so it's not valid emphasis
- state.pos = start;
- return false;
- }
+ endDelim = delimiters[startDelim.end];
+
+ token = state.tokens[startDelim.token];
+ token.type = 's_open';
+ token.tag = 's';
+ token.nesting = 1;
+ token.markup = '~~';
+ token.content = '';
- // found!
- state.posMax = state.pos;
- state.pos = start + 2;
+ token = state.tokens[endDelim.token];
+ token.type = 's_close';
+ token.tag = 's';
+ token.nesting = -1;
+ token.markup = '~~';
+ token.content = '';
- // Earlier we checked !silent, but this implementation does not need it
- token = state.push('s_open', 's', 1);
- token.markup = '~~';
+ if (state.tokens[endDelim.token - 1].type === 'text' &&
+ state.tokens[endDelim.token - 1].content === '~') {
- state.md.inline.tokenize(state);
+ loneMarkers.push(endDelim.token - 1);
+ }
+ }
- token = state.push('s_close', 's', -1);
- token.markup = '~~';
+ // If a marker sequence has an odd number of characters, it's splitted
+ // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the
+ // start of the sequence.
+ //
+ // So, we have to move all those markers after subsequent s_close tags.
+ //
+ while (loneMarkers.length) {
+ i = loneMarkers.pop();
+ j = i + 1;
+
+ while (j < state.tokens.length && state.tokens[j].type === 's_close') {
+ j++;
+ }
- state.pos = state.posMax + 2;
- state.posMax = max;
- return true;
+ j--;
+
+ if (i !== j) {
+ token = state.tokens[j];
+ state.tokens[j] = state.tokens[i];
+ state.tokens[i] = token;
+ }
+ }
};
diff --git a/lib/rules_inline/text_collapse.js b/lib/rules_inline/text_collapse.js
new file mode 100644
index 000000000..3104c0c6f
--- /dev/null
+++ b/lib/rules_inline/text_collapse.js
@@ -0,0 +1,33 @@
+// Merge adjacent text nodes into one, and re-calculate all token levels
+//
+'use strict';
+
+
+module.exports = function text_collapse(state) {
+ var curr, last,
+ level = 0,
+ tokens = state.tokens,
+ max = state.tokens.length;
+
+ for (curr = last = 0; curr < max; curr++) {
+ // re-calculate levels
+ level += tokens[curr].nesting;
+ tokens[curr].level = level;
+
+ if (tokens[curr].type === 'text' &&
+ curr + 1 < max &&
+ tokens[curr + 1].type === 'text') {
+
+ // collapse two adjacent text nodes
+ tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
+ } else {
+ if (curr !== last) { tokens[last] = tokens[curr]; }
+
+ last++;
+ }
+ }
+
+ if (curr !== last) {
+ tokens.length = last;
+ }
+};
diff --git a/test/fixtures/commonmark/bad.txt b/test/fixtures/commonmark/bad.txt
index 9a799f9a9..e69de29bb 100644
--- a/test/fixtures/commonmark/bad.txt
+++ b/test/fixtures/commonmark/bad.txt
@@ -1,14 +0,0 @@
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-src line: 6241
-
-.
-*foo __bar *baz bim__ bam*
-.
-foo bar *baz bim bam
-.
-
-error:
-
-*foo bar *baz bim bam*
-
-
diff --git a/test/fixtures/commonmark/good.txt b/test/fixtures/commonmark/good.txt
index bdb86d346..5df0d9bdc 100644
--- a/test/fixtures/commonmark/good.txt
+++ b/test/fixtures/commonmark/good.txt
@@ -5444,6 +5444,15 @@ src line: 6235
foobar*
.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+src line: 6241
+
+.
+*foo __bar *baz bim__ bam*
+.
+foo bar *baz bim bam
+.
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src line: 6249
diff --git a/test/fixtures/markdown-it/strikethrough.txt b/test/fixtures/markdown-it/strikethrough.txt
index 299dc3a0f..fb1463fef 100644
--- a/test/fixtures/markdown-it/strikethrough.txt
+++ b/test/fixtures/markdown-it/strikethrough.txt
@@ -22,6 +22,15 @@ x ~~~~foo~~~~
x foo
.
+.
+x ~~a ~~foo~~~~~~~~~~~bar~~ b~~
+
+x ~~a ~~foo~~~~~~~~~~~~bar~~ b~~
+.
+x a foo~~~bar b
+x a foo~~~~bar b
+.
+
Strikeouts have the same priority as emphases:
.
diff --git a/test/misc.js b/test/misc.js
index 82e2381ee..e35b3de01 100644
--- a/test/misc.js
+++ b/test/misc.js
@@ -261,11 +261,6 @@ describe('Links validation', function () {
describe('maxNesting', function () {
- it('Inline parser should not nest above limit', function () {
- var md = markdownit({ maxNesting: 2 });
- assert.strictEqual(md.render('*foo *bar *baz* bar* foo*'), 'foo bar *baz* bar foo
\n');
- });
-
it('Block parser should not nest above limit', function () {
var md = markdownit({ maxNesting: 2 });
assert.strictEqual(
From aa3c1df2efb09d40e7e574d32bde01759d9b63dc Mon Sep 17 00:00:00 2001
From: Alex Kocharin
Date: Wed, 30 Sep 2015 18:14:59 +0300
Subject: [PATCH 019/320] Update changelog and migration guide
---
CHANGELOG.md | 5 +++--
docs/5.0_migration.md | 4 +++-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 74bc18548..343bd23e9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,9 @@
-4.5.0 / WIP
+5.0.0 / 2015-09-30
------------------
-- Keep tabs (don't replace with spaces)
+- Keep tabs (don't replace with spaces).
- Don't wrap iframes with paragraphs (according to spec update).
+- Changed emphasis algorithm to match one described in CM spec.
4.4.0 / 2015-07-18
diff --git a/docs/5.0_migration.md b/docs/5.0_migration.md
index 334621028..912462cfa 100644
--- a/docs/5.0_migration.md
+++ b/docs/5.0_migration.md
@@ -15,4 +15,6 @@ External API did not change.
- added `stateBlock.sCount` to calculate indents instead of `stateBlock.tShift`, it only differs if tabs are present:
- `stateBlock.tShift` is used to calculate a number of *characters* (tab is 1 character)
- `stateBlock.sCount` is used to calculate the block *offset* (tab is 1-4 characters depending on position)
-
+- added `stateInline.ruler2` and `stateInline.delimiters` needed to parse emphasis-like markup better
+ - emphasis-like tags now can't be skipped with `stateInline.skipToken`, they treat a sequence of markers (e.g. `***`) as a token instead
+ - `stateInline.delimiters` is linked with `stateInline.tokens`, so truncating/splicing `stateInline.tokens` may break things
From c20544d977d5828db9149597d1971c8bae3d97b0 Mon Sep 17 00:00:00 2001
From: Alf Eaton
Date: Thu, 1 Oct 2015 09:36:10 +0100
Subject: [PATCH 020/320] Update mdurl dependency
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 45e554713..2be36f066 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
"argparse": "~1.0.2",
"entities": "~1.1.1",
"linkify-it": "~1.2.0",
- "mdurl": "~1.0.0",
+ "mdurl": "~1.0.1",
"uc.micro": "^1.0.0"
},
"devDependencies": {
From 0a6ecd942b0af6e6df4cdde0ce20a878467dfc78 Mon Sep 17 00:00:00 2001
From: Alf Eaton
Date: Thu, 1 Oct 2015 09:36:49 +0100
Subject: [PATCH 021/320] Change variable name to remove reserved keyword
---
lib/common/utils.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/common/utils.js b/lib/common/utils.js
index 9a8bceed1..aa2464e9c 100644
--- a/lib/common/utils.js
+++ b/lib/common/utils.js
@@ -186,8 +186,8 @@ function isWhiteSpace(code) {
var UNICODE_PUNCT_RE = require('uc.micro/categories/P/regex');
// Currently without astral characters support.
-function isPunctChar(char) {
- return UNICODE_PUNCT_RE.test(char);
+function isPunctChar(ch) {
+ return UNICODE_PUNCT_RE.test(ch);
}
From 556e8ca0f36c6c4816a0db51eff5c19cbffd6d3e Mon Sep 17 00:00:00 2001
From: "Hallvord R. M. Steen"
Date: Thu, 1 Oct 2015 13:29:23 +0200
Subject: [PATCH 022/320] Fix typo in example script
This method has a tokens argument in plural, but in the body it says token. Looks like a bug..
---
docs/architecture.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/architecture.md b/docs/architecture.md
index d69cd5c2b..13fcf038b 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -168,12 +168,12 @@ var iterator = require('markdown-it-for-inline');
var md = require('markdown-it')()
.use(iterator, 'url_new_win', 'link_open', function (tokens, idx) {
- var aIndex = token[idx].attrIndex('target');
+ var aIndex = tokens[idx].attrIndex('target');
if (aIndex < 0) {
- token[idx].attrPush(['target', '_blank']);
+ tokens[idx].attrPush(['target', '_blank']);
} else {
- token[idx].attrs[aIndex][1] = '_blank';
+ tokens[idx].attrs[aIndex][1] = '_blank';
}
});
```
From 0678bdd914b3233ae785ddd11006e332cbcc8354 Mon Sep 17 00:00:00 2001
From: Vitaly Puzrin
Date: Mon, 5 Oct 2015 14:45:49 +0300
Subject: [PATCH 023/320] Browser files rebuild
---
dist/markdown-it.js | 1115 ++++++++++++++++++++++++---------------
dist/markdown-it.min.js | 10 +-
2 files changed, 692 insertions(+), 433 deletions(-)
diff --git a/dist/markdown-it.js b/dist/markdown-it.js
index 3269e48c5..8ceb4dc2d 100644
--- a/dist/markdown-it.js
+++ b/dist/markdown-it.js
@@ -1,4 +1,4 @@
-/*! markdown-it 4.4.0 https://github.com//markdown-it/markdown-it @license MIT */(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.markdownit = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o utf16string }
//
'use strict';
@@ -6,7 +6,7 @@
/*eslint quotes:0*/
module.exports = require('entities/maps/entities.json');
-},{"entities/maps/entities.json":52}],2:[function(require,module,exports){
+},{"entities/maps/entities.json":54}],2:[function(require,module,exports){
// List of valid html blocks names, accorting to commonmark spec
// http://jgm.github.io/CommonMark/spec.html#html-blocks
@@ -44,6 +44,7 @@ module.exports = [
'header',
'hr',
'html',
+ 'iframe',
'legend',
'li',
'link',
@@ -433,6 +434,15 @@ function escapeRE (str) {
////////////////////////////////////////////////////////////////////////////////
+function isSpace(code) {
+ switch (code) {
+ case 0x09:
+ case 0x20:
+ return true;
+ }
+ return false;
+}
+
// Zs (unicode class) || [\t\f\v\r\n]
function isWhiteSpace(code) {
if (code >= 0x2000 && code <= 0x200A) { return true; }
@@ -459,8 +469,8 @@ function isWhiteSpace(code) {
var UNICODE_PUNCT_RE = require('uc.micro/categories/P/regex');
// Currently without astral characters support.
-function isPunctChar(char) {
- return UNICODE_PUNCT_RE.test(char);
+function isPunctChar(ch) {
+ return UNICODE_PUNCT_RE.test(ch);
}
@@ -540,13 +550,14 @@ exports.fromCodePoint = fromCodePoint;
// exports.replaceEntities = replaceEntities;
exports.escapeHtml = escapeHtml;
exports.arrayReplaceAt = arrayReplaceAt;
+exports.isSpace = isSpace;
exports.isWhiteSpace = isWhiteSpace;
exports.isMdAsciiPunct = isMdAsciiPunct;
exports.isPunctChar = isPunctChar;
exports.escapeRE = escapeRE;
exports.normalizeReference = normalizeReference;
-},{"./entities":1,"mdurl":58,"uc.micro":64,"uc.micro/categories/P/regex":62}],6:[function(require,module,exports){
+},{"./entities":1,"mdurl":60,"uc.micro":66,"uc.micro/categories/P/regex":64}],6:[function(require,module,exports){
// Just a shortcut for bulk export
'use strict';
@@ -801,7 +812,7 @@ function normalizeLink(url) {
if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
try {
parsed.hostname = punycode.toASCII(parsed.hostname);
- } catch(er) {}
+ } catch (er) { /**/ }
}
}
@@ -821,7 +832,7 @@ function normalizeLinkText(url) {
if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
try {
parsed.hostname = punycode.toUnicode(parsed.hostname);
- } catch(er) {}
+ } catch (er) { /**/ }
}
}
@@ -1126,6 +1137,9 @@ MarkdownIt.prototype.configure = function (presets) {
if (presets.components[name].rules) {
self[name].ruler.enableOnly(presets.components[name].rules);
}
+ if (presets.components[name].rules2) {
+ self[name].ruler2.enableOnly(presets.components[name].rules2);
+ }
});
}
return this;
@@ -1158,6 +1172,8 @@ MarkdownIt.prototype.enable = function (list, ignoreInvalid) {
result = result.concat(this[chain].ruler.enable(list, true));
}, this);
+ result = result.concat(this.inline.ruler2.enable(list, true));
+
var missed = list.filter(function (name) { return result.indexOf(name) < 0; });
if (missed.length && !ignoreInvalid) {
@@ -1184,6 +1200,8 @@ MarkdownIt.prototype.disable = function (list, ignoreInvalid) {
result = result.concat(this[chain].ruler.disable(list, true));
}, this);
+ result = result.concat(this.inline.ruler2.disable(list, true));
+
var missed = list.filter(function (name) { return result.indexOf(name) < 0; });
if (missed.length && !ignoreInvalid) {
@@ -1227,7 +1245,7 @@ MarkdownIt.prototype.use = function (plugin /*, params, ... */) {
* AST).
*
* `env` is used to pass data between "distributed" rules and return additional
- * metadata like reference info, needed for for renderer. It also can be used to
+ * metadata like reference info, needed for the renderer. It also can be used to
* inject data in specific cases. Usually, you will be ok to pass `{}`,
* and then pass updated object to renderer.
**/
@@ -1294,7 +1312,7 @@ MarkdownIt.prototype.renderInline = function (src, env) {
module.exports = MarkdownIt;
-},{"./common/utils":5,"./helpers":6,"./parser_block":11,"./parser_core":12,"./parser_inline":13,"./presets/commonmark":14,"./presets/default":15,"./presets/zero":16,"./renderer":17,"linkify-it":53,"mdurl":58,"punycode":51}],11:[function(require,module,exports){
+},{"./common/utils":5,"./helpers":6,"./parser_block":11,"./parser_core":12,"./parser_inline":13,"./presets/commonmark":14,"./presets/default":15,"./presets/zero":16,"./renderer":17,"linkify-it":55,"mdurl":60,"punycode":53}],11:[function(require,module,exports){
/** internal
* class ParserBlock
*
@@ -1356,7 +1374,7 @@ ParserBlock.prototype.tokenize = function (state, startLine, endLine) {
// Termination condition for nested calls.
// Nested calls currently used for blockquotes & lists
- if (state.tShift[line] < state.blkIndent) { break; }
+ if (state.sCount[line] < state.blkIndent) { break; }
// If nesting level exceeded - skip tail to the end. That's not ordinary
// situation and we should not care about content.
@@ -1501,8 +1519,8 @@ var _rules = [
[ 'newline', require('./rules_inline/newline') ],
[ 'escape', require('./rules_inline/escape') ],
[ 'backticks', require('./rules_inline/backticks') ],
- [ 'strikethrough', require('./rules_inline/strikethrough') ],
- [ 'emphasis', require('./rules_inline/emphasis') ],
+ [ 'strikethrough', require('./rules_inline/strikethrough').tokenize ],
+ [ 'emphasis', require('./rules_inline/emphasis').tokenize ],
[ 'link', require('./rules_inline/link') ],
[ 'image', require('./rules_inline/image') ],
[ 'autolink', require('./rules_inline/autolink') ],
@@ -1510,11 +1528,20 @@ var _rules = [
[ 'entity', require('./rules_inline/entity') ]
];
+var _rules2 = [
+ [ 'balance_pairs', require('./rules_inline/balance_pairs') ],
+ [ 'strikethrough', require('./rules_inline/strikethrough').postProcess ],
+ [ 'emphasis', require('./rules_inline/emphasis').postProcess ],
+ [ 'text_collapse', require('./rules_inline/text_collapse') ]
+];
+
/**
* new ParserInline()
**/
function ParserInline() {
+ var i;
+
/**
* ParserInline#ruler -> Ruler
*
@@ -1522,9 +1549,21 @@ function ParserInline() {
**/
this.ruler = new Ruler();
- for (var i = 0; i < _rules.length; i++) {
+ for (i = 0; i < _rules.length; i++) {
this.ruler.push(_rules[i][0], _rules[i][1]);
}
+
+ /**
+ * ParserInline#ruler2 -> Ruler
+ *
+ * [[Ruler]] instance. Second ruler used for post-processing
+ * (e.g. in emphasis-like rules).
+ **/
+ this.ruler2 = new Ruler();
+
+ for (i = 0; i < _rules2.length; i++) {
+ this.ruler2.push(_rules2[i][0], _rules2[i][1]);
+ }
}
@@ -1603,9 +1642,17 @@ ParserInline.prototype.tokenize = function (state) {
* Process input string and push inline tokens into `outTokens`
**/
ParserInline.prototype.parse = function (str, md, env, outTokens) {
+ var i, rules, len;
var state = new this.State(str, md, env, outTokens);
this.tokenize(state);
+
+ rules = this.ruler2.getRules('');
+ len = rules.length;
+
+ for (i = 0; i < len; i++) {
+ rules[i](state);
+ }
};
@@ -1614,7 +1661,7 @@ ParserInline.prototype.State = require('./rules_inline/state_inline');
module.exports = ParserInline;
-},{"./ruler":18,"./rules_inline/autolink":38,"./rules_inline/backticks":39,"./rules_inline/emphasis":40,"./rules_inline/entity":41,"./rules_inline/escape":42,"./rules_inline/html_inline":43,"./rules_inline/image":44,"./rules_inline/link":45,"./rules_inline/newline":46,"./rules_inline/state_inline":47,"./rules_inline/strikethrough":48,"./rules_inline/text":49}],14:[function(require,module,exports){
+},{"./ruler":18,"./rules_inline/autolink":38,"./rules_inline/backticks":39,"./rules_inline/balance_pairs":40,"./rules_inline/emphasis":41,"./rules_inline/entity":42,"./rules_inline/escape":43,"./rules_inline/html_inline":44,"./rules_inline/image":45,"./rules_inline/link":46,"./rules_inline/newline":47,"./rules_inline/state_inline":48,"./rules_inline/strikethrough":49,"./rules_inline/text":50,"./rules_inline/text_collapse":51}],14:[function(require,module,exports){
// Commonmark default options
'use strict';
@@ -1636,7 +1683,7 @@ module.exports = {
//
// For example, you can use '«»„“' for Russian, '„“‚‘' for German,
// and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
- quotes: '\u201c\u201d\u2018\u2019' /* “”‘’ */,
+ quotes: '\u201c\u201d\u2018\u2019', /* “”‘’ */
// Highlighter function. Should return escaped HTML,
// or '' if input not changed
@@ -1685,6 +1732,11 @@ module.exports = {
'link',
'newline',
'text'
+ ],
+ rules2: [
+ 'balance_pairs',
+ 'emphasis',
+ 'text_collapse'
]
}
}
@@ -1712,7 +1764,7 @@ module.exports = {
//
// For example, you can use '«»„“' for Russian, '„“‚‘' for German,
// and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
- quotes: '\u201c\u201d\u2018\u2019' /* “”‘’ */,
+ quotes: '\u201c\u201d\u2018\u2019', /* “”‘’ */
// Highlighter function. Should return escaped HTML,
// or '' if input not changed
@@ -1755,7 +1807,7 @@ module.exports = {
//
// For example, you can use '«»„“' for Russian, '„“‚‘' for German,
// and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
- quotes: '\u201c\u201d\u2018\u2019' /* “”‘’ */,
+ quotes: '\u201c\u201d\u2018\u2019', /* “”‘’ */
// Highlighter function. Should return escaped HTML,
// or '' if input not changed
@@ -1786,6 +1838,10 @@ module.exports = {
inline: {
rules: [
'text'
+ ],
+ rules2: [
+ 'balance_pairs',
+ 'text_collapse'
]
}
}
@@ -1822,7 +1878,7 @@ default_rules.code_block = function (tokens, idx /*, options, env */) {
};
-default_rules.fence = function (tokens, idx, options, env, self) {
+default_rules.fence = function (tokens, idx, options, env, slf) {
var token = tokens[idx],
info = token.info ? unescapeAll(token.info).trim() : '',
langName = '',
@@ -1839,13 +1895,13 @@ default_rules.fence = function (tokens, idx, options, env, self) {
highlighted = escapeHtml(token.content);
}
- return ''
+ return ''
+ highlighted
+ '
\n';
};
-default_rules.image = function (tokens, idx, options, env, self) {
+default_rules.image = function (tokens, idx, options, env, slf) {
var token = tokens[idx];
// "alt" attr MUST be set, even if empty. Because it's mandatory and
@@ -1854,9 +1910,9 @@ default_rules.image = function (tokens, idx, options, env, self) {
// Replace content with actual value
token.attrs[token.attrIndex('alt')][1] =
- self.renderInlineAsText(token.children, options, env);
+ slf.renderInlineAsText(token.children, options, env);
- return self.renderToken(tokens, idx, options);
+ return slf.renderToken(tokens, idx, options);
};
@@ -2453,9 +2509,11 @@ module.exports = Ruler;
'use strict';
+var isSpace = require('../common/utils').isSpace;
+
module.exports = function blockquote(state, startLine, endLine, silent) {
- var nextLine, lastLineEmpty, oldTShift, oldBMarks, oldIndent, oldParentType, lines,
+ var nextLine, lastLineEmpty, oldTShift, oldSCount, oldBMarks, oldIndent, oldParentType, lines, initial, offset, ch,
terminatorRules, token,
i, l, terminate,
pos = state.bMarks[startLine] + state.tShift[startLine],
@@ -2468,19 +2526,39 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
// so no point trying to find the end of it in silent mode
if (silent) { return true; }
- // skip one optional space after '>'
+ // skip one optional space (but not tab, check cmark impl) after '>'
if (state.src.charCodeAt(pos) === 0x20) { pos++; }
oldIndent = state.blkIndent;
state.blkIndent = 0;
+ // skip spaces after ">" and re-calculate offset
+ initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);
+
oldBMarks = [ state.bMarks[startLine] ];
state.bMarks[startLine] = pos;
- // check if we have an empty blockquote
- pos = pos < max ? state.skipSpaces(pos) : pos;
+ while (pos < max) {
+ ch = state.src.charCodeAt(pos);
+
+ if (isSpace(ch)) {
+ if (ch === 0x09) {
+ offset += 4 - offset % 4;
+ } else {
+ offset++;
+ }
+ } else {
+ break;
+ }
+
+ pos++;
+ }
+
lastLineEmpty = pos >= max;
+ oldSCount = [ state.sCount[startLine] ];
+ state.sCount[startLine] = offset - initial;
+
oldTShift = [ state.tShift[startLine] ];
state.tShift[startLine] = pos - state.bMarks[startLine];
@@ -2505,7 +2583,7 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
// - - -
// ```
for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {
- if (state.tShift[nextLine] < oldIndent) { break; }
+ if (state.sCount[nextLine] < oldIndent) { break; }
pos = state.bMarks[nextLine] + state.tShift[nextLine];
max = state.eMarks[nextLine];
@@ -2518,15 +2596,36 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
if (state.src.charCodeAt(pos++) === 0x3E/* > */) {
// This line is inside the blockquote.
- // skip one optional space after '>'
+ // skip one optional space (but not tab, check cmark impl) after '>'
if (state.src.charCodeAt(pos) === 0x20) { pos++; }
+ // skip spaces after ">" and re-calculate offset
+ initial = offset = state.sCount[nextLine] + pos - (state.bMarks[nextLine] + state.tShift[nextLine]);
+
oldBMarks.push(state.bMarks[nextLine]);
state.bMarks[nextLine] = pos;
- pos = pos < max ? state.skipSpaces(pos) : pos;
+ while (pos < max) {
+ ch = state.src.charCodeAt(pos);
+
+ if (isSpace(ch)) {
+ if (ch === 0x09) {
+ offset += 4 - offset % 4;
+ } else {
+ offset++;
+ }
+ } else {
+ break;
+ }
+
+ pos++;
+ }
+
lastLineEmpty = pos >= max;
+ oldSCount.push(state.sCount[nextLine]);
+ state.sCount[nextLine] = offset - initial;
+
oldTShift.push(state.tShift[nextLine]);
state.tShift[nextLine] = pos - state.bMarks[nextLine];
continue;
@@ -2547,12 +2646,11 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
oldBMarks.push(state.bMarks[nextLine]);
oldTShift.push(state.tShift[nextLine]);
+ oldSCount.push(state.sCount[nextLine]);
- // A negative number means that this is a paragraph continuation;
+ // A negative indentation means that this is a paragraph continuation
//
- // Any negative number will do the job here, but it's better for it
- // to be large enough to make any bugs obvious.
- state.tShift[nextLine] = -1;
+ state.sCount[nextLine] = -1;
}
oldParentType = state.parentType;
@@ -2575,13 +2673,14 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
for (i = 0; i < oldTShift.length; i++) {
state.bMarks[i + startLine] = oldBMarks[i];
state.tShift[i + startLine] = oldTShift[i];
+ state.sCount[i + startLine] = oldSCount[i];
}
state.blkIndent = oldIndent;
return true;
};
-},{}],20:[function(require,module,exports){
+},{"../common/utils":5}],20:[function(require,module,exports){
// Code block (4 spaces padded)
'use strict';
@@ -2590,7 +2689,7 @@ module.exports = function blockquote(state, startLine, endLine, silent) {
module.exports = function code(state, startLine, endLine/*, silent*/) {
var nextLine, last, token;
- if (state.tShift[startLine] - state.blkIndent < 4) { return false; }
+ if (state.sCount[startLine] - state.blkIndent < 4) { return false; }
last = nextLine = startLine + 1;
@@ -2599,7 +2698,7 @@ module.exports = function code(state, startLine, endLine/*, silent*/) {
nextLine++;
continue;
}
- if (state.tShift[nextLine] - state.blkIndent >= 4) {
+ if (state.sCount[nextLine] - state.blkIndent >= 4) {
nextLine++;
last = nextLine;
continue;
@@ -2666,7 +2765,7 @@ module.exports = function fence(state, startLine, endLine, silent) {
pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];
max = state.eMarks[nextLine];
- if (pos < max && state.tShift[nextLine] < state.blkIndent) {
+ if (pos < max && state.sCount[nextLine] < state.blkIndent) {
// non-empty line with negative indent should stop the list:
// - ```
// test
@@ -2675,7 +2774,7 @@ module.exports = function fence(state, startLine, endLine, silent) {
if (state.src.charCodeAt(pos) !== marker) { continue; }
- if (state.tShift[nextLine] - state.blkIndent >= 4) {
+ if (state.sCount[nextLine] - state.blkIndent >= 4) {
// closing fence should be indented less than 4 spaces
continue;
}
@@ -2696,7 +2795,7 @@ module.exports = function fence(state, startLine, endLine, silent) {
}
// If a fence has heading spaces, they should be removed from its inner block
- len = state.tShift[startLine];
+ len = state.sCount[startLine];
state.line = nextLine + (haveEndMarker ? 1 : 0);
@@ -2714,6 +2813,8 @@ module.exports = function fence(state, startLine, endLine, silent) {
'use strict';
+var isSpace = require('../common/utils').isSpace;
+
module.exports = function heading(state, startLine, endLine, silent) {
var ch, level, tmp, token,
@@ -2738,9 +2839,9 @@ module.exports = function heading(state, startLine, endLine, silent) {
// Let's cut tails like ' ### ' from the end of string
- max = state.skipCharsBack(max, 0x20, pos); // space
+ max = state.skipSpacesBack(max, pos);
tmp = state.skipCharsBack(max, 0x23, pos); // #
- if (tmp > pos && state.src.charCodeAt(tmp - 1) === 0x20/* space */) {
+ if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {
max = tmp;
}
@@ -2761,11 +2862,13 @@ module.exports = function heading(state, startLine, endLine, silent) {
return true;
};
-},{}],23:[function(require,module,exports){
+},{"../common/utils":5}],23:[function(require,module,exports){
// Horizontal rule
'use strict';
+var isSpace = require('../common/utils').isSpace;
+
module.exports = function hr(state, startLine, endLine, silent) {
var marker, cnt, ch, token,
@@ -2781,12 +2884,12 @@ module.exports = function hr(state, startLine, endLine, silent) {
return false;
}
- // markers can be mixed with spaces, but there should be at least 3 one
+ // markers can be mixed with spaces, but there should be at least 3 of them
cnt = 1;
while (pos < max) {
ch = state.src.charCodeAt(pos++);
- if (ch !== marker && ch !== 0x20/* space */) { return false; }
+ if (ch !== marker && !isSpace(ch)) { return false; }
if (ch === marker) { cnt++; }
}
@@ -2803,7 +2906,7 @@ module.exports = function hr(state, startLine, endLine, silent) {
return true;
};
-},{}],24:[function(require,module,exports){
+},{"../common/utils":5}],24:[function(require,module,exports){
// HTML block
'use strict';
@@ -2854,7 +2957,7 @@ module.exports = function html_block(state, startLine, endLine, silent) {
// Let's roll down till block end.
if (!HTML_SEQUENCES[i][1].test(lineText)) {
for (; nextLine < endLine; nextLine++) {
- if (state.tShift[nextLine] < state.blkIndent) { break; }
+ if (state.sCount[nextLine] < state.blkIndent) { break; }
pos = state.bMarks[nextLine] + state.tShift[nextLine];
max = state.eMarks[nextLine];
@@ -2887,11 +2990,11 @@ module.exports = function lheading(state, startLine, endLine/*, silent*/) {
next = startLine + 1;
if (next >= endLine) { return false; }
- if (state.tShift[next] < state.blkIndent) { return false; }
+ if (state.sCount[next] < state.blkIndent) { return false; }
// Scan next line
- if (state.tShift[next] - state.blkIndent > 3) { return false; }
+ if (state.sCount[next] - state.blkIndent > 3) { return false; }
pos = state.bMarks[next] + state.tShift[next];
max = state.eMarks[next];
@@ -2933,11 +3036,13 @@ module.exports = function lheading(state, startLine, endLine/*, silent*/) {
'use strict';
+var isSpace = require('../common/utils').isSpace;
+
// Search `[-+*][\n ]`, returns next pos arter marker on success
// or -1 on fail.
function skipBulletListMarker(state, startLine) {
- var marker, pos, max;
+ var marker, pos, max, ch;
pos = state.bMarks[startLine] + state.tShift[startLine];
max = state.eMarks[startLine];
@@ -2950,9 +3055,13 @@ function skipBulletListMarker(state, startLine) {
return -1;
}
- if (pos < max && state.src.charCodeAt(pos) !== 0x20) {
- // " 1.test " - is not a list item
- return -1;
+ if (pos < max) {
+ ch = state.src.charCodeAt(pos);
+
+ if (!isSpace(ch)) {
+ // " -test " - is not a list item
+ return -1;
+ }
}
return pos;
@@ -2997,9 +3106,13 @@ function skipOrderedListMarker(state, startLine) {
}
- if (pos < max && state.src.charCodeAt(pos) !== 0x20/* space */) {
- // " 1.test " - is not a list item
- return -1;
+ if (pos < max) {
+ ch = state.src.charCodeAt(pos);
+
+ if (!isSpace(ch)) {
+ // " 1.test " - is not a list item
+ return -1;
+ }
}
return pos;
}
@@ -3020,13 +3133,18 @@ function markTightParagraphs(state, idx) {
module.exports = function list(state, startLine, endLine, silent) {
var nextLine,
+ initial,
+ offset,
indent,
oldTShift,
oldIndent,
+ oldLIndent,
oldTight,
oldParentType,
start,
posAfterMarker,
+ ch,
+ pos,
max,
indentAfterMarker,
markerValue,
@@ -3085,14 +3203,34 @@ module.exports = function list(state, startLine, endLine, silent) {
terminatorRules = state.md.block.ruler.getRules('list');
while (nextLine < endLine) {
- contentStart = state.skipSpaces(posAfterMarker);
+ pos = posAfterMarker;
max = state.eMarks[nextLine];
+ initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);
+
+ while (pos < max) {
+ ch = state.src.charCodeAt(pos);
+
+ if (isSpace(ch)) {
+ if (ch === 0x09) {
+ offset += 4 - offset % 4;
+ } else {
+ offset++;
+ }
+ } else {
+ break;
+ }
+
+ pos++;
+ }
+
+ contentStart = pos;
+
if (contentStart >= max) {
// trimming space in "- \n 3" case, indent is 1 here
indentAfterMarker = 1;
} else {
- indentAfterMarker = contentStart - posAfterMarker;
+ indentAfterMarker = offset - initial;
}
// If we have more than 4 spaces, the indent is 1
@@ -3101,7 +3239,7 @@ module.exports = function list(state, startLine, endLine, silent) {
// " - test"
// ^^^^^ - calculating total length of this thing
- indent = (posAfterMarker - state.bMarks[nextLine]) + indentAfterMarker;
+ indent = initial + indentAfterMarker;
// Run subparser & write tokens
token = state.push('list_item_open', 'li', 1);
@@ -3111,11 +3249,13 @@ module.exports = function list(state, startLine, endLine, silent) {
oldIndent = state.blkIndent;
oldTight = state.tight;
oldTShift = state.tShift[startLine];
+ oldLIndent = state.sCount[startLine];
oldParentType = state.parentType;
- state.tShift[startLine] = contentStart - state.bMarks[startLine];
state.blkIndent = indent;
state.tight = true;
state.parentType = 'list';
+ state.tShift[startLine] = contentStart - state.bMarks[startLine];
+ state.sCount[startLine] = offset;
state.md.block.tokenize(state, startLine, endLine, true);
@@ -3129,6 +3269,7 @@ module.exports = function list(state, startLine, endLine, silent) {
state.blkIndent = oldIndent;
state.tShift[startLine] = oldTShift;
+ state.sCount[startLine] = oldLIndent;
state.tight = oldTight;
state.parentType = oldParentType;
@@ -3148,7 +3289,7 @@ module.exports = function list(state, startLine, endLine, silent) {
//
// Try to check if list is terminated or continued.
//
- if (state.tShift[nextLine] < state.blkIndent) { break; }
+ if (state.sCount[nextLine] < state.blkIndent) { break; }
// fail if terminating block found
terminate = false;
@@ -3191,7 +3332,7 @@ module.exports = function list(state, startLine, endLine, silent) {
return true;
};
-},{}],27:[function(require,module,exports){
+},{"../common/utils":5}],27:[function(require,module,exports){
// Paragraph
'use strict';
@@ -3207,10 +3348,10 @@ module.exports = function paragraph(state, startLine/*, endLine*/) {
for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
// this would be a code block normally, but after paragraph
// it's considered a lazy continuation regardless of what's there
- if (state.tShift[nextLine] - state.blkIndent > 3) { continue; }
+ if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }
// quirk for blockquotes, this line should already be checked by that rule
- if (state.tShift[nextLine] < 0) { continue; }
+ if (state.sCount[nextLine] < 0) { continue; }
// Some tags can terminate paragraph without empty line.
terminate = false;
@@ -3247,6 +3388,7 @@ module.exports = function paragraph(state, startLine/*, endLine*/) {
var parseLinkDestination = require('../helpers/parse_link_destination');
var parseLinkTitle = require('../helpers/parse_link_title');
var normalizeReference = require('../common/utils').normalizeReference;
+var isSpace = require('../common/utils').isSpace;
module.exports = function reference(state, startLine, _endLine, silent) {
@@ -3291,10 +3433,10 @@ module.exports = function reference(state, startLine, _endLine, silent) {
for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
// this would be a code block normally, but after paragraph
// it's considered a lazy continuation regardless of what's there
- if (state.tShift[nextLine] - state.blkIndent > 3) { continue; }
+ if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }
// quirk for blockquotes, this line should already be checked by that rule
- if (state.tShift[nextLine] < 0) { continue; }
+ if (state.sCount[nextLine] < 0) { continue; }
// Some tags can terminate paragraph without empty line.
terminate = false;
@@ -3335,7 +3477,7 @@ module.exports = function reference(state, startLine, _endLine, silent) {
ch = str.charCodeAt(pos);
if (ch === 0x0A) {
lines++;
- } else if (ch === 0x20) {
+ } else if (isSpace(ch)) {
/*eslint no-empty:0*/
} else {
break;
@@ -3364,7 +3506,7 @@ module.exports = function reference(state, startLine, _endLine, silent) {
ch = str.charCodeAt(pos);
if (ch === 0x0A) {
lines++;
- } else if (ch === 0x20) {
+ } else if (isSpace(ch)) {
/*eslint no-empty:0*/
} else {
break;
@@ -3385,7 +3527,11 @@ module.exports = function reference(state, startLine, _endLine, silent) {
}
// skip trailing spaces until the rest of the line
- while (pos < max && str.charCodeAt(pos) === 0x20/* space */) { pos++; }
+ while (pos < max) {
+ ch = str.charCodeAt(pos);
+ if (!isSpace(ch)) { break; }
+ pos++;
+ }
if (pos < max && str.charCodeAt(pos) !== 0x0A) {
if (title) {
@@ -3394,7 +3540,11 @@ module.exports = function reference(state, startLine, _endLine, silent) {
title = '';
pos = destEndPos;
lines = destEndLineNo;
- while (pos < max && str.charCodeAt(pos) === 0x20/* space */) { pos++; }
+ while (pos < max) {
+ ch = str.charCodeAt(pos);
+ if (!isSpace(ch)) { break; }
+ pos++;
+ }
}
}
@@ -3430,10 +3580,11 @@ module.exports = function reference(state, startLine, _endLine, silent) {
'use strict';
var Token = require('../token');
+var isSpace = require('../common/utils').isSpace;
function StateBlock(src, md, env, tokens) {
- var ch, s, start, pos, len, indent, indent_found;
+ var ch, s, start, pos, len, indent, offset, indent_found;
this.src = src;
@@ -3450,7 +3601,8 @@ function StateBlock(src, md, env, tokens) {
this.bMarks = []; // line begin offsets for fast jumps
this.eMarks = []; // line end offsets for fast jumps
- this.tShift = []; // indent for each line
+ this.tShift = []; // offsets of the first non-space characters (tabs not expanded)
+ this.sCount = []; // indents for each line (tabs expanded)
// block parser variables
this.blkIndent = 0; // required block content indent
@@ -3469,15 +3621,20 @@ function StateBlock(src, md, env, tokens) {
// Create caches
// Generate markers.
s = this.src;
- indent = 0;
indent_found = false;
- for (start = pos = indent = 0, len = s.length; pos < len; pos++) {
+ for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {
ch = s.charCodeAt(pos);
if (!indent_found) {
- if (ch === 0x20/* space */) {
+ if (isSpace(ch)) {
indent++;
+
+ if (ch === 0x09) {
+ offset += 4 - offset % 4;
+ } else {
+ offset++;
+ }
continue;
} else {
indent_found = true;
@@ -3489,9 +3646,11 @@ function StateBlock(src, md, env, tokens) {
this.bMarks.push(start);
this.eMarks.push(pos);
this.tShift.push(indent);
+ this.sCount.push(offset);
indent_found = false;
indent = 0;
+ offset = 0;
start = pos + 1;
}
}
@@ -3500,6 +3659,7 @@ function StateBlock(src, md, env, tokens) {
this.bMarks.push(s.length);
this.eMarks.push(s.length);
this.tShift.push(0);
+ this.sCount.push(0);
this.lineMax = this.bMarks.length - 1; // don't count last fake line
}
@@ -3533,8 +3693,21 @@ StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {
// Skip spaces from given position.
StateBlock.prototype.skipSpaces = function skipSpaces(pos) {
+ var ch;
+
for (var max = this.src.length; pos < max; pos++) {
- if (this.src.charCodeAt(pos) !== 0x20/* space */) { break; }
+ ch = this.src.charCodeAt(pos);
+ if (!isSpace(ch)) { break; }
+ }
+ return pos;
+};
+
+// Skip spaces from given position in reverse.
+StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {
+ if (pos <= min) { return pos; }
+
+ while (pos > min) {
+ if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1; }
}
return pos;
};
@@ -3559,28 +3732,18 @@ StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {
// cut lines range from source.
StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {
- var i, first, last, queue, shift,
+ var i, lineIndent, ch, first, last, queue, lineStart,
line = begin;
if (begin >= end) {
return '';
}
- // Opt: don't use push queue for single line;
- if (line + 1 === end) {
- first = this.bMarks[line] + Math.min(this.tShift[line], indent);
- last = this.eMarks[end - 1] + (keepLastLF ? 1 : 0);
- return this.src.slice(first, last);
- }
-
queue = new Array(end - begin);
for (i = 0; line < end; line++, i++) {
- shift = this.tShift[line];
- if (shift > indent) { shift = indent; }
- if (shift < 0) { shift = 0; }
-
- first = this.bMarks[line] + shift;
+ lineIndent = 0;
+ lineStart = first = this.bMarks[line];
if (line + 1 < end || keepLastLF) {
// No need for bounds check because we have fake entry on tail.
@@ -3589,6 +3752,25 @@ StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF
last = this.eMarks[line];
}
+ while (first < last && lineIndent < indent) {
+ ch = this.src.charCodeAt(first);
+
+ if (isSpace(ch)) {
+ if (ch === 0x09) {
+ lineIndent += 4 - lineIndent % 4;
+ } else {
+ lineIndent++;
+ }
+ } else if (first - lineStart < this.tShift[line]) {
+ // patched tShift masked characters to look like spaces (blockquotes, list markers)
+ lineIndent++;
+ } else {
+ break;
+ }
+
+ first++;
+ }
+
queue[i] = this.src.slice(first, last);
}
@@ -3601,7 +3783,7 @@ StateBlock.prototype.Token = Token;
module.exports = StateBlock;
-},{"../token":50}],30:[function(require,module,exports){
+},{"../common/utils":5,"../token":52}],30:[function(require,module,exports){
// GFM table, non-standard
'use strict';
@@ -3666,7 +3848,7 @@ module.exports = function table(state, startLine, endLine, silent) {
nextLine = startLine + 1;
- if (state.tShift[nextLine] < state.blkIndent) { return false; }
+ if (state.sCount[nextLine] < state.blkIndent) { return false; }
// first character of the second line should be '|' or '-'
@@ -3741,7 +3923,7 @@ module.exports = function table(state, startLine, endLine, silent) {
token.map = tbodyLines = [ startLine + 2, 0 ];
for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {
- if (state.tShift[nextLine] < state.blkIndent) { break; }
+ if (state.sCount[nextLine] < state.blkIndent) { break; }
lineText = getLine(state, nextLine).trim();
if (lineText.indexOf('|') === -1) { break; }
@@ -3947,13 +4129,12 @@ module.exports = function linkify(state) {
'use strict';
-var TABS_SCAN_RE = /[\n\t]/g;
var NEWLINES_RE = /\r[\n\u0085]|[\u2424\u2028\u0085]/g;
var NULL_RE = /\u0000/g;
module.exports = function inline(state) {
- var str, lineStart, lastTabPos;
+ var str;
// Normalize newlines
str = state.src.replace(NEWLINES_RE, '\n');
@@ -3961,24 +4142,6 @@ module.exports = function inline(state) {
// Replace NULL characters
str = str.replace(NULL_RE, '\uFFFD');
- // Replace tabs with proper number of spaces (1..4)
- if (str.indexOf('\t') >= 0) {
- lineStart = 0;
- lastTabPos = 0;
-
- str = str.replace(TABS_SCAN_RE, function (match, offset) {
- var result;
- if (str.charCodeAt(offset) === 0x0A) {
- lineStart = offset + 1;
- lastTabPos = 0;
- return match;
- }
- result = ' '.slice((offset - lineStart - lastTabPos) % 4);
- lastTabPos = offset - lineStart + 1;
- return result;
- });
- }
-
state.src = str;
};
@@ -4262,7 +4425,7 @@ StateCore.prototype.Token = Token;
module.exports = StateCore;
-},{"../token":50}],38:[function(require,module,exports){
+},{"../token":52}],38:[function(require,module,exports){
// Process autolinks ''
'use strict';
@@ -4382,182 +4545,169 @@ module.exports = function backtick(state, silent) {
};
},{}],40:[function(require,module,exports){
-// Process *this* and _that_
+// For each opening emphasis-like marker find a matching closing one
//
'use strict';
-var isWhiteSpace = require('../common/utils').isWhiteSpace;
-var isPunctChar = require('../common/utils').isPunctChar;
-var isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;
+module.exports = function link_pairs(state) {
+ var i, j, lastDelim, currDelim,
+ delimiters = state.delimiters,
+ max = state.delimiters.length;
+ for (i = 0; i < max; i++) {
+ lastDelim = delimiters[i];
-// parse sequence of emphasis markers,
-// "start" should point at a valid marker
-function scanDelims(state, start) {
- var pos = start, lastChar, nextChar, count, can_open, can_close,
- isLastWhiteSpace, isLastPunctChar,
- isNextWhiteSpace, isNextPunctChar,
- left_flanking = true,
- right_flanking = true,
- max = state.posMax,
- marker = state.src.charCodeAt(start);
-
- // treat beginning of the line as a whitespace
- lastChar = start > 0 ? state.src.charCodeAt(start - 1) : 0x20;
+ if (!lastDelim.close) { continue; }
- while (pos < max && state.src.charCodeAt(pos) === marker) { pos++; }
+ j = i - lastDelim.jump - 1;
- count = pos - start;
-
- // treat end of the line as a whitespace
- nextChar = pos < max ? state.src.charCodeAt(pos) : 0x20;
-
- isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
- isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
+ while (j >= 0) {
+ currDelim = delimiters[j];
- isLastWhiteSpace = isWhiteSpace(lastChar);
- isNextWhiteSpace = isWhiteSpace(nextChar);
+ if (currDelim.open &&
+ currDelim.marker === lastDelim.marker &&
+ currDelim.end < 0 &&
+ currDelim.level === lastDelim.level) {
- if (isNextWhiteSpace) {
- left_flanking = false;
- } else if (isNextPunctChar) {
- if (!(isLastWhiteSpace || isLastPunctChar)) {
- left_flanking = false;
- }
- }
+ lastDelim.jump = i - j;
+ lastDelim.open = false;
+ currDelim.end = i;
+ currDelim.jump = 0;
+ break;
+ }
- if (isLastWhiteSpace) {
- right_flanking = false;
- } else if (isLastPunctChar) {
- if (!(isNextWhiteSpace || isNextPunctChar)) {
- right_flanking = false;
+ j -= currDelim.jump + 1;
}
}
+};
- if (marker === 0x5F /* _ */) {
- // "_" inside a word can neither open nor close an emphasis
- can_open = left_flanking && (!right_flanking || isLastPunctChar);
- can_close = right_flanking && (!left_flanking || isNextPunctChar);
- } else {
- can_open = left_flanking;
- can_close = right_flanking;
- }
+},{}],41:[function(require,module,exports){
+// Process *this* and _that_
+//
+'use strict';
- return {
- can_open: can_open,
- can_close: can_close,
- delims: count
- };
-}
-module.exports = function emphasis(state, silent) {
- var startCount,
- count,
- found,
- oldCount,
- newCount,
- stack,
- res,
- token,
- max = state.posMax,
+// Insert each marker as a separate text token, and add it to delimiter list
+//
+module.exports.tokenize = function emphasis(state, silent) {
+ var i, scanned, token,
start = state.pos,
marker = state.src.charCodeAt(start);
- if (marker !== 0x5F/* _ */ && marker !== 0x2A /* * */) { return false; }
- if (silent) { return false; } // don't run any pairs in validation mode
+ if (silent) { return false; }
- res = scanDelims(state, start);
- startCount = res.delims;
- if (!res.can_open) {
- state.pos += startCount;
- // Earlier we checked !silent, but this implementation does not need it
- state.pending += state.src.slice(start, state.pos);
- return true;
- }
+ if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false; }
- state.pos = start + startCount;
- stack = [ startCount ];
+ scanned = state.scanDelims(state.pos, marker === 0x2A);
- while (state.pos < max) {
- if (state.src.charCodeAt(state.pos) === marker) {
- res = scanDelims(state, state.pos);
- count = res.delims;
- if (res.can_close) {
- oldCount = stack.pop();
- newCount = count;
-
- while (oldCount !== newCount) {
- if (newCount < oldCount) {
- stack.push(oldCount - newCount);
- break;
- }
+ for (i = 0; i < scanned.length; i++) {
+ token = state.push('text', '', 0);
+ token.content = String.fromCharCode(marker);
- // assert(newCount > oldCount)
- newCount -= oldCount;
+ state.delimiters.push({
+ // Char code of the starting marker (number).
+ //
+ marker: marker,
- if (stack.length === 0) { break; }
- state.pos += oldCount;
- oldCount = stack.pop();
- }
+ // An amount of characters before this one that's equivalent to
+ // current one. In plain English: if this delimiter does not open
+ // an emphasis, neither do previous `jump` characters.
+ //
+ // Used to skip sequences like "*****" in one step, for 1st asterisk
+ // value will be 0, for 2nd it's 1 and so on.
+ //
+ jump: i,
- if (stack.length === 0) {
- startCount = oldCount;
- found = true;
- break;
- }
- state.pos += count;
- continue;
- }
+ // A position of the token this delimiter corresponds to.
+ //
+ token: state.tokens.length - 1,
- if (res.can_open) { stack.push(count); }
- state.pos += count;
- continue;
- }
+ // Token level.
+ //
+ level: state.level,
- state.md.inline.skipToken(state);
- }
+ // If this delimiter is matched as a valid opener, `end` will be
+ // equal to its position, otherwise it's `-1`.
+ //
+ end: -1,
- if (!found) {
- // parser failed to find ending tag, so it's not valid emphasis
- state.pos = start;
- return false;
+ // Boolean flags that determine if this delimiter could open or close
+ // an emphasis.
+ //
+ open: scanned.can_open,
+ close: scanned.can_close
+ });
}
- // found!
- state.posMax = state.pos;
- state.pos = start + startCount;
+ state.pos += scanned.length;
- // Earlier we checked !silent, but this implementation does not need it
+ return true;
+};
- // we have `startCount` starting and ending markers,
- // now trying to serialize them into tokens
- for (count = startCount; count > 1; count -= 2) {
- token = state.push('strong_open', 'strong', 1);
- token.markup = String.fromCharCode(marker) + String.fromCharCode(marker);
- }
- if (count % 2) {
- token = state.push('em_open', 'em', 1);
- token.markup = String.fromCharCode(marker);
- }
- state.md.inline.tokenize(state);
+// Walk through delimiter list and replace text tokens with tags
+//
+module.exports.postProcess = function emphasis(state) {
+ var i,
+ startDelim,
+ endDelim,
+ token,
+ ch,
+ isStrong,
+ delimiters = state.delimiters,
+ max = state.delimiters.length;
- if (count % 2) {
- token = state.push('em_close', 'em', -1);
- token.markup = String.fromCharCode(marker);
- }
- for (count = startCount; count > 1; count -= 2) {
- token = state.push('strong_close', 'strong', -1);
- token.markup = String.fromCharCode(marker) + String.fromCharCode(marker);
- }
+ for (i = 0; i < max; i++) {
+ startDelim = delimiters[i];
- state.pos = state.posMax + startCount;
- state.posMax = max;
- return true;
+ if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {
+ continue;
+ }
+
+ // Process only opening markers
+ if (startDelim.end === -1) {
+ continue;
+ }
+
+ endDelim = delimiters[startDelim.end];
+
+ // If the next delimiter has the same marker and is adjacent to this one,
+ // merge those into one strong delimiter.
+ //
+ // `whatever` -> `whatever`
+ //
+ isStrong = i + 1 < max &&
+ delimiters[i + 1].end === startDelim.end - 1 &&
+ delimiters[i + 1].token === startDelim.token + 1 &&
+ delimiters[startDelim.end - 1].token === endDelim.token - 1 &&
+ delimiters[i + 1].marker === startDelim.marker;
+
+ ch = String.fromCharCode(startDelim.marker);
+
+ token = state.tokens[startDelim.token];
+ token.type = isStrong ? 'strong_open' : 'em_open';
+ token.tag = isStrong ? 'strong' : 'em';
+ token.nesting = 1;
+ token.markup = isStrong ? ch + ch : ch;
+ token.content = '';
+
+ token = state.tokens[endDelim.token];
+ token.type = isStrong ? 'strong_close' : 'em_close';
+ token.tag = isStrong ? 'strong' : 'em';
+ token.nesting = -1;
+ token.markup = isStrong ? ch + ch : ch;
+ token.content = '';
+
+ if (isStrong) {
+ state.tokens[delimiters[i + 1].token].content = '';
+ state.tokens[delimiters[startDelim.end - 1].token].content = '';
+ i++;
+ }
+ }
};
-},{"../common/utils":5}],41:[function(require,module,exports){
+},{}],42:[function(require,module,exports){
// Process html entity - {, ¯, ", ...
'use strict';
@@ -4607,11 +4757,13 @@ module.exports = function entity(state, silent) {
return true;
};
-},{"../common/entities":1,"../common/utils":5}],42:[function(require,module,exports){
+},{"../common/entities":1,"../common/utils":5}],43:[function(require,module,exports){
// Proceess escaped chars and hardbreaks
'use strict';
+var isSpace = require('../common/utils').isSpace;
+
var ESCAPED = [];
for (var i = 0; i < 256; i++) { ESCAPED.push(0); }
@@ -4643,7 +4795,11 @@ module.exports = function escape(state, silent) {
pos++;
// skip leading whitespaces from next line
- while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; }
+ while (pos < max) {
+ ch = state.src.charCodeAt(pos);
+ if (!isSpace(ch)) { break; }
+ pos++;
+ }
state.pos = pos;
return true;
@@ -4655,7 +4811,7 @@ module.exports = function escape(state, silent) {
return true;
};
-},{}],43:[function(require,module,exports){
+},{"../common/utils":5}],44:[function(require,module,exports){
// Process html tags
'use strict';
@@ -4704,7 +4860,7 @@ module.exports = function html_inline(state, silent) {
return true;
};
-},{"../common/html_re":3}],44:[function(require,module,exports){
+},{"../common/html_re":3}],45:[function(require,module,exports){
// Process 
'use strict';
@@ -4713,6 +4869,7 @@ var parseLinkLabel = require('../helpers/parse_link_label');
var parseLinkDestination = require('../helpers/parse_link_destination');
var parseLinkTitle = require('../helpers/parse_link_title');
var normalizeReference = require('../common/utils').normalizeReference;
+var isSpace = require('../common/utils').isSpace;
module.exports = function image(state, silent) {
@@ -4752,7 +4909,7 @@ module.exports = function image(state, silent) {
pos++;
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
if (pos >= max) { return false; }
@@ -4774,7 +4931,7 @@ module.exports = function image(state, silent) {
start = pos;
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
// [link]( "title" )
@@ -4788,7 +4945,7 @@ module.exports = function image(state, silent) {
// ^^ skipping these spaces
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
} else {
title = '';
@@ -4809,7 +4966,7 @@ module.exports = function image(state, silent) {
// ^^ optional whitespace (can include newlines)
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {
@@ -4842,16 +4999,12 @@ module.exports = function image(state, silent) {
// so all that's left to do is to call tokenizer.
//
if (!silent) {
- state.pos = labelStart;
- state.posMax = labelEnd;
-
- var newState = new state.md.inline.State(
+ state.md.inline.parse(
state.src.slice(labelStart, labelEnd),
state.md,
state.env,
tokens = []
);
- newState.md.inline.tokenize(newState);
token = state.push('image', 'img', 0);
token.attrs = attrs = [ [ 'src', href ], [ 'alt', '' ] ];
@@ -4866,7 +5019,7 @@ module.exports = function image(state, silent) {
return true;
};
-},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_label":8,"../helpers/parse_link_title":9}],45:[function(require,module,exports){
+},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_label":8,"../helpers/parse_link_title":9}],46:[function(require,module,exports){
// Process [link]( "stuff")
'use strict';
@@ -4875,6 +5028,7 @@ var parseLinkLabel = require('../helpers/parse_link_label');
var parseLinkDestination = require('../helpers/parse_link_destination');
var parseLinkTitle = require('../helpers/parse_link_title');
var normalizeReference = require('../common/utils').normalizeReference;
+var isSpace = require('../common/utils').isSpace;
module.exports = function link(state, silent) {
@@ -4912,7 +5066,7 @@ module.exports = function link(state, silent) {
pos++;
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
if (pos >= max) { return false; }
@@ -4934,7 +5088,7 @@ module.exports = function link(state, silent) {
start = pos;
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
// [link]( "title" )
@@ -4948,7 +5102,7 @@ module.exports = function link(state, silent) {
// ^^ skipping these spaces
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
} else {
title = '';
@@ -4969,7 +5123,7 @@ module.exports = function link(state, silent) {
// ^^ optional whitespace (can include newlines)
for (; pos < max; pos++) {
code = state.src.charCodeAt(pos);
- if (code !== 0x20 && code !== 0x0A) { break; }
+ if (!isSpace(code) && code !== 0x0A) { break; }
}
if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {
@@ -5021,7 +5175,7 @@ module.exports = function link(state, silent) {
return true;
};
-},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_label":8,"../helpers/parse_link_title":9}],46:[function(require,module,exports){
+},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_label":8,"../helpers/parse_link_title":9}],47:[function(require,module,exports){
// Proceess '\n'
'use strict';
@@ -5062,13 +5216,17 @@ module.exports = function newline(state, silent) {
return true;
};
-},{}],47:[function(require,module,exports){
+},{}],48:[function(require,module,exports){
// Inline parser state
'use strict';
-var Token = require('../token');
+var Token = require('../token');
+var isWhiteSpace = require('../common/utils').isWhiteSpace;
+var isPunctChar = require('../common/utils').isPunctChar;
+var isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;
+
function StateInline(src, md, env, outTokens) {
this.src = src;
@@ -5084,6 +5242,8 @@ function StateInline(src, md, env, outTokens) {
this.cache = {}; // Stores { start: end } pairs. Useful for backtrack
// optimization of pairs parse (emphasis, strikes).
+
+ this.delimiters = []; // Emphasis-like delimiters
}
@@ -5118,47 +5278,31 @@ StateInline.prototype.push = function (type, tag, nesting) {
return token;
};
-// re-export Token class to use in block rules
-StateInline.prototype.Token = Token;
-
-module.exports = StateInline;
-
-},{"../token":50}],48:[function(require,module,exports){
-// ~~strike through~~
+// Scan a sequence of emphasis-like markers, and determine whether
+// it can start an emphasis sequence or end an emphasis sequence.
//
-'use strict';
-
-
-var isWhiteSpace = require('../common/utils').isWhiteSpace;
-var isPunctChar = require('../common/utils').isPunctChar;
-var isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;
-
-
-// parse sequence of markers,
-// "start" should point at a valid marker
-function scanDelims(state, start) {
- var pos = start, lastChar, nextChar, count,
+// - start - position to scan from (it should point at a valid marker);
+// - canSplitWord - determine if these markers can be found inside a word
+//
+StateInline.prototype.scanDelims = function (start, canSplitWord) {
+ var pos = start, lastChar, nextChar, count, can_open, can_close,
isLastWhiteSpace, isLastPunctChar,
isNextWhiteSpace, isNextPunctChar,
- can_open = true,
- can_close = true,
- max = state.posMax,
- marker = state.src.charCodeAt(start);
+ left_flanking = true,
+ right_flanking = true,
+ max = this.posMax,
+ marker = this.src.charCodeAt(start);
// treat beginning of the line as a whitespace
- lastChar = start > 0 ? state.src.charCodeAt(start - 1) : 0x20;
+ lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;
- while (pos < max && state.src.charCodeAt(pos) === marker) { pos++; }
-
- if (pos >= max) {
- can_open = false;
- }
+ while (pos < max && this.src.charCodeAt(pos) === marker) { pos++; }
count = pos - start;
// treat end of the line as a whitespace
- nextChar = pos < max ? state.src.charCodeAt(pos) : 0x20;
+ nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;
isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
@@ -5167,106 +5311,163 @@ function scanDelims(state, start) {
isNextWhiteSpace = isWhiteSpace(nextChar);
if (isNextWhiteSpace) {
- can_open = false;
+ left_flanking = false;
} else if (isNextPunctChar) {
if (!(isLastWhiteSpace || isLastPunctChar)) {
- can_open = false;
+ left_flanking = false;
}
}
if (isLastWhiteSpace) {
- can_close = false;
+ right_flanking = false;
} else if (isLastPunctChar) {
if (!(isNextWhiteSpace || isNextPunctChar)) {
- can_close = false;
+ right_flanking = false;
}
}
+ if (!canSplitWord) {
+ can_open = left_flanking && (!right_flanking || isLastPunctChar);
+ can_close = right_flanking && (!left_flanking || isNextPunctChar);
+ } else {
+ can_open = left_flanking;
+ can_close = right_flanking;
+ }
+
return {
- can_open: can_open,
+ can_open: can_open,
can_close: can_close,
- delims: count
+ length: count
};
-}
+};
-module.exports = function strikethrough(state, silent) {
- var startCount,
- count,
- tagCount,
- found,
- stack,
- res,
- token,
- max = state.posMax,
+// re-export Token class to use in block rules
+StateInline.prototype.Token = Token;
+
+
+module.exports = StateInline;
+
+},{"../common/utils":5,"../token":52}],49:[function(require,module,exports){
+// ~~strike through~~
+//
+'use strict';
+
+
+// Insert each marker as a separate text token, and add it to delimiter list
+//
+module.exports.tokenize = function strikethrough(state, silent) {
+ var i, scanned, token, len, ch,
start = state.pos,
marker = state.src.charCodeAt(start);
+ if (silent) { return false; }
+
if (marker !== 0x7E/* ~ */) { return false; }
- if (silent) { return false; } // don't run any pairs in validation mode
-
- res = scanDelims(state, start);
- startCount = res.delims;
- if (!res.can_open) {
- state.pos += startCount;
- // Earlier we checked !silent, but this implementation does not need it
- state.pending += state.src.slice(start, state.pos);
- return true;
+
+ scanned = state.scanDelims(state.pos, true);
+ len = scanned.length;
+ ch = String.fromCharCode(marker);
+
+ if (len < 2) { return false; }
+
+ if (len % 2) {
+ token = state.push('text', '', 0);
+ token.content = ch;
+ len--;
}
- stack = Math.floor(startCount / 2);
- if (stack <= 0) { return false; }
- state.pos = start + startCount;
+ for (i = 0; i < len; i += 2) {
+ token = state.push('text', '', 0);
+ token.content = ch + ch;
- while (state.pos < max) {
- if (state.src.charCodeAt(state.pos) === marker) {
- res = scanDelims(state, state.pos);
- count = res.delims;
- tagCount = Math.floor(count / 2);
- if (res.can_close) {
- if (tagCount >= stack) {
- state.pos += count - 2;
- found = true;
- break;
- }
- stack -= tagCount;
- state.pos += count;
- continue;
- }
+ state.delimiters.push({
+ marker: marker,
+ jump: i,
+ token: state.tokens.length - 1,
+ level: state.level,
+ end: -1,
+ open: scanned.can_open,
+ close: scanned.can_close
+ });
+ }
+
+ state.pos += scanned.length;
- if (res.can_open) { stack += tagCount; }
- state.pos += count;
+ return true;
+};
+
+
+// Walk through delimiter list and replace text tokens with tags
+//
+module.exports.postProcess = function strikethrough(state) {
+ var i, j,
+ startDelim,
+ endDelim,
+ token,
+ loneMarkers = [],
+ delimiters = state.delimiters,
+ max = state.delimiters.length;
+
+ for (i = 0; i < max; i++) {
+ startDelim = delimiters[i];
+
+ if (startDelim.marker !== 0x7E/* ~ */) {
continue;
}
- state.md.inline.skipToken(state);
- }
+ if (startDelim.end === -1) {
+ continue;
+ }
- if (!found) {
- // parser failed to find ending tag, so it's not valid emphasis
- state.pos = start;
- return false;
- }
+ endDelim = delimiters[startDelim.end];
- // found!
- state.posMax = state.pos;
- state.pos = start + 2;
+ token = state.tokens[startDelim.token];
+ token.type = 's_open';
+ token.tag = 's';
+ token.nesting = 1;
+ token.markup = '~~';
+ token.content = '';
- // Earlier we checked !silent, but this implementation does not need it
- token = state.push('s_open', 's', 1);
- token.markup = '~~';
+ token = state.tokens[endDelim.token];
+ token.type = 's_close';
+ token.tag = 's';
+ token.nesting = -1;
+ token.markup = '~~';
+ token.content = '';
- state.md.inline.tokenize(state);
+ if (state.tokens[endDelim.token - 1].type === 'text' &&
+ state.tokens[endDelim.token - 1].content === '~') {
- token = state.push('s_close', 's', -1);
- token.markup = '~~';
+ loneMarkers.push(endDelim.token - 1);
+ }
+ }
- state.pos = state.posMax + 2;
- state.posMax = max;
- return true;
+ // If a marker sequence has an odd number of characters, it's splitted
+ // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the
+ // start of the sequence.
+ //
+ // So, we have to move all those markers after subsequent s_close tags.
+ //
+ while (loneMarkers.length) {
+ i = loneMarkers.pop();
+ j = i + 1;
+
+ while (j < state.tokens.length && state.tokens[j].type === 's_close') {
+ j++;
+ }
+
+ j--;
+
+ if (i !== j) {
+ token = state.tokens[j];
+ state.tokens[j] = state.tokens[i];
+ state.tokens[i] = token;
+ }
+ }
};
-},{"../common/utils":5}],49:[function(require,module,exports){
+},{}],50:[function(require,module,exports){
// Skip text characters for text token, place those to pending buffer
// and increment current pos
@@ -5357,7 +5558,42 @@ module.exports = function text(state, silent) {
return true;
};*/
-},{}],50:[function(require,module,exports){
+},{}],51:[function(require,module,exports){
+// Merge adjacent text nodes into one, and re-calculate all token levels
+//
+'use strict';
+
+
+module.exports = function text_collapse(state) {
+ var curr, last,
+ level = 0,
+ tokens = state.tokens,
+ max = state.tokens.length;
+
+ for (curr = last = 0; curr < max; curr++) {
+ // re-calculate levels
+ level += tokens[curr].nesting;
+ tokens[curr].level = level;
+
+ if (tokens[curr].type === 'text' &&
+ curr + 1 < max &&
+ tokens[curr + 1].type === 'text') {
+
+ // collapse two adjacent text nodes
+ tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
+ } else {
+ if (curr !== last) { tokens[last] = tokens[curr]; }
+
+ last++;
+ }
+ }
+
+ if (curr !== last) {
+ tokens.length = last;
+ }
+};
+
+},{}],52:[function(require,module,exports){
// Token class
'use strict';
@@ -5508,17 +5744,22 @@ Token.prototype.attrPush = function attrPush(attrData) {
module.exports = Token;
-},{}],51:[function(require,module,exports){
+},{}],53:[function(require,module,exports){
(function (global){
-/*! http://mths.be/punycode v1.2.4 by @mathias */
+/*! https://mths.be/punycode v1.3.2 by @mathias */
;(function(root) {
/** Detect free variables */
- var freeExports = typeof exports == 'object' && exports;
+ var freeExports = typeof exports == 'object' && exports &&
+ !exports.nodeType && exports;
var freeModule = typeof module == 'object' && module &&
- module.exports == freeExports && module;
+ !module.nodeType && module;
var freeGlobal = typeof global == 'object' && global;
- if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
+ if (
+ freeGlobal.global === freeGlobal ||
+ freeGlobal.window === freeGlobal ||
+ freeGlobal.self === freeGlobal
+ ) {
root = freeGlobal;
}
@@ -5544,8 +5785,8 @@ module.exports = Token;
/** Regular expressions */
regexPunycode = /^xn--/,
- regexNonASCII = /[^ -~]/, // unprintable ASCII chars + non-ASCII chars
- regexSeparators = /\x2E|\u3002|\uFF0E|\uFF61/g, // RFC 3490 separators
+ regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
+ regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
/** Error messages */
errors = {
@@ -5584,23 +5825,37 @@ module.exports = Token;
*/
function map(array, fn) {
var length = array.length;
+ var result = [];
while (length--) {
- array[length] = fn(array[length]);
+ result[length] = fn(array[length]);
}
- return array;
+ return result;
}
/**
- * A simple `Array#map`-like wrapper to work with domain name strings.
+ * A simple `Array#map`-like wrapper to work with domain name strings or email
+ * addresses.
* @private
- * @param {String} domain The domain name.
+ * @param {String} domain The domain name or email address.
* @param {Function} callback The function that gets called for every
* character.
* @returns {Array} A new string of characters returned by the callback
* function.
*/
function mapDomain(string, fn) {
- return map(string.split(regexSeparators), fn).join('.');
+ var parts = string.split('@');
+ var result = '';
+ if (parts.length > 1) {
+ // In email addresses, only the domain name should be punycoded. Leave
+ // the local part (i.e. everything up to `@`) intact.
+ result = parts[0] + '@';
+ string = parts[1];
+ }
+ // Avoid `split(regex)` for IE8 compatibility. See #17.
+ string = string.replace(regexSeparators, '\x2E');
+ var labels = string.split('.');
+ var encoded = map(labels, fn).join('.');
+ return result + encoded;
}
/**
@@ -5610,7 +5865,7 @@ module.exports = Token;
* UCS-2 exposes as separate characters) into a single code point,
* matching UTF-16.
* @see `punycode.ucs2.encode`
- * @see
+ * @see
* @memberOf punycode.ucs2
* @name decode
* @param {String} string The Unicode input string (UCS-2).
@@ -5819,8 +6074,8 @@ module.exports = Token;
}
/**
- * Converts a string of Unicode symbols to a Punycode string of ASCII-only
- * symbols.
+ * Converts a string of Unicode symbols (e.g. a domain name label) to a
+ * Punycode string of ASCII-only symbols.
* @memberOf punycode
* @param {String} input The string of Unicode symbols.
* @returns {String} The resulting Punycode string of ASCII-only symbols.
@@ -5933,17 +6188,18 @@ module.exports = Token;
}
/**
- * Converts a Punycode string representing a domain name to Unicode. Only the
- * Punycoded parts of the domain name will be converted, i.e. it doesn't
- * matter if you call it on a string that has already been converted to
- * Unicode.
+ * Converts a Punycode string representing a domain name or an email address
+ * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
+ * it doesn't matter if you call it on a string that has already been
+ * converted to Unicode.
* @memberOf punycode
- * @param {String} domain The Punycode domain name to convert to Unicode.
+ * @param {String} input The Punycoded domain name or email address to
+ * convert to Unicode.
* @returns {String} The Unicode representation of the given Punycode
* string.
*/
- function toUnicode(domain) {
- return mapDomain(domain, function(string) {
+ function toUnicode(input) {
+ return mapDomain(input, function(string) {
return regexPunycode.test(string)
? decode(string.slice(4).toLowerCase())
: string;
@@ -5951,15 +6207,18 @@ module.exports = Token;
}
/**
- * Converts a Unicode string representing a domain name to Punycode. Only the
- * non-ASCII parts of the domain name will be converted, i.e. it doesn't
- * matter if you call it with a domain that's already in ASCII.
+ * Converts a Unicode string representing a domain name or an email address to
+ * Punycode. Only the non-ASCII parts of the domain name will be converted,
+ * i.e. it doesn't matter if you call it with a domain that's already in
+ * ASCII.
* @memberOf punycode
- * @param {String} domain The domain name to convert, as a Unicode string.
- * @returns {String} The Punycode representation of the given domain name.
+ * @param {String} input The domain name or email address to convert, as a
+ * Unicode string.
+ * @returns {String} The Punycode representation of the given domain name or
+ * email address.
*/
- function toASCII(domain) {
- return mapDomain(domain, function(string) {
+ function toASCII(input) {
+ return mapDomain(input, function(string) {
return regexNonASCII.test(string)
? 'xn--' + encode(string)
: string;
@@ -5975,11 +6234,11 @@ module.exports = Token;
* @memberOf punycode
* @type String
*/
- 'version': '1.2.4',
+ 'version': '1.3.2',
/**
* An object of methods to convert from JavaScript's internal character
* representation (UCS-2) to Unicode code points, and back.
- * @see
+ * @see
* @memberOf punycode
* @type Object
*/
@@ -6004,8 +6263,8 @@ module.exports = Token;
define('punycode', function() {
return punycode;
});
- } else if (freeExports && !freeExports.nodeType) {
- if (freeModule) { // in Node.js or RingoJS v0.8.0+
+ } else if (freeExports && freeModule) {
+ if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+
freeModule.exports = punycode;
} else { // in Narwhal or RingoJS v0.7.0-
for (key in punycode) {
@@ -6019,9 +6278,9 @@ module.exports = Token;
}(this));
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],52:[function(require,module,exports){
+},{}],54:[function(require,module,exports){
module.exports={"Aacute":"\u00C1","aacute":"\u00E1","Abreve":"\u0102","abreve":"\u0103","ac":"\u223E","acd":"\u223F","acE":"\u223E\u0333","Acirc":"\u00C2","acirc":"\u00E2","acute":"\u00B4","Acy":"\u0410","acy":"\u0430","AElig":"\u00C6","aelig":"\u00E6","af":"\u2061","Afr":"\uD835\uDD04","afr":"\uD835\uDD1E","Agrave":"\u00C0","agrave":"\u00E0","alefsym":"\u2135","aleph":"\u2135","Alpha":"\u0391","alpha":"\u03B1","Amacr":"\u0100","amacr":"\u0101","amalg":"\u2A3F","amp":"&","AMP":"&","andand":"\u2A55","And":"\u2A53","and":"\u2227","andd":"\u2A5C","andslope":"\u2A58","andv":"\u2A5A","ang":"\u2220","ange":"\u29A4","angle":"\u2220","angmsdaa":"\u29A8","angmsdab":"\u29A9","angmsdac":"\u29AA","angmsdad":"\u29AB","angmsdae":"\u29AC","angmsdaf":"\u29AD","angmsdag":"\u29AE","angmsdah":"\u29AF","angmsd":"\u2221","angrt":"\u221F","angrtvb":"\u22BE","angrtvbd":"\u299D","angsph":"\u2222","angst":"\u00C5","angzarr":"\u237C","Aogon":"\u0104","aogon":"\u0105","Aopf":"\uD835\uDD38","aopf":"\uD835\uDD52","apacir":"\u2A6F","ap":"\u2248","apE":"\u2A70","ape":"\u224A","apid":"\u224B","apos":"'","ApplyFunction":"\u2061","approx":"\u2248","approxeq":"\u224A","Aring":"\u00C5","aring":"\u00E5","Ascr":"\uD835\uDC9C","ascr":"\uD835\uDCB6","Assign":"\u2254","ast":"*","asymp":"\u2248","asympeq":"\u224D","Atilde":"\u00C3","atilde":"\u00E3","Auml":"\u00C4","auml":"\u00E4","awconint":"\u2233","awint":"\u2A11","backcong":"\u224C","backepsilon":"\u03F6","backprime":"\u2035","backsim":"\u223D","backsimeq":"\u22CD","Backslash":"\u2216","Barv":"\u2AE7","barvee":"\u22BD","barwed":"\u2305","Barwed":"\u2306","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":"\uD835\uDD05","bfr":"\uD835\uDD1F","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":"\uD835\uDD39","bopf":"\uD835\uDD53","bot":"\u22A5","bottom":"\u22A5","bowtie":"\u22C8","boxbox":"\u29C9","boxdl":"\u2510","boxdL":"\u2555","boxDl":"\u2556","boxDL":"\u2557","boxdr":"\u250C","boxdR":"\u2552","boxDr":"\u2553","boxDR":"\u2554","boxh":"\u2500","boxH":"\u2550","boxhd":"\u252C","boxHd":"\u2564","boxhD":"\u2565","boxHD":"\u2566","boxhu":"\u2534","boxHu":"\u2567","boxhU":"\u2568","boxHU":"\u2569","boxminus":"\u229F","boxplus":"\u229E","boxtimes":"\u22A0","boxul":"\u2518","boxuL":"\u255B","boxUl":"\u255C","boxUL":"\u255D","boxur":"\u2514","boxuR":"\u2558","boxUr":"\u2559","boxUR":"\u255A","boxv":"\u2502","boxV":"\u2551","boxvh":"\u253C","boxvH":"\u256A","boxVh":"\u256B","boxVH":"\u256C","boxvl":"\u2524","boxvL":"\u2561","boxVl":"\u2562","boxVL":"\u2563","boxvr":"\u251C","boxvR":"\u255E","boxVr":"\u255F","boxVR":"\u2560","bprime":"\u2035","breve":"\u02D8","Breve":"\u02D8","brvbar":"\u00A6","bscr":"\uD835\uDCB7","Bscr":"\u212C","bsemi":"\u204F","bsim":"\u223D","bsime":"\u22CD","bsolb":"\u29C5","bsol":"\\","bsolhsub":"\u27C8","bull":"\u2022","bullet":"\u2022","bump":"\u224E","bumpE":"\u2AAE","bumpe":"\u224F","Bumpeq":"\u224E","bumpeq":"\u224F","Cacute":"\u0106","cacute":"\u0107","capand":"\u2A44","capbrcup":"\u2A49","capcap":"\u2A4B","cap":"\u2229","Cap":"\u22D2","capcup":"\u2A47","capdot":"\u2A40","CapitalDifferentialD":"\u2145","caps":"\u2229\uFE00","caret":"\u2041","caron":"\u02C7","Cayleys":"\u212D","ccaps":"\u2A4D","Ccaron":"\u010C","ccaron":"\u010D","Ccedil":"\u00C7","ccedil":"\u00E7","Ccirc":"\u0108","ccirc":"\u0109","Cconint":"\u2230","ccups":"\u2A4C","ccupssm":"\u2A50","Cdot":"\u010A","cdot":"\u010B","cedil":"\u00B8","Cedilla":"\u00B8","cemptyv":"\u29B2","cent":"\u00A2","centerdot":"\u00B7","CenterDot":"\u00B7","cfr":"\uD835\uDD20","Cfr":"\u212D","CHcy":"\u0427","chcy":"\u0447","check":"\u2713","checkmark":"\u2713","Chi":"\u03A7","chi":"\u03C7","circ":"\u02C6","circeq":"\u2257","circlearrowleft":"\u21BA","circlearrowright":"\u21BB","circledast":"\u229B","circledcirc":"\u229A","circleddash":"\u229D","CircleDot":"\u2299","circledR":"\u00AE","circledS":"\u24C8","CircleMinus":"\u2296","CirclePlus":"\u2295","CircleTimes":"\u2297","cir":"\u25CB","cirE":"\u29C3","cire":"\u2257","cirfnint":"\u2A10","cirmid":"\u2AEF","cirscir":"\u29C2","ClockwiseContourIntegral":"\u2232","CloseCurlyDoubleQuote":"\u201D","CloseCurlyQuote":"\u2019","clubs":"\u2663","clubsuit":"\u2663","colon":":","Colon":"\u2237","Colone":"\u2A74","colone":"\u2254","coloneq":"\u2254","comma":",","commat":"@","comp":"\u2201","compfn":"\u2218","complement":"\u2201","complexes":"\u2102","cong":"\u2245","congdot":"\u2A6D","Congruent":"\u2261","conint":"\u222E","Conint":"\u222F","ContourIntegral":"\u222E","copf":"\uD835\uDD54","Copf":"\u2102","coprod":"\u2210","Coproduct":"\u2210","copy":"\u00A9","COPY":"\u00A9","copysr":"\u2117","CounterClockwiseContourIntegral":"\u2233","crarr":"\u21B5","cross":"\u2717","Cross":"\u2A2F","Cscr":"\uD835\uDC9E","cscr":"\uD835\uDCB8","csub":"\u2ACF","csube":"\u2AD1","csup":"\u2AD0","csupe":"\u2AD2","ctdot":"\u22EF","cudarrl":"\u2938","cudarrr":"\u2935","cuepr":"\u22DE","cuesc":"\u22DF","cularr":"\u21B6","cularrp":"\u293D","cupbrcap":"\u2A48","cupcap":"\u2A46","CupCap":"\u224D","cup":"\u222A","Cup":"\u22D3","cupcup":"\u2A4A","cupdot":"\u228D","cupor":"\u2A45","cups":"\u222A\uFE00","curarr":"\u21B7","curarrm":"\u293C","curlyeqprec":"\u22DE","curlyeqsucc":"\u22DF","curlyvee":"\u22CE","curlywedge":"\u22CF","curren":"\u00A4","curvearrowleft":"\u21B6","curvearrowright":"\u21B7","cuvee":"\u22CE","cuwed":"\u22CF","cwconint":"\u2232","cwint":"\u2231","cylcty":"\u232D","dagger":"\u2020","Dagger":"\u2021","daleth":"\u2138","darr":"\u2193","Darr":"\u21A1","dArr":"\u21D3","dash":"\u2010","Dashv":"\u2AE4","dashv":"\u22A3","dbkarow":"\u290F","dblac":"\u02DD","Dcaron":"\u010E","dcaron":"\u010F","Dcy":"\u0414","dcy":"\u0434","ddagger":"\u2021","ddarr":"\u21CA","DD":"\u2145","dd":"\u2146","DDotrahd":"\u2911","ddotseq":"\u2A77","deg":"\u00B0","Del":"\u2207","Delta":"\u0394","delta":"\u03B4","demptyv":"\u29B1","dfisht":"\u297F","Dfr":"\uD835\uDD07","dfr":"\uD835\uDD21","dHar":"\u2965","dharl":"\u21C3","dharr":"\u21C2","DiacriticalAcute":"\u00B4","DiacriticalDot":"\u02D9","DiacriticalDoubleAcute":"\u02DD","DiacriticalGrave":"`","DiacriticalTilde":"\u02DC","diam":"\u22C4","diamond":"\u22C4","Diamond":"\u22C4","diamondsuit":"\u2666","diams":"\u2666","die":"\u00A8","DifferentialD":"\u2146","digamma":"\u03DD","disin":"\u22F2","div":"\u00F7","divide":"\u00F7","divideontimes":"\u22C7","divonx":"\u22C7","DJcy":"\u0402","djcy":"\u0452","dlcorn":"\u231E","dlcrop":"\u230D","dollar":"$","Dopf":"\uD835\uDD3B","dopf":"\uD835\uDD55","Dot":"\u00A8","dot":"\u02D9","DotDot":"\u20DC","doteq":"\u2250","doteqdot":"\u2251","DotEqual":"\u2250","dotminus":"\u2238","dotplus":"\u2214","dotsquare":"\u22A1","doublebarwedge":"\u2306","DoubleContourIntegral":"\u222F","DoubleDot":"\u00A8","DoubleDownArrow":"\u21D3","DoubleLeftArrow":"\u21D0","DoubleLeftRightArrow":"\u21D4","DoubleLeftTee":"\u2AE4","DoubleLongLeftArrow":"\u27F8","DoubleLongLeftRightArrow":"\u27FA","DoubleLongRightArrow":"\u27F9","DoubleRightArrow":"\u21D2","DoubleRightTee":"\u22A8","DoubleUpArrow":"\u21D1","DoubleUpDownArrow":"\u21D5","DoubleVerticalBar":"\u2225","DownArrowBar":"\u2913","downarrow":"\u2193","DownArrow":"\u2193","Downarrow":"\u21D3","DownArrowUpArrow":"\u21F5","DownBreve":"\u0311","downdownarrows":"\u21CA","downharpoonleft":"\u21C3","downharpoonright":"\u21C2","DownLeftRightVector":"\u2950","DownLeftTeeVector":"\u295E","DownLeftVectorBar":"\u2956","DownLeftVector":"\u21BD","DownRightTeeVector":"\u295F","DownRightVectorBar":"\u2957","DownRightVector":"\u21C1","DownTeeArrow":"\u21A7","DownTee":"\u22A4","drbkarow":"\u2910","drcorn":"\u231F","drcrop":"\u230C","Dscr":"\uD835\uDC9F","dscr":"\uD835\uDCB9","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":"\u00C9","eacute":"\u00E9","easter":"\u2A6E","Ecaron":"\u011A","ecaron":"\u011B","Ecirc":"\u00CA","ecirc":"\u00EA","ecir":"\u2256","ecolon":"\u2255","Ecy":"\u042D","ecy":"\u044D","eDDot":"\u2A77","Edot":"\u0116","edot":"\u0117","eDot":"\u2251","ee":"\u2147","efDot":"\u2252","Efr":"\uD835\uDD08","efr":"\uD835\uDD22","eg":"\u2A9A","Egrave":"\u00C8","egrave":"\u00E8","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":"\uD835\uDD3C","eopf":"\uD835\uDD56","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":"\u212F","Escr":"\u2130","esdot":"\u2250","Esim":"\u2A73","esim":"\u2242","Eta":"\u0397","eta":"\u03B7","ETH":"\u00D0","eth":"\u00F0","Euml":"\u00CB","euml":"\u00EB","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":"\uD835\uDD09","ffr":"\uD835\uDD23","filig":"\uFB01","FilledSmallSquare":"\u25FC","FilledVerySmallSquare":"\u25AA","fjlig":"fj","flat":"\u266D","fllig":"\uFB02","fltns":"\u25B1","fnof":"\u0192","Fopf":"\uD835\uDD3D","fopf":"\uD835\uDD57","forall":"\u2200","ForAll":"\u2200","fork":"\u22D4","forkv":"\u2AD9","Fouriertrf":"\u2131","fpartint":"\u2A0D","frac12":"\u00BD","frac13":"\u2153","frac14":"\u00BC","frac15":"\u2155","frac16":"\u2159","frac18":"\u215B","frac23":"\u2154","frac25":"\u2156","frac34":"\u00BE","frac35":"\u2157","frac38":"\u215C","frac45":"\u2158","frac56":"\u215A","frac58":"\u215D","frac78":"\u215E","frasl":"\u2044","frown":"\u2322","fscr":"\uD835\uDCBB","Fscr":"\u2131","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":"\u2265","gE":"\u2267","gEl":"\u2A8C","gel":"\u22DB","geq":"\u2265","geqq":"\u2267","geqslant":"\u2A7E","gescc":"\u2AA9","ges":"\u2A7E","gesdot":"\u2A80","gesdoto":"\u2A82","gesdotol":"\u2A84","gesl":"\u22DB\uFE00","gesles":"\u2A94","Gfr":"\uD835\uDD0A","gfr":"\uD835\uDD24","gg":"\u226B","Gg":"\u22D9","ggg":"\u22D9","gimel":"\u2137","GJcy":"\u0403","gjcy":"\u0453","gla":"\u2AA5","gl":"\u2277","glE":"\u2A92","glj":"\u2AA4","gnap":"\u2A8A","gnapprox":"\u2A8A","gne":"\u2A88","gnE":"\u2269","gneq":"\u2A88","gneqq":"\u2269","gnsim":"\u22E7","Gopf":"\uD835\uDD3E","gopf":"\uD835\uDD58","grave":"`","GreaterEqual":"\u2265","GreaterEqualLess":"\u22DB","GreaterFullEqual":"\u2267","GreaterGreater":"\u2AA2","GreaterLess":"\u2277","GreaterSlantEqual":"\u2A7E","GreaterTilde":"\u2273","Gscr":"\uD835\uDCA2","gscr":"\u210A","gsim":"\u2273","gsime":"\u2A8E","gsiml":"\u2A90","gtcc":"\u2AA7","gtcir":"\u2A7A","gt":">","GT":">","Gt":"\u226B","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":"\u00BD","hamilt":"\u210B","HARDcy":"\u042A","hardcy":"\u044A","harrcir":"\u2948","harr":"\u2194","hArr":"\u21D4","harrw":"\u21AD","Hat":"^","hbar":"\u210F","Hcirc":"\u0124","hcirc":"\u0125","hearts":"\u2665","heartsuit":"\u2665","hellip":"\u2026","hercon":"\u22B9","hfr":"\uD835\uDD25","Hfr":"\u210C","HilbertSpace":"\u210B","hksearow":"\u2925","hkswarow":"\u2926","hoarr":"\u21FF","homtht":"\u223B","hookleftarrow":"\u21A9","hookrightarrow":"\u21AA","hopf":"\uD835\uDD59","Hopf":"\u210D","horbar":"\u2015","HorizontalLine":"\u2500","hscr":"\uD835\uDCBD","Hscr":"\u210B","hslash":"\u210F","Hstrok":"\u0126","hstrok":"\u0127","HumpDownHump":"\u224E","HumpEqual":"\u224F","hybull":"\u2043","hyphen":"\u2010","Iacute":"\u00CD","iacute":"\u00ED","ic":"\u2063","Icirc":"\u00CE","icirc":"\u00EE","Icy":"\u0418","icy":"\u0438","Idot":"\u0130","IEcy":"\u0415","iecy":"\u0435","iexcl":"\u00A1","iff":"\u21D4","ifr":"\uD835\uDD26","Ifr":"\u2111","Igrave":"\u00CC","igrave":"\u00EC","ii":"\u2148","iiiint":"\u2A0C","iiint":"\u222D","iinfin":"\u29DC","iiota":"\u2129","IJlig":"\u0132","ijlig":"\u0133","Imacr":"\u012A","imacr":"\u012B","image":"\u2111","ImaginaryI":"\u2148","imagline":"\u2110","imagpart":"\u2111","imath":"\u0131","Im":"\u2111","imof":"\u22B7","imped":"\u01B5","Implies":"\u21D2","incare":"\u2105","in":"\u2208","infin":"\u221E","infintie":"\u29DD","inodot":"\u0131","intcal":"\u22BA","int":"\u222B","Int":"\u222C","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":"\uD835\uDD40","iopf":"\uD835\uDD5A","Iota":"\u0399","iota":"\u03B9","iprod":"\u2A3C","iquest":"\u00BF","iscr":"\uD835\uDCBE","Iscr":"\u2110","isin":"\u2208","isindot":"\u22F5","isinE":"\u22F9","isins":"\u22F4","isinsv":"\u22F3","isinv":"\u2208","it":"\u2062","Itilde":"\u0128","itilde":"\u0129","Iukcy":"\u0406","iukcy":"\u0456","Iuml":"\u00CF","iuml":"\u00EF","Jcirc":"\u0134","jcirc":"\u0135","Jcy":"\u0419","jcy":"\u0439","Jfr":"\uD835\uDD0D","jfr":"\uD835\uDD27","jmath":"\u0237","Jopf":"\uD835\uDD41","jopf":"\uD835\uDD5B","Jscr":"\uD835\uDCA5","jscr":"\uD835\uDCBF","Jsercy":"\u0408","jsercy":"\u0458","Jukcy":"\u0404","jukcy":"\u0454","Kappa":"\u039A","kappa":"\u03BA","kappav":"\u03F0","Kcedil":"\u0136","kcedil":"\u0137","Kcy":"\u041A","kcy":"\u043A","Kfr":"\uD835\uDD0E","kfr":"\uD835\uDD28","kgreen":"\u0138","KHcy":"\u0425","khcy":"\u0445","KJcy":"\u040C","kjcy":"\u045C","Kopf":"\uD835\uDD42","kopf":"\uD835\uDD5C","Kscr":"\uD835\uDCA6","kscr":"\uD835\uDCC0","lAarr":"\u21DA","Lacute":"\u0139","lacute":"\u013A","laemptyv":"\u29B4","lagran":"\u2112","Lambda":"\u039B","lambda":"\u03BB","lang":"\u27E8","Lang":"\u27EA","langd":"\u2991","langle":"\u27E8","lap":"\u2A85","Laplacetrf":"\u2112","laquo":"\u00AB","larrb":"\u21E4","larrbfs":"\u291F","larr":"\u2190","Larr":"\u219E","lArr":"\u21D0","larrfs":"\u291D","larrhk":"\u21A9","larrlp":"\u21AB","larrpl":"\u2939","larrsim":"\u2973","larrtl":"\u21A2","latail":"\u2919","lAtail":"\u291B","lat":"\u2AAB","late":"\u2AAD","lates":"\u2AAD\uFE00","lbarr":"\u290C","lBarr":"\u290E","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":"\u2264","lE":"\u2266","LeftAngleBracket":"\u27E8","LeftArrowBar":"\u21E4","leftarrow":"\u2190","LeftArrow":"\u2190","Leftarrow":"\u21D0","LeftArrowRightArrow":"\u21C6","leftarrowtail":"\u21A2","LeftCeiling":"\u2308","LeftDoubleBracket":"\u27E6","LeftDownTeeVector":"\u2961","LeftDownVectorBar":"\u2959","LeftDownVector":"\u21C3","LeftFloor":"\u230A","leftharpoondown":"\u21BD","leftharpoonup":"\u21BC","leftleftarrows":"\u21C7","leftrightarrow":"\u2194","LeftRightArrow":"\u2194","Leftrightarrow":"\u21D4","leftrightarrows":"\u21C6","leftrightharpoons":"\u21CB","leftrightsquigarrow":"\u21AD","LeftRightVector":"\u294E","LeftTeeArrow":"\u21A4","LeftTee":"\u22A3","LeftTeeVector":"\u295A","leftthreetimes":"\u22CB","LeftTriangleBar":"\u29CF","LeftTriangle":"\u22B2","LeftTriangleEqual":"\u22B4","LeftUpDownVector":"\u2951","LeftUpTeeVector":"\u2960","LeftUpVectorBar":"\u2958","LeftUpVector":"\u21BF","LeftVectorBar":"\u2952","LeftVector":"\u21BC","lEg":"\u2A8B","leg":"\u22DA","leq":"\u2264","leqq":"\u2266","leqslant":"\u2A7D","lescc":"\u2AA8","les":"\u2A7D","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":"\uD835\uDD0F","lfr":"\uD835\uDD29","lg":"\u2276","lgE":"\u2A91","lHar":"\u2962","lhard":"\u21BD","lharu":"\u21BC","lharul":"\u296A","lhblk":"\u2584","LJcy":"\u0409","ljcy":"\u0459","llarr":"\u21C7","ll":"\u226A","Ll":"\u22D8","llcorner":"\u231E","Lleftarrow":"\u21DA","llhard":"\u296B","lltri":"\u25FA","Lmidot":"\u013F","lmidot":"\u0140","lmoustache":"\u23B0","lmoust":"\u23B0","lnap":"\u2A89","lnapprox":"\u2A89","lne":"\u2A87","lnE":"\u2268","lneq":"\u2A87","lneqq":"\u2268","lnsim":"\u22E6","loang":"\u27EC","loarr":"\u21FD","lobrk":"\u27E6","longleftarrow":"\u27F5","LongLeftArrow":"\u27F5","Longleftarrow":"\u27F8","longleftrightarrow":"\u27F7","LongLeftRightArrow":"\u27F7","Longleftrightarrow":"\u27FA","longmapsto":"\u27FC","longrightarrow":"\u27F6","LongRightArrow":"\u27F6","Longrightarrow":"\u27F9","looparrowleft":"\u21AB","looparrowright":"\u21AC","lopar":"\u2985","Lopf":"\uD835\uDD43","lopf":"\uD835\uDD5D","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":"\uD835\uDCC1","Lscr":"\u2112","lsh":"\u21B0","Lsh":"\u21B0","lsim":"\u2272","lsime":"\u2A8D","lsimg":"\u2A8F","lsqb":"[","lsquo":"\u2018","lsquor":"\u201A","Lstrok":"\u0141","lstrok":"\u0142","ltcc":"\u2AA6","ltcir":"\u2A79","lt":"<","LT":"<","Lt":"\u226A","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":"\u00AF","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":"\uD835\uDD10","mfr":"\uD835\uDD2A","mho":"\u2127","micro":"\u00B5","midast":"*","midcir":"\u2AF0","mid":"\u2223","middot":"\u00B7","minusb":"\u229F","minus":"\u2212","minusd":"\u2238","minusdu":"\u2A2A","MinusPlus":"\u2213","mlcp":"\u2ADB","mldr":"\u2026","mnplus":"\u2213","models":"\u22A7","Mopf":"\uD835\uDD44","mopf":"\uD835\uDD5E","mp":"\u2213","mscr":"\uD835\uDCC2","Mscr":"\u2133","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","natural":"\u266E","naturals":"\u2115","natur":"\u266E","nbsp":"\u00A0","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","nearhk":"\u2924","nearr":"\u2197","neArr":"\u21D7","nearrow":"\u2197","ne":"\u2260","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":"\uD835\uDD11","nfr":"\uD835\uDD2B","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":"\u21AE","nhArr":"\u21CE","nhpar":"\u2AF2","ni":"\u220B","nis":"\u22FC","nisd":"\u22FA","niv":"\u220B","NJcy":"\u040A","njcy":"\u045A","nlarr":"\u219A","nlArr":"\u21CD","nldr":"\u2025","nlE":"\u2266\u0338","nle":"\u2270","nleftarrow":"\u219A","nLeftarrow":"\u21CD","nleftrightarrow":"\u21AE","nLeftrightarrow":"\u21CE","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":"\u00A0","nopf":"\uD835\uDD5F","Nopf":"\u2115","Not":"\u2AEC","not":"\u00AC","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","NotLeftTriangleBar":"\u29CF\u0338","NotLeftTriangle":"\u22EA","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","NotRightTriangleBar":"\u29D0\u0338","NotRightTriangle":"\u22EB","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","nparallel":"\u2226","npar":"\u2226","nparsl":"\u2AFD\u20E5","npart":"\u2202\u0338","npolint":"\u2A14","npr":"\u2280","nprcue":"\u22E0","nprec":"\u2280","npreceq":"\u2AAF\u0338","npre":"\u2AAF\u0338","nrarrc":"\u2933\u0338","nrarr":"\u219B","nrArr":"\u21CF","nrarrw":"\u219D\u0338","nrightarrow":"\u219B","nRightarrow":"\u21CF","nrtri":"\u22EB","nrtrie":"\u22ED","nsc":"\u2281","nsccue":"\u22E1","nsce":"\u2AB0\u0338","Nscr":"\uD835\uDCA9","nscr":"\uD835\uDCC3","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":"\u00D1","ntilde":"\u00F1","ntlg":"\u2278","ntriangleleft":"\u22EA","ntrianglelefteq":"\u22EC","ntriangleright":"\u22EB","ntrianglerighteq":"\u22ED","Nu":"\u039D","nu":"\u03BD","num":"#","numero":"\u2116","numsp":"\u2007","nvap":"\u224D\u20D2","nvdash":"\u22AC","nvDash":"\u22AD","nVdash":"\u22AE","nVDash":"\u22AF","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":"\u2196","nwArr":"\u21D6","nwarrow":"\u2196","nwnear":"\u2927","Oacute":"\u00D3","oacute":"\u00F3","oast":"\u229B","Ocirc":"\u00D4","ocirc":"\u00F4","ocir":"\u229A","Ocy":"\u041E","ocy":"\u043E","odash":"\u229D","Odblac":"\u0150","odblac":"\u0151","odiv":"\u2A38","odot":"\u2299","odsold":"\u29BC","OElig":"\u0152","oelig":"\u0153","ofcir":"\u29BF","Ofr":"\uD835\uDD12","ofr":"\uD835\uDD2C","ogon":"\u02DB","Ograve":"\u00D2","ograve":"\u00F2","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":"\uD835\uDD46","oopf":"\uD835\uDD60","opar":"\u29B7","OpenCurlyDoubleQuote":"\u201C","OpenCurlyQuote":"\u2018","operp":"\u29B9","oplus":"\u2295","orarr":"\u21BB","Or":"\u2A54","or":"\u2228","ord":"\u2A5D","order":"\u2134","orderof":"\u2134","ordf":"\u00AA","ordm":"\u00BA","origof":"\u22B6","oror":"\u2A56","orslope":"\u2A57","orv":"\u2A5B","oS":"\u24C8","Oscr":"\uD835\uDCAA","oscr":"\u2134","Oslash":"\u00D8","oslash":"\u00F8","osol":"\u2298","Otilde":"\u00D5","otilde":"\u00F5","otimesas":"\u2A36","Otimes":"\u2A37","otimes":"\u2297","Ouml":"\u00D6","ouml":"\u00F6","ovbar":"\u233D","OverBar":"\u203E","OverBrace":"\u23DE","OverBracket":"\u23B4","OverParenthesis":"\u23DC","para":"\u00B6","parallel":"\u2225","par":"\u2225","parsim":"\u2AF3","parsl":"\u2AFD","part":"\u2202","PartialD":"\u2202","Pcy":"\u041F","pcy":"\u043F","percnt":"%","period":".","permil":"\u2030","perp":"\u22A5","pertenk":"\u2031","Pfr":"\uD835\uDD13","pfr":"\uD835\uDD2D","Phi":"\u03A6","phi":"\u03C6","phiv":"\u03D5","phmmat":"\u2133","phone":"\u260E","Pi":"\u03A0","pi":"\u03C0","pitchfork":"\u22D4","piv":"\u03D6","planck":"\u210F","planckh":"\u210E","plankv":"\u210F","plusacir":"\u2A23","plusb":"\u229E","pluscir":"\u2A22","plus":"+","plusdo":"\u2214","plusdu":"\u2A25","pluse":"\u2A72","PlusMinus":"\u00B1","plusmn":"\u00B1","plussim":"\u2A26","plustwo":"\u2A27","pm":"\u00B1","Poincareplane":"\u210C","pointint":"\u2A15","popf":"\uD835\uDD61","Popf":"\u2119","pound":"\u00A3","prap":"\u2AB7","Pr":"\u2ABB","pr":"\u227A","prcue":"\u227C","precapprox":"\u2AB7","prec":"\u227A","preccurlyeq":"\u227C","Precedes":"\u227A","PrecedesEqual":"\u2AAF","PrecedesSlantEqual":"\u227C","PrecedesTilde":"\u227E","preceq":"\u2AAF","precnapprox":"\u2AB9","precneqq":"\u2AB5","precnsim":"\u22E8","pre":"\u2AAF","prE":"\u2AB3","precsim":"\u227E","prime":"\u2032","Prime":"\u2033","primes":"\u2119","prnap":"\u2AB9","prnE":"\u2AB5","prnsim":"\u22E8","prod":"\u220F","Product":"\u220F","profalar":"\u232E","profline":"\u2312","profsurf":"\u2313","prop":"\u221D","Proportional":"\u221D","Proportion":"\u2237","propto":"\u221D","prsim":"\u227E","prurel":"\u22B0","Pscr":"\uD835\uDCAB","pscr":"\uD835\uDCC5","Psi":"\u03A8","psi":"\u03C8","puncsp":"\u2008","Qfr":"\uD835\uDD14","qfr":"\uD835\uDD2E","qint":"\u2A0C","qopf":"\uD835\uDD62","Qopf":"\u211A","qprime":"\u2057","Qscr":"\uD835\uDCAC","qscr":"\uD835\uDCC6","quaternions":"\u210D","quatint":"\u2A16","quest":"?","questeq":"\u225F","quot":"\"","QUOT":"\"","rAarr":"\u21DB","race":"\u223D\u0331","Racute":"\u0154","racute":"\u0155","radic":"\u221A","raemptyv":"\u29B3","rang":"\u27E9","Rang":"\u27EB","rangd":"\u2992","range":"\u29A5","rangle":"\u27E9","raquo":"\u00BB","rarrap":"\u2975","rarrb":"\u21E5","rarrbfs":"\u2920","rarrc":"\u2933","rarr":"\u2192","Rarr":"\u21A0","rArr":"\u21D2","rarrfs":"\u291E","rarrhk":"\u21AA","rarrlp":"\u21AC","rarrpl":"\u2945","rarrsim":"\u2974","Rarrtl":"\u2916","rarrtl":"\u21A3","rarrw":"\u219D","ratail":"\u291A","rAtail":"\u291C","ratio":"\u2236","rationals":"\u211A","rbarr":"\u290D","rBarr":"\u290F","RBarr":"\u2910","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","real":"\u211C","realine":"\u211B","realpart":"\u211C","reals":"\u211D","Re":"\u211C","rect":"\u25AD","reg":"\u00AE","REG":"\u00AE","ReverseElement":"\u220B","ReverseEquilibrium":"\u21CB","ReverseUpEquilibrium":"\u296F","rfisht":"\u297D","rfloor":"\u230B","rfr":"\uD835\uDD2F","Rfr":"\u211C","rHar":"\u2964","rhard":"\u21C1","rharu":"\u21C0","rharul":"\u296C","Rho":"\u03A1","rho":"\u03C1","rhov":"\u03F1","RightAngleBracket":"\u27E9","RightArrowBar":"\u21E5","rightarrow":"\u2192","RightArrow":"\u2192","Rightarrow":"\u21D2","RightArrowLeftArrow":"\u21C4","rightarrowtail":"\u21A3","RightCeiling":"\u2309","RightDoubleBracket":"\u27E7","RightDownTeeVector":"\u295D","RightDownVectorBar":"\u2955","RightDownVector":"\u21C2","RightFloor":"\u230B","rightharpoondown":"\u21C1","rightharpoonup":"\u21C0","rightleftarrows":"\u21C4","rightleftharpoons":"\u21CC","rightrightarrows":"\u21C9","rightsquigarrow":"\u219D","RightTeeArrow":"\u21A6","RightTee":"\u22A2","RightTeeVector":"\u295B","rightthreetimes":"\u22CC","RightTriangleBar":"\u29D0","RightTriangle":"\u22B3","RightTriangleEqual":"\u22B5","RightUpDownVector":"\u294F","RightUpTeeVector":"\u295C","RightUpVectorBar":"\u2954","RightUpVector":"\u21BE","RightVectorBar":"\u2953","RightVector":"\u21C0","ring":"\u02DA","risingdotseq":"\u2253","rlarr":"\u21C4","rlhar":"\u21CC","rlm":"\u200F","rmoustache":"\u23B1","rmoust":"\u23B1","rnmid":"\u2AEE","roang":"\u27ED","roarr":"\u21FE","robrk":"\u27E7","ropar":"\u2986","ropf":"\uD835\uDD63","Ropf":"\u211D","roplus":"\u2A2E","rotimes":"\u2A35","RoundImplies":"\u2970","rpar":")","rpargt":"\u2994","rppolint":"\u2A12","rrarr":"\u21C9","Rrightarrow":"\u21DB","rsaquo":"\u203A","rscr":"\uD835\uDCC7","Rscr":"\u211B","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","scap":"\u2AB8","Scaron":"\u0160","scaron":"\u0161","Sc":"\u2ABC","sc":"\u227B","sccue":"\u227D","sce":"\u2AB0","scE":"\u2AB4","Scedil":"\u015E","scedil":"\u015F","Scirc":"\u015C","scirc":"\u015D","scnap":"\u2ABA","scnE":"\u2AB6","scnsim":"\u22E9","scpolint":"\u2A13","scsim":"\u227F","Scy":"\u0421","scy":"\u0441","sdotb":"\u22A1","sdot":"\u22C5","sdote":"\u2A66","searhk":"\u2925","searr":"\u2198","seArr":"\u21D8","searrow":"\u2198","sect":"\u00A7","semi":";","seswar":"\u2929","setminus":"\u2216","setmn":"\u2216","sext":"\u2736","Sfr":"\uD835\uDD16","sfr":"\uD835\uDD30","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":"\u00AD","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","solbar":"\u233F","solb":"\u29C4","sol":"/","Sopf":"\uD835\uDD4A","sopf":"\uD835\uDD64","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","square":"\u25A1","Square":"\u25A1","SquareIntersection":"\u2293","SquareSubset":"\u228F","SquareSubsetEqual":"\u2291","SquareSuperset":"\u2290","SquareSupersetEqual":"\u2292","SquareUnion":"\u2294","squarf":"\u25AA","squ":"\u25A1","squf":"\u25AA","srarr":"\u2192","Sscr":"\uD835\uDCAE","sscr":"\uD835\uDCC8","ssetmn":"\u2216","ssmile":"\u2323","sstarf":"\u22C6","Star":"\u22C6","star":"\u2606","starf":"\u2605","straightepsilon":"\u03F5","straightphi":"\u03D5","strns":"\u00AF","sub":"\u2282","Sub":"\u22D0","subdot":"\u2ABD","subE":"\u2AC5","sube":"\u2286","subedot":"\u2AC3","submult":"\u2AC1","subnE":"\u2ACB","subne":"\u228A","subplus":"\u2ABF","subrarr":"\u2979","subset":"\u2282","Subset":"\u22D0","subseteq":"\u2286","subseteqq":"\u2AC5","SubsetEqual":"\u2286","subsetneq":"\u228A","subsetneqq":"\u2ACB","subsim":"\u2AC7","subsub":"\u2AD5","subsup":"\u2AD3","succapprox":"\u2AB8","succ":"\u227B","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":"\u00B9","sup2":"\u00B2","sup3":"\u00B3","sup":"\u2283","Sup":"\u22D1","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":"\u2283","Supset":"\u22D1","supseteq":"\u2287","supseteqq":"\u2AC6","supsetneq":"\u228B","supsetneqq":"\u2ACC","supsim":"\u2AC8","supsub":"\u2AD4","supsup":"\u2AD6","swarhk":"\u2926","swarr":"\u2199","swArr":"\u21D9","swarrow":"\u2199","swnwar":"\u292A","szlig":"\u00DF","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":"\uD835\uDD17","tfr":"\uD835\uDD31","there4":"\u2234","therefore":"\u2234","Therefore":"\u2234","Theta":"\u0398","theta":"\u03B8","thetasym":"\u03D1","thetav":"\u03D1","thickapprox":"\u2248","thicksim":"\u223C","ThickSpace":"\u205F\u200A","ThinSpace":"\u2009","thinsp":"\u2009","thkap":"\u2248","thksim":"\u223C","THORN":"\u00DE","thorn":"\u00FE","tilde":"\u02DC","Tilde":"\u223C","TildeEqual":"\u2243","TildeFullEqual":"\u2245","TildeTilde":"\u2248","timesbar":"\u2A31","timesb":"\u22A0","times":"\u00D7","timesd":"\u2A30","tint":"\u222D","toea":"\u2928","topbot":"\u2336","topcir":"\u2AF1","top":"\u22A4","Topf":"\uD835\uDD4B","topf":"\uD835\uDD65","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":"\uD835\uDCAF","tscr":"\uD835\uDCC9","TScy":"\u0426","tscy":"\u0446","TSHcy":"\u040B","tshcy":"\u045B","Tstrok":"\u0166","tstrok":"\u0167","twixt":"\u226C","twoheadleftarrow":"\u219E","twoheadrightarrow":"\u21A0","Uacute":"\u00DA","uacute":"\u00FA","uarr":"\u2191","Uarr":"\u219F","uArr":"\u21D1","Uarrocir":"\u2949","Ubrcy":"\u040E","ubrcy":"\u045E","Ubreve":"\u016C","ubreve":"\u016D","Ucirc":"\u00DB","ucirc":"\u00FB","Ucy":"\u0423","ucy":"\u0443","udarr":"\u21C5","Udblac":"\u0170","udblac":"\u0171","udhar":"\u296E","ufisht":"\u297E","Ufr":"\uD835\uDD18","ufr":"\uD835\uDD32","Ugrave":"\u00D9","ugrave":"\u00F9","uHar":"\u2963","uharl":"\u21BF","uharr":"\u21BE","uhblk":"\u2580","ulcorn":"\u231C","ulcorner":"\u231C","ulcrop":"\u230F","ultri":"\u25F8","Umacr":"\u016A","umacr":"\u016B","uml":"\u00A8","UnderBar":"_","UnderBrace":"\u23DF","UnderBracket":"\u23B5","UnderParenthesis":"\u23DD","Union":"\u22C3","UnionPlus":"\u228E","Uogon":"\u0172","uogon":"\u0173","Uopf":"\uD835\uDD4C","uopf":"\uD835\uDD66","UpArrowBar":"\u2912","uparrow":"\u2191","UpArrow":"\u2191","Uparrow":"\u21D1","UpArrowDownArrow":"\u21C5","updownarrow":"\u2195","UpDownArrow":"\u2195","Updownarrow":"\u21D5","UpEquilibrium":"\u296E","upharpoonleft":"\u21BF","upharpoonright":"\u21BE","uplus":"\u228E","UpperLeftArrow":"\u2196","UpperRightArrow":"\u2197","upsi":"\u03C5","Upsi":"\u03D2","upsih":"\u03D2","Upsilon":"\u03A5","upsilon":"\u03C5","UpTeeArrow":"\u21A5","UpTee":"\u22A5","upuparrows":"\u21C8","urcorn":"\u231D","urcorner":"\u231D","urcrop":"\u230E","Uring":"\u016E","uring":"\u016F","urtri":"\u25F9","Uscr":"\uD835\uDCB0","uscr":"\uD835\uDCCA","utdot":"\u22F0","Utilde":"\u0168","utilde":"\u0169","utri":"\u25B5","utrif":"\u25B4","uuarr":"\u21C8","Uuml":"\u00DC","uuml":"\u00FC","uwangle":"\u29A7","vangrt":"\u299C","varepsilon":"\u03F5","varkappa":"\u03F0","varnothing":"\u2205","varphi":"\u03D5","varpi":"\u03D6","varpropto":"\u221D","varr":"\u2195","vArr":"\u21D5","varrho":"\u03F1","varsigma":"\u03C2","varsubsetneq":"\u228A\uFE00","varsubsetneqq":"\u2ACB\uFE00","varsupsetneq":"\u228B\uFE00","varsupsetneqq":"\u2ACC\uFE00","vartheta":"\u03D1","vartriangleleft":"\u22B2","vartriangleright":"\u22B3","vBar":"\u2AE8","Vbar":"\u2AEB","vBarv":"\u2AE9","Vcy":"\u0412","vcy":"\u0432","vdash":"\u22A2","vDash":"\u22A8","Vdash":"\u22A9","VDash":"\u22AB","Vdashl":"\u2AE6","veebar":"\u22BB","vee":"\u2228","Vee":"\u22C1","veeeq":"\u225A","vellip":"\u22EE","verbar":"|","Verbar":"\u2016","vert":"|","Vert":"\u2016","VerticalBar":"\u2223","VerticalLine":"|","VerticalSeparator":"\u2758","VerticalTilde":"\u2240","VeryThinSpace":"\u200A","Vfr":"\uD835\uDD19","vfr":"\uD835\uDD33","vltri":"\u22B2","vnsub":"\u2282\u20D2","vnsup":"\u2283\u20D2","Vopf":"\uD835\uDD4D","vopf":"\uD835\uDD67","vprop":"\u221D","vrtri":"\u22B3","Vscr":"\uD835\uDCB1","vscr":"\uD835\uDCCB","vsubnE":"\u2ACB\uFE00","vsubne":"\u228A\uFE00","vsupnE":"\u2ACC\uFE00","vsupne":"\u228B\uFE00","Vvdash":"\u22AA","vzigzag":"\u299A","Wcirc":"\u0174","wcirc":"\u0175","wedbar":"\u2A5F","wedge":"\u2227","Wedge":"\u22C0","wedgeq":"\u2259","weierp":"\u2118","Wfr":"\uD835\uDD1A","wfr":"\uD835\uDD34","Wopf":"\uD835\uDD4E","wopf":"\uD835\uDD68","wp":"\u2118","wr":"\u2240","wreath":"\u2240","Wscr":"\uD835\uDCB2","wscr":"\uD835\uDCCC","xcap":"\u22C2","xcirc":"\u25EF","xcup":"\u22C3","xdtri":"\u25BD","Xfr":"\uD835\uDD1B","xfr":"\uD835\uDD35","xharr":"\u27F7","xhArr":"\u27FA","Xi":"\u039E","xi":"\u03BE","xlarr":"\u27F5","xlArr":"\u27F8","xmap":"\u27FC","xnis":"\u22FB","xodot":"\u2A00","Xopf":"\uD835\uDD4F","xopf":"\uD835\uDD69","xoplus":"\u2A01","xotime":"\u2A02","xrarr":"\u27F6","xrArr":"\u27F9","Xscr":"\uD835\uDCB3","xscr":"\uD835\uDCCD","xsqcup":"\u2A06","xuplus":"\u2A04","xutri":"\u25B3","xvee":"\u22C1","xwedge":"\u22C0","Yacute":"\u00DD","yacute":"\u00FD","YAcy":"\u042F","yacy":"\u044F","Ycirc":"\u0176","ycirc":"\u0177","Ycy":"\u042B","ycy":"\u044B","yen":"\u00A5","Yfr":"\uD835\uDD1C","yfr":"\uD835\uDD36","YIcy":"\u0407","yicy":"\u0457","Yopf":"\uD835\uDD50","yopf":"\uD835\uDD6A","Yscr":"\uD835\uDCB4","yscr":"\uD835\uDCCE","YUcy":"\u042E","yucy":"\u044E","yuml":"\u00FF","Yuml":"\u0178","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":"\uD835\uDD37","Zfr":"\u2128","ZHcy":"\u0416","zhcy":"\u0436","zigrarr":"\u21DD","zopf":"\uD835\uDD6B","Zopf":"\u2124","Zscr":"\uD835\uDCB5","zscr":"\uD835\uDCCF","zwj":"\u200D","zwnj":"\u200C"}
-},{}],53:[function(require,module,exports){
+},{}],55:[function(require,module,exports){
'use strict';
@@ -6639,7 +6898,7 @@ LinkifyIt.prototype.normalize = function normalize(match) {
module.exports = LinkifyIt;
-},{"./lib/re":54}],54:[function(require,module,exports){
+},{"./lib/re":56}],56:[function(require,module,exports){
'use strict';
// Use direct extract instead of `regenerate` to reduse browserified size
@@ -6801,7 +7060,7 @@ exports.tpl_link_no_ip_fuzzy =
'(^|(?![.:/\\-_@])(?:[$+<=>^`|]|' + src_ZPCc + '))' +
'((?![$+<=>^`|])' + tpl_host_port_no_ip_fuzzy_strict + src_path + ')';
-},{"uc.micro/categories/Cc/regex":60,"uc.micro/categories/P/regex":62,"uc.micro/categories/Z/regex":63,"uc.micro/properties/Any/regex":65}],55:[function(require,module,exports){
+},{"uc.micro/categories/Cc/regex":62,"uc.micro/categories/P/regex":64,"uc.micro/categories/Z/regex":65,"uc.micro/properties/Any/regex":67}],57:[function(require,module,exports){
'use strict';
@@ -6842,7 +7101,7 @@ function decode(string, exclude) {
cache = getDecodeCache(exclude);
return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {
- var i, l, b1, b2, b3, b4, char,
+ var i, l, b1, b2, b3, b4, chr,
result = '';
for (i = 0, l = seq.length; i < l; i += 3) {
@@ -6858,12 +7117,12 @@ function decode(string, exclude) {
b2 = parseInt(seq.slice(i + 4, i + 6), 16);
if ((b2 & 0xC0) === 0x80) {
- char = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);
+ chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);
- if (char < 0x80) {
+ if (chr < 0x80) {
result += '\ufffd\ufffd';
} else {
- result += String.fromCharCode(char);
+ result += String.fromCharCode(chr);
}
i += 3;
@@ -6877,12 +7136,12 @@ function decode(string, exclude) {
b3 = parseInt(seq.slice(i + 7, i + 9), 16);
if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {
- char = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);
+ chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);
- if (char < 0x800 || (char >= 0xD800 && char <= 0xDFFF)) {
+ if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {
result += '\ufffd\ufffd\ufffd';
} else {
- result += String.fromCharCode(char);
+ result += String.fromCharCode(chr);
}
i += 6;
@@ -6897,13 +7156,13 @@ function decode(string, exclude) {
b4 = parseInt(seq.slice(i + 10, i + 12), 16);
if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {
- char = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);
+ chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);
- if (char < 0x10000 || char > 0x10FFFF) {
+ if (chr < 0x10000 || chr > 0x10FFFF) {
result += '\ufffd\ufffd\ufffd\ufffd';
} else {
- char -= 0x10000;
- result += String.fromCharCode(0xD800 + (char >> 10), 0xDC00 + (char & 0x3FF));
+ chr -= 0x10000;
+ result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));
}
i += 9;
@@ -6925,7 +7184,7 @@ decode.componentChars = '';
module.exports = decode;
-},{}],56:[function(require,module,exports){
+},{}],58:[function(require,module,exports){
'use strict';
@@ -7025,7 +7284,7 @@ encode.componentChars = "-_.!~*'()";
module.exports = encode;
-},{}],57:[function(require,module,exports){
+},{}],59:[function(require,module,exports){
'use strict';
@@ -7052,7 +7311,7 @@ module.exports = function format(url) {
return result;
};
-},{}],58:[function(require,module,exports){
+},{}],60:[function(require,module,exports){
'use strict';
@@ -7061,7 +7320,7 @@ module.exports.decode = require('./decode');
module.exports.format = require('./format');
module.exports.parse = require('./parse');
-},{"./decode":55,"./encode":56,"./format":57,"./parse":59}],59:[function(require,module,exports){
+},{"./decode":57,"./encode":58,"./format":59,"./parse":61}],61:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
@@ -7375,15 +7634,15 @@ Url.prototype.parseHost = function(host) {
module.exports = urlParse;
-},{}],60:[function(require,module,exports){
+},{}],62:[function(require,module,exports){
module.exports=/[\0-\x1F\x7F-\x9F]/
-},{}],61:[function(require,module,exports){
+},{}],63:[function(require,module,exports){
module.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/
-},{}],62:[function(require,module,exports){
+},{}],64:[function(require,module,exports){
module.exports=/[!-#%-\*,-/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDE38-\uDE3D]|\uD805[\uDCC6\uDDC1-\uDDC9\uDE41-\uDE43]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F/
-},{}],63:[function(require,module,exports){
+},{}],65:[function(require,module,exports){
module.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/
-},{}],64:[function(require,module,exports){
+},{}],66:[function(require,module,exports){
module.exports.Any = require('./properties/Any/regex');
module.exports.Cc = require('./categories/Cc/regex');
@@ -7391,13 +7650,13 @@ module.exports.Cf = require('./categories/Cf/regex');
module.exports.P = require('./categories/P/regex');
module.exports.Z = require('./categories/Z/regex');
-},{"./categories/Cc/regex":60,"./categories/Cf/regex":61,"./categories/P/regex":62,"./categories/Z/regex":63,"./properties/Any/regex":65}],65:[function(require,module,exports){
+},{"./categories/Cc/regex":62,"./categories/Cf/regex":63,"./categories/P/regex":64,"./categories/Z/regex":65,"./properties/Any/regex":67}],67:[function(require,module,exports){
module.exports=/[\0-\uD7FF\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF]/
-},{}],66:[function(require,module,exports){
+},{}],68:[function(require,module,exports){
'use strict';
module.exports = require('./lib/');
-},{"./lib/":10}]},{},[66])(66)
+},{"./lib/":10}]},{},[68])(68)
});
\ No newline at end of file
diff --git a/dist/markdown-it.min.js b/dist/markdown-it.min.js
index 7fbf87c88..af31a30b4 100644
--- a/dist/markdown-it.min.js
+++ b/dist/markdown-it.min.js
@@ -1,5 +1,5 @@
-/*! markdown-it 4.4.0 https://github.com//markdown-it/markdown-it @license MIT */
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.markdownit=e()}}(function(){var e;return function r(e,t,n){function s(o,a){if(!t[o]){if(!e[o]){var c="function"==typeof require&&require;if(!a&&c)return c(o,!0);if(i)return i(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var u=t[o]={exports:{}};e[o][0].call(u.exports,function(r){var t=e[o][1][r];return s(t?t:r)},u,u.exports,r,e,t,n)}return t[o].exports}for(var i="function"==typeof require&&require,o=0;o`\\x00-\\x20]+",i="'[^']*'",o='"[^"]*"',a="(?:"+s+"|"+i+"|"+o+")",c="(?:\\s+"+n+"(?:\\s*=\\s*"+a+")?)",l="<[A-Za-z][A-Za-z0-9\\-]*"+c+"*\\s*\\/?>",u="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",p="|",h="<[?].*?[?]>",f="]*>",d="",m=new RegExp("^(?:"+l+"|"+u+"|"+p+"|"+h+"|"+f+"|"+d+")"),g=new RegExp("^(?:"+l+"|"+u+")");r.exports.HTML_TAG_RE=m,r.exports.HTML_OPEN_CLOSE_TAG_RE=g},{}],4:[function(e,r,t){"use strict";r.exports=["coap","doi","javascript","aaa","aaas","about","acap","cap","cid","crid","data","dav","dict","dns","file","ftp","geo","go","gopher","h323","http","https","iax","icap","im","imap","info","ipp","iris","iris.beep","iris.xpc","iris.xpcs","iris.lwz","ldap","mailto","mid","msrp","msrps","mtqp","mupdate","news","nfs","ni","nih","nntp","opaquelocktoken","pop","pres","rtsp","service","session","shttp","sieve","sip","sips","sms","snmp","soap.beep","soap.beeps","tag","tel","telnet","tftp","thismessage","tn3270","tip","tv","urn","vemmi","ws","wss","xcon","xcon-userid","xmlrpc.beep","xmlrpc.beeps","xmpp","z39.50r","z39.50s","adiumxtra","afp","afs","aim","apt","attachment","aw","beshare","bitcoin","bolo","callto","chrome","chrome-extension","com-eventbrite-attendee","content","cvs","dlna-playsingle","dlna-playcontainer","dtn","dvb","ed2k","facetime","feed","finger","fish","gg","git","gizmoproject","gtalk","hcp","icon","ipn","irc","irc6","ircs","itms","jar","jms","keyparc","lastfm","ldaps","magnet","maps","market","message","mms","ms-help","msnim","mumble","mvn","notes","oid","palm","paparazzi","platform","proxy","psyc","query","res","resource","rmi","rsync","rtmp","secondlife","sftp","sgn","skype","smb","soldat","spotify","ssh","steam","svn","teamspeak","things","udp","unreal","ut2004","ventrilo","view-source","webcal","wtai","wyciwyg","xfire","xri","ymsgr"]},{}],5:[function(e,r,t){"use strict";function n(e){return Object.prototype.toString.call(e)}function s(e){return"[object String]"===n(e)}function i(e,r){return v.call(e,r)}function o(e){var r=Array.prototype.slice.call(arguments,1);return r.forEach(function(r){if(r){if("object"!=typeof r)throw new TypeError(r+"must be object");Object.keys(r).forEach(function(t){e[t]=r[t]})}}),e}function a(e,r,t){return[].concat(e.slice(0,r),t,e.slice(r+1))}function c(e){return e>=55296&&57343>=e?!1:e>=64976&&65007>=e?!1:65535===(65535&e)||65534===(65535&e)?!1:e>=0&&8>=e?!1:11===e?!1:e>=14&&31>=e?!1:e>=127&&159>=e?!1:e>1114111?!1:!0}function l(e){if(e>65535){e-=65536;var r=55296+(e>>10),t=56320+(1023&e);return String.fromCharCode(r,t)}return String.fromCharCode(e)}function u(e,r){var t=0;return i(w,r)?w[r]:35===r.charCodeAt(0)&&C.test(r)&&(t="x"===r[1].toLowerCase()?parseInt(r.slice(2),16):parseInt(r.slice(1),10),c(t))?l(t):e}function p(e){return e.indexOf("\\")<0?e:e.replace(x,"$1")}function h(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(A,function(e,r,t){return r?r:u(e,t)})}function f(e){return E[e]}function d(e){return q.test(e)?e.replace(D,f):e}function m(e){return e.replace(S,"\\$&")}function g(e){if(e>=8192&&8202>=e)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function _(e){return F.test(e)}function b(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function k(e){return e.trim().replace(/\s+/g," ").toUpperCase()}var v=Object.prototype.hasOwnProperty,x=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,y=/&([a-z#][a-z0-9]{1,31});/gi,A=new RegExp(x.source+"|"+y.source,"gi"),C=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,w=e("./entities"),q=/[&<>"]/,D=/[&<>"]/g,E={"&":"&","<":"<",">":">",'"':"""},S=/[.?*+^$[\]\\(){}|-]/g,F=e("uc.micro/categories/P/regex");t.lib={},t.lib.mdurl=e("mdurl"),t.lib.ucmicro=e("uc.micro"),t.assign=o,t.isString=s,t.has=i,t.unescapeMd=p,t.unescapeAll=h,t.isValidEntityCode=c,t.fromCodePoint=l,t.escapeHtml=d,t.arrayReplaceAt=a,t.isWhiteSpace=g,t.isMdAsciiPunct=b,t.isPunctChar=_,t.escapeRE=m,t.normalizeReference=k},{"./entities":1,mdurl:58,"uc.micro":64,"uc.micro/categories/P/regex":62}],6:[function(e,r,t){"use strict";t.parseLinkLabel=e("./parse_link_label"),t.parseLinkDestination=e("./parse_link_destination"),t.parseLinkTitle=e("./parse_link_title")},{"./parse_link_destination":7,"./parse_link_label":8,"./parse_link_title":9}],7:[function(e,r,t){"use strict";var n=e("../common/utils").unescapeAll;r.exports=function(e,r,t){var s,i,o=0,a=r,c={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(r)){for(r++;t>r;){if(s=e.charCodeAt(r),10===s)return c;if(62===s)return c.pos=r+1,c.str=n(e.slice(a+1,r)),c.ok=!0,c;92===s&&t>r+1?r+=2:r++}return c}for(i=0;t>r&&(s=e.charCodeAt(r),32!==s)&&!(32>s||127===s);)if(92===s&&t>r+1)r+=2;else{if(40===s&&(i++,i>1))break;if(41===s&&(i--,0>i))break;r++}return a===r?c:(c.str=n(e.slice(a,r)),c.lines=o,c.pos=r,c.ok=!0,c)}},{"../common/utils":5}],8:[function(e,r,t){"use strict";r.exports=function(e,r,t){var n,s,i,o,a=-1,c=e.posMax,l=e.pos;for(e.pos=r+1,n=1;e.pos=t)return c;if(i=e.charCodeAt(r),34!==i&&39!==i&&40!==i)return c;for(r++,40===i&&(i=41);t>r;){if(s=e.charCodeAt(r),s===i)return c.pos=r+1,c.lines=o,c.str=n(e.slice(a+1,r)),c.ok=!0,c;10===s?o++:92===s&&t>r+1&&(r++,10===e.charCodeAt(r)&&o++),r++}return c}},{"../common/utils":5}],10:[function(e,r,t){"use strict";function n(e){var r=e.trim().toLowerCase();return _.test(r)?b.test(r)?!0:!1:!0}function s(e){var r=d.parse(e,!0);if(r.hostname&&(!r.protocol||k.indexOf(r.protocol)>=0))try{r.hostname=m.toASCII(r.hostname)}catch(t){}return d.encode(d.format(r))}function i(e){var r=d.parse(e,!0);if(r.hostname&&(!r.protocol||k.indexOf(r.protocol)>=0))try{r.hostname=m.toUnicode(r.hostname)}catch(t){}return d.decode(d.format(r))}function o(e,r){return this instanceof o?(r||a.isString(e)||(r=e||{},e="default"),this.inline=new h,this.block=new p,this.core=new u,this.renderer=new l,this.linkify=new f,this.validateLink=n,this.normalizeLink=s,this.normalizeLinkText=i,this.utils=a,this.helpers=c,this.options={},this.configure(e),void(r&&this.set(r))):new o(e,r)}var a=e("./common/utils"),c=e("./helpers"),l=e("./renderer"),u=e("./parser_core"),p=e("./parser_block"),h=e("./parser_inline"),f=e("linkify-it"),d=e("mdurl"),m=e("punycode"),g={"default":e("./presets/default"),zero:e("./presets/zero"),commonmark:e("./presets/commonmark")},_=/^(vbscript|javascript|file|data):/,b=/^data:image\/(gif|png|jpeg|webp);/,k=["http:","https:","mailto:"];o.prototype.set=function(e){return a.assign(this.options,e),this},o.prototype.configure=function(e){var r,t=this;if(a.isString(e)&&(r=e,e=g[r],!e))throw new Error('Wrong `markdown-it` preset "'+r+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach(function(r){e.components[r].rules&&t[r].ruler.enableOnly(e.components[r].rules)}),this},o.prototype.enable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(r){t=t.concat(this[r].ruler.enable(e,!0))},this);var n=e.filter(function(e){return t.indexOf(e)<0});if(n.length&&!r)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},o.prototype.disable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(r){t=t.concat(this[r].ruler.disable(e,!0))},this);var n=e.filter(function(e){return t.indexOf(e)<0});if(n.length&&!r)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},o.prototype.use=function(e){var r=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,r),this},o.prototype.parse=function(e,r){var t=new this.core.State(e,this,r);return this.core.process(t),t.tokens},o.prototype.render=function(e,r){return r=r||{},this.renderer.render(this.parse(e,r),this.options,r)},o.prototype.parseInline=function(e,r){var t=new this.core.State(e,this,r);return t.inlineMode=!0,this.core.process(t),t.tokens},o.prototype.renderInline=function(e,r){return r=r||{},this.renderer.render(this.parseInline(e,r),this.options,r)},r.exports=o},{"./common/utils":5,"./helpers":6,"./parser_block":11,"./parser_core":12,"./parser_inline":13,"./presets/commonmark":14,"./presets/default":15,"./presets/zero":16,"./renderer":17,"linkify-it":53,mdurl:58,punycode:51}],11:[function(e,r,t){"use strict";function n(){this.ruler=new s;for(var e=0;ea&&(e.line=a=e.skipEmptyLines(a),!(a>=t))&&!(e.tShift[a]=l){e.line=t;break}for(s=0;o>s&&!(n=i[s](e,a,t,!1));s++);if(e.tight=!c,e.isEmpty(e.line-1)&&(c=!0),a=e.line,t>a&&e.isEmpty(a)){if(c=!0,a++,t>a&&"list"===e.parentType&&e.isEmpty(a))break;e.line=a}}},n.prototype.parse=function(e,r,t,n){var s;return e?(s=new this.State(e,r,t,n),void this.tokenize(s,s.line,s.lineMax)):[]},n.prototype.State=e("./rules_block/state_block"),r.exports=n},{"./ruler":18,"./rules_block/blockquote":19,"./rules_block/code":20,"./rules_block/fence":21,"./rules_block/heading":22,"./rules_block/hr":23,"./rules_block/html_block":24,"./rules_block/lheading":25,"./rules_block/list":26,"./rules_block/paragraph":27,"./rules_block/reference":28,"./rules_block/state_block":29,"./rules_block/table":30}],12:[function(e,r,t){"use strict";function n(){this.ruler=new s;for(var e=0;er;r++)n[r](e)},n.prototype.State=e("./rules_core/state_core"),r.exports=n},{"./ruler":18,"./rules_core/block":31,"./rules_core/inline":32,"./rules_core/linkify":33,"./rules_core/normalize":34,"./rules_core/replacements":35,"./rules_core/smartquotes":36,"./rules_core/state_core":37}],13:[function(e,r,t){"use strict";function n(){this.ruler=new s;for(var e=0;er;r++)if(n[r](e,!0))return void(o[t]=e.pos);e.pos++,o[t]=e.pos},n.prototype.tokenize=function(e){for(var r,t,n=this.ruler.getRules(""),s=n.length,i=e.posMax,o=e.md.options.maxNesting;e.post&&!(r=n[t](e,!1));t++);if(r){if(e.pos>=i)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},n.prototype.parse=function(e,r,t,n){var s=new this.State(e,r,t,n);this.tokenize(s)},n.prototype.State=e("./rules_inline/state_inline"),r.exports=n},{"./ruler":18,"./rules_inline/autolink":38,"./rules_inline/backticks":39,"./rules_inline/emphasis":40,"./rules_inline/entity":41,"./rules_inline/escape":42,"./rules_inline/html_inline":43,"./rules_inline/image":44,"./rules_inline/link":45,"./rules_inline/newline":46,"./rules_inline/state_inline":47,"./rules_inline/strikethrough":48,"./rules_inline/text":49}],14:[function(e,r,t){"use strict";r.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"]}}}},{}],15:[function(e,r,t){"use strict";r.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}}},{}],16:[function(e,r,t){"use strict";r.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"]}}}},{}],17:[function(e,r,t){"use strict";function n(){this.rules=s({},a)}var s=e("./common/utils").assign,i=e("./common/utils").unescapeAll,o=e("./common/utils").escapeHtml,a={};a.code_inline=function(e,r){return""+o(e[r].content)+""},a.code_block=function(e,r){return""+o(e[r].content)+"
\n"},a.fence=function(e,r,t,n,s){var a,c=e[r],l=c.info?i(c.info).trim():"",u="";return l&&(u=l.split(/\s+/g)[0],c.attrPush(["class",t.langPrefix+u])),a=t.highlight?t.highlight(c.content,u)||o(c.content):o(c.content),""+a+"
\n"},a.image=function(e,r,t,n,s){var i=e[r];return i.attrs[i.attrIndex("alt")][1]=s.renderInlineAsText(i.children,t,n),s.renderToken(e,r,t)},a.hardbreak=function(e,r,t){return t.xhtmlOut?"
\n":"
\n"},a.softbreak=function(e,r,t){return t.breaks?t.xhtmlOut?"
\n":"
\n":"\n"},a.text=function(e,r){return o(e[r].content)},a.html_block=function(e,r){return e[r].content},a.html_inline=function(e,r){return e[r].content},n.prototype.renderAttrs=function(e){var r,t,n;if(!e.attrs)return"";for(n="",r=0,t=e.attrs.length;t>r;r++)n+=" "+o(e.attrs[r][0])+'="'+o(e.attrs[r][1])+'"';return n},n.prototype.renderToken=function(e,r,t){var n,s="",i=!1,o=e[r];return o.hidden?"":(o.block&&-1!==o.nesting&&r&&e[r-1].hidden&&(s+="\n"),s+=(-1===o.nesting?"":"<")+o.tag,s+=this.renderAttrs(o),0===o.nesting&&t.xhtmlOut&&(s+=" /"),o.block&&(i=!0,1===o.nesting&&r+1\n":">")},n.prototype.renderInline=function(e,r,t){for(var n,s="",i=this.rules,o=0,a=e.length;a>o;o++)n=e[o].type,s+="undefined"!=typeof i[n]?i[n](e,o,r,t,this):this.renderToken(e,o,r);return s},n.prototype.renderInlineAsText=function(e,r,t){for(var n="",s=this.rules,i=0,o=e.length;o>i;i++)"text"===e[i].type?n+=s.text(e,i,r,t,this):"image"===e[i].type&&(n+=this.renderInlineAsText(e[i].children,r,t));return n},n.prototype.render=function(e,r,t){var n,s,i,o="",a=this.rules;for(n=0,s=e.length;s>n;n++)i=e[n].type,o+="inline"===i?this.renderInline(e[n].children,r,t):"undefined"!=typeof a[i]?a[e[n].type](e,n,r,t,this):this.renderToken(e,n,r,t);return o},r.exports=n},{"./common/utils":5}],18:[function(e,r,t){"use strict";function n(){this.__rules__=[],this.__cache__=null}n.prototype.__find__=function(e){for(var r=0;rn){if(r)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!0,t.push(e)},this),this.__cache__=null,t},n.prototype.enableOnly=function(e,r){Array.isArray(e)||(e=[e]),this.__rules__.forEach(function(e){e.enabled=!1}),this.enable(e,r)},n.prototype.disable=function(e,r){Array.isArray(e)||(e=[e]);var t=[];return e.forEach(function(e){var n=this.__find__(e);if(0>n){if(r)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!1,t.push(e)},this),this.__cache__=null,t},n.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},r.exports=n},{}],19:[function(e,r,t){"use strict";r.exports=function(e,r,t,n){var s,i,o,a,c,l,u,p,h,f,d,m,g=e.bMarks[r]+e.tShift[r],_=e.eMarks[r];if(62!==e.src.charCodeAt(g++))return!1;if(n)return!0;for(32===e.src.charCodeAt(g)&&g++,c=e.blkIndent,e.blkIndent=0,a=[e.bMarks[r]],e.bMarks[r]=g,g=_>g?e.skipSpaces(g):g,i=g>=_,o=[e.tShift[r]],e.tShift[r]=g-e.bMarks[r],p=e.md.block.ruler.getRules("blockquote"),s=r+1;t>s&&!(e.tShift[s]=_));s++)if(62!==e.src.charCodeAt(g++)){if(i)break;for(m=!1,f=0,d=p.length;d>f;f++)if(p[f](e,s,t,!0)){m=!0;break}if(m)break;a.push(e.bMarks[s]),o.push(e.tShift[s]),e.tShift[s]=-1}else 32===e.src.charCodeAt(g)&&g++,a.push(e.bMarks[s]),e.bMarks[s]=g,g=_>g?e.skipSpaces(g):g,i=g>=_,o.push(e.tShift[s]),e.tShift[s]=g-e.bMarks[s];for(l=e.parentType,e.parentType="blockquote",h=e.push("blockquote_open","blockquote",1),h.markup=">",h.map=u=[r,0],e.md.block.tokenize(e,r,s),h=e.push("blockquote_close","blockquote",-1),h.markup=">",e.parentType=l,u[1]=e.line,f=0;fn;)if(e.isEmpty(n))n++;else{if(!(e.tShift[n]-e.blkIndent>=4))break;n++,s=n}return e.line=n,i=e.push("code_block","code",0),i.content=e.getLines(r,s,4+e.blkIndent,!0),i.map=[r,e.line],!0}},{}],21:[function(e,r,t){"use strict";r.exports=function(e,r,t,n){var s,i,o,a,c,l,u,p=!1,h=e.bMarks[r]+e.tShift[r],f=e.eMarks[r];if(h+3>f)return!1;if(s=e.src.charCodeAt(h),126!==s&&96!==s)return!1;if(c=h,h=e.skipChars(h,s),i=h-c,3>i)return!1;if(u=e.src.slice(c,h),o=e.src.slice(h,f),o.indexOf("`")>=0)return!1;if(n)return!0;for(a=r;(a++,!(a>=t))&&(h=c=e.bMarks[a]+e.tShift[a],f=e.eMarks[a],!(f>h&&e.tShift[a]=4||(h=e.skipChars(h,s),i>h-c||(h=e.skipSpaces(h),f>h)))){p=!0;break}return i=e.tShift[r],e.line=a+(p?1:0),l=e.push("fence","code",0),l.info=o,l.content=e.getLines(r+1,a,i,!0),l.markup=u,l.map=[r,e.line],!0}},{}],22:[function(e,r,t){"use strict";r.exports=function(e,r,t,n){var s,i,o,a,c=e.bMarks[r]+e.tShift[r],l=e.eMarks[r];if(s=e.src.charCodeAt(c),35!==s||c>=l)return!1;for(i=1,s=e.src.charCodeAt(++c);35===s&&l>c&&6>=i;)i++,s=e.src.charCodeAt(++c);return i>6||l>c&&32!==s?!1:n?!0:(l=e.skipCharsBack(l,32,c),o=e.skipCharsBack(l,35,c),o>c&&32===e.src.charCodeAt(o-1)&&(l=o),e.line=r+1,a=e.push("heading_open","h"+String(i),1),a.markup="########".slice(0,i),a.map=[r,e.line],a=e.push("inline","",0),a.content=e.src.slice(c,l).trim(),a.map=[r,e.line],a.children=[],a=e.push("heading_close","h"+String(i),-1),a.markup="########".slice(0,i),!0)}},{}],23:[function(e,r,t){"use strict";r.exports=function(e,r,t,n){var s,i,o,a,c=e.bMarks[r]+e.tShift[r],l=e.eMarks[r];if(s=e.src.charCodeAt(c++),42!==s&&45!==s&&95!==s)return!1;for(i=1;l>c;){if(o=e.src.charCodeAt(c++),o!==s&&32!==o)return!1;o===s&&i++}return 3>i?!1:n?!0:(e.line=r+1,a=e.push("hr","hr",0),a.map=[r,e.line],a.markup=Array(i+1).join(String.fromCharCode(s)),!0)}},{}],24:[function(e,r,t){"use strict";var n=e("../common/html_blocks"),s=e("../common/html_re").HTML_OPEN_CLOSE_TAG_RE,i=[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^?("+n.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(s.source+"\\s*$"),/^$/,!1]];r.exports=function(e,r,t,n){var s,o,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(l))return!1;for(c=e.src.slice(l,u),s=0;so&&!(e.tShift[o]=t?!1:e.tShift[c]3?!1:(s=e.bMarks[c]+e.tShift[c],i=e.eMarks[c],s>=i?!1:(n=e.src.charCodeAt(s),45!==n&&61!==n?!1:(s=e.skipChars(s,n),s=e.skipSpaces(s),i>s?!1:(s=e.bMarks[r]+e.tShift[r],e.line=c+1,a=61===n?1:2,o=e.push("heading_open","h"+String(a),1),o.markup=String.fromCharCode(n),o.map=[r,e.line],o=e.push("inline","",0),o.content=e.src.slice(s,e.eMarks[r]).trim(),o.map=[r,e.line-1],o.children=[],o=e.push("heading_close","h"+String(a),-1),o.markup=String.fromCharCode(n),!0))))}},{}],26:[function(e,r,t){"use strict";function n(e,r){var t,n,s;return n=e.bMarks[r]+e.tShift[r],s=e.eMarks[r],t=e.src.charCodeAt(n++),42!==t&&45!==t&&43!==t?-1:s>n&&32!==e.src.charCodeAt(n)?-1:n}function s(e,r){var t,n=e.bMarks[r]+e.tShift[r],s=n,i=e.eMarks[r];if(s+1>=i)return-1;if(t=e.src.charCodeAt(s++),48>t||t>57)return-1;for(;;){if(s>=i)return-1;t=e.src.charCodeAt(s++);{if(!(t>=48&&57>=t)){if(41===t||46===t)break;return-1}if(s-n>=10)return-1}}return i>s&&32!==e.src.charCodeAt(s)?-1:s}function i(e,r){var t,n,s=e.level+2;for(t=r+2,n=e.tokens.length-2;n>t;t++)e.tokens[t].level===s&&"paragraph_open"===e.tokens[t].type&&(e.tokens[t+2].hidden=!0,e.tokens[t].hidden=!0,t+=2)}r.exports=function(e,r,t,o){var a,c,l,u,p,h,f,d,m,g,_,b,k,v,x,y,A,C,w,q,D,E,S,F=!0;if((d=s(e,r))>=0)k=!0;else{if(!((d=n(e,r))>=0))return!1;k=!1}if(b=e.src.charCodeAt(d-1),o)return!0;for(x=e.tokens.length,k?(f=e.bMarks[r]+e.tShift[r],_=Number(e.src.substr(f,d-f-1)),q=e.push("ordered_list_open","ol",1),1!==_&&(q.attrs=[["start",_]])):q=e.push("bullet_list_open","ul",1),q.map=A=[r,0],q.markup=String.fromCharCode(b),a=r,y=!1,w=e.md.block.ruler.getRules("list");!(!(t>a)||(v=e.skipSpaces(d),m=e.eMarks[a],g=v>=m?1:v-d,g>4&&(g=1),c=d-e.bMarks[a]+g,q=e.push("list_item_open","li",1),q.markup=String.fromCharCode(b),q.map=C=[r,0],u=e.blkIndent,p=e.tight,l=e.tShift[r],h=e.parentType,e.tShift[r]=v-e.bMarks[r],e.blkIndent=c,e.tight=!0,e.parentType="list",e.md.block.tokenize(e,r,t,!0),(!e.tight||y)&&(F=!1),y=e.line-r>1&&e.isEmpty(e.line-1),e.blkIndent=u,e.tShift[r]=l,e.tight=p,e.parentType=h,q=e.push("list_item_close","li",-1),q.markup=String.fromCharCode(b),a=r=e.line,C[1]=a,v=e.bMarks[r],a>=t)||e.isEmpty(a)||e.tShift[a]D;D++)if(w[D](e,a,t,!0)){S=!0;break}if(S)break;if(k){if(d=s(e,a),0>d)break}else if(d=n(e,a),0>d)break;if(b!==e.src.charCodeAt(d-1))break}return q=k?e.push("ordered_list_close","ol",-1):e.push("bullet_list_close","ul",-1),q.markup=String.fromCharCode(b),A[1]=a,e.line=a,F&&i(e,x),!0}},{}],27:[function(e,r,t){"use strict";r.exports=function(e,r){for(var t,n,s,i,o,a=r+1,c=e.md.block.ruler.getRules("paragraph"),l=e.lineMax;l>a&&!e.isEmpty(a);a++)if(!(e.tShift[a]-e.blkIndent>3||e.tShift[a]<0)){for(n=!1,s=0,i=c.length;i>s;s++)if(c[s](e,a,l,!0)){n=!0;break}if(n)break}return t=e.getLines(r,a,e.blkIndent,!1).trim(),e.line=a,o=e.push("paragraph_open","p",1),o.map=[r,e.line],o=e.push("inline","",0),o.content=t,o.map=[r,e.line],o.children=[],o=e.push("paragraph_close","p",-1),!0}},{}],28:[function(e,r,t){"use strict";var n=e("../helpers/parse_link_destination"),s=e("../helpers/parse_link_title"),i=e("../common/utils").normalizeReference;r.exports=function(e,r,t,o){var a,c,l,u,p,h,f,d,m,g,_,b,k,v,x,y=0,A=e.bMarks[r]+e.tShift[r],C=e.eMarks[r],w=r+1;if(91!==e.src.charCodeAt(A))return!1;for(;++Aw&&!e.isEmpty(w);w++)if(!(e.tShift[w]-e.blkIndent>3||e.tShift[w]<0)){for(k=!1,h=0,f=v.length;f>h;h++)if(v[h](e,w,u,!0)){k=!0;break}if(k)break}for(b=e.getLines(r,w,e.blkIndent,!1).trim(),C=b.length,A=1;C>A;A++){if(a=b.charCodeAt(A),91===a)return!1;if(93===a){m=A;break}10===a?y++:92===a&&(A++,C>A&&10===b.charCodeAt(A)&&y++)}if(0>m||58!==b.charCodeAt(m+1))return!1;for(A=m+2;C>A;A++)if(a=b.charCodeAt(A),10===a)y++;else if(32!==a)break;if(g=n(b,A,C),!g.ok)return!1;if(p=e.md.normalizeLink(g.str),!e.md.validateLink(p))return!1;for(A=g.pos,y+=g.lines,c=A,l=y,_=A;C>A;A++)if(a=b.charCodeAt(A),10===a)y++;else if(32!==a)break;for(g=s(b,A,C),C>A&&_!==A&&g.ok?(x=g.str,A=g.pos,y+=g.lines):(x="",A=c,y=l);C>A&&32===b.charCodeAt(A);)A++;if(C>A&&10!==b.charCodeAt(A)&&x)for(x="",A=c,y=l;C>A&&32===b.charCodeAt(A);)A++;return C>A&&10!==b.charCodeAt(A)?!1:(d=i(b.slice(1,m)))?o?!0:("undefined"==typeof e.env.references&&(e.env.references={}),"undefined"==typeof e.env.references[d]&&(e.env.references[d]={title:x,href:p}),e.line=r+y+1,!0):!1}},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_title":9}],29:[function(e,r,t){"use strict";function n(e,r,t,n){var s,i,o,a,c,l,u;for(this.src=e,this.md=r,this.env=t,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.parentType="root",this.ddIndent=-1,this.level=0,this.result="",i=this.src,l=0,u=!1,o=a=l=0,c=i.length;c>a;a++){if(s=i.charCodeAt(a),!u){if(32===s){l++;continue}u=!0}(10===s||a===c-1)&&(10!==s&&a++,this.bMarks.push(o),this.eMarks.push(a),this.tShift.push(l),u=!1,l=0,o=a+1)}this.bMarks.push(i.length),this.eMarks.push(i.length),this.tShift.push(0),this.lineMax=this.bMarks.length-1}var s=e("../token");n.prototype.push=function(e,r,t){var n=new s(e,r,t);return n.block=!0,0>t&&this.level--,n.level=this.level,t>0&&this.level++,this.tokens.push(n),n},n.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},n.prototype.skipEmptyLines=function(e){for(var r=this.lineMax;r>e&&!(this.bMarks[e]+this.tShift[e]e&&32===this.src.charCodeAt(e);e++);return e},n.prototype.skipChars=function(e,r){for(var t=this.src.length;t>e&&this.src.charCodeAt(e)===r;e++);return e},n.prototype.skipCharsBack=function(e,r,t){if(t>=e)return e;for(;e>t;)if(r!==this.src.charCodeAt(--e))return e+1;return e},n.prototype.getLines=function(e,r,t,n){var s,i,o,a,c,l=e;if(e>=r)return"";if(l+1===r)return i=this.bMarks[l]+Math.min(this.tShift[l],t),o=this.eMarks[r-1]+(n?1:0),this.src.slice(i,o);for(a=new Array(r-e),s=0;r>l;l++,s++)c=this.tShift[l],c>t&&(c=t),0>c&&(c=0),i=this.bMarks[l]+c,o=r>l+1||n?this.eMarks[l]+1:this.eMarks[l],a[s]=this.src.slice(i,o);return a.join("")},n.prototype.Token=s,r.exports=n},{"../token":50}],30:[function(e,r,t){"use strict";function n(e,r){var t=e.bMarks[r]+e.blkIndent,n=e.eMarks[r];return e.src.substr(t,n-t)}function s(e){var r,t=[],n=0,s=e.length,i=0,o=0,a=!1,c=0;for(r=e.charCodeAt(n);s>n;)96===r&&i%2===0?(a=!a,c=n):124!==r||i%2!==0||a?92===r?i++:i=0:(t.push(e.substring(o,n)),o=n+1),n++,n===s&&a&&(a=!1,n=c+1),r=e.charCodeAt(n);return t.push(e.substring(o)),t}r.exports=function(e,r,t,i){var o,a,c,l,u,p,h,f,d,m,g;if(r+2>t)return!1;if(u=r+1,e.tShift[u]=e.eMarks[u])return!1;if(o=e.src.charCodeAt(c),124!==o&&45!==o&&58!==o)return!1;if(a=n(e,r+1),!/^[-:| ]+$/.test(a))return!1;if(p=a.split("|"),p.length<2)return!1;for(f=[],l=0;lu&&!(e.tShift[u]t;t++)r=s[t],"inline"===r.type&&e.md.inline.parse(r.content,e.md,e.env,r.children)}},{}],33:[function(e,r,t){"use strict";function n(e){return/^\s]/i.test(e)}function s(e){return/^<\/a\s*>/i.test(e)}var i=e("../common/utils").arrayReplaceAt;r.exports=function(e){var r,t,o,a,c,l,u,p,h,f,d,m,g,_,b,k,v,x=e.tokens;if(e.md.options.linkify)for(t=0,o=x.length;o>t;t++)if("inline"===x[t].type&&e.md.linkify.pretest(x[t].content))for(a=x[t].children,g=0,r=a.length-1;r>=0;r--)if(l=a[r],"link_close"!==l.type){if("html_inline"===l.type&&(n(l.content)&&g>0&&g--,s(l.content)&&g++),!(g>0)&&"text"===l.type&&e.md.linkify.test(l.content)){for(h=l.content,v=e.md.linkify.match(h),u=[],m=l.level,d=0,p=0;pd&&(c=new e.Token("text","",0),c.content=h.slice(d,f),c.level=m,u.push(c)),c=new e.Token("link_open","a",1),c.attrs=[["href",b]],c.level=m++,c.markup="linkify",c.info="auto",u.push(c),c=new e.Token("text","",0),c.content=k,c.level=m,u.push(c),c=new e.Token("link_close","a",-1),c.level=--m,c.markup="linkify",c.info="auto",u.push(c),d=v[p].lastIndex);d=0&&(t=0,o=0,r=r.replace(n,function(e,n){var s;return 10===r.charCodeAt(n)?(t=n+1,o=0,e):(s=" ".slice((n-t-o)%4),o=n-t+1,s)})),e.src=r}},{}],35:[function(e,r,t){"use strict";function n(e,r){return l[r.toLowerCase()]}function s(e){var r,t;for(r=e.length-1;r>=0;r--)t=e[r],"text"===t.type&&(t.content=t.content.replace(c,n))}function i(e){var r,t;for(r=e.length-1;r>=0;r--)t=e[r],"text"===t.type&&o.test(t.content)&&(t.content=t.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1\u2014$2").replace(/(^|\s)--(\s|$)/gm,"$1\u2013$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1\u2013$2"))}var o=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,a=/\((c|tm|r|p)\)/i,c=/\((c|tm|r|p)\)/gi,l={c:"\xa9",r:"\xae",p:"\xa7",tm:"\u2122"};r.exports=function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)"inline"===e.tokens[r].type&&(a.test(e.tokens[r].content)&&s(e.tokens[r].children),o.test(e.tokens[r].content)&&i(e.tokens[r].children))}},{}],36:[function(e,r,t){"use strict";function n(e,r,t){return e.substr(0,r)+t+e.substr(r+1)}function s(e,r){var t,s,c,p,h,f,d,m,g,_,b,k,v,x,y,A,C,w,q,D,E;for(q=[],t=0;t=0&&!(q[C].level<=d);C--);if(q.length=C+1,"text"===s.type){c=s.content,h=0,f=c.length;e:for(;f>h&&(l.lastIndex=h,p=l.exec(c));)if(y=A=!0,h=p.index+1,w="'"===p[0],g=p.index-1>=0?c.charCodeAt(p.index-1):32,_=f>h?c.charCodeAt(h):32,b=a(g)||o(String.fromCharCode(g)),k=a(_)||o(String.fromCharCode(_)),v=i(g),x=i(_),x?y=!1:k&&(v||b||(y=!1)),v?A=!1:b&&(x||k||(A=!1)),34===_&&'"'===p[0]&&g>=48&&57>=g&&(A=y=!1),y&&A&&(y=!1,A=k),y||A){if(A)for(C=q.length-1;C>=0&&(m=q[C],!(q[C].level=0;r--)"inline"===e.tokens[r].type&&c.test(e.tokens[r].content)&&s(e.tokens[r].children,e)}},{"../common/utils":5}],37:[function(e,r,t){"use strict";function n(e,r,t){this.src=e,this.env=t,this.tokens=[],this.inlineMode=!1,this.md=r}var s=e("../token");n.prototype.Token=s,r.exports=n},{"../token":50}],38:[function(e,r,t){"use strict";var n=e("../common/url_schemas"),s=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,i=/^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/;r.exports=function(e,r){var t,o,a,c,l,u,p=e.pos;return 60!==e.src.charCodeAt(p)?!1:(t=e.src.slice(p),t.indexOf(">")<0?!1:i.test(t)?(o=t.match(i),n.indexOf(o[1].toLowerCase())<0?!1:(c=o[0].slice(1,-1),l=e.md.normalizeLink(c),e.md.validateLink(l)?(r||(u=e.push("link_open","a",1),u.attrs=[["href",l]],u=e.push("text","",0),u.content=e.md.normalizeLinkText(c),u=e.push("link_close","a",-1)),e.pos+=o[0].length,!0):!1)):s.test(t)?(a=t.match(s),c=a[0].slice(1,-1),l=e.md.normalizeLink("mailto:"+c),e.md.validateLink(l)?(r||(u=e.push("link_open","a",1),u.attrs=[["href",l]],u.markup="autolink",u.info="auto",u=e.push("text","",0),u.content=e.md.normalizeLinkText(c),u=e.push("link_close","a",-1),u.markup="autolink",u.info="auto"),e.pos+=a[0].length,!0):!1):!1)}},{"../common/url_schemas":4}],39:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s,i,o,a,c=e.pos,l=e.src.charCodeAt(c);if(96!==l)return!1;for(t=c,c++,n=e.posMax;n>c&&96===e.src.charCodeAt(c);)c++;for(s=e.src.slice(t,c),i=o=c;-1!==(i=e.src.indexOf("`",o));){for(o=i+1;n>o&&96===e.src.charCodeAt(o);)o++;if(o-i===s.length)return r||(a=e.push("code_inline","code",0),a.markup=s,a.content=e.src.slice(c,i).replace(/[ \n]+/g," ").trim()),e.pos=o,!0}return r||(e.pending+=s),e.pos+=s.length,!0}},{}],40:[function(e,r,t){"use strict";function n(e,r){var t,n,a,c,l,u,p,h,f,d=r,m=!0,g=!0,_=e.posMax,b=e.src.charCodeAt(r);for(t=r>0?e.src.charCodeAt(r-1):32;_>d&&e.src.charCodeAt(d)===b;)d++;return a=d-r,n=_>d?e.src.charCodeAt(d):32,p=o(t)||i(String.fromCharCode(t)),f=o(n)||i(String.fromCharCode(n)),u=s(t),h=s(n),h?m=!1:f&&(u||p||(m=!1)),u?g=!1:p&&(h||f||(g=!1)),95===b?(c=m&&(!g||p),l=g&&(!m||f)):(c=m,l=g),{can_open:c,can_close:l,delims:a}}var s=e("../common/utils").isWhiteSpace,i=e("../common/utils").isPunctChar,o=e("../common/utils").isMdAsciiPunct;r.exports=function(e,r){var t,s,i,o,a,c,l,u,p=e.posMax,h=e.pos,f=e.src.charCodeAt(h);if(95!==f&&42!==f)return!1;if(r)return!1;if(l=n(e,h),t=l.delims,!l.can_open)return e.pos+=t,e.pending+=e.src.slice(h,e.pos),!0;for(e.pos=h+t,c=[t];e.posa){c.push(o-a);break}if(a-=o,0===c.length)break;e.pos+=o,o=c.pop()}if(0===c.length){t=o,i=!0;break}e.pos+=s;continue}l.can_open&&c.push(s),e.pos+=s}if(!i)return e.pos=h,!1;for(e.posMax=e.pos,e.pos=h+t,s=t;s>1;s-=2)u=e.push("strong_open","strong",1),u.markup=String.fromCharCode(f)+String.fromCharCode(f);for(s%2&&(u=e.push("em_open","em",1),u.markup=String.fromCharCode(f)),e.md.inline.tokenize(e),s%2&&(u=e.push("em_close","em",-1),u.markup=String.fromCharCode(f)),s=t;s>1;s-=2)u=e.push("strong_close","strong",-1),u.markup=String.fromCharCode(f)+String.fromCharCode(f);return e.pos=e.posMax+t,e.posMax=p,!0}},{"../common/utils":5}],41:[function(e,r,t){"use strict";var n=e("../common/entities"),s=e("../common/utils").has,i=e("../common/utils").isValidEntityCode,o=e("../common/utils").fromCodePoint,a=/^((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,c=/^&([a-z][a-z0-9]{1,31});/i;r.exports=function(e,r){var t,l,u,p=e.pos,h=e.posMax;if(38!==e.src.charCodeAt(p))return!1;if(h>p+1)if(t=e.src.charCodeAt(p+1),35===t){if(u=e.src.slice(p).match(a))return r||(l="x"===u[1][0].toLowerCase()?parseInt(u[1].slice(1),16):parseInt(u[1],10),e.pending+=o(i(l)?l:65533)),e.pos+=u[0].length,!0}else if(u=e.src.slice(p).match(c),u&&s(n,u[1]))return r||(e.pending+=n[u[1]]),e.pos+=u[0].length,!0;return r||(e.pending+="&"),e.pos++,!0}},{"../common/entities":1,"../common/utils":5}],42:[function(e,r,t){"use strict";for(var n=[],s=0;256>s;s++)n.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(e){n[e.charCodeAt(0)]=1}),r.exports=function(e,r){var t,s=e.pos,i=e.posMax;if(92!==e.src.charCodeAt(s))return!1;if(s++,i>s){if(t=e.src.charCodeAt(s),256>t&&0!==n[t])return r||(e.pending+=e.src[s]),e.pos+=2,!0;if(10===t){for(r||e.push("hardbreak","br",0),s++;i>s&&32===e.src.charCodeAt(s);)s++;return e.pos=s,!0}}return r||(e.pending+="\\"),e.pos++,!0}},{}],43:[function(e,r,t){"use strict";function n(e){var r=32|e;return r>=97&&122>=r}var s=e("../common/html_re").HTML_TAG_RE;r.exports=function(e,r){var t,i,o,a,c=e.pos;return e.md.options.html?(o=e.posMax,60!==e.src.charCodeAt(c)||c+2>=o?!1:(t=e.src.charCodeAt(c+1),(33===t||63===t||47===t||n(t))&&(i=e.src.slice(c).match(s))?(r||(a=e.push("html_inline","",0),a.content=e.src.slice(c,c+i[0].length)),e.pos+=i[0].length,!0):!1)):!1}},{"../common/html_re":3}],44:[function(e,r,t){"use strict";var n=e("../helpers/parse_link_label"),s=e("../helpers/parse_link_destination"),i=e("../helpers/parse_link_title"),o=e("../common/utils").normalizeReference;r.exports=function(e,r){var t,a,c,l,u,p,h,f,d,m,g,_,b="",k=e.pos,v=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(u=e.pos+2,l=n(e,e.pos+1,!1),0>l)return!1;if(p=l+1,v>p&&40===e.src.charCodeAt(p)){for(p++;v>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(p>=v)return!1;for(_=p,f=s(e.src,p,e.posMax),f.ok&&(b=e.md.normalizeLink(f.str),e.md.validateLink(b)?p=f.pos:b=""),_=p;v>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(f=i(e.src,p,e.posMax),v>p&&_!==p&&f.ok)for(d=f.str,p=f.pos;v>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);else d="";if(p>=v||41!==e.src.charCodeAt(p))return e.pos=k,!1;p++}else{if("undefined"==typeof e.env.references)return!1;for(;v>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(v>p&&91===e.src.charCodeAt(p)?(_=p+1,p=n(e,p),p>=0?c=e.src.slice(_,p++):p=l+1):p=l+1,c||(c=e.src.slice(u,l)),h=e.env.references[o(c)],!h)return e.pos=k,!1;b=h.href,d=h.title}if(!r){e.pos=u,e.posMax=l;var x=new e.md.inline.State(e.src.slice(u,l),e.md,e.env,g=[]);x.md.inline.tokenize(x),m=e.push("image","img",0),m.attrs=t=[["src",b],["alt",""]],m.children=g,d&&t.push(["title",d])}return e.pos=p,e.posMax=v,!0}},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_label":8,"../helpers/parse_link_title":9}],45:[function(e,r,t){"use strict";var n=e("../helpers/parse_link_label"),s=e("../helpers/parse_link_destination"),i=e("../helpers/parse_link_title"),o=e("../common/utils").normalizeReference;r.exports=function(e,r){var t,a,c,l,u,p,h,f,d,m,g="",_=e.pos,b=e.posMax,k=e.pos;if(91!==e.src.charCodeAt(e.pos))return!1;if(u=e.pos+1,l=n(e,e.pos,!0),0>l)return!1;if(p=l+1,b>p&&40===e.src.charCodeAt(p)){for(p++;b>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(p>=b)return!1;for(k=p,h=s(e.src,p,e.posMax),h.ok&&(g=e.md.normalizeLink(h.str),e.md.validateLink(g)?p=h.pos:g=""),k=p;b>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(h=i(e.src,p,e.posMax),b>p&&k!==p&&h.ok)for(d=h.str,p=h.pos;b>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);else d="";if(p>=b||41!==e.src.charCodeAt(p))return e.pos=_,!1;p++}else{if("undefined"==typeof e.env.references)return!1;for(;b>p&&(a=e.src.charCodeAt(p),32===a||10===a);p++);if(b>p&&91===e.src.charCodeAt(p)?(k=p+1,p=n(e,p),p>=0?c=e.src.slice(k,p++):p=l+1):p=l+1,c||(c=e.src.slice(u,l)),f=e.env.references[o(c)],!f)return e.pos=_,!1;g=f.href,d=f.title}return r||(e.pos=u,e.posMax=l,m=e.push("link_open","a",1),m.attrs=t=[["href",g]],d&&t.push(["title",d]),e.md.inline.tokenize(e),m=e.push("link_close","a",-1)),e.pos=p,e.posMax=b,!0}},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_label":8,"../helpers/parse_link_title":9}],46:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s=e.pos;if(10!==e.src.charCodeAt(s))return!1;for(t=e.pending.length-1,n=e.posMax,r||(t>=0&&32===e.pending.charCodeAt(t)?t>=1&&32===e.pending.charCodeAt(t-1)?(e.pending=e.pending.replace(/ +$/,""),e.push("hardbreak","br",0)):(e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0)):e.push("softbreak","br",0)),s++;n>s&&32===e.src.charCodeAt(s);)s++;return e.pos=s,!0}},{}],47:[function(e,r,t){"use strict";function n(e,r,t,n){this.src=e,this.env=t,this.md=r,this.tokens=n,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={}}var s=e("../token");n.prototype.pushPending=function(){var e=new s("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e},n.prototype.push=function(e,r,t){this.pending&&this.pushPending();var n=new s(e,r,t);return 0>t&&this.level--,n.level=this.level,t>0&&this.level++,this.pendingLevel=this.level,this.tokens.push(n),n},n.prototype.Token=s,r.exports=n},{"../token":50}],48:[function(e,r,t){"use strict";function n(e,r){var t,n,a,c,l,u,p,h=r,f=!0,d=!0,m=e.posMax,g=e.src.charCodeAt(r);for(t=r>0?e.src.charCodeAt(r-1):32;m>h&&e.src.charCodeAt(h)===g;)h++;return h>=m&&(f=!1),a=h-r,n=m>h?e.src.charCodeAt(h):32,l=o(t)||i(String.fromCharCode(t)),p=o(n)||i(String.fromCharCode(n)),c=s(t),u=s(n),u?f=!1:p&&(c||l||(f=!1)),c?d=!1:l&&(u||p||(d=!1)),{can_open:f,can_close:d,delims:a}}var s=e("../common/utils").isWhiteSpace,i=e("../common/utils").isPunctChar,o=e("../common/utils").isMdAsciiPunct;r.exports=function(e,r){var t,s,i,o,a,c,l,u=e.posMax,p=e.pos,h=e.src.charCodeAt(p);if(126!==h)return!1;if(r)return!1;if(c=n(e,p),t=c.delims,!c.can_open)return e.pos+=t,e.pending+=e.src.slice(p,e.pos),!0;if(a=Math.floor(t/2),0>=a)return!1;for(e.pos=p+t;e.pos=a){e.pos+=s-2,o=!0;break}a-=i,e.pos+=s;continue}c.can_open&&(a+=i),e.pos+=s}return o?(e.posMax=e.pos,e.pos=p+2,l=e.push("s_open","s",1),l.markup="~~",e.md.inline.tokenize(e),l=e.push("s_close","s",-1),l.markup="~~",e.pos=e.posMax+2,e.posMax=u,!0):(e.pos=p,!1)}},{"../common/utils":5}],49:[function(e,r,t){"use strict";function n(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}r.exports=function(e,r){for(var t=e.pos;tt;t++)if(r[t][0]===e)return t;return-1},n.prototype.attrPush=function(e){this.attrs?this.attrs.push(e):this.attrs=[e]},r.exports=n},{}],51:[function(r,t,n){(function(r){!function(s){function i(e){throw RangeError(M[e])}function o(e,r){for(var t=e.length;t--;)e[t]=r(e[t]);return e}function a(e,r){return o(e.split(T),r).join(".")}function c(e){for(var r,t,n=[],s=0,i=e.length;i>s;)r=e.charCodeAt(s++),r>=55296&&56319>=r&&i>s?(t=e.charCodeAt(s++),56320==(64512&t)?n.push(((1023&r)<<10)+(1023&t)+65536):(n.push(r),s--)):n.push(r);return n}function l(e){return o(e,function(e){var r="";return e>65535&&(e-=65536,r+=B(e>>>10&1023|55296),e=56320|1023&e),r+=B(e)}).join("")}function u(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:A}function p(e,r){return e+22+75*(26>e)-((0!=r)<<5)}function h(e,r,t){var n=0;for(e=t?I(e/D):e>>1,e+=I(e/r);e>R*w>>1;n+=A)e=I(e/R);return I(n+(R+1)*e/(e+q))}function f(e){var r,t,n,s,o,a,c,p,f,d,m=[],g=e.length,_=0,b=S,k=E;for(t=e.lastIndexOf(F),0>t&&(t=0),n=0;t>n;++n)e.charCodeAt(n)>=128&&i("not-basic"),m.push(e.charCodeAt(n));for(s=t>0?t+1:0;g>s;){for(o=_,a=1,c=A;s>=g&&i("invalid-input"),p=u(e.charCodeAt(s++)),(p>=A||p>I((y-_)/a))&&i("overflow"),_+=p*a,f=k>=c?C:c>=k+w?w:c-k,!(f>p);c+=A)d=A-f,a>I(y/d)&&i("overflow"),a*=d;r=m.length+1,k=h(_-o,r,0==o),I(_/r)>y-b&&i("overflow"),b+=I(_/r),_%=r,m.splice(_++,0,b)}return l(m)}function d(e){var r,t,n,s,o,a,l,u,f,d,m,g,_,b,k,v=[];for(e=c(e),g=e.length,r=S,t=0,o=E,a=0;g>a;++a)m=e[a],128>m&&v.push(B(m));for(n=s=v.length,s&&v.push(F);g>n;){for(l=y,a=0;g>a;++a)m=e[a],m>=r&&l>m&&(l=m);for(_=n+1,l-r>I((y-t)/_)&&i("overflow"),t+=(l-r)*_,r=l,a=0;g>a;++a)if(m=e[a],r>m&&++t>y&&i("overflow"),m==r){for(u=t,f=A;d=o>=f?C:f>=o+w?w:f-o,!(d>u);f+=A)k=u-d,b=A-d,v.push(B(p(d+k%b,0))),u=I(k/b);v.push(B(p(u,0))),o=h(t,_,n==s),t=0,++n}++t,++r}return v.join("")}function m(e){return a(e,function(e){return z.test(e)?f(e.slice(4).toLowerCase()):e})}function g(e){return a(e,function(e){return L.test(e)?"xn--"+d(e):e})}var _="object"==typeof n&&n,b="object"==typeof t&&t&&t.exports==_&&t,k="object"==typeof r&&r;(k.global===k||k.window===k)&&(s=k);var v,x,y=2147483647,A=36,C=1,w=26,q=38,D=700,E=72,S=128,F="-",z=/^xn--/,L=/[^ -~]/,T=/\x2E|\u3002|\uFF0E|\uFF61/g,M={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},R=A-C,I=Math.floor,B=String.fromCharCode;if(v={version:"1.2.4",ucs2:{decode:c,encode:l},decode:f,encode:d,toASCII:g,toUnicode:m},"function"==typeof e&&"object"==typeof e.amd&&e.amd)e("punycode",function(){return v});else if(_&&!_.nodeType)if(b)b.exports=v;else for(x in v)v.hasOwnProperty(x)&&(_[x]=v[x]);else s.punycode=v}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],52:[function(e,r,t){r.exports={Aacute:"\xc1",aacute:"\xe1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223e",acd:"\u223f",acE:"\u223e\u0333",Acirc:"\xc2",acirc:"\xe2",acute:"\xb4",Acy:"\u0410",acy:"\u0430",AElig:"\xc6",aelig:"\xe6",af:"\u2061",Afr:"\ud835\udd04",afr:"\ud835\udd1e",Agrave:"\xc0",agrave:"\xe0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03b1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2a3f",amp:"&",AMP:"&",andand:"\u2a55",And:"\u2a53",and:"\u2227",andd:"\u2a5c",andslope:"\u2a58",andv:"\u2a5a",ang:"\u2220",ange:"\u29a4",angle:"\u2220",angmsdaa:"\u29a8",angmsdab:"\u29a9",angmsdac:"\u29aa",angmsdad:"\u29ab",angmsdae:"\u29ac",angmsdaf:"\u29ad",angmsdag:"\u29ae",angmsdah:"\u29af",angmsd:"\u2221",angrt:"\u221f",angrtvb:"\u22be",angrtvbd:"\u299d",angsph:"\u2222",angst:"\xc5",angzarr:"\u237c",Aogon:"\u0104",aogon:"\u0105",Aopf:"\ud835\udd38",aopf:"\ud835\udd52",apacir:"\u2a6f",ap:"\u2248",apE:"\u2a70",ape:"\u224a",apid:"\u224b",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224a",Aring:"\xc5",aring:"\xe5",Ascr:"\ud835\udc9c",ascr:"\ud835\udcb6",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224d",Atilde:"\xc3",atilde:"\xe3",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:"\u2305",Barwed:"\u2306",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:"\ud835\udd05",bfr:"\ud835\udd1f",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:"\ud835\udd39",bopf:"\ud835\udd53",bot:"\u22a5",bottom:"\u22a5",bowtie:"\u22c8",boxbox:"\u29c9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250c",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252c",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229f",boxplus:"\u229e",boxtimes:"\u22a0",boxul:"\u2518",boxuL:"\u255b",boxUl:"\u255c",boxUL:"\u255d",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255a",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253c",boxvH:"\u256a",boxVh:"\u256b",boxVH:"\u256c",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251c",boxvR:"\u255e",boxVr:"\u255f",boxVR:"\u2560",bprime:"\u2035",breve:"\u02d8",Breve:"\u02d8",brvbar:"\xa6",bscr:"\ud835\udcb7",Bscr:"\u212c",bsemi:"\u204f",bsim:"\u223d",bsime:"\u22cd",bsolb:"\u29c5",bsol:"\\",bsolhsub:"\u27c8",bull:"\u2022",bullet:"\u2022",bump:"\u224e",bumpE:"\u2aae",bumpe:"\u224f",Bumpeq:"\u224e",bumpeq:"\u224f",Cacute:"\u0106",cacute:"\u0107",capand:"\u2a44",capbrcup:"\u2a49",capcap:"\u2a4b",cap:"\u2229",Cap:"\u22d2",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",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2a4c",ccupssm:"\u2a50",Cdot:"\u010a",cdot:"\u010b",cedil:"\xb8",Cedilla:"\xb8",cemptyv:"\u29b2",cent:"\xa2",centerdot:"\xb7",CenterDot:"\xb7",cfr:"\ud835\udd20",Cfr:"\u212d",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03a7",chi:"\u03c7",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",cir:"\u25cb",cirE:"\u29c3",cire:"\u2257",cirfnint:"\u2a10",cirmid:"\u2aef",cirscir:"\u29c2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201d",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2a74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2a6d",Congruent:"\u2261",conint:"\u222e",Conint:"\u222f",ContourIntegral:"\u222e",copf:"\ud835\udd54",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xa9",COPY:"\xa9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21b5",cross:"\u2717",Cross:"\u2a2f",Cscr:"\ud835\udc9e",cscr:"\ud835\udcb8",csub:"\u2acf",csube:"\u2ad1",csup:"\u2ad0",csupe:"\u2ad2",ctdot:"\u22ef",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22de",cuesc:"\u22df",cularr:"\u21b6",cularrp:"\u293d",cupbrcap:"\u2a48",cupcap:"\u2a46",CupCap:"\u224d",cup:"\u222a",Cup:"\u22d3",cupcup:"\u2a4a",cupdot:"\u228d",cupor:"\u2a45",cups:"\u222a\ufe00",curarr:"\u21b7",curarrm:"\u293c",curlyeqprec:"\u22de",curlyeqsucc:"\u22df",curlyvee:"\u22ce",curlywedge:"\u22cf",curren:"\xa4",curvearrowleft:"\u21b6",curvearrowright:"\u21b7",cuvee:"\u22ce",cuwed:"\u22cf",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232d",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21a1",dArr:"\u21d3",dash:"\u2010",Dashv:"\u2ae4",dashv:"\u22a3",dbkarow:"\u290f",dblac:"\u02dd",Dcaron:"\u010e",dcaron:"\u010f",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21ca",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2a77",deg:"\xb0",Del:"\u2207",Delta:"\u0394",delta:"\u03b4",demptyv:"\u29b1",dfisht:"\u297f",Dfr:"\ud835\udd07",dfr:"\ud835\udd21",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",divideontimes:"\u22c7",divonx:"\u22c7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231e",dlcrop:"\u230d",dollar:"$",Dopf:"\ud835\udd3b",dopf:"\ud835\udd55",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",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21d3",DownArrowUpArrow:"\u21f5",DownBreve:"\u0311",downdownarrows:"\u21ca",downharpoonleft:"\u21c3",downharpoonright:"\u21c2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295e",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21bd",DownRightTeeVector:"\u295f",DownRightVectorBar:"\u2957",DownRightVector:"\u21c1",DownTeeArrow:"\u21a7",DownTee:"\u22a4",drbkarow:"\u2910",drcorn:"\u231f",drcrop:"\u230c",Dscr:"\ud835\udc9f",dscr:"\ud835\udcb9",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",easter:"\u2a6e",Ecaron:"\u011a",ecaron:"\u011b",Ecirc:"\xca",ecirc:"\xea",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042d",ecy:"\u044d",eDDot:"\u2a77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\ud835\udd08",efr:"\ud835\udd22",eg:"\u2a9a",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:"\ud835\udd3c",eopf:"\ud835\udd56",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:"\u212f",Escr:"\u2130",esdot:"\u2250",Esim:"\u2a73",esim:"\u2242",Eta:"\u0397",eta:"\u03b7",ETH:"\xd0",eth:"\xf0",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:"\ud835\udd09",ffr:"\ud835\udd23",filig:"\ufb01",FilledSmallSquare:"\u25fc",FilledVerySmallSquare:"\u25aa",fjlig:"fj",flat:"\u266d",fllig:"\ufb02",fltns:"\u25b1",fnof:"\u0192",Fopf:"\ud835\udd3d",fopf:"\ud835\udd57",forall:"\u2200",ForAll:"\u2200",fork:"\u22d4",forkv:"\u2ad9",Fouriertrf:"\u2131",fpartint:"\u2a0d",frac12:"\xbd",frac13:"\u2153",frac14:"\xbc",frac15:"\u2155",frac16:"\u2159",frac18:"\u215b",frac23:"\u2154",frac25:"\u2156",frac34:"\xbe",frac35:"\u2157",frac38:"\u215c",frac45:"\u2158",frac56:"\u215a",frac58:"\u215d",frac78:"\u215e",frasl:"\u2044",frown:"\u2322",fscr:"\ud835\udcbb",Fscr:"\u2131",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:"\u2265",gE:"\u2267",gEl:"\u2a8c",gel:"\u22db",geq:"\u2265",geqq:"\u2267",geqslant:"\u2a7e",gescc:"\u2aa9",ges:"\u2a7e",gesdot:"\u2a80",gesdoto:"\u2a82",gesdotol:"\u2a84",gesl:"\u22db\ufe00",gesles:"\u2a94",Gfr:"\ud835\udd0a",gfr:"\ud835\udd24",gg:"\u226b",Gg:"\u22d9",ggg:"\u22d9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2aa5",gl:"\u2277",glE:"\u2a92",glj:"\u2aa4",gnap:"\u2a8a",gnapprox:"\u2a8a",gne:"\u2a88",gnE:"\u2269",gneq:"\u2a88",gneqq:"\u2269",gnsim:"\u22e7",Gopf:"\ud835\udd3e",gopf:"\ud835\udd58",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22db",GreaterFullEqual:"\u2267",GreaterGreater:"\u2aa2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2a7e",GreaterTilde:"\u2273",Gscr:"\ud835\udca2",gscr:"\u210a",gsim:"\u2273",gsime:"\u2a8e",gsiml:"\u2a90",gtcc:"\u2aa7",gtcir:"\u2a7a",gt:">",GT:">",Gt:"\u226b",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",harrcir:"\u2948",harr:"\u2194",hArr:"\u21d4",harrw:"\u21ad",Hat:"^",hbar:"\u210f",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22b9",hfr:"\ud835\udd25",Hfr:"\u210c",HilbertSpace:"\u210b",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21ff",homtht:"\u223b",hookleftarrow:"\u21a9",hookrightarrow:"\u21aa",hopf:"\ud835\udd59",Hopf:"\u210d",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\ud835\udcbd",Hscr:"\u210b",hslash:"\u210f",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224e",HumpEqual:"\u224f",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xcd",iacute:"\xed",ic:"\u2063",Icirc:"\xce",icirc:"\xee",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xa1",iff:"\u21d4",ifr:"\ud835\udd26",Ifr:"\u2111",Igrave:"\xcc",igrave:"\xec",ii:"\u2148",iiiint:"\u2a0c",iiint:"\u222d",iinfin:"\u29dc",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012a",imacr:"\u012b",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22b7",imped:"\u01b5",Implies:"\u21d2",incare:"\u2105","in":"\u2208",infin:"\u221e",infintie:"\u29dd",inodot:"\u0131",intcal:"\u22ba","int":"\u222b",Int:"\u222c",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:"\ud835\udd40",iopf:"\ud835\udd5a",Iota:"\u0399",iota:"\u03b9",iprod:"\u2a3c",iquest:"\xbf",iscr:"\ud835\udcbe",Iscr:"\u2110",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",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\ud835\udd0d",jfr:"\ud835\udd27",jmath:"\u0237",Jopf:"\ud835\udd41",jopf:"\ud835\udd5b",Jscr:"\ud835\udca5",jscr:"\ud835\udcbf",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039a",kappa:"\u03ba",kappav:"\u03f0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041a",kcy:"\u043a",Kfr:"\ud835\udd0e",kfr:"\ud835\udd28",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040c",kjcy:"\u045c",
-Kopf:"\ud835\udd42",kopf:"\ud835\udd5c",Kscr:"\ud835\udca6",kscr:"\ud835\udcc0",lAarr:"\u21da",Lacute:"\u0139",lacute:"\u013a",laemptyv:"\u29b4",lagran:"\u2112",Lambda:"\u039b",lambda:"\u03bb",lang:"\u27e8",Lang:"\u27ea",langd:"\u2991",langle:"\u27e8",lap:"\u2a85",Laplacetrf:"\u2112",laquo:"\xab",larrb:"\u21e4",larrbfs:"\u291f",larr:"\u2190",Larr:"\u219e",lArr:"\u21d0",larrfs:"\u291d",larrhk:"\u21a9",larrlp:"\u21ab",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21a2",latail:"\u2919",lAtail:"\u291b",lat:"\u2aab",late:"\u2aad",lates:"\u2aad\ufe00",lbarr:"\u290c",lBarr:"\u290e",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:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27e8",LeftArrowBar:"\u21e4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21d0",LeftArrowRightArrow:"\u21c6",leftarrowtail:"\u21a2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27e6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21c3",LeftFloor:"\u230a",leftharpoondown:"\u21bd",leftharpoonup:"\u21bc",leftleftarrows:"\u21c7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21d4",leftrightarrows:"\u21c6",leftrightharpoons:"\u21cb",leftrightsquigarrow:"\u21ad",LeftRightVector:"\u294e",LeftTeeArrow:"\u21a4",LeftTee:"\u22a3",LeftTeeVector:"\u295a",leftthreetimes:"\u22cb",LeftTriangleBar:"\u29cf",LeftTriangle:"\u22b2",LeftTriangleEqual:"\u22b4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21bf",LeftVectorBar:"\u2952",LeftVector:"\u21bc",lEg:"\u2a8b",leg:"\u22da",leq:"\u2264",leqq:"\u2266",leqslant:"\u2a7d",lescc:"\u2aa8",les:"\u2a7d",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:"\ud835\udd0f",lfr:"\ud835\udd29",lg:"\u2276",lgE:"\u2a91",lHar:"\u2962",lhard:"\u21bd",lharu:"\u21bc",lharul:"\u296a",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21c7",ll:"\u226a",Ll:"\u22d8",llcorner:"\u231e",Lleftarrow:"\u21da",llhard:"\u296b",lltri:"\u25fa",Lmidot:"\u013f",lmidot:"\u0140",lmoustache:"\u23b0",lmoust:"\u23b0",lnap:"\u2a89",lnapprox:"\u2a89",lne:"\u2a87",lnE:"\u2268",lneq:"\u2a87",lneqq:"\u2268",lnsim:"\u22e6",loang:"\u27ec",loarr:"\u21fd",lobrk:"\u27e6",longleftarrow:"\u27f5",LongLeftArrow:"\u27f5",Longleftarrow:"\u27f8",longleftrightarrow:"\u27f7",LongLeftRightArrow:"\u27f7",Longleftrightarrow:"\u27fa",longmapsto:"\u27fc",longrightarrow:"\u27f6",LongRightArrow:"\u27f6",Longrightarrow:"\u27f9",looparrowleft:"\u21ab",looparrowright:"\u21ac",lopar:"\u2985",Lopf:"\ud835\udd43",lopf:"\ud835\udd5d",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:"\ud835\udcc1",Lscr:"\u2112",lsh:"\u21b0",Lsh:"\u21b0",lsim:"\u2272",lsime:"\u2a8d",lsimg:"\u2a8f",lsqb:"[",lsquo:"\u2018",lsquor:"\u201a",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2aa6",ltcir:"\u2a79",lt:"<",LT:"<",Lt:"\u226a",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",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:"\ud835\udd10",mfr:"\ud835\udd2a",mho:"\u2127",micro:"\xb5",midast:"*",midcir:"\u2af0",mid:"\u2223",middot:"\xb7",minusb:"\u229f",minus:"\u2212",minusd:"\u2238",minusdu:"\u2a2a",MinusPlus:"\u2213",mlcp:"\u2adb",mldr:"\u2026",mnplus:"\u2213",models:"\u22a7",Mopf:"\ud835\udd44",mopf:"\ud835\udd5e",mp:"\u2213",mscr:"\ud835\udcc2",Mscr:"\u2133",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",natural:"\u266e",naturals:"\u2115",natur:"\u266e",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",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21d7",nearrow:"\u2197",ne:"\u2260",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:"\ud835\udd11",nfr:"\ud835\udd2b",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:"\u21ae",nhArr:"\u21ce",nhpar:"\u2af2",ni:"\u220b",nis:"\u22fc",nisd:"\u22fa",niv:"\u220b",NJcy:"\u040a",njcy:"\u045a",nlarr:"\u219a",nlArr:"\u21cd",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219a",nLeftarrow:"\u21cd",nleftrightarrow:"\u21ae",nLeftrightarrow:"\u21ce",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:"\ud835\udd5f",Nopf:"\u2115",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",NotLeftTriangleBar:"\u29cf\u0338",NotLeftTriangle:"\u22ea",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",NotRightTriangleBar:"\u29d0\u0338",NotRightTriangle:"\u22eb",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",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2afd\u20e5",npart:"\u2202\u0338",npolint:"\u2a14",npr:"\u2280",nprcue:"\u22e0",nprec:"\u2280",npreceq:"\u2aaf\u0338",npre:"\u2aaf\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219b",nrArr:"\u21cf",nrarrw:"\u219d\u0338",nrightarrow:"\u219b",nRightarrow:"\u21cf",nrtri:"\u22eb",nrtrie:"\u22ed",nsc:"\u2281",nsccue:"\u22e1",nsce:"\u2ab0\u0338",Nscr:"\ud835\udca9",nscr:"\ud835\udcc3",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",ntlg:"\u2278",ntriangleleft:"\u22ea",ntrianglelefteq:"\u22ec",ntriangleright:"\u22eb",ntrianglerighteq:"\u22ed",Nu:"\u039d",nu:"\u03bd",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224d\u20d2",nvdash:"\u22ac",nvDash:"\u22ad",nVdash:"\u22ae",nVDash:"\u22af",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:"\u2196",nwArr:"\u21d6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xd3",oacute:"\xf3",oast:"\u229b",Ocirc:"\xd4",ocirc:"\xf4",ocir:"\u229a",Ocy:"\u041e",ocy:"\u043e",odash:"\u229d",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2a38",odot:"\u2299",odsold:"\u29bc",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29bf",Ofr:"\ud835\udd12",ofr:"\ud835\udd2c",ogon:"\u02db",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:"\ud835\udd46",oopf:"\ud835\udd60",opar:"\u29b7",OpenCurlyDoubleQuote:"\u201c",OpenCurlyQuote:"\u2018",operp:"\u29b9",oplus:"\u2295",orarr:"\u21bb",Or:"\u2a54",or:"\u2228",ord:"\u2a5d",order:"\u2134",orderof:"\u2134",ordf:"\xaa",ordm:"\xba",origof:"\u22b6",oror:"\u2a56",orslope:"\u2a57",orv:"\u2a5b",oS:"\u24c8",Oscr:"\ud835\udcaa",oscr:"\u2134",Oslash:"\xd8",oslash:"\xf8",osol:"\u2298",Otilde:"\xd5",otilde:"\xf5",otimesas:"\u2a36",Otimes:"\u2a37",otimes:"\u2297",Ouml:"\xd6",ouml:"\xf6",ovbar:"\u233d",OverBar:"\u203e",OverBrace:"\u23de",OverBracket:"\u23b4",OverParenthesis:"\u23dc",para:"\xb6",parallel:"\u2225",par:"\u2225",parsim:"\u2af3",parsl:"\u2afd",part:"\u2202",PartialD:"\u2202",Pcy:"\u041f",pcy:"\u043f",percnt:"%",period:".",permil:"\u2030",perp:"\u22a5",pertenk:"\u2031",Pfr:"\ud835\udd13",pfr:"\ud835\udd2d",Phi:"\u03a6",phi:"\u03c6",phiv:"\u03d5",phmmat:"\u2133",phone:"\u260e",Pi:"\u03a0",pi:"\u03c0",pitchfork:"\u22d4",piv:"\u03d6",planck:"\u210f",planckh:"\u210e",plankv:"\u210f",plusacir:"\u2a23",plusb:"\u229e",pluscir:"\u2a22",plus:"+",plusdo:"\u2214",plusdu:"\u2a25",pluse:"\u2a72",PlusMinus:"\xb1",plusmn:"\xb1",plussim:"\u2a26",plustwo:"\u2a27",pm:"\xb1",Poincareplane:"\u210c",pointint:"\u2a15",popf:"\ud835\udd61",Popf:"\u2119",pound:"\xa3",prap:"\u2ab7",Pr:"\u2abb",pr:"\u227a",prcue:"\u227c",precapprox:"\u2ab7",prec:"\u227a",preccurlyeq:"\u227c",Precedes:"\u227a",PrecedesEqual:"\u2aaf",PrecedesSlantEqual:"\u227c",PrecedesTilde:"\u227e",preceq:"\u2aaf",precnapprox:"\u2ab9",precneqq:"\u2ab5",precnsim:"\u22e8",pre:"\u2aaf",prE:"\u2ab3",precsim:"\u227e",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2ab9",prnE:"\u2ab5",prnsim:"\u22e8",prod:"\u220f",Product:"\u220f",profalar:"\u232e",profline:"\u2312",profsurf:"\u2313",prop:"\u221d",Proportional:"\u221d",Proportion:"\u2237",propto:"\u221d",prsim:"\u227e",prurel:"\u22b0",Pscr:"\ud835\udcab",pscr:"\ud835\udcc5",Psi:"\u03a8",psi:"\u03c8",puncsp:"\u2008",Qfr:"\ud835\udd14",qfr:"\ud835\udd2e",qint:"\u2a0c",qopf:"\ud835\udd62",Qopf:"\u211a",qprime:"\u2057",Qscr:"\ud835\udcac",qscr:"\ud835\udcc6",quaternions:"\u210d",quatint:"\u2a16",quest:"?",questeq:"\u225f",quot:'"',QUOT:'"',rAarr:"\u21db",race:"\u223d\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221a",raemptyv:"\u29b3",rang:"\u27e9",Rang:"\u27eb",rangd:"\u2992",range:"\u29a5",rangle:"\u27e9",raquo:"\xbb",rarrap:"\u2975",rarrb:"\u21e5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21a0",rArr:"\u21d2",rarrfs:"\u291e",rarrhk:"\u21aa",rarrlp:"\u21ac",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21a3",rarrw:"\u219d",ratail:"\u291a",rAtail:"\u291c",ratio:"\u2236",rationals:"\u211a",rbarr:"\u290d",rBarr:"\u290f",RBarr:"\u2910",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",real:"\u211c",realine:"\u211b",realpart:"\u211c",reals:"\u211d",Re:"\u211c",rect:"\u25ad",reg:"\xae",REG:"\xae",ReverseElement:"\u220b",ReverseEquilibrium:"\u21cb",ReverseUpEquilibrium:"\u296f",rfisht:"\u297d",rfloor:"\u230b",rfr:"\ud835\udd2f",Rfr:"\u211c",rHar:"\u2964",rhard:"\u21c1",rharu:"\u21c0",rharul:"\u296c",Rho:"\u03a1",rho:"\u03c1",rhov:"\u03f1",RightAngleBracket:"\u27e9",RightArrowBar:"\u21e5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21d2",RightArrowLeftArrow:"\u21c4",rightarrowtail:"\u21a3",RightCeiling:"\u2309",RightDoubleBracket:"\u27e7",RightDownTeeVector:"\u295d",RightDownVectorBar:"\u2955",RightDownVector:"\u21c2",RightFloor:"\u230b",rightharpoondown:"\u21c1",rightharpoonup:"\u21c0",rightleftarrows:"\u21c4",rightleftharpoons:"\u21cc",rightrightarrows:"\u21c9",rightsquigarrow:"\u219d",RightTeeArrow:"\u21a6",RightTee:"\u22a2",RightTeeVector:"\u295b",rightthreetimes:"\u22cc",RightTriangleBar:"\u29d0",RightTriangle:"\u22b3",RightTriangleEqual:"\u22b5",RightUpDownVector:"\u294f",RightUpTeeVector:"\u295c",RightUpVectorBar:"\u2954",RightUpVector:"\u21be",RightVectorBar:"\u2953",RightVector:"\u21c0",ring:"\u02da",risingdotseq:"\u2253",rlarr:"\u21c4",rlhar:"\u21cc",rlm:"\u200f",rmoustache:"\u23b1",rmoust:"\u23b1",rnmid:"\u2aee",roang:"\u27ed",roarr:"\u21fe",robrk:"\u27e7",ropar:"\u2986",ropf:"\ud835\udd63",Ropf:"\u211d",roplus:"\u2a2e",rotimes:"\u2a35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2a12",rrarr:"\u21c9",Rrightarrow:"\u21db",rsaquo:"\u203a",rscr:"\ud835\udcc7",Rscr:"\u211b",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",scap:"\u2ab8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2abc",sc:"\u227b",sccue:"\u227d",sce:"\u2ab0",scE:"\u2ab4",Scedil:"\u015e",scedil:"\u015f",Scirc:"\u015c",scirc:"\u015d",scnap:"\u2aba",scnE:"\u2ab6",scnsim:"\u22e9",scpolint:"\u2a13",scsim:"\u227f",Scy:"\u0421",scy:"\u0441",sdotb:"\u22a1",sdot:"\u22c5",sdote:"\u2a66",searhk:"\u2925",searr:"\u2198",seArr:"\u21d8",searrow:"\u2198",sect:"\xa7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\ud835\udd16",sfr:"\ud835\udd30",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",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",solbar:"\u233f",solb:"\u29c4",sol:"/",Sopf:"\ud835\udd4a",sopf:"\ud835\udd64",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",square:"\u25a1",Square:"\u25a1",SquareIntersection:"\u2293",SquareSubset:"\u228f",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25aa",squ:"\u25a1",squf:"\u25aa",srarr:"\u2192",Sscr:"\ud835\udcae",sscr:"\ud835\udcc8",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22c6",Star:"\u22c6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03f5",straightphi:"\u03d5",strns:"\xaf",sub:"\u2282",Sub:"\u22d0",subdot:"\u2abd",subE:"\u2ac5",sube:"\u2286",subedot:"\u2ac3",submult:"\u2ac1",subnE:"\u2acb",subne:"\u228a",subplus:"\u2abf",subrarr:"\u2979",subset:"\u2282",Subset:"\u22d0",subseteq:"\u2286",subseteqq:"\u2ac5",SubsetEqual:"\u2286",subsetneq:"\u228a",subsetneqq:"\u2acb",subsim:"\u2ac7",subsub:"\u2ad5",subsup:"\u2ad3",succapprox:"\u2ab8",succ:"\u227b",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",sup2:"\xb2",sup3:"\xb3",sup:"\u2283",Sup:"\u22d1",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:"\u2283",Supset:"\u22d1",supseteq:"\u2287",supseteqq:"\u2ac6",supsetneq:"\u228b",supsetneqq:"\u2acc",supsim:"\u2ac8",supsub:"\u2ad4",supsup:"\u2ad6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21d9",swarrow:"\u2199",swnwar:"\u292a",szlig:"\xdf",Tab:" ",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:"\ud835\udd17",tfr:"\ud835\udd31",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03b8",thetasym:"\u03d1",thetav:"\u03d1",thickapprox:"\u2248",thicksim:"\u223c",ThickSpace:"\u205f\u200a",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223c",THORN:"\xde",thorn:"\xfe",tilde:"\u02dc",Tilde:"\u223c",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2a31",timesb:"\u22a0",times:"\xd7",timesd:"\u2a30",tint:"\u222d",toea:"\u2928",topbot:"\u2336",topcir:"\u2af1",top:"\u22a4",Topf:"\ud835\udd4b",topf:"\ud835\udd65",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:"\ud835\udcaf",tscr:"\ud835\udcc9",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040b",tshcy:"\u045b",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226c",twoheadleftarrow:"\u219e",twoheadrightarrow:"\u21a0",Uacute:"\xda",uacute:"\xfa",uarr:"\u2191",Uarr:"\u219f",uArr:"\u21d1",Uarrocir:"\u2949",Ubrcy:"\u040e",ubrcy:"\u045e",Ubreve:"\u016c",ubreve:"\u016d",Ucirc:"\xdb",ucirc:"\xfb",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21c5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296e",ufisht:"\u297e",Ufr:"\ud835\udd18",ufr:"\ud835\udd32",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",UnderBar:"_",UnderBrace:"\u23df",UnderBracket:"\u23b5",UnderParenthesis:"\u23dd",Union:"\u22c3",UnionPlus:"\u228e",Uogon:"\u0172",uogon:"\u0173",Uopf:"\ud835\udd4c",uopf:"\ud835\udd66",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21d1",UpArrowDownArrow:"\u21c5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21d5",UpEquilibrium:"\u296e",upharpoonleft:"\u21bf",upharpoonright:"\u21be",uplus:"\u228e",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03c5",Upsi:"\u03d2",upsih:"\u03d2",Upsilon:"\u03a5",upsilon:"\u03c5",UpTeeArrow:"\u21a5",UpTee:"\u22a5",upuparrows:"\u21c8",urcorn:"\u231d",urcorner:"\u231d",urcrop:"\u230e",Uring:"\u016e",uring:"\u016f",urtri:"\u25f9",Uscr:"\ud835\udcb0",uscr:"\ud835\udcca",utdot:"\u22f0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25b5",utrif:"\u25b4",uuarr:"\u21c8",Uuml:"\xdc",uuml:"\xfc",uwangle:"\u29a7",vangrt:"\u299c",varepsilon:"\u03f5",varkappa:"\u03f0",varnothing:"\u2205",varphi:"\u03d5",varpi:"\u03d6",varpropto:"\u221d",varr:"\u2195",vArr:"\u21d5",varrho:"\u03f1",varsigma:"\u03c2",varsubsetneq:"\u228a\ufe00",varsubsetneqq:"\u2acb\ufe00",varsupsetneq:"\u228b\ufe00",varsupsetneqq:"\u2acc\ufe00",vartheta:"\u03d1",vartriangleleft:"\u22b2",vartriangleright:"\u22b3",vBar:"\u2ae8",Vbar:"\u2aeb",vBarv:"\u2ae9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22a2",vDash:"\u22a8",Vdash:"\u22a9",VDash:"\u22ab",Vdashl:"\u2ae6",veebar:"\u22bb",vee:"\u2228",Vee:"\u22c1",veeeq:"\u225a",vellip:"\u22ee",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200a",Vfr:"\ud835\udd19",vfr:"\ud835\udd33",vltri:"\u22b2",vnsub:"\u2282\u20d2",vnsup:"\u2283\u20d2",Vopf:"\ud835\udd4d",vopf:"\ud835\udd67",vprop:"\u221d",vrtri:"\u22b3",Vscr:"\ud835\udcb1",vscr:"\ud835\udccb",vsubnE:"\u2acb\ufe00",vsubne:"\u228a\ufe00",vsupnE:"\u2acc\ufe00",vsupne:"\u228b\ufe00",Vvdash:"\u22aa",vzigzag:"\u299a",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2a5f",wedge:"\u2227",Wedge:"\u22c0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\ud835\udd1a",wfr:"\ud835\udd34",Wopf:"\ud835\udd4e",wopf:"\ud835\udd68",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\ud835\udcb2",wscr:"\ud835\udccc",xcap:"\u22c2",xcirc:"\u25ef",xcup:"\u22c3",xdtri:"\u25bd",Xfr:"\ud835\udd1b",xfr:"\ud835\udd35",xharr:"\u27f7",xhArr:"\u27fa",Xi:"\u039e",xi:"\u03be",xlarr:"\u27f5",xlArr:"\u27f8",xmap:"\u27fc",xnis:"\u22fb",xodot:"\u2a00",Xopf:"\ud835\udd4f",xopf:"\ud835\udd69",xoplus:"\u2a01",xotime:"\u2a02",xrarr:"\u27f6",xrArr:"\u27f9",Xscr:"\ud835\udcb3",xscr:"\ud835\udccd",xsqcup:"\u2a06",xuplus:"\u2a04",xutri:"\u25b3",xvee:"\u22c1",xwedge:"\u22c0",Yacute:"\xdd",yacute:"\xfd",YAcy:"\u042f",yacy:"\u044f",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042b",ycy:"\u044b",yen:"\xa5",Yfr:"\ud835\udd1c",yfr:"\ud835\udd36",YIcy:"\u0407",yicy:"\u0457",Yopf:"\ud835\udd50",yopf:"\ud835\udd6a",Yscr:"\ud835\udcb4",yscr:"\ud835\udcce",YUcy:"\u042e",yucy:"\u044e",yuml:"\xff",Yuml:"\u0178",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:"\ud835\udd37",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21dd",zopf:"\ud835\udd6b",Zopf:"\u2124",Zscr:"\ud835\udcb5",zscr:"\ud835\udccf",zwj:"\u200d",zwnj:"\u200c"}},{}],53:[function(e,r,t){"use strict";function n(e){var r=Array.prototype.slice.call(arguments,1);return r.forEach(function(r){r&&Object.keys(r).forEach(function(t){e[t]=r[t]})}),e}function s(e){return Object.prototype.toString.call(e)}function i(e){return"[object String]"===s(e)}function o(e){return"[object Object]"===s(e)}function a(e){return"[object RegExp]"===s(e)}function c(e){return"[object Function]"===s(e)}function l(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function u(e){return Object.keys(e||{}).reduce(function(e,r){return e||b.hasOwnProperty(r)},!1)}function p(e){e.__index__=-1,e.__text_cache__=""}function h(e){return function(r,t){var n=r.slice(t);return e.test(n)?n.match(e)[0].length:0}}function f(){return function(e,r){r.normalize(e)}}function d(r){function t(e){return e.replace("%TLDS%",u.src_tlds)}function s(e,r){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+r)}var u=r.re=n({},e("./lib/re")),d=r.__tlds__.slice();r.__tlds_replaced__||d.push(v),d.push(u.src_xn),u.src_tlds=d.join("|"),u.email_fuzzy=RegExp(t(u.tpl_email_fuzzy),"i"),u.link_fuzzy=RegExp(t(u.tpl_link_fuzzy),"i"),u.link_no_ip_fuzzy=RegExp(t(u.tpl_link_no_ip_fuzzy),"i"),u.host_fuzzy_test=RegExp(t(u.tpl_host_fuzzy_test),"i");var m=[];r.__compiled__={},Object.keys(r.__schemas__).forEach(function(e){var t=r.__schemas__[e];if(null!==t){var n={validate:null,link:null};return r.__compiled__[e]=n,o(t)?(a(t.validate)?n.validate=h(t.validate):c(t.validate)?n.validate=t.validate:s(e,t),void(c(t.normalize)?n.normalize=t.normalize:t.normalize?s(e,t):n.normalize=f())):i(t)?void m.push(e):void s(e,t)}}),m.forEach(function(e){r.__compiled__[r.__schemas__[e]]&&(r.__compiled__[e].validate=r.__compiled__[r.__schemas__[e]].validate,r.__compiled__[e].normalize=r.__compiled__[r.__schemas__[e]].normalize)}),r.__compiled__[""]={validate:null,normalize:f()};var g=Object.keys(r.__compiled__).filter(function(e){return e.length>0&&r.__compiled__[e]}).map(l).join("|");r.re.schema_test=RegExp("(^|(?!_)(?:>|"+u.src_ZPCc+"))("+g+")","i"),r.re.schema_search=RegExp("(^|(?!_)(?:>|"+u.src_ZPCc+"))("+g+")","ig"),r.re.pretest=RegExp("("+r.re.schema_test.source+")|("+r.re.host_fuzzy_test.source+")|@","i"),p(r)}function m(e,r){var t=e.__index__,n=e.__last_index__,s=e.__text_cache__.slice(t,n);this.schema=e.__schema__.toLowerCase(),this.index=t+r,this.lastIndex=n+r,this.raw=s,this.text=s,this.url=s}function g(e,r){var t=new m(e,r);return e.__compiled__[t.schema].normalize(t,e),t}function _(e,r){return this instanceof _?(r||u(e)&&(r=e,e={}),this.__opts__=n({},b,r),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},k,e),this.__compiled__={},this.__tlds__=x,this.__tlds_replaced__=!1,this.re={},void d(this)):new _(e,r)}var b={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1},k={"http:":{validate:function(e,r,t){var n=e.slice(r);return t.re.http||(t.re.http=new RegExp("^\\/\\/"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.http.test(n)?n.match(t.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,r,t){var n=e.slice(r);return t.re.no_http||(t.re.no_http=new RegExp("^"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.no_http.test(n)?r>=3&&":"===e[r-3]?0:n.match(t.re.no_http)[0].length:0}},"mailto:":{validate:function(e,r,t){var n=e.slice(r);return t.re.mailto||(t.re.mailto=new RegExp("^"+t.re.src_email_name+"@"+t.re.src_host_strict,"i")),t.re.mailto.test(n)?n.match(t.re.mailto)[0].length:0}}},v="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",x="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");_.prototype.add=function(e,r){return this.__schemas__[e]=r,d(this),this},_.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},_.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var r,t,n,s,i,o,a,c,l;if(this.re.schema_test.test(e))for(a=this.re.schema_search,a.lastIndex=0;null!==(r=a.exec(e));)if(s=this.testSchemaAt(e,r[2],a.lastIndex)){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+s;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=e.search(this.re.host_fuzzy_test),c>=0&&(this.__index__<0||c=0&&null!==(n=e.match(this.re.email_fuzzy))&&(i=n.index+n[1].length,o=n.index+n[0].length,(this.__index__<0||ithis.__last_index__)&&(this.__schema__="mailto:",this.__index__=i,this.__last_index__=o))),this.__index__>=0},_.prototype.pretest=function(e){return this.re.pretest.test(e)},_.prototype.testSchemaAt=function(e,r,t){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(e,t,this):0},_.prototype.match=function(e){var r=0,t=[];this.__index__>=0&&this.__text_cache__===e&&(t.push(g(this,r)),r=this.__last_index__);for(var n=r?e.slice(r):e;this.test(n);)t.push(g(this,r)),n=n.slice(this.__last_index__),r+=this.__last_index__;return t.length?t:null},_.prototype.tlds=function(e,r){return e=Array.isArray(e)?e:[e],r?(this.__tlds__=this.__tlds__.concat(e).sort().filter(function(e,r,t){return e!==t[r-1]}).reverse(),d(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,d(this),this)},_.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},r.exports=_},{"./lib/re":54}],54:[function(e,r,t){"use strict";var n=t.src_Any=e("uc.micro/properties/Any/regex").source,s=t.src_Cc=e("uc.micro/categories/Cc/regex").source,i=t.src_Z=e("uc.micro/categories/Z/regex").source,o=t.src_P=e("uc.micro/categories/P/regex").source,a=t.src_ZPCc=[i,o,s].join("|"),c=t.src_ZCc=[i,s].join("|"),l="(?:(?!"+a+")"+n+")",u="(?:(?![0-9]|"+a+")"+n+")",p=t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";t.src_auth="(?:(?:(?!"+c+").)+@)?";var h=t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",f=t.src_host_terminator="(?=$|"+a+")(?!-|_|:\\d|\\.-|\\.(?!$|"+a+"))",d=t.src_path="(?:[/?#](?:(?!"+c+"|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+c+"|\\]).)*\\]|\\((?:(?!"+c+"|[)]).)*\\)|\\{(?:(?!"+c+'|[}]).)*\\}|\\"(?:(?!'+c+'|["]).)+\\"|\\\'(?:(?!'+c+"|[']).)+\\'|\\'(?="+l+").|\\.{2,3}[a-zA-Z0-9%/]|\\.(?!"+c+"|[.]).|\\-(?!--(?:[^-]|$))(?:-*)|\\,(?!"+c+").|\\!(?!"+c+"|[!]).|\\?(?!"+c+"|[?]).)+|\\/)?",m=t.src_email_name='[\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]+',g=t.src_xn="xn--[a-z0-9\\-]{1,59}",_=t.src_domain_root="(?:"+g+"|"+u+"{1,63})",b=t.src_domain="(?:"+g+"|(?:"+l+")|(?:"+l+"(?:-(?!-)|"+l+"){0,61}"+l+"))",k=t.src_host="(?:"+p+"|(?:(?:(?:"+b+")\\.)*"+_+"))",v=t.tpl_host_fuzzy="(?:"+p+"|(?:(?:(?:"+b+")\\.)+(?:%TLDS%)))",x=t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+b+")\\.)+(?:%TLDS%))";t.src_host_strict=k+f;var y=t.tpl_host_fuzzy_strict=v+f;t.src_host_port_strict=k+h+f;var A=t.tpl_host_port_fuzzy_strict=v+h+f,C=t.tpl_host_port_no_ip_fuzzy_strict=x+h+f;t.tpl_host_fuzzy_test="localhost|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+a+"|$))",t.tpl_email_fuzzy="(^|>|"+c+")("+m+"@"+y+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|]|"+a+"))((?![$+<=>^`|])"+A+d+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|]|"+a+"))((?![$+<=>^`|])"+C+d+")"},{"uc.micro/categories/Cc/regex":60,"uc.micro/categories/P/regex":62,"uc.micro/categories/Z/regex":63,"uc.micro/properties/Any/regex":65}],55:[function(e,r,t){"use strict";function n(e){var r,t,n=i[e];if(n)return n;for(n=i[e]=[],r=0;128>r;r++)t=String.fromCharCode(r),n.push(t);for(r=0;rr;r+=3)s=parseInt(e.slice(r+1,r+3),16),128>s?l+=t[s]:192===(224&s)&&n>r+3&&(i=parseInt(e.slice(r+4,r+6),16),128===(192&i))?(c=s<<6&1984|63&i,l+=128>c?"\ufffd\ufffd":String.fromCharCode(c),r+=3):224===(240&s)&&n>r+6&&(i=parseInt(e.slice(r+4,r+6),16),o=parseInt(e.slice(r+7,r+9),16),128===(192&i)&&128===(192&o))?(c=s<<12&61440|i<<6&4032|63&o,l+=2048>c||c>=55296&&57343>=c?"\ufffd\ufffd\ufffd":String.fromCharCode(c),r+=6):240===(248&s)&&n>r+9&&(i=parseInt(e.slice(r+4,r+6),16),o=parseInt(e.slice(r+7,r+9),16),a=parseInt(e.slice(r+10,r+12),16),128===(192&i)&&128===(192&o)&&128===(192&a))?(c=s<<18&1835008|i<<12&258048|o<<6&4032|63&a,65536>c||c>1114111?l+="\ufffd\ufffd\ufffd\ufffd":(c-=65536,l+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),
-r+=9):l+="\ufffd";return l})}var i={};s.defaultChars=";/?:@&=+$,#",s.componentChars="",r.exports=s},{}],56:[function(e,r,t){"use strict";function n(e){var r,t,n=i[e];if(n)return n;for(n=i[e]=[],r=0;128>r;r++)t=String.fromCharCode(r),n.push(/^[0-9a-z]$/i.test(t)?t:"%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;ri;i++)if(a=e.charCodeAt(i),t&&37===a&&o>i+2&&/^[0-9a-f]{2}$/i.test(e.slice(i+1,i+3)))u+=e.slice(i,i+3),i+=2;else if(128>a)u+=l[a];else if(a>=55296&&57343>=a){if(a>=55296&&56319>=a&&o>i+1&&(c=e.charCodeAt(i+1),c>=56320&&57343>=c)){u+=encodeURIComponent(e[i]+e[i+1]),i++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[i]);return u}var i={};s.defaultChars=";/?:@&=+$,-_.!~*'()#",s.componentChars="-_.!~*'()",r.exports=s},{}],57:[function(e,r,t){"use strict";r.exports=function(e){var r="";return r+=e.protocol||"",r+=e.slashes?"//":"",r+=e.auth?e.auth+"@":"",r+=e.hostname&&-1!==e.hostname.indexOf(":")?"["+e.hostname+"]":e.hostname||"",r+=e.port?":"+e.port:"",r+=e.pathname||"",r+=e.search||"",r+=e.hash||""}},{}],58:[function(e,r,t){"use strict";r.exports.encode=e("./encode"),r.exports.decode=e("./decode"),r.exports.format=e("./format"),r.exports.parse=e("./parse")},{"./decode":55,"./encode":56,"./format":57,"./parse":59}],59:[function(e,r,t){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}function s(e,r){if(e&&e instanceof n)return e;var t=new n;return t.parse(e,r),t}var i=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,a=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["<",">",'"',"`"," ","\r","\n"," "],l=["{","}","|","\\","^","`"].concat(c),u=["'"].concat(l),p=["%","/","?",";","#"].concat(u),h=["/","?","#"],f=255,d=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},_={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};n.prototype.parse=function(e,r){var t,n,s,o,c,l=e;if(l=l.trim(),!r&&1===e.split("#").length){var u=a.exec(l);if(u)return this.pathname=u[1],u[2]&&(this.search=u[2]),this}var b=i.exec(l);if(b&&(b=b[0],s=b.toLowerCase(),this.protocol=b,l=l.substr(b.length)),(r||b||l.match(/^\/\/[^@\/]+@[^@\/]+/))&&(c="//"===l.substr(0,2),!c||b&&g[b]||(l=l.substr(2),this.slashes=!0)),!g[b]&&(c||b&&!_[b])){var k=-1;for(t=0;to)&&(k=o);var v,x;for(x=-1===k?l.lastIndexOf("@"):l.lastIndexOf("@",k),-1!==x&&(v=l.slice(0,x),l=l.slice(x+1),this.auth=v),k=-1,t=0;to)&&(k=o);-1===k&&(k=l.length),":"===l[k-1]&&k--;var y=l.slice(0,k);l=l.slice(k),this.parseHost(y),this.hostname=this.hostname||"";var A="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!A){var C=this.hostname.split(/\./);for(t=0,n=C.length;n>t;t++){var w=C[t];if(w&&!w.match(d)){for(var q="",D=0,E=w.length;E>D;D++)q+=w.charCodeAt(D)>127?"x":w[D];if(!q.match(d)){var S=C.slice(0,t),F=C.slice(t+1),z=w.match(m);z&&(S.push(z[1]),F.unshift(z[2])),F.length&&(l=F.join(".")+l),this.hostname=S.join(".");break}}}}this.hostname.length>f&&(this.hostname=""),A&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var L=l.indexOf("#");-1!==L&&(this.hash=l.substr(L),l=l.slice(0,L));var T=l.indexOf("?");return-1!==T&&(this.search=l.substr(T),l=l.slice(0,T)),l&&(this.pathname=l),_[s]&&this.hostname&&!this.pathname&&(this.pathname=""),this},n.prototype.parseHost=function(e){var r=o.exec(e);r&&(r=r[0],":"!==r&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)},r.exports=s},{}],60:[function(e,r,t){r.exports=/[\0-\x1F\x7F-\x9F]/},{}],61:[function(e,r,t){r.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},{}],62:[function(e,r,t){r.exports=/[!-#%-\*,-/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDE38-\uDE3D]|\uD805[\uDCC6\uDDC1-\uDDC9\uDE41-\uDE43]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F/},{}],63:[function(e,r,t){r.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},{}],64:[function(e,r,t){r.exports.Any=e("./properties/Any/regex"),r.exports.Cc=e("./categories/Cc/regex"),r.exports.Cf=e("./categories/Cf/regex"),r.exports.P=e("./categories/P/regex"),r.exports.Z=e("./categories/Z/regex")},{"./categories/Cc/regex":60,"./categories/Cf/regex":61,"./categories/P/regex":62,"./categories/Z/regex":63,"./properties/Any/regex":65}],65:[function(e,r,t){r.exports=/[\0-\uD7FF\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF]/},{}],66:[function(e,r,t){"use strict";r.exports=e("./lib/")},{"./lib/":10}]},{},[66])(66)});
\ No newline at end of file
+/*! markdown-it 5.0.0 https://github.com//markdown-it/markdown-it @license MIT */
+!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.markdownit=e()}}(function(){var e;return function r(e,t,n){function s(i,a){if(!t[i]){if(!e[i]){var c="function"==typeof require&&require;if(!a&&c)return c(i,!0);if(o)return o(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var u=t[i]={exports:{}};e[i][0].call(u.exports,function(r){var t=e[i][1][r];return s(t?t:r)},u,u.exports,r,e,t,n)}return t[i].exports}for(var o="function"==typeof require&&require,i=0;i`\\x00-\\x20]+",o="'[^']*'",i='"[^"]*"',a="(?:"+s+"|"+o+"|"+i+")",c="(?:\\s+"+n+"(?:\\s*=\\s*"+a+")?)",l="<[A-Za-z][A-Za-z0-9\\-]*"+c+"*\\s*\\/?>",u="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",p="|",h="<[?].*?[?]>",f="]*>",d="",m=new RegExp("^(?:"+l+"|"+u+"|"+p+"|"+h+"|"+f+"|"+d+")"),g=new RegExp("^(?:"+l+"|"+u+")");r.exports.HTML_TAG_RE=m,r.exports.HTML_OPEN_CLOSE_TAG_RE=g},{}],4:[function(e,r,t){"use strict";r.exports=["coap","doi","javascript","aaa","aaas","about","acap","cap","cid","crid","data","dav","dict","dns","file","ftp","geo","go","gopher","h323","http","https","iax","icap","im","imap","info","ipp","iris","iris.beep","iris.xpc","iris.xpcs","iris.lwz","ldap","mailto","mid","msrp","msrps","mtqp","mupdate","news","nfs","ni","nih","nntp","opaquelocktoken","pop","pres","rtsp","service","session","shttp","sieve","sip","sips","sms","snmp","soap.beep","soap.beeps","tag","tel","telnet","tftp","thismessage","tn3270","tip","tv","urn","vemmi","ws","wss","xcon","xcon-userid","xmlrpc.beep","xmlrpc.beeps","xmpp","z39.50r","z39.50s","adiumxtra","afp","afs","aim","apt","attachment","aw","beshare","bitcoin","bolo","callto","chrome","chrome-extension","com-eventbrite-attendee","content","cvs","dlna-playsingle","dlna-playcontainer","dtn","dvb","ed2k","facetime","feed","finger","fish","gg","git","gizmoproject","gtalk","hcp","icon","ipn","irc","irc6","ircs","itms","jar","jms","keyparc","lastfm","ldaps","magnet","maps","market","message","mms","ms-help","msnim","mumble","mvn","notes","oid","palm","paparazzi","platform","proxy","psyc","query","res","resource","rmi","rsync","rtmp","secondlife","sftp","sgn","skype","smb","soldat","spotify","ssh","steam","svn","teamspeak","things","udp","unreal","ut2004","ventrilo","view-source","webcal","wtai","wyciwyg","xfire","xri","ymsgr"]},{}],5:[function(e,r,t){"use strict";function n(e){return Object.prototype.toString.call(e)}function s(e){return"[object String]"===n(e)}function o(e,r){return x.call(e,r)}function i(e){var r=Array.prototype.slice.call(arguments,1);return r.forEach(function(r){if(r){if("object"!=typeof r)throw new TypeError(r+"must be object");Object.keys(r).forEach(function(t){e[t]=r[t]})}}),e}function a(e,r,t){return[].concat(e.slice(0,r),t,e.slice(r+1))}function c(e){return e>=55296&&57343>=e?!1:e>=64976&&65007>=e?!1:65535===(65535&e)||65534===(65535&e)?!1:e>=0&&8>=e?!1:11===e?!1:e>=14&&31>=e?!1:e>=127&&159>=e?!1:e>1114111?!1:!0}function l(e){if(e>65535){e-=65536;var r=55296+(e>>10),t=56320+(1023&e);return String.fromCharCode(r,t)}return String.fromCharCode(e)}function u(e,r){var t=0;return o(q,r)?q[r]:35===r.charCodeAt(0)&&w.test(r)&&(t="x"===r[1].toLowerCase()?parseInt(r.slice(2),16):parseInt(r.slice(1),10),c(t))?l(t):e}function p(e){return e.indexOf("\\")<0?e:e.replace(y,"$1")}function h(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(A,function(e,r,t){return r?r:u(e,t)})}function f(e){return S[e]}function d(e){return D.test(e)?e.replace(E,f):e}function m(e){return e.replace(F,"\\$&")}function g(e){switch(e){case 9:case 32:return!0}return!1}function _(e){if(e>=8192&&8202>=e)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function k(e){return z.test(e)}function b(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function v(e){return e.trim().replace(/\s+/g," ").toUpperCase()}var x=Object.prototype.hasOwnProperty,y=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,C=/&([a-z#][a-z0-9]{1,31});/gi,A=new RegExp(y.source+"|"+C.source,"gi"),w=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,q=e("./entities"),D=/[&<>"]/,E=/[&<>"]/g,S={"&":"&","<":"<",">":">",'"':"""},F=/[.?*+^$[\]\\(){}|-]/g,z=e("uc.micro/categories/P/regex");t.lib={},t.lib.mdurl=e("mdurl"),t.lib.ucmicro=e("uc.micro"),t.assign=i,t.isString=s,t.has=o,t.unescapeMd=p,t.unescapeAll=h,t.isValidEntityCode=c,t.fromCodePoint=l,t.escapeHtml=d,t.arrayReplaceAt=a,t.isSpace=g,t.isWhiteSpace=_,t.isMdAsciiPunct=b,t.isPunctChar=k,t.escapeRE=m,t.normalizeReference=v},{"./entities":1,mdurl:60,"uc.micro":66,"uc.micro/categories/P/regex":64}],6:[function(e,r,t){"use strict";t.parseLinkLabel=e("./parse_link_label"),t.parseLinkDestination=e("./parse_link_destination"),t.parseLinkTitle=e("./parse_link_title")},{"./parse_link_destination":7,"./parse_link_label":8,"./parse_link_title":9}],7:[function(e,r,t){"use strict";var n=e("../common/utils").unescapeAll;r.exports=function(e,r,t){var s,o,i=0,a=r,c={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(r)){for(r++;t>r;){if(s=e.charCodeAt(r),10===s)return c;if(62===s)return c.pos=r+1,c.str=n(e.slice(a+1,r)),c.ok=!0,c;92===s&&t>r+1?r+=2:r++}return c}for(o=0;t>r&&(s=e.charCodeAt(r),32!==s)&&!(32>s||127===s);)if(92===s&&t>r+1)r+=2;else{if(40===s&&(o++,o>1))break;if(41===s&&(o--,0>o))break;r++}return a===r?c:(c.str=n(e.slice(a,r)),c.lines=i,c.pos=r,c.ok=!0,c)}},{"../common/utils":5}],8:[function(e,r,t){"use strict";r.exports=function(e,r,t){var n,s,o,i,a=-1,c=e.posMax,l=e.pos;for(e.pos=r+1,n=1;e.pos=t)return c;if(o=e.charCodeAt(r),34!==o&&39!==o&&40!==o)return c;for(r++,40===o&&(o=41);t>r;){if(s=e.charCodeAt(r),s===o)return c.pos=r+1,c.lines=i,c.str=n(e.slice(a+1,r)),c.ok=!0,c;10===s?i++:92===s&&t>r+1&&(r++,10===e.charCodeAt(r)&&i++),r++}return c}},{"../common/utils":5}],10:[function(e,r,t){"use strict";function n(e){var r=e.trim().toLowerCase();return _.test(r)?k.test(r)?!0:!1:!0}function s(e){var r=d.parse(e,!0);if(r.hostname&&(!r.protocol||b.indexOf(r.protocol)>=0))try{r.hostname=m.toASCII(r.hostname)}catch(t){}return d.encode(d.format(r))}function o(e){var r=d.parse(e,!0);if(r.hostname&&(!r.protocol||b.indexOf(r.protocol)>=0))try{r.hostname=m.toUnicode(r.hostname)}catch(t){}return d.decode(d.format(r))}function i(e,r){return this instanceof i?(r||a.isString(e)||(r=e||{},e="default"),this.inline=new h,this.block=new p,this.core=new u,this.renderer=new l,this.linkify=new f,this.validateLink=n,this.normalizeLink=s,this.normalizeLinkText=o,this.utils=a,this.helpers=c,this.options={},this.configure(e),void(r&&this.set(r))):new i(e,r)}var a=e("./common/utils"),c=e("./helpers"),l=e("./renderer"),u=e("./parser_core"),p=e("./parser_block"),h=e("./parser_inline"),f=e("linkify-it"),d=e("mdurl"),m=e("punycode"),g={"default":e("./presets/default"),zero:e("./presets/zero"),commonmark:e("./presets/commonmark")},_=/^(vbscript|javascript|file|data):/,k=/^data:image\/(gif|png|jpeg|webp);/,b=["http:","https:","mailto:"];i.prototype.set=function(e){return a.assign(this.options,e),this},i.prototype.configure=function(e){var r,t=this;if(a.isString(e)&&(r=e,e=g[r],!e))throw new Error('Wrong `markdown-it` preset "'+r+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach(function(r){e.components[r].rules&&t[r].ruler.enableOnly(e.components[r].rules),e.components[r].rules2&&t[r].ruler2.enableOnly(e.components[r].rules2)}),this},i.prototype.enable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(r){t=t.concat(this[r].ruler.enable(e,!0))},this),t=t.concat(this.inline.ruler2.enable(e,!0));var n=e.filter(function(e){return t.indexOf(e)<0});if(n.length&&!r)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},i.prototype.disable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(r){t=t.concat(this[r].ruler.disable(e,!0))},this),t=t.concat(this.inline.ruler2.disable(e,!0));var n=e.filter(function(e){return t.indexOf(e)<0});if(n.length&&!r)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},i.prototype.use=function(e){var r=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,r),this},i.prototype.parse=function(e,r){var t=new this.core.State(e,this,r);return this.core.process(t),t.tokens},i.prototype.render=function(e,r){return r=r||{},this.renderer.render(this.parse(e,r),this.options,r)},i.prototype.parseInline=function(e,r){var t=new this.core.State(e,this,r);return t.inlineMode=!0,this.core.process(t),t.tokens},i.prototype.renderInline=function(e,r){return r=r||{},this.renderer.render(this.parseInline(e,r),this.options,r)},r.exports=i},{"./common/utils":5,"./helpers":6,"./parser_block":11,"./parser_core":12,"./parser_inline":13,"./presets/commonmark":14,"./presets/default":15,"./presets/zero":16,"./renderer":17,"linkify-it":55,mdurl:60,punycode:53}],11:[function(e,r,t){"use strict";function n(){this.ruler=new s;for(var e=0;ea&&(e.line=a=e.skipEmptyLines(a),!(a>=t))&&!(e.sCount[a]=l){e.line=t;break}for(s=0;i>s&&!(n=o[s](e,a,t,!1));s++);if(e.tight=!c,e.isEmpty(e.line-1)&&(c=!0),a=e.line,t>a&&e.isEmpty(a)){if(c=!0,a++,t>a&&"list"===e.parentType&&e.isEmpty(a))break;e.line=a}}},n.prototype.parse=function(e,r,t,n){var s;return e?(s=new this.State(e,r,t,n),void this.tokenize(s,s.line,s.lineMax)):[]},n.prototype.State=e("./rules_block/state_block"),r.exports=n},{"./ruler":18,"./rules_block/blockquote":19,"./rules_block/code":20,"./rules_block/fence":21,"./rules_block/heading":22,"./rules_block/hr":23,"./rules_block/html_block":24,"./rules_block/lheading":25,"./rules_block/list":26,"./rules_block/paragraph":27,"./rules_block/reference":28,"./rules_block/state_block":29,"./rules_block/table":30}],12:[function(e,r,t){"use strict";function n(){this.ruler=new s;for(var e=0;er;r++)n[r](e)},n.prototype.State=e("./rules_core/state_core"),r.exports=n},{"./ruler":18,"./rules_core/block":31,"./rules_core/inline":32,"./rules_core/linkify":33,"./rules_core/normalize":34,"./rules_core/replacements":35,"./rules_core/smartquotes":36,"./rules_core/state_core":37}],13:[function(e,r,t){"use strict";function n(){var e;for(this.ruler=new s,e=0;er;r++)if(n[r](e,!0))return void(i[t]=e.pos);e.pos++,i[t]=e.pos},n.prototype.tokenize=function(e){for(var r,t,n=this.ruler.getRules(""),s=n.length,o=e.posMax,i=e.md.options.maxNesting;e.post&&!(r=n[t](e,!1));t++);if(r){if(e.pos>=o)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},n.prototype.parse=function(e,r,t,n){var s,o,i,a=new this.State(e,r,t,n);for(this.tokenize(a),o=this.ruler2.getRules(""),i=o.length,s=0;i>s;s++)o[s](a)},n.prototype.State=e("./rules_inline/state_inline"),r.exports=n},{"./ruler":18,"./rules_inline/autolink":38,"./rules_inline/backticks":39,"./rules_inline/balance_pairs":40,"./rules_inline/emphasis":41,"./rules_inline/entity":42,"./rules_inline/escape":43,"./rules_inline/html_inline":44,"./rules_inline/image":45,"./rules_inline/link":46,"./rules_inline/newline":47,"./rules_inline/state_inline":48,"./rules_inline/strikethrough":49,"./rules_inline/text":50,"./rules_inline/text_collapse":51}],14:[function(e,r,t){"use strict";r.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","text_collapse"]}}}},{}],15:[function(e,r,t){"use strict";r.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}}},{}],16:[function(e,r,t){"use strict";r.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","text_collapse"]}}}},{}],17:[function(e,r,t){"use strict";function n(){this.rules=s({},a)}var s=e("./common/utils").assign,o=e("./common/utils").unescapeAll,i=e("./common/utils").escapeHtml,a={};a.code_inline=function(e,r){return""+i(e[r].content)+""},a.code_block=function(e,r){return""+i(e[r].content)+"
\n"},a.fence=function(e,r,t,n,s){var a,c=e[r],l=c.info?o(c.info).trim():"",u="";return l&&(u=l.split(/\s+/g)[0],c.attrPush(["class",t.langPrefix+u])),a=t.highlight?t.highlight(c.content,u)||i(c.content):i(c.content),""+a+"
\n"},a.image=function(e,r,t,n,s){var o=e[r];return o.attrs[o.attrIndex("alt")][1]=s.renderInlineAsText(o.children,t,n),s.renderToken(e,r,t)},a.hardbreak=function(e,r,t){return t.xhtmlOut?"
\n":"
\n"},a.softbreak=function(e,r,t){return t.breaks?t.xhtmlOut?"
\n":"
\n":"\n"},a.text=function(e,r){return i(e[r].content)},a.html_block=function(e,r){return e[r].content},a.html_inline=function(e,r){return e[r].content},n.prototype.renderAttrs=function(e){var r,t,n;if(!e.attrs)return"";for(n="",r=0,t=e.attrs.length;t>r;r++)n+=" "+i(e.attrs[r][0])+'="'+i(e.attrs[r][1])+'"';return n},n.prototype.renderToken=function(e,r,t){var n,s="",o=!1,i=e[r];return i.hidden?"":(i.block&&-1!==i.nesting&&r&&e[r-1].hidden&&(s+="\n"),s+=(-1===i.nesting?"":"<")+i.tag,s+=this.renderAttrs(i),0===i.nesting&&t.xhtmlOut&&(s+=" /"),i.block&&(o=!0,1===i.nesting&&r+1\n":">")},n.prototype.renderInline=function(e,r,t){for(var n,s="",o=this.rules,i=0,a=e.length;a>i;i++)n=e[i].type,s+="undefined"!=typeof o[n]?o[n](e,i,r,t,this):this.renderToken(e,i,r);return s},n.prototype.renderInlineAsText=function(e,r,t){for(var n="",s=this.rules,o=0,i=e.length;i>o;o++)"text"===e[o].type?n+=s.text(e,o,r,t,this):"image"===e[o].type&&(n+=this.renderInlineAsText(e[o].children,r,t));return n},n.prototype.render=function(e,r,t){var n,s,o,i="",a=this.rules;for(n=0,s=e.length;s>n;n++)o=e[n].type,i+="inline"===o?this.renderInline(e[n].children,r,t):"undefined"!=typeof a[o]?a[e[n].type](e,n,r,t,this):this.renderToken(e,n,r,t);return i},r.exports=n},{"./common/utils":5}],18:[function(e,r,t){"use strict";function n(){this.__rules__=[],this.__cache__=null}n.prototype.__find__=function(e){for(var r=0;rn){if(r)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!0,t.push(e)},this),this.__cache__=null,t},n.prototype.enableOnly=function(e,r){Array.isArray(e)||(e=[e]),this.__rules__.forEach(function(e){e.enabled=!1}),this.enable(e,r)},n.prototype.disable=function(e,r){Array.isArray(e)||(e=[e]);var t=[];return e.forEach(function(e){var n=this.__find__(e);if(0>n){if(r)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!1,t.push(e)},this),this.__cache__=null,t},n.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},r.exports=n},{}],19:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r,t,s){var o,i,a,c,l,u,p,h,f,d,m,g,_,k,b,v,x=e.bMarks[r]+e.tShift[r],y=e.eMarks[r];if(62!==e.src.charCodeAt(x++))return!1;if(s)return!0;for(32===e.src.charCodeAt(x)&&x++,u=e.blkIndent,e.blkIndent=0,f=d=e.sCount[r]+x-(e.bMarks[r]+e.tShift[r]),l=[e.bMarks[r]],e.bMarks[r]=x;y>x&&(m=e.src.charCodeAt(x),n(m));)9===m?d+=4-d%4:d++,x++;for(i=x>=y,c=[e.sCount[r]],e.sCount[r]=d-f,a=[e.tShift[r]],e.tShift[r]=x-e.bMarks[r],g=e.md.block.ruler.getRules("blockquote"),o=r+1;t>o&&!(e.sCount[o]=y));o++)if(62!==e.src.charCodeAt(x++)){if(i)break;for(v=!1,k=0,b=g.length;b>k;k++)if(g[k](e,o,t,!0)){v=!0;break}if(v)break;l.push(e.bMarks[o]),a.push(e.tShift[o]),c.push(e.sCount[o]),e.sCount[o]=-1}else{for(32===e.src.charCodeAt(x)&&x++,f=d=e.sCount[o]+x-(e.bMarks[o]+e.tShift[o]),l.push(e.bMarks[o]),e.bMarks[o]=x;y>x&&(m=e.src.charCodeAt(x),n(m));)9===m?d+=4-d%4:d++,x++;i=x>=y,c.push(e.sCount[o]),e.sCount[o]=d-f,a.push(e.tShift[o]),e.tShift[o]=x-e.bMarks[o]}for(p=e.parentType,e.parentType="blockquote",_=e.push("blockquote_open","blockquote",1),_.markup=">",_.map=h=[r,0],e.md.block.tokenize(e,r,o),_=e.push("blockquote_close","blockquote",-1),_.markup=">",e.parentType=p,h[1]=e.line,k=0;kn;)if(e.isEmpty(n))n++;else{if(!(e.sCount[n]-e.blkIndent>=4))break;n++,s=n}return e.line=n,o=e.push("code_block","code",0),o.content=e.getLines(r,s,4+e.blkIndent,!0),o.map=[r,e.line],!0}},{}],21:[function(e,r,t){"use strict";r.exports=function(e,r,t,n){var s,o,i,a,c,l,u,p=!1,h=e.bMarks[r]+e.tShift[r],f=e.eMarks[r];if(h+3>f)return!1;if(s=e.src.charCodeAt(h),126!==s&&96!==s)return!1;if(c=h,h=e.skipChars(h,s),o=h-c,3>o)return!1;if(u=e.src.slice(c,h),i=e.src.slice(h,f),i.indexOf("`")>=0)return!1;if(n)return!0;for(a=r;(a++,!(a>=t))&&(h=c=e.bMarks[a]+e.tShift[a],f=e.eMarks[a],!(f>h&&e.sCount[a]=4||(h=e.skipChars(h,s),o>h-c||(h=e.skipSpaces(h),f>h)))){p=!0;break}return o=e.sCount[r],e.line=a+(p?1:0),l=e.push("fence","code",0),l.info=i,l.content=e.getLines(r+1,a,o,!0),l.markup=u,l.map=[r,e.line],!0}},{}],22:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r,t,s){var o,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(o=e.src.charCodeAt(l),35!==o||l>=u)return!1;for(i=1,o=e.src.charCodeAt(++l);35===o&&u>l&&6>=i;)i++,o=e.src.charCodeAt(++l);return i>6||u>l&&32!==o?!1:s?!0:(u=e.skipSpacesBack(u,l),a=e.skipCharsBack(u,35,l),a>l&&n(e.src.charCodeAt(a-1))&&(u=a),e.line=r+1,c=e.push("heading_open","h"+String(i),1),c.markup="########".slice(0,i),c.map=[r,e.line],c=e.push("inline","",0),c.content=e.src.slice(l,u).trim(),c.map=[r,e.line],c.children=[],c=e.push("heading_close","h"+String(i),-1),c.markup="########".slice(0,i),!0)}},{"../common/utils":5}],23:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r,t,s){var o,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(o=e.src.charCodeAt(l++),42!==o&&45!==o&&95!==o)return!1;for(i=1;u>l;){if(a=e.src.charCodeAt(l++),a!==o&&!n(a))return!1;a===o&&i++}return 3>i?!1:s?!0:(e.line=r+1,c=e.push("hr","hr",0),c.map=[r,e.line],c.markup=Array(i+1).join(String.fromCharCode(o)),!0)}},{"../common/utils":5}],24:[function(e,r,t){"use strict";var n=e("../common/html_blocks"),s=e("../common/html_re").HTML_OPEN_CLOSE_TAG_RE,o=[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^?("+n.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(s.source+"\\s*$"),/^$/,!1]];r.exports=function(e,r,t,n){var s,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(l))return!1;for(c=e.src.slice(l,u),s=0;si&&!(e.sCount[i]=t?!1:e.sCount[c]3?!1:(s=e.bMarks[c]+e.tShift[c],o=e.eMarks[c],s>=o?!1:(n=e.src.charCodeAt(s),45!==n&&61!==n?!1:(s=e.skipChars(s,n),s=e.skipSpaces(s),o>s?!1:(s=e.bMarks[r]+e.tShift[r],e.line=c+1,a=61===n?1:2,i=e.push("heading_open","h"+String(a),1),i.markup=String.fromCharCode(n),i.map=[r,e.line],i=e.push("inline","",0),i.content=e.src.slice(s,e.eMarks[r]).trim(),i.map=[r,e.line-1],i.children=[],i=e.push("heading_close","h"+String(a),-1),i.markup=String.fromCharCode(n),!0))))}},{}],26:[function(e,r,t){"use strict";function n(e,r){var t,n,s,o;return n=e.bMarks[r]+e.tShift[r],s=e.eMarks[r],t=e.src.charCodeAt(n++),42!==t&&45!==t&&43!==t?-1:s>n&&(o=e.src.charCodeAt(n),!i(o))?-1:n}function s(e,r){var t,n=e.bMarks[r]+e.tShift[r],s=n,o=e.eMarks[r];if(s+1>=o)return-1;if(t=e.src.charCodeAt(s++),48>t||t>57)return-1;for(;;){if(s>=o)return-1;t=e.src.charCodeAt(s++);{if(!(t>=48&&57>=t)){if(41===t||46===t)break;return-1}if(s-n>=10)return-1}}return o>s&&(t=e.src.charCodeAt(s),!i(t))?-1:s}function o(e,r){var t,n,s=e.level+2;for(t=r+2,n=e.tokens.length-2;n>t;t++)e.tokens[t].level===s&&"paragraph_open"===e.tokens[t].type&&(e.tokens[t+2].hidden=!0,e.tokens[t].hidden=!0,t+=2)}var i=e("../common/utils").isSpace;r.exports=function(e,r,t,a){var c,l,u,p,h,f,d,m,g,_,k,b,v,x,y,C,A,w,q,D,E,S,F,z,L,T,R,M,I=!0;if((k=s(e,r))>=0)w=!0;else{if(!((k=n(e,r))>=0))return!1;w=!1}if(A=e.src.charCodeAt(k-1),a)return!0;for(D=e.tokens.length,w?(_=e.bMarks[r]+e.tShift[r],C=Number(e.src.substr(_,k-_-1)),L=e.push("ordered_list_open","ol",1),1!==C&&(L.attrs=[["start",C]])):L=e.push("bullet_list_open","ul",1),L.map=S=[r,0],L.markup=String.fromCharCode(A),c=r,E=!1,z=e.md.block.ruler.getRules("list");t>c;){for(v=k,x=e.eMarks[c],l=u=e.sCount[c]+k-(e.bMarks[r]+e.tShift[r]);x>v&&(b=e.src.charCodeAt(v),i(b));)9===b?u+=4-u%4:u++,v++;if(q=v,y=q>=x?1:u-l,y>4&&(y=1),p=l+y,L=e.push("list_item_open","li",1),L.markup=String.fromCharCode(A),L.map=F=[r,0],f=e.blkIndent,m=e.tight,h=e.tShift[r],d=e.sCount[r],g=e.parentType,e.blkIndent=p,e.tight=!0,e.parentType="list",e.tShift[r]=q-e.bMarks[r],e.sCount[r]=u,e.md.block.tokenize(e,r,t,!0),(!e.tight||E)&&(I=!1),E=e.line-r>1&&e.isEmpty(e.line-1),e.blkIndent=f,e.tShift[r]=h,e.sCount[r]=d,e.tight=m,e.parentType=g,L=e.push("list_item_close","li",-1),L.markup=String.fromCharCode(A),c=r=e.line,F[1]=c,q=e.bMarks[r],c>=t)break;if(e.isEmpty(c))break;if(e.sCount[c]T;T++)if(z[T](e,c,t,!0)){M=!0;break}if(M)break;if(w){if(k=s(e,c),0>k)break}else if(k=n(e,c),0>k)break;if(A!==e.src.charCodeAt(k-1))break}return L=w?e.push("ordered_list_close","ol",-1):e.push("bullet_list_close","ul",-1),L.markup=String.fromCharCode(A),S[1]=c,e.line=c,I&&o(e,D),!0}},{"../common/utils":5}],27:[function(e,r,t){"use strict";r.exports=function(e,r){for(var t,n,s,o,i,a=r+1,c=e.md.block.ruler.getRules("paragraph"),l=e.lineMax;l>a&&!e.isEmpty(a);a++)if(!(e.sCount[a]-e.blkIndent>3||e.sCount[a]<0)){for(n=!1,s=0,o=c.length;o>s;s++)if(c[s](e,a,l,!0)){n=!0;break}if(n)break}return t=e.getLines(r,a,e.blkIndent,!1).trim(),e.line=a,i=e.push("paragraph_open","p",1),i.map=[r,e.line],i=e.push("inline","",0),i.content=t,i.map=[r,e.line],i.children=[],i=e.push("paragraph_close","p",-1),!0}},{}],28:[function(e,r,t){"use strict";var n=e("../helpers/parse_link_destination"),s=e("../helpers/parse_link_title"),o=e("../common/utils").normalizeReference,i=e("../common/utils").isSpace;r.exports=function(e,r,t,a){var c,l,u,p,h,f,d,m,g,_,k,b,v,x,y,C=0,A=e.bMarks[r]+e.tShift[r],w=e.eMarks[r],q=r+1;if(91!==e.src.charCodeAt(A))return!1;for(;++Aq&&!e.isEmpty(q);q++)if(!(e.sCount[q]-e.blkIndent>3||e.sCount[q]<0)){for(v=!1,f=0,d=x.length;d>f;f++)if(x[f](e,q,p,!0)){v=!0;break}if(v)break}for(b=e.getLines(r,q,e.blkIndent,!1).trim(),w=b.length,A=1;w>A;A++){if(c=b.charCodeAt(A),91===c)return!1;if(93===c){g=A;break}10===c?C++:92===c&&(A++,w>A&&10===b.charCodeAt(A)&&C++)}if(0>g||58!==b.charCodeAt(g+1))return!1;for(A=g+2;w>A;A++)if(c=b.charCodeAt(A),10===c)C++;else if(!i(c))break;if(_=n(b,A,w),!_.ok)return!1;if(h=e.md.normalizeLink(_.str),!e.md.validateLink(h))return!1;for(A=_.pos,C+=_.lines,l=A,u=C,k=A;w>A;A++)if(c=b.charCodeAt(A),10===c)C++;else if(!i(c))break;for(_=s(b,A,w),w>A&&k!==A&&_.ok?(y=_.str,A=_.pos,C+=_.lines):(y="",A=l,C=u);w>A&&(c=b.charCodeAt(A),i(c));)A++;if(w>A&&10!==b.charCodeAt(A)&&y)for(y="",A=l,C=u;w>A&&(c=b.charCodeAt(A),i(c));)A++;return w>A&&10!==b.charCodeAt(A)?!1:(m=o(b.slice(1,g)))?a?!0:("undefined"==typeof e.env.references&&(e.env.references={}),"undefined"==typeof e.env.references[m]&&(e.env.references[m]={title:y,href:h}),e.line=r+C+1,!0):!1}},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_title":9}],29:[function(e,r,t){"use strict";function n(e,r,t,n){var s,i,a,c,l,u,p,h;for(this.src=e,this.md=r,this.env=t,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.parentType="root",this.ddIndent=-1,this.level=0,this.result="",i=this.src,h=!1,a=c=u=p=0,l=i.length;l>c;c++){if(s=i.charCodeAt(c),!h){if(o(s)){u++,9===s?p+=4-p%4:p++;continue}h=!0}(10===s||c===l-1)&&(10!==s&&c++,this.bMarks.push(a),this.eMarks.push(c),this.tShift.push(u),this.sCount.push(p),h=!1,u=0,p=0,a=c+1)}this.bMarks.push(i.length),this.eMarks.push(i.length),this.tShift.push(0),this.sCount.push(0),this.lineMax=this.bMarks.length-1}var s=e("../token"),o=e("../common/utils").isSpace;n.prototype.push=function(e,r,t){var n=new s(e,r,t);return n.block=!0,0>t&&this.level--,n.level=this.level,t>0&&this.level++,this.tokens.push(n),n},n.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},n.prototype.skipEmptyLines=function(e){for(var r=this.lineMax;r>e&&!(this.bMarks[e]+this.tShift[e]e&&(r=this.src.charCodeAt(e),o(r));e++);return e},n.prototype.skipSpacesBack=function(e,r){if(r>=e)return e;for(;e>r;)if(!o(this.src.charCodeAt(--e)))return e+1;return e},n.prototype.skipChars=function(e,r){for(var t=this.src.length;t>e&&this.src.charCodeAt(e)===r;e++);return e},n.prototype.skipCharsBack=function(e,r,t){if(t>=e)return e;for(;e>t;)if(r!==this.src.charCodeAt(--e))return e+1;return e},n.prototype.getLines=function(e,r,t,n){var s,i,a,c,l,u,p,h=e;if(e>=r)return"";for(u=new Array(r-e),s=0;r>h;h++,s++){for(i=0,p=c=this.bMarks[h],l=r>h+1||n?this.eMarks[h]+1:this.eMarks[h];l>c&&t>i;){if(a=this.src.charCodeAt(c),o(a))9===a?i+=4-i%4:i++;else{if(!(c-pn;)96===r&&o%2===0?(a=!a,c=n):124!==r||o%2!==0||a?92===r?o++:o=0:(t.push(e.substring(i,n)),i=n+1),n++,n===s&&a&&(a=!1,n=c+1),r=e.charCodeAt(n);return t.push(e.substring(i)),t}r.exports=function(e,r,t,o){var i,a,c,l,u,p,h,f,d,m,g;if(r+2>t)return!1;if(u=r+1,e.sCount[u]=e.eMarks[u])return!1;if(i=e.src.charCodeAt(c),124!==i&&45!==i&&58!==i)return!1;if(a=n(e,r+1),!/^[-:| ]+$/.test(a))return!1;if(p=a.split("|"),p.length<2)return!1;for(f=[],l=0;lu&&!(e.sCount[u]t;t++)r=s[t],"inline"===r.type&&e.md.inline.parse(r.content,e.md,e.env,r.children)}},{}],33:[function(e,r,t){"use strict";function n(e){return/^\s]/i.test(e)}function s(e){return/^<\/a\s*>/i.test(e)}var o=e("../common/utils").arrayReplaceAt;r.exports=function(e){var r,t,i,a,c,l,u,p,h,f,d,m,g,_,k,b,v,x=e.tokens;if(e.md.options.linkify)for(t=0,i=x.length;i>t;t++)if("inline"===x[t].type&&e.md.linkify.pretest(x[t].content))for(a=x[t].children,g=0,r=a.length-1;r>=0;r--)if(l=a[r],"link_close"!==l.type){if("html_inline"===l.type&&(n(l.content)&&g>0&&g--,s(l.content)&&g++),!(g>0)&&"text"===l.type&&e.md.linkify.test(l.content)){for(h=l.content,v=e.md.linkify.match(h),u=[],m=l.level,d=0,p=0;pd&&(c=new e.Token("text","",0),c.content=h.slice(d,f),c.level=m,u.push(c)),c=new e.Token("link_open","a",1),c.attrs=[["href",k]],c.level=m++,c.markup="linkify",c.info="auto",u.push(c),c=new e.Token("text","",0),c.content=b,c.level=m,u.push(c),c=new e.Token("link_close","a",-1),c.level=--m,c.markup="linkify",c.info="auto",u.push(c),d=v[p].lastIndex);d=0;r--)t=e[r],"text"===t.type&&(t.content=t.content.replace(c,n))}function o(e){var r,t;for(r=e.length-1;r>=0;r--)t=e[r],"text"===t.type&&i.test(t.content)&&(t.content=t.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1\u2014$2").replace(/(^|\s)--(\s|$)/gm,"$1\u2013$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1\u2013$2"))}var i=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,a=/\((c|tm|r|p)\)/i,c=/\((c|tm|r|p)\)/gi,l={c:"\xa9",r:"\xae",p:"\xa7",tm:"\u2122"};r.exports=function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)"inline"===e.tokens[r].type&&(a.test(e.tokens[r].content)&&s(e.tokens[r].children),i.test(e.tokens[r].content)&&o(e.tokens[r].children))}},{}],36:[function(e,r,t){"use strict";function n(e,r,t){return e.substr(0,r)+t+e.substr(r+1)}function s(e,r){var t,s,c,p,h,f,d,m,g,_,k,b,v,x,y,C,A,w,q,D,E;for(q=[],t=0;t=0&&!(q[A].level<=d);A--);if(q.length=A+1,"text"===s.type){c=s.content,h=0,f=c.length;e:for(;f>h&&(l.lastIndex=h,p=l.exec(c));)if(y=C=!0,h=p.index+1,w="'"===p[0],g=p.index-1>=0?c.charCodeAt(p.index-1):32,_=f>h?c.charCodeAt(h):32,k=a(g)||i(String.fromCharCode(g)),b=a(_)||i(String.fromCharCode(_)),v=o(g),x=o(_),x?y=!1:b&&(v||k||(y=!1)),v?C=!1:k&&(x||b||(C=!1)),34===_&&'"'===p[0]&&g>=48&&57>=g&&(C=y=!1),y&&C&&(y=!1,C=b),y||C){if(C)for(A=q.length-1;A>=0&&(m=q[A],!(q[A].level=0;r--)"inline"===e.tokens[r].type&&c.test(e.tokens[r].content)&&s(e.tokens[r].children,e)}},{"../common/utils":5}],37:[function(e,r,t){"use strict";function n(e,r,t){this.src=e,this.env=t,this.tokens=[],this.inlineMode=!1,this.md=r}var s=e("../token");n.prototype.Token=s,r.exports=n},{"../token":52}],38:[function(e,r,t){"use strict";var n=e("../common/url_schemas"),s=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,o=/^<([a-zA-Z.\-]{1,25}):([^<>\x00-\x20]*)>/;r.exports=function(e,r){var t,i,a,c,l,u,p=e.pos;return 60!==e.src.charCodeAt(p)?!1:(t=e.src.slice(p),t.indexOf(">")<0?!1:o.test(t)?(i=t.match(o),n.indexOf(i[1].toLowerCase())<0?!1:(c=i[0].slice(1,-1),l=e.md.normalizeLink(c),e.md.validateLink(l)?(r||(u=e.push("link_open","a",1),u.attrs=[["href",l]],u=e.push("text","",0),u.content=e.md.normalizeLinkText(c),u=e.push("link_close","a",-1)),e.pos+=i[0].length,!0):!1)):s.test(t)?(a=t.match(s),c=a[0].slice(1,-1),l=e.md.normalizeLink("mailto:"+c),e.md.validateLink(l)?(r||(u=e.push("link_open","a",1),u.attrs=[["href",l]],u.markup="autolink",u.info="auto",u=e.push("text","",0),u.content=e.md.normalizeLinkText(c),u=e.push("link_close","a",-1),u.markup="autolink",u.info="auto"),e.pos+=a[0].length,!0):!1):!1)}},{"../common/url_schemas":4}],39:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s,o,i,a,c=e.pos,l=e.src.charCodeAt(c);if(96!==l)return!1;for(t=c,c++,n=e.posMax;n>c&&96===e.src.charCodeAt(c);)c++;for(s=e.src.slice(t,c),o=i=c;-1!==(o=e.src.indexOf("`",i));){for(i=o+1;n>i&&96===e.src.charCodeAt(i);)i++;if(i-o===s.length)return r||(a=e.push("code_inline","code",0),a.markup=s,a.content=e.src.slice(c,o).replace(/[ \n]+/g," ").trim()),e.pos=i,!0}return r||(e.pending+=s),e.pos+=s.length,!0}},{}],40:[function(e,r,t){"use strict";r.exports=function(e){var r,t,n,s,o=e.delimiters,i=e.delimiters.length;for(r=0;i>r;r++)if(n=o[r],n.close)for(t=r-n.jump-1;t>=0;){if(s=o[t],s.open&&s.marker===n.marker&&s.end<0&&s.level===n.level){n.jump=r-t,n.open=!1,s.end=r,s.jump=0;break}t-=s.jump+1}}},{}],41:[function(e,r,t){"use strict";r.exports.tokenize=function(e,r){var t,n,s,o=e.pos,i=e.src.charCodeAt(o);if(r)return!1;if(95!==i&&42!==i)return!1;for(n=e.scanDelims(e.pos,42===i),t=0;tr;r++)t=a[r],(95===t.marker||42===t.marker)&&-1!==t.end&&(n=a[t.end],i=c>r+1&&a[r+1].end===t.end-1&&a[r+1].token===t.token+1&&a[t.end-1].token===n.token-1&&a[r+1].marker===t.marker,o=String.fromCharCode(t.marker),s=e.tokens[t.token],s.type=i?"strong_open":"em_open",s.tag=i?"strong":"em",s.nesting=1,s.markup=i?o+o:o,s.content="",s=e.tokens[n.token],s.type=i?"strong_close":"em_close",s.tag=i?"strong":"em",s.nesting=-1,s.markup=i?o+o:o,s.content="",i&&(e.tokens[a[r+1].token].content="",e.tokens[a[t.end-1].token].content="",r++))}},{}],42:[function(e,r,t){"use strict";var n=e("../common/entities"),s=e("../common/utils").has,o=e("../common/utils").isValidEntityCode,i=e("../common/utils").fromCodePoint,a=/^((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,c=/^&([a-z][a-z0-9]{1,31});/i;r.exports=function(e,r){var t,l,u,p=e.pos,h=e.posMax;if(38!==e.src.charCodeAt(p))return!1;if(h>p+1)if(t=e.src.charCodeAt(p+1),35===t){if(u=e.src.slice(p).match(a))return r||(l="x"===u[1][0].toLowerCase()?parseInt(u[1].slice(1),16):parseInt(u[1],10),e.pending+=i(o(l)?l:65533)),e.pos+=u[0].length,!0}else if(u=e.src.slice(p).match(c),u&&s(n,u[1]))return r||(e.pending+=n[u[1]]),e.pos+=u[0].length,!0;return r||(e.pending+="&"),e.pos++,!0}},{"../common/entities":1,"../common/utils":5}],43:[function(e,r,t){"use strict";for(var n=e("../common/utils").isSpace,s=[],o=0;256>o;o++)s.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(e){s[e.charCodeAt(0)]=1}),r.exports=function(e,r){var t,o=e.pos,i=e.posMax;if(92!==e.src.charCodeAt(o))return!1;if(o++,i>o){if(t=e.src.charCodeAt(o),256>t&&0!==s[t])return r||(e.pending+=e.src[o]),e.pos+=2,!0;if(10===t){for(r||e.push("hardbreak","br",0),o++;i>o&&(t=e.src.charCodeAt(o),n(t));)o++;return e.pos=o,!0}}return r||(e.pending+="\\"),e.pos++,!0}},{"../common/utils":5}],44:[function(e,r,t){"use strict";function n(e){var r=32|e;return r>=97&&122>=r}var s=e("../common/html_re").HTML_TAG_RE;r.exports=function(e,r){var t,o,i,a,c=e.pos;return e.md.options.html?(i=e.posMax,60!==e.src.charCodeAt(c)||c+2>=i?!1:(t=e.src.charCodeAt(c+1),(33===t||63===t||47===t||n(t))&&(o=e.src.slice(c).match(s))?(r||(a=e.push("html_inline","",0),a.content=e.src.slice(c,c+o[0].length)),e.pos+=o[0].length,!0):!1)):!1}},{"../common/html_re":3}],45:[function(e,r,t){"use strict";var n=e("../helpers/parse_link_label"),s=e("../helpers/parse_link_destination"),o=e("../helpers/parse_link_title"),i=e("../common/utils").normalizeReference,a=e("../common/utils").isSpace;r.exports=function(e,r){var t,c,l,u,p,h,f,d,m,g,_,k,b="",v=e.pos,x=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(p=e.pos+2,u=n(e,e.pos+1,!1),0>u)return!1;if(h=u+1,x>h&&40===e.src.charCodeAt(h)){for(h++;x>h&&(c=e.src.charCodeAt(h),a(c)||10===c);h++);if(h>=x)return!1;for(k=h,d=s(e.src,h,e.posMax),d.ok&&(b=e.md.normalizeLink(d.str),e.md.validateLink(b)?h=d.pos:b=""),k=h;x>h&&(c=e.src.charCodeAt(h),a(c)||10===c);h++);if(d=o(e.src,h,e.posMax),x>h&&k!==h&&d.ok)for(m=d.str,h=d.pos;x>h&&(c=e.src.charCodeAt(h),a(c)||10===c);h++);else m="";if(h>=x||41!==e.src.charCodeAt(h))return e.pos=v,!1;h++}else{if("undefined"==typeof e.env.references)return!1;for(;x>h&&(c=e.src.charCodeAt(h),a(c)||10===c);h++);if(x>h&&91===e.src.charCodeAt(h)?(k=h+1,h=n(e,h),h>=0?l=e.src.slice(k,h++):h=u+1):h=u+1,l||(l=e.src.slice(p,u)),f=e.env.references[i(l)],!f)return e.pos=v,!1;b=f.href,m=f.title}return r||(e.md.inline.parse(e.src.slice(p,u),e.md,e.env,_=[]),g=e.push("image","img",0),g.attrs=t=[["src",b],["alt",""]],g.children=_,m&&t.push(["title",m])),e.pos=h,e.posMax=x,!0}},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_label":8,"../helpers/parse_link_title":9}],46:[function(e,r,t){"use strict";var n=e("../helpers/parse_link_label"),s=e("../helpers/parse_link_destination"),o=e("../helpers/parse_link_title"),i=e("../common/utils").normalizeReference,a=e("../common/utils").isSpace;r.exports=function(e,r){var t,c,l,u,p,h,f,d,m,g,_="",k=e.pos,b=e.posMax,v=e.pos;if(91!==e.src.charCodeAt(e.pos))return!1;if(p=e.pos+1,u=n(e,e.pos,!0),0>u)return!1;if(h=u+1,b>h&&40===e.src.charCodeAt(h)){for(h++;b>h&&(c=e.src.charCodeAt(h),a(c)||10===c);h++);if(h>=b)return!1;for(v=h,f=s(e.src,h,e.posMax),f.ok&&(_=e.md.normalizeLink(f.str),e.md.validateLink(_)?h=f.pos:_=""),v=h;b>h&&(c=e.src.charCodeAt(h),a(c)||10===c);h++);if(f=o(e.src,h,e.posMax),b>h&&v!==h&&f.ok)for(m=f.str,h=f.pos;b>h&&(c=e.src.charCodeAt(h),a(c)||10===c);h++);else m="";if(h>=b||41!==e.src.charCodeAt(h))return e.pos=k,!1;h++}else{if("undefined"==typeof e.env.references)return!1;for(;b>h&&(c=e.src.charCodeAt(h),a(c)||10===c);h++);if(b>h&&91===e.src.charCodeAt(h)?(v=h+1,h=n(e,h),h>=0?l=e.src.slice(v,h++):h=u+1):h=u+1,l||(l=e.src.slice(p,u)),d=e.env.references[i(l)],!d)return e.pos=k,!1;_=d.href,m=d.title}return r||(e.pos=p,e.posMax=u,g=e.push("link_open","a",1),g.attrs=t=[["href",_]],m&&t.push(["title",m]),e.md.inline.tokenize(e),g=e.push("link_close","a",-1)),e.pos=h,e.posMax=b,!0}},{"../common/utils":5,"../helpers/parse_link_destination":7,"../helpers/parse_link_label":8,"../helpers/parse_link_title":9}],47:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s=e.pos;if(10!==e.src.charCodeAt(s))return!1;for(t=e.pending.length-1,n=e.posMax,r||(t>=0&&32===e.pending.charCodeAt(t)?t>=1&&32===e.pending.charCodeAt(t-1)?(e.pending=e.pending.replace(/ +$/,""),e.push("hardbreak","br",0)):(e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0)):e.push("softbreak","br",0)),s++;n>s&&32===e.src.charCodeAt(s);)s++;return e.pos=s,!0}},{}],48:[function(e,r,t){"use strict";function n(e,r,t,n){this.src=e,this.env=t,this.md=r,this.tokens=n,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[]}var s=e("../token"),o=e("../common/utils").isWhiteSpace,i=e("../common/utils").isPunctChar,a=e("../common/utils").isMdAsciiPunct;n.prototype.pushPending=function(){var e=new s("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e},n.prototype.push=function(e,r,t){this.pending&&this.pushPending();var n=new s(e,r,t);return 0>t&&this.level--,n.level=this.level,t>0&&this.level++,this.pendingLevel=this.level,this.tokens.push(n),n},n.prototype.scanDelims=function(e,r){var t,n,s,c,l,u,p,h,f,d=e,m=!0,g=!0,_=this.posMax,k=this.src.charCodeAt(e);for(t=e>0?this.src.charCodeAt(e-1):32;_>d&&this.src.charCodeAt(d)===k;)d++;return s=d-e,n=_>d?this.src.charCodeAt(d):32,p=a(t)||i(String.fromCharCode(t)),f=a(n)||i(String.fromCharCode(n)),u=o(t),h=o(n),h?m=!1:f&&(u||p||(m=!1)),u?g=!1:p&&(h||f||(g=!1)),r?(c=m,l=g):(c=m&&(!g||p),l=g&&(!m||f)),{can_open:c,can_close:l,length:s}},n.prototype.Token=s,r.exports=n},{"../common/utils":5,"../token":52}],49:[function(e,r,t){"use strict";r.exports.tokenize=function(e,r){var t,n,s,o,i,a=e.pos,c=e.src.charCodeAt(a);if(r)return!1;if(126!==c)return!1;if(n=e.scanDelims(e.pos,!0),o=n.length,i=String.fromCharCode(c),2>o)return!1;for(o%2&&(s=e.push("text","",0),s.content=i,o--),t=0;o>t;t+=2)s=e.push("text","",0),s.content=i+i,e.delimiters.push({marker:c,jump:t,token:e.tokens.length-1,level:e.level,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},r.exports.postProcess=function(e){var r,t,n,s,o,i=[],a=e.delimiters,c=e.delimiters.length;for(r=0;c>r;r++)n=a[r],126===n.marker&&-1!==n.end&&(s=a[n.end],o=e.tokens[n.token],o.type="s_open",o.tag="s",o.nesting=1,o.markup="~~",o.content="",o=e.tokens[s.token],o.type="s_close",o.tag="s",o.nesting=-1,o.markup="~~",o.content="","text"===e.tokens[s.token-1].type&&"~"===e.tokens[s.token-1].content&&i.push(s.token-1));for(;i.length;){for(r=i.pop(),t=r+1;tr;r++)n+=s[r].nesting,s[r].level=n,"text"===s[r].type&&o>r+1&&"text"===s[r+1].type?s[r+1].content=s[r].content+s[r+1].content:(r!==t&&(s[t]=s[r]),t++);r!==t&&(s.length=t)}},{}],52:[function(e,r,t){"use strict";function n(e,r,t){this.type=e,this.tag=r,this.attrs=null,this.map=null,this.nesting=t,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}n.prototype.attrIndex=function(e){var r,t,n;if(!this.attrs)return-1;for(r=this.attrs,t=0,n=r.length;n>t;t++)if(r[t][0]===e)return t;return-1},n.prototype.attrPush=function(e){this.attrs?this.attrs.push(e):this.attrs=[e]},r.exports=n},{}],53:[function(r,t,n){(function(r){!function(s){function o(e){throw RangeError(R[e])}function i(e,r){for(var t=e.length,n=[];t--;)n[t]=r(e[t]);return n}function a(e,r){var t=e.split("@"),n="";t.length>1&&(n=t[0]+"@",e=t[1]),e=e.replace(T,".");var s=e.split("."),o=i(s,r).join(".");return n+o}function c(e){for(var r,t,n=[],s=0,o=e.length;o>s;)r=e.charCodeAt(s++),r>=55296&&56319>=r&&o>s?(t=e.charCodeAt(s++),56320==(64512&t)?n.push(((1023&r)<<10)+(1023&t)+65536):(n.push(r),s--)):n.push(r);return n}function l(e){return i(e,function(e){var r="";return e>65535&&(e-=65536,r+=B(e>>>10&1023|55296),e=56320|1023&e),r+=B(e)}).join("")}function u(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:C}function p(e,r){return e+22+75*(26>e)-((0!=r)<<5)}function h(e,r,t){var n=0;for(e=t?I(e/D):e>>1,e+=I(e/r);e>M*w>>1;n+=C)e=I(e/M);return I(n+(M+1)*e/(e+q))}function f(e){var r,t,n,s,i,a,c,p,f,d,m=[],g=e.length,_=0,k=S,b=E;for(t=e.lastIndexOf(F),0>t&&(t=0),n=0;t>n;++n)e.charCodeAt(n)>=128&&o("not-basic"),m.push(e.charCodeAt(n));for(s=t>0?t+1:0;g>s;){for(i=_,a=1,c=C;s>=g&&o("invalid-input"),p=u(e.charCodeAt(s++)),(p>=C||p>I((y-_)/a))&&o("overflow"),_+=p*a,f=b>=c?A:c>=b+w?w:c-b,!(f>p);c+=C)d=C-f,a>I(y/d)&&o("overflow"),a*=d;r=m.length+1,b=h(_-i,r,0==i),I(_/r)>y-k&&o("overflow"),k+=I(_/r),_%=r,m.splice(_++,0,k)}return l(m)}function d(e){var r,t,n,s,i,a,l,u,f,d,m,g,_,k,b,v=[];for(e=c(e),g=e.length,r=S,t=0,i=E,a=0;g>a;++a)m=e[a],128>m&&v.push(B(m));for(n=s=v.length,s&&v.push(F);g>n;){for(l=y,a=0;g>a;++a)m=e[a],m>=r&&l>m&&(l=m);for(_=n+1,l-r>I((y-t)/_)&&o("overflow"),t+=(l-r)*_,r=l,a=0;g>a;++a)if(m=e[a],r>m&&++t>y&&o("overflow"),m==r){for(u=t,f=C;d=i>=f?A:f>=i+w?w:f-i,!(d>u);f+=C)b=u-d,k=C-d,v.push(B(p(d+b%k,0))),u=I(b/k);v.push(B(p(u,0))),i=h(t,_,n==s),t=0,++n}++t,++r}return v.join("")}function m(e){return a(e,function(e){return z.test(e)?f(e.slice(4).toLowerCase()):e})}function g(e){return a(e,function(e){return L.test(e)?"xn--"+d(e):e})}var _="object"==typeof n&&n&&!n.nodeType&&n,k="object"==typeof t&&t&&!t.nodeType&&t,b="object"==typeof r&&r;(b.global===b||b.window===b||b.self===b)&&(s=b);var v,x,y=2147483647,C=36,A=1,w=26,q=38,D=700,E=72,S=128,F="-",z=/^xn--/,L=/[^\x20-\x7E]/,T=/[\x2E\u3002\uFF0E\uFF61]/g,R={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},M=C-A,I=Math.floor,B=String.fromCharCode;if(v={version:"1.3.2",ucs2:{decode:c,encode:l},decode:f,encode:d,toASCII:g,toUnicode:m},"function"==typeof e&&"object"==typeof e.amd&&e.amd)e("punycode",function(){return v});else if(_&&k)if(t.exports==_)k.exports=v;else for(x in v)v.hasOwnProperty(x)&&(_[x]=v[x]);else s.punycode=v}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],54:[function(e,r,t){r.exports={Aacute:"\xc1",aacute:"\xe1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223e",acd:"\u223f",acE:"\u223e\u0333",Acirc:"\xc2",acirc:"\xe2",acute:"\xb4",Acy:"\u0410",acy:"\u0430",AElig:"\xc6",aelig:"\xe6",af:"\u2061",Afr:"\ud835\udd04",afr:"\ud835\udd1e",Agrave:"\xc0",agrave:"\xe0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03b1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2a3f",amp:"&",AMP:"&",andand:"\u2a55",And:"\u2a53",and:"\u2227",andd:"\u2a5c",andslope:"\u2a58",andv:"\u2a5a",ang:"\u2220",ange:"\u29a4",angle:"\u2220",angmsdaa:"\u29a8",angmsdab:"\u29a9",angmsdac:"\u29aa",angmsdad:"\u29ab",angmsdae:"\u29ac",angmsdaf:"\u29ad",angmsdag:"\u29ae",angmsdah:"\u29af",angmsd:"\u2221",angrt:"\u221f",angrtvb:"\u22be",angrtvbd:"\u299d",angsph:"\u2222",angst:"\xc5",angzarr:"\u237c",Aogon:"\u0104",aogon:"\u0105",Aopf:"\ud835\udd38",aopf:"\ud835\udd52",apacir:"\u2a6f",ap:"\u2248",apE:"\u2a70",ape:"\u224a",apid:"\u224b",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224a",Aring:"\xc5",aring:"\xe5",Ascr:"\ud835\udc9c",ascr:"\ud835\udcb6",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224d",Atilde:"\xc3",atilde:"\xe3",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:"\u2305",Barwed:"\u2306",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:"\ud835\udd05",bfr:"\ud835\udd1f",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:"\ud835\udd39",bopf:"\ud835\udd53",bot:"\u22a5",bottom:"\u22a5",bowtie:"\u22c8",boxbox:"\u29c9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250c",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252c",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229f",boxplus:"\u229e",boxtimes:"\u22a0",boxul:"\u2518",boxuL:"\u255b",boxUl:"\u255c",boxUL:"\u255d",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255a",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253c",boxvH:"\u256a",boxVh:"\u256b",boxVH:"\u256c",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251c",boxvR:"\u255e",boxVr:"\u255f",boxVR:"\u2560",bprime:"\u2035",breve:"\u02d8",Breve:"\u02d8",brvbar:"\xa6",bscr:"\ud835\udcb7",Bscr:"\u212c",bsemi:"\u204f",bsim:"\u223d",bsime:"\u22cd",bsolb:"\u29c5",bsol:"\\",bsolhsub:"\u27c8",bull:"\u2022",bullet:"\u2022",bump:"\u224e",bumpE:"\u2aae",bumpe:"\u224f",Bumpeq:"\u224e",bumpeq:"\u224f",Cacute:"\u0106",cacute:"\u0107",capand:"\u2a44",capbrcup:"\u2a49",capcap:"\u2a4b",cap:"\u2229",Cap:"\u22d2",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",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2a4c",ccupssm:"\u2a50",Cdot:"\u010a",cdot:"\u010b",cedil:"\xb8",Cedilla:"\xb8",cemptyv:"\u29b2",cent:"\xa2",centerdot:"\xb7",CenterDot:"\xb7",cfr:"\ud835\udd20",Cfr:"\u212d",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03a7",chi:"\u03c7",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",cir:"\u25cb",cirE:"\u29c3",cire:"\u2257",cirfnint:"\u2a10",cirmid:"\u2aef",cirscir:"\u29c2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201d",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2a74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2a6d",Congruent:"\u2261",conint:"\u222e",Conint:"\u222f",ContourIntegral:"\u222e",copf:"\ud835\udd54",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xa9",COPY:"\xa9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21b5",cross:"\u2717",Cross:"\u2a2f",Cscr:"\ud835\udc9e",cscr:"\ud835\udcb8",csub:"\u2acf",csube:"\u2ad1",csup:"\u2ad0",csupe:"\u2ad2",ctdot:"\u22ef",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22de",cuesc:"\u22df",cularr:"\u21b6",cularrp:"\u293d",cupbrcap:"\u2a48",cupcap:"\u2a46",CupCap:"\u224d",cup:"\u222a",Cup:"\u22d3",cupcup:"\u2a4a",cupdot:"\u228d",cupor:"\u2a45",cups:"\u222a\ufe00",curarr:"\u21b7",curarrm:"\u293c",curlyeqprec:"\u22de",curlyeqsucc:"\u22df",curlyvee:"\u22ce",curlywedge:"\u22cf",curren:"\xa4",curvearrowleft:"\u21b6",curvearrowright:"\u21b7",cuvee:"\u22ce",cuwed:"\u22cf",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232d",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21a1",dArr:"\u21d3",dash:"\u2010",Dashv:"\u2ae4",dashv:"\u22a3",dbkarow:"\u290f",dblac:"\u02dd",Dcaron:"\u010e",dcaron:"\u010f",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21ca",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2a77",deg:"\xb0",Del:"\u2207",Delta:"\u0394",delta:"\u03b4",demptyv:"\u29b1",dfisht:"\u297f",Dfr:"\ud835\udd07",dfr:"\ud835\udd21",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",divideontimes:"\u22c7",divonx:"\u22c7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231e",dlcrop:"\u230d",dollar:"$",Dopf:"\ud835\udd3b",dopf:"\ud835\udd55",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",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21d3",DownArrowUpArrow:"\u21f5",DownBreve:"\u0311",downdownarrows:"\u21ca",downharpoonleft:"\u21c3",downharpoonright:"\u21c2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295e",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21bd",DownRightTeeVector:"\u295f",DownRightVectorBar:"\u2957",DownRightVector:"\u21c1",DownTeeArrow:"\u21a7",DownTee:"\u22a4",drbkarow:"\u2910",drcorn:"\u231f",drcrop:"\u230c",Dscr:"\ud835\udc9f",dscr:"\ud835\udcb9",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",easter:"\u2a6e",Ecaron:"\u011a",ecaron:"\u011b",Ecirc:"\xca",ecirc:"\xea",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042d",ecy:"\u044d",eDDot:"\u2a77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\ud835\udd08",efr:"\ud835\udd22",eg:"\u2a9a",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:"\ud835\udd3c",eopf:"\ud835\udd56",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:"\u212f",Escr:"\u2130",esdot:"\u2250",Esim:"\u2a73",esim:"\u2242",Eta:"\u0397",eta:"\u03b7",ETH:"\xd0",eth:"\xf0",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:"\ud835\udd09",ffr:"\ud835\udd23",filig:"\ufb01",FilledSmallSquare:"\u25fc",FilledVerySmallSquare:"\u25aa",fjlig:"fj",flat:"\u266d",fllig:"\ufb02",fltns:"\u25b1",fnof:"\u0192",Fopf:"\ud835\udd3d",fopf:"\ud835\udd57",forall:"\u2200",ForAll:"\u2200",fork:"\u22d4",forkv:"\u2ad9",Fouriertrf:"\u2131",fpartint:"\u2a0d",frac12:"\xbd",frac13:"\u2153",frac14:"\xbc",frac15:"\u2155",frac16:"\u2159",frac18:"\u215b",frac23:"\u2154",frac25:"\u2156",frac34:"\xbe",frac35:"\u2157",frac38:"\u215c",frac45:"\u2158",frac56:"\u215a",frac58:"\u215d",frac78:"\u215e",frasl:"\u2044",frown:"\u2322",fscr:"\ud835\udcbb",Fscr:"\u2131",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:"\u2265",gE:"\u2267",gEl:"\u2a8c",gel:"\u22db",geq:"\u2265",geqq:"\u2267",geqslant:"\u2a7e",gescc:"\u2aa9",ges:"\u2a7e",gesdot:"\u2a80",gesdoto:"\u2a82",gesdotol:"\u2a84",gesl:"\u22db\ufe00",gesles:"\u2a94",Gfr:"\ud835\udd0a",gfr:"\ud835\udd24",gg:"\u226b",Gg:"\u22d9",ggg:"\u22d9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2aa5",gl:"\u2277",glE:"\u2a92",glj:"\u2aa4",gnap:"\u2a8a",gnapprox:"\u2a8a",gne:"\u2a88",gnE:"\u2269",gneq:"\u2a88",gneqq:"\u2269",gnsim:"\u22e7",Gopf:"\ud835\udd3e",gopf:"\ud835\udd58",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22db",GreaterFullEqual:"\u2267",GreaterGreater:"\u2aa2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2a7e",GreaterTilde:"\u2273",Gscr:"\ud835\udca2",gscr:"\u210a",gsim:"\u2273",gsime:"\u2a8e",gsiml:"\u2a90",gtcc:"\u2aa7",gtcir:"\u2a7a",gt:">",GT:">",Gt:"\u226b",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",harrcir:"\u2948",harr:"\u2194",hArr:"\u21d4",harrw:"\u21ad",Hat:"^",hbar:"\u210f",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22b9",hfr:"\ud835\udd25",Hfr:"\u210c",HilbertSpace:"\u210b",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21ff",homtht:"\u223b",hookleftarrow:"\u21a9",hookrightarrow:"\u21aa",hopf:"\ud835\udd59",Hopf:"\u210d",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\ud835\udcbd",Hscr:"\u210b",hslash:"\u210f",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224e",HumpEqual:"\u224f",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xcd",iacute:"\xed",ic:"\u2063",Icirc:"\xce",icirc:"\xee",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xa1",iff:"\u21d4",ifr:"\ud835\udd26",Ifr:"\u2111",Igrave:"\xcc",igrave:"\xec",ii:"\u2148",iiiint:"\u2a0c",iiint:"\u222d",iinfin:"\u29dc",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012a",imacr:"\u012b",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22b7",imped:"\u01b5",Implies:"\u21d2",incare:"\u2105","in":"\u2208",infin:"\u221e",infintie:"\u29dd",inodot:"\u0131",intcal:"\u22ba","int":"\u222b",Int:"\u222c",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:"\ud835\udd40",iopf:"\ud835\udd5a",Iota:"\u0399",iota:"\u03b9",iprod:"\u2a3c",iquest:"\xbf",iscr:"\ud835\udcbe",Iscr:"\u2110",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",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\ud835\udd0d",jfr:"\ud835\udd27",jmath:"\u0237",Jopf:"\ud835\udd41",jopf:"\ud835\udd5b",Jscr:"\ud835\udca5",jscr:"\ud835\udcbf",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039a",kappa:"\u03ba",kappav:"\u03f0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041a",kcy:"\u043a",Kfr:"\ud835\udd0e",kfr:"\ud835\udd28",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040c",kjcy:"\u045c",Kopf:"\ud835\udd42",kopf:"\ud835\udd5c",Kscr:"\ud835\udca6",kscr:"\ud835\udcc0",lAarr:"\u21da",Lacute:"\u0139",lacute:"\u013a",laemptyv:"\u29b4",lagran:"\u2112",Lambda:"\u039b",lambda:"\u03bb",lang:"\u27e8",Lang:"\u27ea",langd:"\u2991",langle:"\u27e8",lap:"\u2a85",Laplacetrf:"\u2112",laquo:"\xab",larrb:"\u21e4",larrbfs:"\u291f",larr:"\u2190",Larr:"\u219e",lArr:"\u21d0",larrfs:"\u291d",larrhk:"\u21a9",larrlp:"\u21ab",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21a2",latail:"\u2919",lAtail:"\u291b",lat:"\u2aab",late:"\u2aad",lates:"\u2aad\ufe00",lbarr:"\u290c",lBarr:"\u290e",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:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27e8",LeftArrowBar:"\u21e4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21d0",LeftArrowRightArrow:"\u21c6",leftarrowtail:"\u21a2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27e6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21c3",LeftFloor:"\u230a",leftharpoondown:"\u21bd",leftharpoonup:"\u21bc",leftleftarrows:"\u21c7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21d4",leftrightarrows:"\u21c6",leftrightharpoons:"\u21cb",leftrightsquigarrow:"\u21ad",LeftRightVector:"\u294e",LeftTeeArrow:"\u21a4",LeftTee:"\u22a3",LeftTeeVector:"\u295a",leftthreetimes:"\u22cb",LeftTriangleBar:"\u29cf",LeftTriangle:"\u22b2",LeftTriangleEqual:"\u22b4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21bf",LeftVectorBar:"\u2952",LeftVector:"\u21bc",lEg:"\u2a8b",leg:"\u22da",leq:"\u2264",leqq:"\u2266",leqslant:"\u2a7d",lescc:"\u2aa8",les:"\u2a7d",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:"\ud835\udd0f",lfr:"\ud835\udd29",lg:"\u2276",lgE:"\u2a91",lHar:"\u2962",lhard:"\u21bd",lharu:"\u21bc",lharul:"\u296a",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21c7",ll:"\u226a",Ll:"\u22d8",llcorner:"\u231e",Lleftarrow:"\u21da",llhard:"\u296b",lltri:"\u25fa",Lmidot:"\u013f",lmidot:"\u0140",lmoustache:"\u23b0",lmoust:"\u23b0",lnap:"\u2a89",lnapprox:"\u2a89",lne:"\u2a87",lnE:"\u2268",lneq:"\u2a87",lneqq:"\u2268",lnsim:"\u22e6",loang:"\u27ec",loarr:"\u21fd",lobrk:"\u27e6",longleftarrow:"\u27f5",LongLeftArrow:"\u27f5",Longleftarrow:"\u27f8",longleftrightarrow:"\u27f7",LongLeftRightArrow:"\u27f7",Longleftrightarrow:"\u27fa",longmapsto:"\u27fc",longrightarrow:"\u27f6",LongRightArrow:"\u27f6",Longrightarrow:"\u27f9",looparrowleft:"\u21ab",looparrowright:"\u21ac",lopar:"\u2985",Lopf:"\ud835\udd43",lopf:"\ud835\udd5d",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:"\ud835\udcc1",Lscr:"\u2112",lsh:"\u21b0",Lsh:"\u21b0",lsim:"\u2272",lsime:"\u2a8d",lsimg:"\u2a8f",lsqb:"[",lsquo:"\u2018",lsquor:"\u201a",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2aa6",ltcir:"\u2a79",lt:"<",LT:"<",Lt:"\u226a",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",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:"\ud835\udd10",mfr:"\ud835\udd2a",mho:"\u2127",micro:"\xb5",midast:"*",midcir:"\u2af0",mid:"\u2223",middot:"\xb7",minusb:"\u229f",minus:"\u2212",minusd:"\u2238",minusdu:"\u2a2a",MinusPlus:"\u2213",mlcp:"\u2adb",mldr:"\u2026",mnplus:"\u2213",models:"\u22a7",Mopf:"\ud835\udd44",mopf:"\ud835\udd5e",mp:"\u2213",mscr:"\ud835\udcc2",Mscr:"\u2133",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",natural:"\u266e",naturals:"\u2115",natur:"\u266e",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",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21d7",nearrow:"\u2197",ne:"\u2260",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:"\ud835\udd11",nfr:"\ud835\udd2b",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:"\u21ae",nhArr:"\u21ce",nhpar:"\u2af2",ni:"\u220b",nis:"\u22fc",nisd:"\u22fa",niv:"\u220b",NJcy:"\u040a",njcy:"\u045a",nlarr:"\u219a",nlArr:"\u21cd",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219a",nLeftarrow:"\u21cd",nleftrightarrow:"\u21ae",nLeftrightarrow:"\u21ce",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:"\ud835\udd5f",Nopf:"\u2115",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",NotLeftTriangleBar:"\u29cf\u0338",NotLeftTriangle:"\u22ea",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",NotRightTriangleBar:"\u29d0\u0338",NotRightTriangle:"\u22eb",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",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2afd\u20e5",npart:"\u2202\u0338",npolint:"\u2a14",npr:"\u2280",nprcue:"\u22e0",nprec:"\u2280",npreceq:"\u2aaf\u0338",npre:"\u2aaf\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219b",nrArr:"\u21cf",nrarrw:"\u219d\u0338",nrightarrow:"\u219b",nRightarrow:"\u21cf",nrtri:"\u22eb",nrtrie:"\u22ed",nsc:"\u2281",nsccue:"\u22e1",nsce:"\u2ab0\u0338",Nscr:"\ud835\udca9",nscr:"\ud835\udcc3",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",ntlg:"\u2278",ntriangleleft:"\u22ea",ntrianglelefteq:"\u22ec",ntriangleright:"\u22eb",ntrianglerighteq:"\u22ed",Nu:"\u039d",nu:"\u03bd",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224d\u20d2",nvdash:"\u22ac",nvDash:"\u22ad",nVdash:"\u22ae",nVDash:"\u22af",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:"\u2196",nwArr:"\u21d6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xd3",oacute:"\xf3",oast:"\u229b",Ocirc:"\xd4",ocirc:"\xf4",ocir:"\u229a",Ocy:"\u041e",ocy:"\u043e",odash:"\u229d",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2a38",odot:"\u2299",odsold:"\u29bc",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29bf",Ofr:"\ud835\udd12",ofr:"\ud835\udd2c",ogon:"\u02db",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:"\ud835\udd46",oopf:"\ud835\udd60",opar:"\u29b7",OpenCurlyDoubleQuote:"\u201c",OpenCurlyQuote:"\u2018",operp:"\u29b9",oplus:"\u2295",orarr:"\u21bb",Or:"\u2a54",or:"\u2228",ord:"\u2a5d",order:"\u2134",orderof:"\u2134",ordf:"\xaa",ordm:"\xba",origof:"\u22b6",oror:"\u2a56",orslope:"\u2a57",orv:"\u2a5b",oS:"\u24c8",Oscr:"\ud835\udcaa",oscr:"\u2134",Oslash:"\xd8",oslash:"\xf8",osol:"\u2298",Otilde:"\xd5",otilde:"\xf5",otimesas:"\u2a36",Otimes:"\u2a37",otimes:"\u2297",Ouml:"\xd6",ouml:"\xf6",ovbar:"\u233d",OverBar:"\u203e",OverBrace:"\u23de",OverBracket:"\u23b4",OverParenthesis:"\u23dc",para:"\xb6",parallel:"\u2225",par:"\u2225",parsim:"\u2af3",parsl:"\u2afd",part:"\u2202",PartialD:"\u2202",Pcy:"\u041f",pcy:"\u043f",percnt:"%",period:".",permil:"\u2030",perp:"\u22a5",pertenk:"\u2031",Pfr:"\ud835\udd13",pfr:"\ud835\udd2d",Phi:"\u03a6",phi:"\u03c6",phiv:"\u03d5",phmmat:"\u2133",phone:"\u260e",Pi:"\u03a0",pi:"\u03c0",pitchfork:"\u22d4",piv:"\u03d6",planck:"\u210f",planckh:"\u210e",plankv:"\u210f",plusacir:"\u2a23",plusb:"\u229e",pluscir:"\u2a22",plus:"+",plusdo:"\u2214",plusdu:"\u2a25",pluse:"\u2a72",PlusMinus:"\xb1",plusmn:"\xb1",plussim:"\u2a26",plustwo:"\u2a27",pm:"\xb1",Poincareplane:"\u210c",pointint:"\u2a15",popf:"\ud835\udd61",Popf:"\u2119",pound:"\xa3",prap:"\u2ab7",Pr:"\u2abb",pr:"\u227a",prcue:"\u227c",precapprox:"\u2ab7",prec:"\u227a",preccurlyeq:"\u227c",Precedes:"\u227a",PrecedesEqual:"\u2aaf",PrecedesSlantEqual:"\u227c",PrecedesTilde:"\u227e",preceq:"\u2aaf",precnapprox:"\u2ab9",precneqq:"\u2ab5",precnsim:"\u22e8",pre:"\u2aaf",prE:"\u2ab3",precsim:"\u227e",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2ab9",prnE:"\u2ab5",prnsim:"\u22e8",prod:"\u220f",Product:"\u220f",profalar:"\u232e",profline:"\u2312",profsurf:"\u2313",prop:"\u221d",Proportional:"\u221d",Proportion:"\u2237",propto:"\u221d",prsim:"\u227e",prurel:"\u22b0",Pscr:"\ud835\udcab",pscr:"\ud835\udcc5",Psi:"\u03a8",psi:"\u03c8",puncsp:"\u2008",Qfr:"\ud835\udd14",qfr:"\ud835\udd2e",qint:"\u2a0c",qopf:"\ud835\udd62",Qopf:"\u211a",qprime:"\u2057",Qscr:"\ud835\udcac",qscr:"\ud835\udcc6",quaternions:"\u210d",quatint:"\u2a16",quest:"?",questeq:"\u225f",quot:'"',QUOT:'"',rAarr:"\u21db",race:"\u223d\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221a",raemptyv:"\u29b3",rang:"\u27e9",Rang:"\u27eb",rangd:"\u2992",range:"\u29a5",rangle:"\u27e9",raquo:"\xbb",rarrap:"\u2975",rarrb:"\u21e5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21a0",rArr:"\u21d2",rarrfs:"\u291e",rarrhk:"\u21aa",rarrlp:"\u21ac",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21a3",rarrw:"\u219d",ratail:"\u291a",rAtail:"\u291c",ratio:"\u2236",rationals:"\u211a",rbarr:"\u290d",rBarr:"\u290f",RBarr:"\u2910",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",real:"\u211c",realine:"\u211b",realpart:"\u211c",reals:"\u211d",Re:"\u211c",rect:"\u25ad",reg:"\xae",REG:"\xae",ReverseElement:"\u220b",ReverseEquilibrium:"\u21cb",ReverseUpEquilibrium:"\u296f",rfisht:"\u297d",rfloor:"\u230b",rfr:"\ud835\udd2f",Rfr:"\u211c",rHar:"\u2964",rhard:"\u21c1",rharu:"\u21c0",rharul:"\u296c",Rho:"\u03a1",rho:"\u03c1",rhov:"\u03f1",RightAngleBracket:"\u27e9",RightArrowBar:"\u21e5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21d2",RightArrowLeftArrow:"\u21c4",rightarrowtail:"\u21a3",RightCeiling:"\u2309",RightDoubleBracket:"\u27e7",RightDownTeeVector:"\u295d",RightDownVectorBar:"\u2955",RightDownVector:"\u21c2",RightFloor:"\u230b",rightharpoondown:"\u21c1",rightharpoonup:"\u21c0",rightleftarrows:"\u21c4",rightleftharpoons:"\u21cc",rightrightarrows:"\u21c9",rightsquigarrow:"\u219d",RightTeeArrow:"\u21a6",RightTee:"\u22a2",RightTeeVector:"\u295b",rightthreetimes:"\u22cc",RightTriangleBar:"\u29d0",RightTriangle:"\u22b3",RightTriangleEqual:"\u22b5",RightUpDownVector:"\u294f",RightUpTeeVector:"\u295c",RightUpVectorBar:"\u2954",RightUpVector:"\u21be",RightVectorBar:"\u2953",RightVector:"\u21c0",ring:"\u02da",risingdotseq:"\u2253",rlarr:"\u21c4",rlhar:"\u21cc",rlm:"\u200f",rmoustache:"\u23b1",rmoust:"\u23b1",rnmid:"\u2aee",roang:"\u27ed",roarr:"\u21fe",robrk:"\u27e7",ropar:"\u2986",ropf:"\ud835\udd63",Ropf:"\u211d",roplus:"\u2a2e",rotimes:"\u2a35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2a12",rrarr:"\u21c9",Rrightarrow:"\u21db",rsaquo:"\u203a",rscr:"\ud835\udcc7",Rscr:"\u211b",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",scap:"\u2ab8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2abc",sc:"\u227b",sccue:"\u227d",sce:"\u2ab0",scE:"\u2ab4",Scedil:"\u015e",scedil:"\u015f",Scirc:"\u015c",scirc:"\u015d",scnap:"\u2aba",scnE:"\u2ab6",scnsim:"\u22e9",scpolint:"\u2a13",scsim:"\u227f",Scy:"\u0421",scy:"\u0441",sdotb:"\u22a1",sdot:"\u22c5",sdote:"\u2a66",searhk:"\u2925",searr:"\u2198",seArr:"\u21d8",searrow:"\u2198",sect:"\xa7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\ud835\udd16",sfr:"\ud835\udd30",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",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",solbar:"\u233f",solb:"\u29c4",sol:"/",Sopf:"\ud835\udd4a",sopf:"\ud835\udd64",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",square:"\u25a1",Square:"\u25a1",SquareIntersection:"\u2293",SquareSubset:"\u228f",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25aa",squ:"\u25a1",squf:"\u25aa",srarr:"\u2192",Sscr:"\ud835\udcae",sscr:"\ud835\udcc8",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22c6",Star:"\u22c6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03f5",straightphi:"\u03d5",strns:"\xaf",sub:"\u2282",Sub:"\u22d0",subdot:"\u2abd",subE:"\u2ac5",sube:"\u2286",subedot:"\u2ac3",submult:"\u2ac1",subnE:"\u2acb",subne:"\u228a",subplus:"\u2abf",subrarr:"\u2979",subset:"\u2282",Subset:"\u22d0",subseteq:"\u2286",subseteqq:"\u2ac5",SubsetEqual:"\u2286",subsetneq:"\u228a",subsetneqq:"\u2acb",subsim:"\u2ac7",subsub:"\u2ad5",subsup:"\u2ad3",succapprox:"\u2ab8",succ:"\u227b",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",sup2:"\xb2",sup3:"\xb3",sup:"\u2283",Sup:"\u22d1",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:"\u2283",Supset:"\u22d1",supseteq:"\u2287",supseteqq:"\u2ac6",supsetneq:"\u228b",supsetneqq:"\u2acc",supsim:"\u2ac8",supsub:"\u2ad4",supsup:"\u2ad6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21d9",swarrow:"\u2199",swnwar:"\u292a",szlig:"\xdf",Tab:" ",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:"\ud835\udd17",tfr:"\ud835\udd31",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03b8",thetasym:"\u03d1",thetav:"\u03d1",thickapprox:"\u2248",thicksim:"\u223c",ThickSpace:"\u205f\u200a",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223c",THORN:"\xde",thorn:"\xfe",tilde:"\u02dc",Tilde:"\u223c",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2a31",timesb:"\u22a0",times:"\xd7",timesd:"\u2a30",tint:"\u222d",toea:"\u2928",topbot:"\u2336",topcir:"\u2af1",top:"\u22a4",Topf:"\ud835\udd4b",topf:"\ud835\udd65",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:"\ud835\udcaf",tscr:"\ud835\udcc9",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040b",tshcy:"\u045b",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226c",twoheadleftarrow:"\u219e",twoheadrightarrow:"\u21a0",Uacute:"\xda",uacute:"\xfa",uarr:"\u2191",Uarr:"\u219f",uArr:"\u21d1",Uarrocir:"\u2949",Ubrcy:"\u040e",ubrcy:"\u045e",Ubreve:"\u016c",ubreve:"\u016d",Ucirc:"\xdb",ucirc:"\xfb",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21c5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296e",ufisht:"\u297e",Ufr:"\ud835\udd18",ufr:"\ud835\udd32",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",UnderBar:"_",UnderBrace:"\u23df",UnderBracket:"\u23b5",UnderParenthesis:"\u23dd",Union:"\u22c3",UnionPlus:"\u228e",Uogon:"\u0172",uogon:"\u0173",Uopf:"\ud835\udd4c",uopf:"\ud835\udd66",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21d1",UpArrowDownArrow:"\u21c5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21d5",UpEquilibrium:"\u296e",upharpoonleft:"\u21bf",upharpoonright:"\u21be",uplus:"\u228e",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03c5",Upsi:"\u03d2",upsih:"\u03d2",Upsilon:"\u03a5",upsilon:"\u03c5",UpTeeArrow:"\u21a5",UpTee:"\u22a5",upuparrows:"\u21c8",urcorn:"\u231d",urcorner:"\u231d",urcrop:"\u230e",Uring:"\u016e",uring:"\u016f",urtri:"\u25f9",Uscr:"\ud835\udcb0",uscr:"\ud835\udcca",utdot:"\u22f0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25b5",utrif:"\u25b4",uuarr:"\u21c8",Uuml:"\xdc",uuml:"\xfc",uwangle:"\u29a7",vangrt:"\u299c",varepsilon:"\u03f5",varkappa:"\u03f0",varnothing:"\u2205",varphi:"\u03d5",varpi:"\u03d6",varpropto:"\u221d",varr:"\u2195",vArr:"\u21d5",varrho:"\u03f1",varsigma:"\u03c2",varsubsetneq:"\u228a\ufe00",varsubsetneqq:"\u2acb\ufe00",varsupsetneq:"\u228b\ufe00",varsupsetneqq:"\u2acc\ufe00",vartheta:"\u03d1",vartriangleleft:"\u22b2",vartriangleright:"\u22b3",vBar:"\u2ae8",Vbar:"\u2aeb",vBarv:"\u2ae9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22a2",vDash:"\u22a8",Vdash:"\u22a9",VDash:"\u22ab",Vdashl:"\u2ae6",veebar:"\u22bb",vee:"\u2228",Vee:"\u22c1",veeeq:"\u225a",vellip:"\u22ee",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200a",Vfr:"\ud835\udd19",vfr:"\ud835\udd33",vltri:"\u22b2",vnsub:"\u2282\u20d2",vnsup:"\u2283\u20d2",Vopf:"\ud835\udd4d",vopf:"\ud835\udd67",vprop:"\u221d",vrtri:"\u22b3",Vscr:"\ud835\udcb1",vscr:"\ud835\udccb",vsubnE:"\u2acb\ufe00",vsubne:"\u228a\ufe00",vsupnE:"\u2acc\ufe00",vsupne:"\u228b\ufe00",Vvdash:"\u22aa",vzigzag:"\u299a",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2a5f",wedge:"\u2227",Wedge:"\u22c0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\ud835\udd1a",wfr:"\ud835\udd34",Wopf:"\ud835\udd4e",wopf:"\ud835\udd68",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\ud835\udcb2",wscr:"\ud835\udccc",xcap:"\u22c2",xcirc:"\u25ef",xcup:"\u22c3",xdtri:"\u25bd",Xfr:"\ud835\udd1b",xfr:"\ud835\udd35",xharr:"\u27f7",xhArr:"\u27fa",Xi:"\u039e",xi:"\u03be",xlarr:"\u27f5",xlArr:"\u27f8",xmap:"\u27fc",xnis:"\u22fb",xodot:"\u2a00",Xopf:"\ud835\udd4f",xopf:"\ud835\udd69",xoplus:"\u2a01",xotime:"\u2a02",xrarr:"\u27f6",xrArr:"\u27f9",Xscr:"\ud835\udcb3",xscr:"\ud835\udccd",xsqcup:"\u2a06",xuplus:"\u2a04",xutri:"\u25b3",xvee:"\u22c1",xwedge:"\u22c0",Yacute:"\xdd",yacute:"\xfd",YAcy:"\u042f",yacy:"\u044f",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042b",ycy:"\u044b",yen:"\xa5",Yfr:"\ud835\udd1c",yfr:"\ud835\udd36",YIcy:"\u0407",yicy:"\u0457",Yopf:"\ud835\udd50",yopf:"\ud835\udd6a",Yscr:"\ud835\udcb4",yscr:"\ud835\udcce",YUcy:"\u042e",yucy:"\u044e",yuml:"\xff",Yuml:"\u0178",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:"\ud835\udd37",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21dd",zopf:"\ud835\udd6b",Zopf:"\u2124",Zscr:"\ud835\udcb5",zscr:"\ud835\udccf",zwj:"\u200d",zwnj:"\u200c"}},{}],55:[function(e,r,t){"use strict";function n(e){var r=Array.prototype.slice.call(arguments,1);return r.forEach(function(r){r&&Object.keys(r).forEach(function(t){e[t]=r[t]})}),e}function s(e){return Object.prototype.toString.call(e)}function o(e){return"[object String]"===s(e)}function i(e){return"[object Object]"===s(e)}function a(e){return"[object RegExp]"===s(e)}function c(e){return"[object Function]"===s(e)}function l(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function u(e){return Object.keys(e||{}).reduce(function(e,r){return e||k.hasOwnProperty(r)},!1)}function p(e){e.__index__=-1,e.__text_cache__=""}function h(e){return function(r,t){var n=r.slice(t);return e.test(n)?n.match(e)[0].length:0}}function f(){return function(e,r){r.normalize(e)}}function d(r){function t(e){return e.replace("%TLDS%",u.src_tlds)}function s(e,r){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+r)}var u=r.re=n({},e("./lib/re")),d=r.__tlds__.slice();r.__tlds_replaced__||d.push(v),d.push(u.src_xn),u.src_tlds=d.join("|"),u.email_fuzzy=RegExp(t(u.tpl_email_fuzzy),"i"),u.link_fuzzy=RegExp(t(u.tpl_link_fuzzy),"i"),u.link_no_ip_fuzzy=RegExp(t(u.tpl_link_no_ip_fuzzy),"i"),u.host_fuzzy_test=RegExp(t(u.tpl_host_fuzzy_test),"i");var m=[];r.__compiled__={},Object.keys(r.__schemas__).forEach(function(e){var t=r.__schemas__[e];if(null!==t){var n={validate:null,link:null};return r.__compiled__[e]=n,i(t)?(a(t.validate)?n.validate=h(t.validate):c(t.validate)?n.validate=t.validate:s(e,t),void(c(t.normalize)?n.normalize=t.normalize:t.normalize?s(e,t):n.normalize=f())):o(t)?void m.push(e):void s(e,t)}}),m.forEach(function(e){r.__compiled__[r.__schemas__[e]]&&(r.__compiled__[e].validate=r.__compiled__[r.__schemas__[e]].validate,r.__compiled__[e].normalize=r.__compiled__[r.__schemas__[e]].normalize)}),r.__compiled__[""]={validate:null,normalize:f()};var g=Object.keys(r.__compiled__).filter(function(e){return e.length>0&&r.__compiled__[e]}).map(l).join("|");r.re.schema_test=RegExp("(^|(?!_)(?:>|"+u.src_ZPCc+"))("+g+")","i"),r.re.schema_search=RegExp("(^|(?!_)(?:>|"+u.src_ZPCc+"))("+g+")","ig"),r.re.pretest=RegExp("("+r.re.schema_test.source+")|("+r.re.host_fuzzy_test.source+")|@","i"),p(r)}function m(e,r){var t=e.__index__,n=e.__last_index__,s=e.__text_cache__.slice(t,n);this.schema=e.__schema__.toLowerCase(),this.index=t+r,this.lastIndex=n+r,this.raw=s,this.text=s,this.url=s}function g(e,r){var t=new m(e,r);return e.__compiled__[t.schema].normalize(t,e),t}function _(e,r){return this instanceof _?(r||u(e)&&(r=e,e={}),this.__opts__=n({},k,r),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},b,e),this.__compiled__={},this.__tlds__=x,this.__tlds_replaced__=!1,this.re={},void d(this)):new _(e,r)}var k={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1},b={"http:":{validate:function(e,r,t){var n=e.slice(r);return t.re.http||(t.re.http=new RegExp("^\\/\\/"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.http.test(n)?n.match(t.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,r,t){var n=e.slice(r);return t.re.no_http||(t.re.no_http=new RegExp("^"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.no_http.test(n)?r>=3&&":"===e[r-3]?0:n.match(t.re.no_http)[0].length:0}},"mailto:":{validate:function(e,r,t){var n=e.slice(r);return t.re.mailto||(t.re.mailto=new RegExp("^"+t.re.src_email_name+"@"+t.re.src_host_strict,"i")),t.re.mailto.test(n)?n.match(t.re.mailto)[0].length:0}}},v="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",x="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");_.prototype.add=function(e,r){return this.__schemas__[e]=r,d(this),this},_.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},_.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var r,t,n,s,o,i,a,c,l;if(this.re.schema_test.test(e))for(a=this.re.schema_search,a.lastIndex=0;null!==(r=a.exec(e));)if(s=this.testSchemaAt(e,r[2],a.lastIndex)){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+s;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=e.search(this.re.host_fuzzy_test),c>=0&&(this.__index__<0||c=0&&null!==(n=e.match(this.re.email_fuzzy))&&(o=n.index+n[1].length,i=n.index+n[0].length,(this.__index__<0||othis.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=i))),this.__index__>=0},_.prototype.pretest=function(e){return this.re.pretest.test(e)},_.prototype.testSchemaAt=function(e,r,t){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(e,t,this):0},_.prototype.match=function(e){var r=0,t=[];this.__index__>=0&&this.__text_cache__===e&&(t.push(g(this,r)),r=this.__last_index__);for(var n=r?e.slice(r):e;this.test(n);)t.push(g(this,r)),n=n.slice(this.__last_index__),r+=this.__last_index__;return t.length?t:null},_.prototype.tlds=function(e,r){return e=Array.isArray(e)?e:[e],r?(this.__tlds__=this.__tlds__.concat(e).sort().filter(function(e,r,t){return e!==t[r-1]}).reverse(),d(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,d(this),this)},_.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},r.exports=_},{"./lib/re":56}],56:[function(e,r,t){"use strict";var n=t.src_Any=e("uc.micro/properties/Any/regex").source,s=t.src_Cc=e("uc.micro/categories/Cc/regex").source,o=t.src_Z=e("uc.micro/categories/Z/regex").source,i=t.src_P=e("uc.micro/categories/P/regex").source,a=t.src_ZPCc=[o,i,s].join("|"),c=t.src_ZCc=[o,s].join("|"),l="(?:(?!"+a+")"+n+")",u="(?:(?![0-9]|"+a+")"+n+")",p=t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";t.src_auth="(?:(?:(?!"+c+").)+@)?";var h=t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",f=t.src_host_terminator="(?=$|"+a+")(?!-|_|:\\d|\\.-|\\.(?!$|"+a+"))",d=t.src_path="(?:[/?#](?:(?!"+c+"|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+c+"|\\]).)*\\]|\\((?:(?!"+c+"|[)]).)*\\)|\\{(?:(?!"+c+'|[}]).)*\\}|\\"(?:(?!'+c+'|["]).)+\\"|\\\'(?:(?!'+c+"|[']).)+\\'|\\'(?="+l+").|\\.{2,3}[a-zA-Z0-9%/]|\\.(?!"+c+"|[.]).|\\-(?!--(?:[^-]|$))(?:-*)|\\,(?!"+c+").|\\!(?!"+c+"|[!]).|\\?(?!"+c+"|[?]).)+|\\/)?",m=t.src_email_name='[\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]+',g=t.src_xn="xn--[a-z0-9\\-]{1,59}",_=t.src_domain_root="(?:"+g+"|"+u+"{1,63})",k=t.src_domain="(?:"+g+"|(?:"+l+")|(?:"+l+"(?:-(?!-)|"+l+"){0,61}"+l+"))",b=t.src_host="(?:"+p+"|(?:(?:(?:"+k+")\\.)*"+_+"))",v=t.tpl_host_fuzzy="(?:"+p+"|(?:(?:(?:"+k+")\\.)+(?:%TLDS%)))",x=t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+k+")\\.)+(?:%TLDS%))";
+t.src_host_strict=b+f;var y=t.tpl_host_fuzzy_strict=v+f;t.src_host_port_strict=b+h+f;var C=t.tpl_host_port_fuzzy_strict=v+h+f,A=t.tpl_host_port_no_ip_fuzzy_strict=x+h+f;t.tpl_host_fuzzy_test="localhost|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+a+"|$))",t.tpl_email_fuzzy="(^|>|"+c+")("+m+"@"+y+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|]|"+a+"))((?![$+<=>^`|])"+C+d+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|]|"+a+"))((?![$+<=>^`|])"+A+d+")"},{"uc.micro/categories/Cc/regex":62,"uc.micro/categories/P/regex":64,"uc.micro/categories/Z/regex":65,"uc.micro/properties/Any/regex":67}],57:[function(e,r,t){"use strict";function n(e){var r,t,n=o[e];if(n)return n;for(n=o[e]=[],r=0;128>r;r++)t=String.fromCharCode(r),n.push(t);for(r=0;rr;r+=3)s=parseInt(e.slice(r+1,r+3),16),128>s?l+=t[s]:192===(224&s)&&n>r+3&&(o=parseInt(e.slice(r+4,r+6),16),128===(192&o))?(c=s<<6&1984|63&o,l+=128>c?"\ufffd\ufffd":String.fromCharCode(c),r+=3):224===(240&s)&&n>r+6&&(o=parseInt(e.slice(r+4,r+6),16),i=parseInt(e.slice(r+7,r+9),16),128===(192&o)&&128===(192&i))?(c=s<<12&61440|o<<6&4032|63&i,l+=2048>c||c>=55296&&57343>=c?"\ufffd\ufffd\ufffd":String.fromCharCode(c),r+=6):240===(248&s)&&n>r+9&&(o=parseInt(e.slice(r+4,r+6),16),i=parseInt(e.slice(r+7,r+9),16),a=parseInt(e.slice(r+10,r+12),16),128===(192&o)&&128===(192&i)&&128===(192&a))?(c=s<<18&1835008|o<<12&258048|i<<6&4032|63&a,65536>c||c>1114111?l+="\ufffd\ufffd\ufffd\ufffd":(c-=65536,l+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),r+=9):l+="\ufffd";return l})}var o={};s.defaultChars=";/?:@&=+$,#",s.componentChars="",r.exports=s},{}],58:[function(e,r,t){"use strict";function n(e){var r,t,n=o[e];if(n)return n;for(n=o[e]=[],r=0;128>r;r++)t=String.fromCharCode(r),/^[0-9a-z]$/i.test(t)?n.push(t):n.push("%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;ro;o++)if(a=e.charCodeAt(o),t&&37===a&&i>o+2&&/^[0-9a-f]{2}$/i.test(e.slice(o+1,o+3)))u+=e.slice(o,o+3),o+=2;else if(128>a)u+=l[a];else if(a>=55296&&57343>=a){if(a>=55296&&56319>=a&&i>o+1&&(c=e.charCodeAt(o+1),c>=56320&&57343>=c)){u+=encodeURIComponent(e[o]+e[o+1]),o++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[o]);return u}var o={};s.defaultChars=";/?:@&=+$,-_.!~*'()#",s.componentChars="-_.!~*'()",r.exports=s},{}],59:[function(e,r,t){"use strict";r.exports=function(e){var r="";return r+=e.protocol||"",r+=e.slashes?"//":"",r+=e.auth?e.auth+"@":"",r+=e.hostname&&-1!==e.hostname.indexOf(":")?"["+e.hostname+"]":e.hostname||"",r+=e.port?":"+e.port:"",r+=e.pathname||"",r+=e.search||"",r+=e.hash||""}},{}],60:[function(e,r,t){"use strict";r.exports.encode=e("./encode"),r.exports.decode=e("./decode"),r.exports.format=e("./format"),r.exports.parse=e("./parse")},{"./decode":57,"./encode":58,"./format":59,"./parse":61}],61:[function(e,r,t){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}function s(e,r){if(e&&e instanceof n)return e;var t=new n;return t.parse(e,r),t}var o=/^([a-z0-9.+-]+:)/i,i=/:[0-9]*$/,a=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["<",">",'"',"`"," ","\r","\n"," "],l=["{","}","|","\\","^","`"].concat(c),u=["'"].concat(l),p=["%","/","?",";","#"].concat(u),h=["/","?","#"],f=255,d=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},_={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};n.prototype.parse=function(e,r){var t,n,s,i,c,l=e;if(l=l.trim(),!r&&1===e.split("#").length){var u=a.exec(l);if(u)return this.pathname=u[1],u[2]&&(this.search=u[2]),this}var k=o.exec(l);if(k&&(k=k[0],s=k.toLowerCase(),this.protocol=k,l=l.substr(k.length)),(r||k||l.match(/^\/\/[^@\/]+@[^@\/]+/))&&(c="//"===l.substr(0,2),!c||k&&g[k]||(l=l.substr(2),this.slashes=!0)),!g[k]&&(c||k&&!_[k])){var b=-1;for(t=0;ti)&&(b=i);var v,x;for(x=-1===b?l.lastIndexOf("@"):l.lastIndexOf("@",b),-1!==x&&(v=l.slice(0,x),l=l.slice(x+1),this.auth=v),b=-1,t=0;ti)&&(b=i);-1===b&&(b=l.length),":"===l[b-1]&&b--;var y=l.slice(0,b);l=l.slice(b),this.parseHost(y),this.hostname=this.hostname||"";var C="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!C){var A=this.hostname.split(/\./);for(t=0,n=A.length;n>t;t++){var w=A[t];if(w&&!w.match(d)){for(var q="",D=0,E=w.length;E>D;D++)q+=w.charCodeAt(D)>127?"x":w[D];if(!q.match(d)){var S=A.slice(0,t),F=A.slice(t+1),z=w.match(m);z&&(S.push(z[1]),F.unshift(z[2])),F.length&&(l=F.join(".")+l),this.hostname=S.join(".");break}}}}this.hostname.length>f&&(this.hostname=""),C&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var L=l.indexOf("#");-1!==L&&(this.hash=l.substr(L),l=l.slice(0,L));var T=l.indexOf("?");return-1!==T&&(this.search=l.substr(T),l=l.slice(0,T)),l&&(this.pathname=l),_[s]&&this.hostname&&!this.pathname&&(this.pathname=""),this},n.prototype.parseHost=function(e){var r=i.exec(e);r&&(r=r[0],":"!==r&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)},r.exports=s},{}],62:[function(e,r,t){r.exports=/[\0-\x1F\x7F-\x9F]/},{}],63:[function(e,r,t){r.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},{}],64:[function(e,r,t){r.exports=/[!-#%-\*,-/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDE38-\uDE3D]|\uD805[\uDCC6\uDDC1-\uDDC9\uDE41-\uDE43]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F/},{}],65:[function(e,r,t){r.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},{}],66:[function(e,r,t){r.exports.Any=e("./properties/Any/regex"),r.exports.Cc=e("./categories/Cc/regex"),r.exports.Cf=e("./categories/Cf/regex"),r.exports.P=e("./categories/P/regex"),r.exports.Z=e("./categories/Z/regex")},{"./categories/Cc/regex":62,"./categories/Cf/regex":63,"./categories/P/regex":64,"./categories/Z/regex":65,"./properties/Any/regex":67}],67:[function(e,r,t){r.exports=/[\0-\uD7FF\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF]/},{}],68:[function(e,r,t){"use strict";r.exports=e("./lib/")},{"./lib/":10}]},{},[68])(68)});
From 6bd4534af7f500e1e48630ac94912195af6f79e4 Mon Sep 17 00:00:00 2001
From: Vitaly Puzrin
Date: Mon, 5 Oct 2015 14:46:48 +0300
Subject: [PATCH 024/320] 5.0.0 released
---
CHANGELOG.md | 14 ++++++++++----
docs/5.0_migration.md | 5 ++++-
package.json | 14 +++++++-------
3 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 343bd23e9..eef4cfded 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,9 +1,15 @@
-5.0.0 / 2015-09-30
+5.0.0 / 2015-10-05
------------------
-- Keep tabs (don't replace with spaces).
-- Don't wrap iframes with paragraphs (according to spec update).
-- Changed emphasis algorithm to match one described in CM spec.
+- Internal API change. Due to new CM spec requirements, we had to update
+ internals. That should not touch ordinary users, but can affect some external
+ plugins. If you are plugin developper - see migration guide:
+ https://github.com/markdown-it/markdown-it/blob/master/docs/5.0_migration.md.
+- Updated CM spec compatibility to 0.22:
+ - Keep tabs (don't replace with spaces).
+ - Don't wrap iframes with paragraphs.
+ - Rewritten emphasis algorithm.
+- Fix closure compiler collisions (don't use reserved words), #159.
4.4.0 / 2015-07-18
diff --git a/docs/5.0_migration.md b/docs/5.0_migration.md
index 912462cfa..d2055ebb4 100644
--- a/docs/5.0_migration.md
+++ b/docs/5.0_migration.md
@@ -1,7 +1,10 @@
Migration to v5
===============
-v5 has the same external API as v4, only internals were changed. Plugins that introduce block elements might need an update.
+v5 has the same external API as v4, only internals were changed. Some external
+plugins may need update (all plugins from `markdown-it` github organization are
+up to date).
+
## For users
diff --git a/package.json b/package.json
index 2be36f066..331f6f7d2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "markdown-it",
- "version": "4.4.0",
+ "version": "5.0.0",
"description": "Markdown-it - modern pluggable markdown parser.",
"keywords": [
"markdown",
@@ -37,20 +37,20 @@
"benchmark": "~1.0.0",
"browserify": "*",
"chai": "^3.2.0",
- "commonmark": "~0.21.0",
+ "commonmark": "~0.22.0",
"coveralls": "~2.11.2",
"eslint": "0.24.0",
"eslint-plugin-nodeca": "^1.0.0",
"istanbul": "*",
"jade": "~1.9.2",
"markdown-it-abbr": "^1.0.0",
- "markdown-it-container": "^1.0.0",
- "markdown-it-deflist": "^1.0.0",
+ "markdown-it-container": "^2.0.0",
+ "markdown-it-deflist": "^2.0.0",
"markdown-it-emoji": "^1.0.0",
- "markdown-it-footnote": "^1.0.0",
+ "markdown-it-footnote": "^2.0.0",
"markdown-it-for-inline": "~0.1.0",
- "markdown-it-ins": "^1.0.0",
- "markdown-it-mark": "^1.0.0",
+ "markdown-it-ins": "^2.0.0",
+ "markdown-it-mark": "^2.0.0",
"markdown-it-sub": "^1.0.0",
"markdown-it-sup": "^1.0.0",
"markdown-it-testgen": "~0.1.3",
From 0318337a3df8867570372727d57ba303533c150e Mon Sep 17 00:00:00 2001
From: Alex Kocharin
Date: Fri, 30 Oct 2015 19:45:16 +0300
Subject: [PATCH 025/320] Bump table priority before code blocks
ref https://github.com/markdown-it/markdown-it/issues/120
---
lib/parser_block.js | 2 +-
test/fixtures/markdown-it/tables.txt | 68 +++++++++++++++-------------
2 files changed, 37 insertions(+), 33 deletions(-)
diff --git a/lib/parser_block.js b/lib/parser_block.js
index 84f1e2b44..c63bd9114 100644
--- a/lib/parser_block.js
+++ b/lib/parser_block.js
@@ -12,6 +12,7 @@ var Ruler = require('./ruler');
var _rules = [
// First 2 params - rule name & source. Secondary array - list of rules,
// which can be terminated by this one.
+ [ 'table', require('./rules_block/table'), [ 'paragraph', 'reference' ] ],
[ 'code', require('./rules_block/code') ],
[ 'fence', require('./rules_block/fence'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],
[ 'blockquote', require('./rules_block/blockquote'), [ 'paragraph', 'reference', 'list' ] ],
@@ -21,7 +22,6 @@ var _rules = [
[ 'heading', require('./rules_block/heading'), [ 'paragraph', 'reference', 'blockquote' ] ],
[ 'lheading', require('./rules_block/lheading') ],
[ 'html_block', require('./rules_block/html_block'), [ 'paragraph', 'reference', 'blockquote' ] ],
- [ 'table', require('./rules_block/table'), [ 'paragraph', 'reference' ] ],
[ 'paragraph', require('./rules_block/paragraph') ]
];
diff --git a/test/fixtures/markdown-it/tables.txt b/test/fixtures/markdown-it/tables.txt
index 94b1b5230..33bbf05ec 100644
--- a/test/fixtures/markdown-it/tables.txt
+++ b/test/fixtures/markdown-it/tables.txt
@@ -121,69 +121,50 @@ baz|baz
.
-Nested tables inside lists:
+Minimal one-column:
.
-- foo|foo
- ---|---
- bar|bar
- baz|baz
+| foo
+|----
+| test2
.
-
--
| foo |
-foo |
-| bar |
-bar |
+test2 |
-
-
-baz|baz
.
-Minimal one-column:
+
+This is parsed as one big table:
.
-| foo
-|----
-| test2
+- foo|foo
+---|---
+bar|bar
.
+| - foo |
foo |
-| test2 |
+bar |
+bar |
.
-Second line indent should not be smaller than first:
-.
-- foo|foo
----|---
-bar|bar
-.
-
-- foo|foo
-—|---
-bar|bar
-
-.
-
-
Second line should not contain symbols except "-", ":", "|" and " ":
.
foo|foo
@@ -438,3 +419,26 @@ Heading 1|Heading 2|Heading 3