var html=(function(){var M={LT:"<",GT:">",AMP:"&",NBSP:"\240",QUOT:'"',APOS:"'"};var F=/^#(\d+)$/;var Q=/^#x([0-9A-F]+)$/;function N(S){S=S.toUpperCase();if(M.hasOwnProperty(S)){return M[S]}var R=S.match(F);if(R){return String.fromCharCode(parseInt(R[1],10))}else{if(!!(R=S.match(Q))){return String.fromCharCode(parseInt(R[1],16))}}return""}function O(S,R){return N(R)}var G=/&(#\d+|#x[\da-f]+|\w+);/g;function E(R){return R.replace(G,O)}var K=/&/g;var D=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi;var C=/</g;var I=/>/g;var P=/\"/g;function B(R){return R.replace(K,"&amp;").replace(C,"&lt;").replace(I,"&gt;").replace(P,"&quot;")}function L(R){return R.replace(D,"&amp;$1").replace(C,"&lt;").replace(I,"&gt;")}var J=new RegExp("^\\s*(?:"+("(?:([a-z][a-z-]*)"+("(?:\\s*=\\s*"+("(?:\"([^\"]*)\"|'([^']*)'|([^>\"'\\s]*))")+")")+"?)")+"|(/?>)|[^\\w\\s>]+)","i");var A=new RegExp("^(?:&(\\#[0-9]+|\\#[x][0-9a-f]+|\\w+);|<!--[\\s\\S]*?-->|<!w[^>]*>|<\\?[^>*]*>|<(/)?([a-z][a-z0-9]*)|([^<&]+)|([<&]))","i");function H(R){return function S(d,b){d=String(d);var V=null;var W=false;var T=[];var X;var Y;var U;R.startDoc&&R.startDoc(b);while(d){var a=d.match(W?J:A);d=d.substring(a[0].length);if(W){if(a[1]){var Z=a[1].toUpperCase();var c=a[2]||a[3]||a[4];var g;if(c!=null){g=E(c)}else{g=Z}T.push(Z,g)}else{if(a[5]){if(Y!==undefined){if(U){R.startTag&&R.startTag(X,T,b)}else{R.endTag&&R.endTag(X,b)}}if(U&&(Y&(html4.eflags.CDATA|html4.eflags.RCDATA))){if(V===null){V=d.toUpperCase()}else{V=V.substring(V.length-d.length)}var f=V.indexOf("</"+X);if(f<0){f=d.length}if(Y&html4.eflags.CDATA){R.cdata&&R.cdata(d.substring(0,f),b)}else{if(R.rcdata){var e=d.substring(0,f);R.rcdata(L(d.substring(0,f)),b)}}d=d.substring(f)}X=Y=U=undefined;T.length=0;W=false}}}else{if(a[1]){R.pcdata&&R.pcdata(a[0],b)}else{if(a[3]){U=!a[2];W=true;X=a[3].toUpperCase();Y=html4.ELEMENTS.hasOwnProperty(X)?html4.ELEMENTS[X]:undefined}else{if(a[4]){R.pcdata&&R.pcdata(a[4],b)}else{if(a[5]){text=a[5]==="&"?"&amp;":"&lt;";R.pcdata&&R.pcdata(text,b)}}}}}}R.endDoc&&R.endDoc(b)}}return{normalizeRCData:L,escapeAttrib:B,unescapeEntities:E,makeSaxParser:H}})();html.makeHtmlSanitizer=function(B){var C=[];var A=[];var D=false;return html.makeSaxParser({startDoc:function(E){A=[];D=false},startTag:function(H,K,F){if(D){return }if(!html4.ELEMENTS.hasOwnProperty(H)){return }var E=html4.ELEMENTS[H];if(E&html4.eflags.UNSAFE){D=!(E&html4.eflags.EMPTY);return }K=B(H,K);if(K){if(!(E&(html4.eflags.OPTIONAL_ENDTAG|html4.eflags.EMPTY))){A.push(H)}F.push("<",H);for(var G=0,L=K.length;G<L;G+=2){var I=K[G],J=K[G+1];if(J!=null){F.push(" ",I,'="',html.escapeAttrib(J),'"')}}F.push(">")}},endTag:function(I,G){if(D){D=false;return }if(!html4.ELEMENTS.hasOwnProperty(I)){return }var E=html4.ELEMENTS[I];if(!(E&(html4.eflags.UNSAFE|html4.eflags.EMPTY))){var F;for(F=A.length;--F>=0;){if(A[F]===I){break}}if(F<0){return }for(var H=F;--H>F;){G.push("</",A[H],">")}A.length=F;G.push("</",I,">")}},pcdata:function(F,E){if(!D){E.push(F)}},rcdata:function(F,E){if(!D){E.push(F)}},cdata:function(F,E){if(!D){E.push(F)}},endDoc:function(E){for(var F=A.length;--F>=0;){E.push("</",A[F],">")}A.length=0}})};function html_sanitize(E,A,D){var B=[];html.makeHtmlSanitizer(function C(G,J){for(var F=0;F<J.length;F+=2){var H=J[F];var I=J[F+1];if(html4.ATTRIBS.hasOwnProperty(H)){switch(html4.ATTRIBS[H]){case html4.atype.SCRIPT:case html4.atype.STYLE:I=null;case html4.atype.IDREF:case html4.atype.NAME:case html4.atype.NMTOKENS:I=D?D(I):I;break;case html4.atype.URI:I=A&&A(I);break}}else{I=null}J[F+1]=I}return J})(E,B);return B.join("")};