this.JSON||(JSON=function(){function k(c){return c<10?"0"+c:c}function l(c){return p.test(c)?'"'+c.replace(p,function(c){var b=q[c];if(typeof b==="string")return b;b=c.charCodeAt();return"\\u00"+Math.floor(b/16).toString(16)+(b%16).toString(16)})+'"':'"'+c+'"'}function m(c,i){var b,d,j,n,g=e,f,a=i[c];a&&typeof a==="object"&&typeof a.toJSON==="function"&&(a=a.toJSON(c));typeof h==="function"&&(a=h.call(i,c,a));switch(typeof a){case "string":return l(a);case "number":return isFinite(a)?String(a):"null";
case "boolean":case "null":return String(a);case "object":if(!a)return"null";e+=o;f=[];if(typeof a.length==="number"&&!a.propertyIsEnumerable("length")){n=a.length;for(b=0;b<n;b+=1)f[b]=m(b,a)||"null";j=f.length===0?"[]":e?"[\n"+e+f.join(",\n"+e)+"\n"+g+"]":"["+f.join(",")+"]";e=g;return j}if(typeof h==="object"){n=h.length;for(b=0;b<n;b+=1)d=h[b],typeof d==="string"&&(j=m(d,a,h))&&f.push(l(d)+(e?": ":":")+j)}else for(d in a)(j=m(d,a,h))&&f.push(l(d)+(e?": ":":")+j);j=f.length===0?"{}":e?"{\n"+e+
f.join(",\n"+e)+"\n"+g+"}":"{"+f.join(",")+"}";e=g;return j}}Date.prototype.toJSON=function(){return this.getUTCFullYear()+"-"+k(this.getUTCMonth()+1)+"-"+k(this.getUTCDate())+"T"+k(this.getUTCHours())+":"+k(this.getUTCMinutes())+":"+k(this.getUTCSeconds())+"Z"};var p=/["\\\x00-\x1f\x7f-\x9f]/g,e,o,q={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},h;return{stringify:function(c,i,b){var d;o=e="";if(b)if(typeof b==="number")for(d=0;d<b;d+=1)o+=" ";else typeof b===
"string"&&(o=b);if(i)if(typeof i==="function"||typeof i==="object"&&typeof i.length==="number")h=i;else throw Error("JSON.stringify");else h=function(b,c){return!Object.hasOwnProperty.call(this,b)?void 0:c};return m("",{"":c})},parse:function(c,e){function b(c,d){var g,f,a=c[d];if(a&&typeof a==="object")for(g in a)Object.hasOwnProperty.call(a,g)&&(f=b(a,g),f!==void 0?a[g]=f:delete a[g]);return e.call(c,d,a)}var d;if(/^[\],:{}\s]*$/.test(c.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return d=eval("("+c+")"),typeof e==="function"?b({"":d},""):d;throw new SyntaxError("JSON.parse");},quote:l}}());

