 var JSON=function(){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"',"'":"\\'",'\\':'\\\\'},s={'boolean':function(x){return String(x);},number:function(x){return isFinite(x)?String(x):'null';},string:function(x,quote){if(/['"\\\x00-\x1f]/.test(x)){x=x.replace(/([\x00-\x1f\\'"])/g,function(a,b){var c=m[b];if(c){return c;} c=b.charCodeAt();return'\\u00'+ Math.floor(c/16).toString(16)+ (c%16).toString(16);});} if(quote==undefined)quote="'";return quote+x+quote;},object:function(x,quote){if(x){var a=[],b,f,i,l,v;if(x instanceof Array){a[0]='[';l=x.length;for(i=0;i<l;i+=1){v=x[i];f=s[typeof v];if(f){v=f(v,quote);if(typeof v=='string'){if(b){a[a.length]=',';} a[a.length]=v;b=true;}}} a[a.length]=']';} else {a[0]='{';for(i in x){v=x[i];f=s[typeof v];if(f){v=f(v,quote);if(typeof v=='string') {if(b) a[a.length]=',';if(/(^[a-zA-Z_][a-zA-Z_0-9]*$)|(^[0-9]+$)/.test(i)) quot='';else quot=quote;a.push(s.string(i,quot),':',v);b=true;}}} a[a.length]='}';} return a.join('');} return'null';}};return{stringify:function(v,quote){var f=s[typeof v];if(f){v=f(v,quote);if(typeof v=='string'){return v;}} return null;},parse:function(text){try{return!(/[^,:{}\[\]0-9a-zA-Z_.\-+Eaeflnr-u \n\r\t]/.test (text.replace(/("(\\.|[^"\\])*")|('(\\.|[^"\\])*')/g,'')))&&eval('('+text+')');}catch(e){return false;}}};}();
