var tokenizeJavaScript=function(){function l(b,f){for(var a=false;!b.endOfLine();){var c=b.next();if(c==f&&!a)return false;a=!a&&c=="\\"}return a}function n(b,f){return function(a,c){var h=b,d=q(b,f,a,function(k){h=k}),j=d.type=="operator"||d.type=="keyword c"||d.type.match(/^[\[{}\(,;:]$/);if(j!=f||h!=b)c(n(h,j));return d}}function q(b,f,a,c){function h(){a.nextWhileMatches(r);var e=a.get(),i=m.hasOwnProperty(e)&&m.propertyIsEnumerable(e)&&m[e];return i?{type:i.type,style:i.style,content:e}:{type:"variable",
style:"js-variable",content:e}}function d(e){var i="/*";for(e=e=="*";;){if(a.endOfLine())break;var o=a.next();if(o=="/"&&e){i=null;break}e=o=="*"}c(i);return{type:"comment",style:"js-comment"}}function j(){a.nextWhileMatches(p);return{type:"operator",style:"js-operator"}}function k(e){var i=l(a,e);c(i?e:null);return{type:"string",style:"js-string"}}if(b=='"'||b=="'")return k(b);var g=a.next();if(b=="/*")return d(g);else if(g=='"'||g=="'")return k(g);else if(/[\[\]{}\(\),;\:\.]/.test(g))return{type:g,
style:"js-punctuation"};else if(g=="0"&&(a.equals("x")||a.equals("X"))){a.next();a.nextWhileMatches(s);return{type:"number",style:"js-atom"}}else if(/[0-9]/.test(g)){a.nextWhileMatches(/[0-9]/);if(a.equals(".")){a.next();a.nextWhileMatches(/[0-9]/)}if(a.equals("e")||a.equals("E")){a.next();a.equals("-")&&a.next();a.nextWhileMatches(/[0-9]/)}return{type:"number",style:"js-atom"}}else if(g=="/")if(a.equals("*")){a.next();return d(g)}else if(a.equals("/")){l(a,null);return{type:"comment",style:"js-comment"}}else{if(f){l(a,
"/");a.nextWhileMatches(/[gi]/);b={type:"regexp",style:"js-string"}}else b=j();return b}else return p.test(g)?j():h()}var m=function(){function b(j,k){return{type:j,style:"js-"+k}}var f=b("keyword a","keyword"),a=b("keyword b","keyword"),c=b("keyword c","keyword"),h=b("operator","keyword"),d=b("atom","atom");return{"if":f,"while":f,"with":f,"else":a,"do":a,"try":a,"finally":a,"return":c,"break":c,"continue":c,"new":c,"delete":c,"throw":c,"in":h,"typeof":h,"instanceof":h,"var":b("var","keyword"),"function":b("function",
"keyword"),"catch":b("catch","keyword"),"for":b("for","keyword"),"switch":b("switch","keyword"),"case":b("case","keyword"),"default":b("default","keyword"),"true":d,"false":d,"null":d,undefined:d,NaN:d,Infinity:d}}(),p=/[+\-*&%=<>!?|]/,s=/[0-9A-Fa-f]/,r=/[\w\$_]/;return function(b,f){return tokenizer(b,f||n(false,true))}}();