function initBaseUrls(e){require.tlns=e}function initSender(){var e=require(null,"ace/lib/event_emitter").EventEmitter,t=require(null,"ace/lib/oop"),n=function(){};return function(){t.implement(this,e),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(n.prototype),new n}if(void 0!==window&&window.document)throw"atempt to load ace worker into main window instead of webWorker";var console={log:function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},error:function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})}},window={console:console},normalizeModule=function(e,t){if(-1!==t.indexOf("!")){var n=t.split("!");return normalizeModule(e,n[0])+"!"+normalizeModule(e,n[1])}if("."==t.charAt(0))for(t=e.split("/").slice(0,-1).join("/")+"/"+t;-1!==t.indexOf(".")&&r!=t;){var r=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}return t},require=function(e,t){if(!t.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");t=normalizeModule(e,t);var n=require.modules[t];if(n)return n.initialized||(n.initialized=!0,n.exports=n.factory().exports),n.exports;var r=t.split("/");r[0]=require.tlns[r[0]]||r[0];var i=r.join("/")+".js";return require.id=t,importScripts(i),require(e,t)};require.modules={},require.tlns={};var define=function(e,t,n){if(2==arguments.length?(n=t,"string"!=typeof e&&(t=e,e=require.id)):1==arguments.length&&(n=e,e=require.id),0!==e.indexOf("text!")){var r=function(t,n){return require(e,t,n)};require.modules[e]={factory:function(){var e={exports:{}},t=n(r,e.exports,e);return t&&(e.exports=t),e}}}},main,sender;onmessage=function(e){var t=e.data;if(t.command){if(!main[t.command])throw new Error("Unknown command:"+t.command);main[t.command].apply(main,t.args)}else if(t.init){initBaseUrls(t.tlns),require(null,"ace/lib/fixoldbrowsers"),sender=initSender();var n=require(null,t.module)[t.classname];main=new n(sender)}else t.event&&sender&&sender._emit(t.event,t.data)},define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],(function(e,t,n){e("./regexp"),e("./es5-shim")})),define("ace/lib/regexp",["require","exports","module"],(function(e,t,n){function r(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function i(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1}var a={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},o=void 0===a.exec.call(/()??/,"")[1],s=function(){var e=/^/g;return a.test.call(e,""),!e.lastIndex}();s&&o||(RegExp.prototype.exec=function(e){var t,n,c=a.exec.apply(this,arguments);if("string"==typeof e&&c){if(!o&&c.length>1&&i(c,"")>-1&&(n=RegExp(this.source,a.replace.call(r(this),"g","")),a.replace.call(e.slice(c.index),n,(function(){for(var e=1;e<arguments.length-2;e++)void 0===arguments[e]&&(c[e]=void 0)}))),this._xregexp&&this._xregexp.captureNames)for(var u=1;u<c.length;u++)(t=this._xregexp.captureNames[u-1])&&(c[t]=c[u]);!s&&this.global&&!c[0].length&&this.lastIndex>c.index&&this.lastIndex--}return c},s||(RegExp.prototype.test=function(e){var t=a.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))})),define("ace/lib/es5-shim",["require","exports","module"],(function(e,t,n){function r(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(e){}}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError;var n=h.call(arguments,1),r=function(){if(this instanceof r){var i=function(){};i.prototype=t.prototype;var a=new i,o=t.apply(a,n.concat(h.call(arguments)));return null!==o&&Object(o)===o?o:a}return t.apply(e,n.concat(h.call(arguments)))};return r});var i,a,o,s,c,u,l=Function.prototype.call,f=Array.prototype,d=Object.prototype,h=f.slice,p=l.bind(d.toString),m=l.bind(d.hasOwnProperty);if((c=m(d,"__defineGetter__"))&&(i=l.bind(d.__defineGetter__),a=l.bind(d.__defineSetter__),o=l.bind(d.__lookupGetter__),s=l.bind(d.__lookupSetter__)),Array.isArray||(Array.isArray=function(e){return"[object Array]"==p(e)}),Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=O(this),n=arguments[1],r=0,i=t.length>>>0;if("[object Function]"!=p(e))throw new TypeError;for(;r<i;)r in t&&e.call(n,t[r],r,t),r++}),Array.prototype.map||(Array.prototype.map=function(e){var t=O(this),n=t.length>>>0,r=Array(n),i=arguments[1];if("[object Function]"!=p(e))throw new TypeError;for(var a=0;a<n;a++)a in t&&(r[a]=e.call(i,t[a],a,t));return r}),Array.prototype.filter||(Array.prototype.filter=function(e){var t=O(this),n=t.length>>>0,r=[],i=arguments[1];if("[object Function]"!=p(e))throw new TypeError;for(var a=0;a<n;a++)a in t&&e.call(i,t[a],a,t)&&r.push(t[a]);return r}),Array.prototype.every||(Array.prototype.every=function(e){var t=O(this),n=t.length>>>0,r=arguments[1];if("[object Function]"!=p(e))throw new TypeError;for(var i=0;i<n;i++)if(i in t&&!e.call(r,t[i],i,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=O(this),n=t.length>>>0,r=arguments[1];if("[object Function]"!=p(e))throw new TypeError;for(var i=0;i<n;i++)if(i in t&&e.call(r,t[i],i,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=O(this),n=t.length>>>0;if("[object Function]"!=p(e))throw new TypeError;if(!n&&1==arguments.length)throw new TypeError;var r,i=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(i in t){r=t[i++];break}if(++i>=n)throw new TypeError}for(;i<n;i++)i in t&&(r=e.call(void 0,r,t[i],i,t));return r}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=O(this),n=t.length>>>0;if("[object Function]"!=p(e))throw new TypeError;if(!n&&1==arguments.length)throw new TypeError;var r,i=n-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(i in t){r=t[i--];break}if(--i<0)throw new TypeError}do{i in this&&(r=e.call(void 0,r,t[i],i,t))}while(i--);return r}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e){var t=O(this),n=t.length>>>0;if(!n)return-1;var r=0;for(arguments.length>1&&(r=j(arguments[1])),r=r>=0?r:Math.max(0,n+r);r<n;r++)if(r in t&&t[r]===e)return r;return-1}),Array.prototype.lastIndexOf||(Array.prototype.lastIndexOf=function(e){var t=O(this),n=t.length>>>0;if(!n)return-1;var r=n-1;for(arguments.length>1&&(r=Math.min(r,j(arguments[1]))),r=r>=0?r:n-Math.abs(r);r>=0;r--)if(r in t&&e===t[r])return r;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:d)}),!Object.getOwnPropertyDescriptor){Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+e);if(m(e,t)){var n;if(n={enumerable:!0,configurable:!0},c){var r=e.__proto__;e.__proto__=d;var i=o(e,t),a=s(e,t);if(e.__proto__=r,i||a)return i&&(n.get=i),a&&(n.set=a),n}return n.value=e[t],n}}}(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),Object.create)||(u=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(null===e)n=u();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,(n=new r).__proto__=e}return void 0!==t&&Object.defineProperties(n,t),n});if(Object.defineProperty){var v=r({}),g="undefined"==typeof document||r(document.createElement("div"));if(!v||!g)var b=Object.defineProperty}if(!Object.defineProperty||b){Object.defineProperty=function(e,t,n){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.defineProperty called on non-object: "+e);if("object"!=typeof n&&"function"!=typeof n||null===n)throw new TypeError("Property description must be an object: "+n);if(b)try{return b.call(Object,e,t,n)}catch(e){}if(m(n,"value"))if(c&&(o(e,t)||s(e,t))){var r=e.__proto__;e.__proto__=d,delete e[t],e[t]=n.value,e.__proto__=r}else e[t]=n.value;else{if(!c)throw new TypeError("getters & setters can not be defined on this javascript engine");m(n,"get")&&i(e,t,n.get),m(n,"set")&&a(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)m(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze((function(){}))}catch(e){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";m(e,t);)t+="?";e[t]=!0;var n=m(e,t);return delete e[t],n}),!Object.keys){var w=!0,y=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],x=y.length;for(var k in{toString:null})w=!1;Object.keys=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var t=[];for(var n in e)m(e,n)&&t.push(n);if(w)for(var r=0,i=x;r<i;r++){var a=y[r];m(e,a)&&t.push(a)}return t}}Date.prototype.toISOString&&-1!==new Date(-621987552e5).toISOString().indexOf("-000001")||(Date.prototype.toISOString=function(){var e,t,n,r;if(!isFinite(this))throw new RangeError;for(e=[this.getUTCMonth()+1,this.getUTCDate(),this.getUTCHours(),this.getUTCMinutes(),this.getUTCSeconds()],r=((r=this.getUTCFullYear())<0?"-":r>9999?"+":"")+("00000"+Math.abs(r)).slice(0<=r&&r<=9999?-4:-6),t=e.length;t--;)(n=e[t])<10&&(e[t]="0"+n);return r+"-"+e.slice(0,2).join("-")+"T"+e.slice(2).join(":")+"."+("000"+this.getUTCMilliseconds()).slice(-3)+"Z"}),Date.now||(Date.now=function(){return(new Date).getTime()}),Date.prototype.toJSON||(Date.prototype.toJSON=function(e){if("function"!=typeof this.toISOString)throw new TypeError;return this.toISOString()}),864e13!==Date.parse("+275760-09-13T00:00:00.000Z")&&(Date=function(e){var t=function t(n,r,i,a,o,s,c){var u=arguments.length;if(this instanceof e){var l=1==u&&String(n)===n?new e(t.parse(n)):u>=7?new e(n,r,i,a,o,s,c):u>=6?new e(n,r,i,a,o,s):u>=5?new e(n,r,i,a,o):u>=4?new e(n,r,i,a):u>=3?new e(n,r,i):u>=2?new e(n,r):u>=1?new e(n):new e;return l.constructor=t,l}return e.apply(this,arguments)},n=new RegExp("^(\\d{4}|[+-]\\d{6})(?:-(\\d{2})(?:-(\\d{2})(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:Z|(?:([-+])(\\d{2}):(\\d{2})))?)?)?)?$");for(var r in e)t[r]=e[r];return t.now=e.now,t.UTC=e.UTC,(t.prototype=e.prototype).constructor=t,t.parse=function(t){var r=n.exec(t);if(r){r.shift();for(var i=1;i<7;i++)r[i]=+(r[i]||(i<3?1:0)),1==i&&r[i]--;var a=+r.pop(),o=+r.pop(),s=r.pop(),c=0;if(s){if(o>23||a>59)return NaN;c=6e4*(60*o+a)*("+"==s?-1:1)}var u=+r[0];return 0<=u&&u<=99?(r[0]=u+400,e.UTC.apply(this,r)+c-126227808e5):e.UTC.apply(this,r)+c}return e.parse.apply(this,arguments)},t}(Date));var E="\t\n\v\f\r \u2028\u2029\ufeff";if(!String.prototype.trim||E.trim()){E="["+E+"]";var M=new RegExp("^"+E+E+"*"),T=new RegExp(E+E+"*$");String.prototype.trim=function(){return String(this).replace(M,"").replace(T,"")}}var j=function(e){return(e=+e)!=e?e=0:0!==e&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e},L="a"!="a"[0],O=function(e){if(null==e)throw new TypeError;return L&&"string"==typeof e&&e?e.split(""):Object(e)}})),define("ace/lib/event_emitter",["require","exports","module"],(function(e,t,n){var r={};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry=this._eventRegistry||{},this._defaultHandlers=this._defaultHandlers||{};var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(n.length||r){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=function(){this.propagationStopped=!0}),t.preventDefault||(t.preventDefault=function(){this.defaultPrevented=!0});for(var i=0;i<n.length&&(n[i](t),!t.propagationStopped);i++);return r&&!t.defaultPrevented?r(t):void 0}},r.setDefaultHandler=function(e,t){if(this._defaultHandlers=this._defaultHandlers||{},this._defaultHandlers[e])throw new Error("The default handler for '"+e+"' is already set");this._defaultHandlers[e]=t},r.on=r.addEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];n||(n=this._eventRegistry[e]=[]),-1==n.indexOf(t)&&n.push(t)},r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(n){var r=n.indexOf(t);-1!==r&&n.splice(r,1)}},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r})),define("ace/lib/oop",["require","exports","module"],(function(e,t,n){t.inherits=function(){var e=function(){};return function(t,n){e.prototype=n.prototype,t.super_=n.prototype,t.prototype=new e,t.prototype.constructor=t}}(),t.mixin=function(e,t){for(var n in t)e[n]=t[n]},t.implement=function(e,n){t.mixin(e,n)}})),define("ace/mode/javascript_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/javascript/jshint"],(function(require,exports,module){function startRegex(e){return RegExp("^("+e.join("|")+")")}var oop=require("../lib/oop"),Mirror=require("../worker/mirror").Mirror,lint=require("./javascript/jshint").JSHINT,disabledWarningsRe=startRegex(["Bad for in variable '(.+)'.",'Missing "use strict"']),errorsRe=startRegex(["Unexpected","Expected ","Confusing (plus|minus)","\\{a\\} unterminated regular expression","Unclosed ","Unmatched ","Unbegun comment","Bad invocation","Missing space after","Missing operator at"]),infoRe=startRegex(["Expected an assignment","Bad escapement of EOL","Unexpected comma","Unexpected space","Missing radix parameter.","A leading decimal point can","\\['{a}'\\] is better written in dot notation.","'{a}' used out of scope"]),JavaScriptWorker=exports.JavaScriptWorker=function(e){Mirror.call(this,e),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(e){this.options=e||{es5:!0,esnext:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(e){oop.mixin(this.options,e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval("throw 0;"+str)}catch(e){if(0===e)return!0}return!1},this.onUpdate=function(){var e=this.doc.getValue();if(e=e.replace(/^#!.*\n/,"\n")){var t=[],n=this.isValidJS(e)?"warning":"error";lint(e,this.options);for(var r=lint.errors,i=0;i<r.length;i++){var a=r[i];if(a){var o=a.raw,s="warning";if("Missing semicolon."==o){var c=a.evidence.substr(a.character);c=c.charAt(c.search(/\S/)),"error"==n&&c&&/[\w\d{(['"]/.test(c)?(a.reason='Missing ";" before statement',s="error"):s="info"}else{if(disabledWarningsRe.test(o))continue;infoRe.test(o)?s="info":errorsRe.test(o)?(!0,s=n):"'{a}' is not defined."==o?s="warning":"'{a}' is defined but never used."==o&&(s="info")}t.push({row:a.line-1,column:a.character-1,text:a.reason,type:s,raw:o})}}this.sender.emit("jslint",t)}else this.sender.emit("jslint",[])}}.call(JavaScriptWorker.prototype)})),define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],(function(e,t,n){var r=e("../document").Document,i=e("../lib/lang"),a=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.deferredCall(this.onUpdate.bind(this)),a=this;e.on("change",(function(e){t.applyDeltas([e.data]),n.schedule(a.$timeout)}))};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){}}).call(a.prototype)})),define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],(function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,a=e("./range").Range,o=e("./anchor").Anchor,s=function(e){this.$lines=[],0==e.length?this.$lines=[""]:Array.isArray(e)?this.insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new a(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},0=="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";case"auto":return this.$autoNewLine}},this.$autoNewLine="\n",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e)},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.$lines[e.start.row].substring(e.start.column,e.end.column);var t=this.getLines(e.start.row+1,e.end.row-1);return t.unshift((this.$lines[e.start.row]||"").substring(e.start.column)),t.push((this.$lines[e.end.row]||"").substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t&&(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length),e},this.insert=function(e,t){if(!t||0===t.length)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=0==n.length?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),null!==i&&(e=this.insertNewLine(e),e=this.insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){if(0==t.length)return{row:e,column:0};if(t.length>65535){var n=this.insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new a(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._emit("change",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:a.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit("change",{data:r}),n},this.insertInLine=function(e,t){if(0==t.length)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:a.fromPoints(e,r),text:t};return this._emit("change",{data:i}),r},this.remove=function(e){if(e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end),e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=0==e.start.column?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this.removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t!=n){var r=new a(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),s=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,s);var c={action:"removeText",range:r,text:o};return this._emit("change",{data:c}),r.start}},this.removeLines=function(e,t){var n=new a(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new a(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._emit("change",{data:o})},this.replace=function(e,t){if(0==t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;if(this.remove(e),t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=a.fromPoints(n.range.start,n.range.end);"insertLines"==n.action?this.insertLines(r.start.row,n.lines):"insertText"==n.action?this.insert(r.start,n.text):"removeLines"==n.action?this.removeLines(r.start.row,r.end.row-1):"removeText"==n.action&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=a.fromPoints(n.range.start,n.range.end);"insertLines"==n.action?this.removeLines(r.start.row,r.end.row-1):"insertText"==n.action?this.remove(r):"removeLines"==n.action?this.insertLines(r.start.row,n.lines):"removeText"==n.action&&this.insert(r.start,n.text)}}}).call(s.prototype),t.Document=s})),define("ace/range",["require","exports","module"],(function(e,t,n){var r=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row==e.start.row&&this.end.row==e.end.row&&this.start.column==e.start.column&&this.end.column==e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,n=e.end,r=e.start;return 1==(t=this.compare(n.row,n.column))?1==(t=this.compare(r.row,r.column))?2:0==t?1:0:-1==t?-2:-1==(t=this.compare(r.row,r.column))?-1:1==t?42:0},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&(!this.isEnd(e,t)&&!this.isStart(e,t))},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:t<this.start.column?-1:t>this.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};if(this.start.row>t)var i={row:t+1,column:0};if(this.start.row<e)i={row:e,column:0};if(this.end.row<e)n={row:e,column:0};return r.fromPoints(i||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(0==n)return this;if(-1==n)var i={row:e,column:t};else var a={row:e,column:t};return r.fromPoints(i||this.start,a||this.end)},this.isEmpty=function(){return this.start.row==this.end.row&&this.start.column==this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return r.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new r(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new r(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new r(t.row,t.column,n.row,n.column)}}).call(r.prototype),r.fromPoints=function(e,t){return new r(e.row,e.column,t.row,t.column)},t.Range=r})),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],(function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,a=t.Anchor=function(e,t,n){this.document=e,void 0===n?this.setPosition(t.row,t.column):this.setPosition(t,n),this.$onChange=this.onChange.bind(this),e.on("change",this.$onChange)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var t=e.data,n=t.range;if((n.start.row!=n.end.row||n.start.row==this.row)&&!(n.start.row>this.row||n.start.row==this.row&&n.start.column>this.column)){var r=this.row,i=this.column;"insertText"===t.action?n.start.row===r&&n.start.column<=i?n.start.row===n.end.row?i+=n.end.column-n.start.column:(i-=n.start.column,r+=n.end.row-n.start.row):n.start.row!==n.end.row&&n.start.row<r&&(r+=n.end.row-n.start.row):"insertLines"===t.action?n.start.row<=r&&(r+=n.end.row-n.start.row):"removeText"==t.action?n.start.row==r&&n.start.column<i?i=n.end.column>=i?n.start.column:Math.max(0,i-(n.end.column-n.start.column)):n.start.row!==n.end.row&&n.start.row<r?(n.end.row==r&&(i=Math.max(0,i-n.end.column)+n.start.column),r-=n.end.row-n.start.row):n.end.row==r&&(r-=n.end.row-n.start.row,i=Math.max(0,i-n.end.column)+n.start.column):"removeLines"==t.action&&n.start.row<=r&&(n.end.row<=r?r-=n.end.row-n.start.row:(r=n.start.row,i=0)),this.setPosition(r,i,!0)}},this.setPosition=function(e,t,n){var r;if(r=n?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=r.row||this.column!=r.column){var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._emit("change",{old:i,value:r})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(a.prototype)})),define("ace/lib/lang",["require","exports","module"],(function(e,t,n){t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){return new Array(t+1).join(e)};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){for(var t=[],n=0,r=e.length;n<r;n++)e[n]&&"object"==typeof e[n]?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if("object"!=typeof e)return e;var t=e.constructor();for(var n in e)"object"==typeof e[n]?t[n]=this.deepCopy(e[n]):t[n]=e[n];return t},t.arrayToMap=function(e){for(var t={},n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,(function(e){n.push({offset:arguments[arguments.length-2],length:e.length})})),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)};return i.delay=i,i.schedule=function(e){null==n&&(n=setTimeout(r,e||0))},i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}})),define("ace/mode/javascript/jshint",["require","exports","module"],(function(e,t,n){var r=function(){function e(){}function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function n(e,t){void 0===Be[e]&&void 0===Ne[e]&&d("Bad option: '"+e+"'.",t)}function i(e){return"[object String]"===Object.prototype.toString.call(e)}function a(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"}function o(e){return e>="0"&&e<="9"}function s(e,t){return!!e&&!(!e.identifier||e.value!==t)}function c(e,n){var i;for(i in n)t(n,i)&&!t(r.blacklist,i)&&(e[i]=n[i])}function u(){xe.couch&&c(ke,We),xe.rhino&&c(ke,et),xe.prototypejs&&c(ke,Ke),xe.node&&(c(ke,Qe),xe.globalstrict=!0),xe.devel&&c(ke,Je),xe.dojo&&c(ke,Ze),xe.browser&&c(ke,Ve),xe.nonstandard&&c(ke,nt),xe.jquery&&c(ke,Ge),xe.mootools&&c(ke,Ye),xe.worker&&c(ke,it),xe.wsh&&c(ke,at),xe.esnext&&Ue(),xe.globalstrict&&!1!==xe.strict&&(xe.strict=!0),xe.yui&&c(ke,ot)}function l(e,t,n){throw{name:"JSHintError",line:t,character:n,message:e+" ("+Math.floor(t/me.length*100)+"% scanned).",raw:e}}function f(e,t,n,i){return r.undefs.push([e,t,n,i])}function d(e,t,n,i,a,o){var s,c,u;return"(end)"===(t=t||we).id&&(t=Ae),c=t.line||0,s=t.from||0,(u={id:"(error)",raw:e,evidence:me[c-1]||"",line:c,character:s,scope:r.scope,a:n,b:i,c:a,d:o}).reason=function(e,t){return e.replace(/\{([^{}]*)\}/g,(function(e,n){var r=t[n];return"string"==typeof r||"number"==typeof r?r:e}))}(e,u),r.errors.push(u),xe.passfail&&l("Stopping. ",c,s),(Pe+=1)>=xe.maxerr&&l("Too many errors.",c,s),u}function h(e,t,n,r,i,a,o){return d(e,{line:t,from:n},r,i,a,o)}function p(e,t,n,r,i,a){d(e,t,n,r,i,a)}function m(e,t,n,r,i,a,o){return p(e,{line:t,from:n},r,i,a,o)}function v(e,t){var n;return n={id:"(internal)",elem:e,value:t},r.internals.push(n),n}function g(e,n,r){"hasOwnProperty"===e&&d("'hasOwnProperty' is a really bad name."),"exception"===n&&t(ce["(context)"],e)&&!0!==ce[e]&&!xe.node&&d("Value of '{a}' may be overwritten in IE.",we,e),t(ce,e)&&!ce["(global)"]&&(!0===ce[e]?xe.latedef&&d("'{a}' was used before it was defined.",we,e):!xe.shadow&&"exception"!==n&&d("'{a}' is already defined.",we,e)),ce[e]=n,r&&(ce["(tokens)"][e]=r),ce["(global)"]?(le[e]=ce,t(fe,e)&&(xe.latedef&&d("'{a}' was used before it was defined.",we,e),delete fe[e])):je[e]=ce}function b(){var e,i,a,o,s,l,f,d=we,h=d.value,m=xe.quotmark,v={};switch(h){case"*/":p("Unbegun comment.");break;case"/*members":case"/*member":h="/*members",be||(be={}),i=be,xe.quotmark=!1;break;case"/*jshint":case"/*jslint":i=xe,a=Ne;break;case"/*global":i=v;break;default:p("What?")}o=st.token();e:for(;;){for(f=!1;;){if("special"===o.type&&"*/"===o.value)break e;if("(endline)"!==o.id&&","!==o.id)break;o=st.token()}if("/*global"===h&&"-"===o.value&&(f=!0,o=st.token()),"(string)"!==o.type&&"(identifier)"!==o.type&&"/*members"!==h&&p("Bad option.",o),":"===(l=st.token()).id){l=st.token(),i===be&&p("Expected '{a}' and instead saw '{b}'.",o,"*/",":"),"/*jshint"===h&&n(o.value,o);if(["maxstatements","maxparams","maxdepth","maxcomplexity","maxerr","maxlen","indent"].indexOf(o.value)>-1&&("/*jshint"===h||"/*jslint"===h))("number"!=typeof(e=+l.value)||!isFinite(e)||e<=0||Math.floor(e)!==e)&&p("Expected a small integer and instead saw '{a}'.",l,l.value),"indent"===o.value&&(i.white=!0),i[o.value]=e;else if("validthis"===o.value)ce["(global)"]?p("Option 'validthis' can't be used in a global scope."):"true"===l.value||"false"===l.value?i[o.value]="true"===l.value:p("Bad option value.",l);else if("quotmark"===o.value&&"/*jshint"===h)switch(l.value){case"true":i.quotmark=!0;break;case"false":i.quotmark=!1;break;case"double":case"single":i.quotmark=l.value;break;default:p("Bad option value.",l)}else"true"===l.value||"false"===l.value?("/*jslint"===h?(i[s=ze[o.value]||o.value]="true"===l.value,void 0!==Fe[s]&&(i[s]=!i[s])):i[o.value]="true"===l.value,"newcap"===o.value&&(i["(explicitNewcap)"]=!0)):p("Bad option value.",l);o=st.token()}else("/*jshint"===h||"/*jslint"===h)&&p("Missing option value.",o),i[o.value]=!1,"/*global"===h&&!0===f&&(r.blacklist[o.value]=o.value,Object.keys(r.blacklist).forEach((function(e){delete ke[e]}))),o=l}for(var g in"/*members"===h&&(xe.quotmark=m),c(ke,v),v)t(v,g)&&(se[g]=d);a&&u()}function w(e){for(var t,n=e||0,r=0;r<=n;)(t=ve[r])||(t=ve[r]=st.token()),r+=1;return t}function y(e,t){switch(Ae.id){case"(number)":"."===we.id&&d("A dot following a number can be confused with a decimal point.",Ae);break;case"-":("-"===we.id||"--"===we.id)&&d("Confusing minusses.");break;case"+":("+"===we.id||"++"===we.id)&&d("Confusing plusses.")}for(("(string)"===Ae.type||Ae.identifier)&&(oe=Ae.value),e&&we.id!==e&&(t?"(end)"===we.id?d("Unmatched '{a}'.",t,t.id):d("Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",we,e,t.id,t.line,we.value):("(identifier)"!==we.type||we.value!==e)&&d("Expected '{a}' and instead saw '{b}'.",we,e,we.value)),Me=Ae,Ae=we;;){if("(end)"===(we=ve.shift()||st.token()).id||"(error)"===we.id)return;if("special"===we.type)b();else if("(endline)"!==we.id)break}}function x(e,t){var n,r=!1,i=!1;if("(end)"===we.id&&p("Unexpected early end of program.",Ae),y(),t&&(oe="anonymous",ce["(verb)"]=Ae.value),!0===t&&Ae.fud)n=Ae.fud();else{if(Ae.nud)n=Ae.nud();else{if("(number)"===we.type&&"."===Ae.id)return d("A leading decimal point can be confused with a dot: '.{a}'.",Ae,we.value),y(),Ae;p("Expected an identifier and instead saw '{a}'.",Ae,Ae.id)}for(;e<we.lbp;)r="Array"===Ae.value,i="Object"===Ae.value,n&&(n.value||n.first&&n.first.value)&&("new"!==n.value||n.first&&n.first.value&&"."===n.first.value)&&(r=!1,n.value!==Ae.value&&(i=!1)),y(),r&&"("===Ae.id&&")"===we.id&&d("Use the array literal notation [].",Ae),i&&"("===Ae.id&&")"===we.id&&d("Use the object literal notation {}.",Ae),Ae.led?n=Ae.led(n):p("Expected an operator and instead saw '{a}'.",Ae,Ae.id)}return n}function k(e,t){e=e||Ae,t=t||we,xe.white&&e.character!==t.from&&e.line===t.line&&(e.from+=e.character-e.from,d("Unexpected space after '{a}'.",e,e.value))}function E(e,t){e=e||Ae,t=t||we,xe.white&&(e.character!==t.from||e.line!==t.line)&&d("Unexpected space before '{a}'.",t,t.value)}function M(e,t){e=e||Ae,t=t||we,xe.white&&!e.comment&&e.line===t.line&&k(e,t)}function T(e,t){if(xe.white){if(t=t||we,";"===(e=e||Ae).value&&";"===t.value)return;e.line===t.line&&e.character===t.from&&(e.from+=e.character-e.from,d("Missing space after '{a}'.",e,e.value))}}function j(e,t){e=e||Ae,t=t||we,xe.laxbreak||e.line===t.line?xe.white&&(t=t||we,(e=e||Ae).character===t.from&&(e.from+=e.character-e.from,d("Missing space after '{a}'.",e,e.value))):d("Bad line breaking before '{a}'.",t,t.id)}function L(e){var t;xe.white&&"(end)"!==we.id&&(t=he+(e||0),we.from!==t&&d("Expected '{a}' to have an indentation at {b} instead at {c}.",we,we.value,t,we.from))}function O(e){(e=e||Ae).line!==we.line&&d("Line breaking error '{a}'.",e,e.value)}function A(){Ae.line!==we.line?xe.laxcomma||(A.first&&(d("Comma warnings can be turned off with 'laxcomma'"),A.first=!1),d("Bad line breaking before '{a}'.",Ae,we.id)):!Ae.comment&&Ae.character!==we.from&&xe.white&&(Ae.from+=Ae.character-Ae.from,d("Unexpected space after '{a}'.",Ae,Ae.value)),y(","),T(Ae,we)}function _(e,t){var n=rt[e];return n&&"object"==typeof n||(rt[e]=n={id:e,lbp:t,value:e}),n}function S(e){return _(e,0)}function U(e,t){var n=S(e);return n.identifier=n.reserved=!0,n.fud=t,n}function P(e,t){var n=U(e,t);return n.block=!0,n}function q(e){var t=e.id.charAt(0);return(t>="a"&&t<="z"||t>="A"&&t<="Z")&&(e.identifier=e.reserved=!0),e}function $(e,t){var n=_(e,150);return q(n),n.nud="function"==typeof t?t:function(){return this.right=x(150),this.arity="unary","++"!==this.id&&"--"!==this.id||(xe.plusplus?d("Unexpected use of '{a}'.",this,this.id):(!this.right.identifier||this.right.reserved)&&"."!==this.right.id&&"["!==this.right.id&&d("Bad operand.",this)),this},n}function R(e,t){var n=S(e);return n.type=e,n.nud=t,n}function C(e,t){var n=R(e,t);return n.identifier=n.reserved=!0,n}function H(e,t){return C(e,(function(){return"function"==typeof t&&t(this),this}))}function D(e,t,n,r){var i=_(e,n);return q(i),i.led=function(i){return r||(j(Me,Ae),T(Ae,we)),"in"===e&&"!"===i.id&&d("Confusing use of '{a}'.",i,"!"),"function"==typeof t?t(i,this):(this.left=i,this.right=x(n),this)},i}function I(e,t){var n=_(e,100);return n.led=function(e){j(Me,Ae),T(Ae,we);var n=x(100);return s(e,"NaN")||s(n,"NaN")?d("Use the isNaN function to compare with NaN.",this):t&&t.apply(this,[e,n]),"!"===e.id&&d("Confusing use of '{a}'.",e,"!"),"!"===n.id&&d("Confusing use of '{a}'.",n,"!"),this.left=e,this.right=n,this},n}function N(e){return e&&("(number)"===e.type&&0==+e.value||"(string)"===e.type&&""===e.value||"null"===e.type&&!xe.eqnull||"true"===e.type||"false"===e.type||"undefined"===e.type)}function B(e){return _(e,20).exps=!0,D(e,(function(e,t){if(t.left=e,!1===ke[e.value]&&!0===je[e.value]["(global)"]?d("Read only.",e):e.function&&d("'{a}' is a function.",e,e.value),e){if(xe.esnext&&"const"===ce[e.value]&&d("Attempting to override '{a}' which is a constant",e,e.value),"."===e.id||"["===e.id)return(!e.left||"arguments"===e.left.value)&&d("Bad assignment.",t),t.right=x(19),t;if(e.identifier&&!e.reserved)return"exception"===ce[e.value]&&d("Do not assign to the exception parameter.",e),t.right=x(19),t;e===rt.function&&d("Expected an identifier in an assignment and instead saw a function invocation.",Ae)}p("Bad assignment.",t)}),20)}function F(e,t,n){var r=_(e,n);return q(r),r.led="function"==typeof t?t:function(e){return xe.bitwise&&d("Unexpected use of '{a}'.",this,this.id),this.left=e,this.right=x(n),this},r}function z(e){return _(e,20).exps=!0,D(e,(function(e,t){if(xe.bitwise&&d("Unexpected use of '{a}'.",t,t.id),T(Me,Ae),T(Ae,we),e)return"."===e.id||"["===e.id||e.identifier&&!e.reserved?(x(19),t):(e===rt.function&&d("Expected an identifier in an assignment, and instead saw a function invocation.",Ae),t);p("Bad assignment.",t)}),20)}function V(e){var t=_(e,150);return t.led=function(e){return xe.plusplus?d("Unexpected use of '{a}'.",this,this.id):(!e.identifier||e.reserved)&&"."!==e.id&&"["!==e.id&&d("Bad operand.",this),this.left=e,this},t}function W(e){if(we.identifier)return y(),Ae.reserved&&!xe.es5&&(!e||"undefined"!==Ae.value)&&d("Expected an identifier and instead saw '{a}' (a reserved word).",Ae,Ae.id),Ae.value}function J(e){var t=W(e);if(t)return t;"function"===Ae.id&&"("===we.id?d("Missing name in function declaration."):p("Expected an identifier and instead saw '{a}'.",we,we.value)}function Z(e){var t,n=0;if(";"===we.id&&!ye)for(;;){if((t=w(n)).reach)return;if("(endline)"!==t.id){if("function"===t.id){if(!xe.latedef)break;d("Inner functions should be listed at the top of the outer function.",t);break}d("Unreachable '{a}' after '{b}'.",t,t.value,e);break}n+=1}}function X(e){var t,n=he,r=je,i=we;if(";"!==i.id){if(i.identifier&&!i.reserved&&":"===w().id&&(y(),y(":"),je=Object.create(r),g(i.value,"label"),!we.labelled&&"{"!==we.value&&d("Label '{a}' on {b} statement.",we,i.value,we.value),He.test(i.value+":")&&d("Label '{a}' looks like a javascript url.",i,i.value),we.label=i.value,i=we),"{"!==i.id){if(e||L(),t=x(0,!0),!i.block){if(xe.expr||t&&t.exps?xe.nonew&&"("===t.id&&"new"===t.left.id&&d("Do not use 'new' for side effects.",i):d("Expected an assignment or function call and instead saw an expression.",Ae),","===we.id)return A();";"!==we.id?xe.asi||(!xe.lastsemic||"}"!==we.id||we.line!==Ae.line)&&h("Missing semicolon.",Ae.line,Ae.character):(k(Ae,we),y(";"),T(Ae,we))}return he=n,je=r,t}Q(!0,!0)}else y(";")}function G(e){for(var t,n=[];!we.reach&&"(end)"!==we.id;)";"===we.id?((!(t=w())||"("!==t.id)&&d("Unnecessary semicolon."),y(";")):n.push(X(e===we.line));return n}function Y(){for(var e,t,n;"(string)"===we.id;){if("(endline)"===(t=w(0)).id){e=1;do{n=w(e),e+=1}while("(endline)"===n.id);if(";"!==n.id){if("(string)"!==n.id&&"(number)"!==n.id&&"(regexp)"!==n.id&&!0!==n.identifier&&"}"!==n.id)break;d("Missing semicolon.",we)}else t=n}else if("}"===t.id)d("Missing semicolon.",t);else if(";"!==t.id)break;L(),y(),Le[Ae.value]&&d('Unnecessary directive "{a}".',Ae,Ae.value),"use strict"===Ae.value&&(xe["(explicitNewcap)"]||(xe.newcap=!0),xe.undef=!0),Le[Ae.value]=!0,";"===t.id&&y(";")}}function Q(e,n,r){var i,a,o,s,c,u=de,l=he,f=je;de=e,e&&xe.funcscope||(je=Object.create(je)),T(Ae,we),o=we;var h=ce["(metrics)"];if(h.nestedBlockDepth+=1,h.verifyMaxNestedBlockDepthPerFunction(),"{"===we.id){if(y("{"),s=Ae.line,"}"!==we.id){for(he+=xe.indent;!e&&we.from>he;)he+=xe.indent;if(r){for(c in a={},Le)t(Le,c)&&(a[c]=Le[c]);Y(),xe.strict&&ce["(context)"]["(global)"]&&!a["use strict"]&&!Le["use strict"]&&d('Missing "use strict" statement.')}i=G(s),h.statementCount+=i.length,r&&(Le=a),he-=xe.indent,s!==we.line&&L()}else s!==we.line&&L();y("}",o),he=l}else e?((!n||xe.curly)&&d("Expected '{a}' and instead saw '{b}'.",we,"{",we.value),ye=!0,he+=xe.indent,i=[X(we.line===Ae.line)],he-=xe.indent,ye=!1):p("Expected '{a}' and instead saw '{b}'.",we,"{",we.value);return ce["(verb)"]=null,e&&xe.funcscope||(je=f),de=u,e&&xe.noempty&&(!i||0===i.length)&&d("Empty block."),h.nestedBlockDepth-=1,i}function K(e){be&&"boolean"!=typeof be[e]&&d("Unexpected /*member '{a}'.",Ae,e),"number"==typeof ge[e]?ge[e]+=1:ge[e]=1}function ee(e){var t=e.value,n=e.line,r=fe[t];"function"==typeof r&&(r=!1),r?r[r.length-1]!==n&&r.push(n):(r=[n],fe[t]=r)}function te(){var e=W(!0);return e||("(string)"===we.id?(e=we.value,y()):"(number)"===we.id&&(e=we.value.toString(),y())),e}function ne(e,t){var n,r=xe,i=je;return xe=Object.create(xe),je=Object.create(je),n=ce={"(name)":e||'"'+oe+'"',"(line)":we.line,"(character)":we.character,"(context)":ce,"(breakage)":0,"(loopage)":0,"(metrics)":re(we),"(scope)":je,"(statement)":t,"(tokens)":{}},Ae.funct=ce,ue.push(ce),e&&g(e,"function"),ce["(params)"]=function(){var e,t=we,n=[];if(y("("),M(),")"!==we.id)for(;;){if(e=J(!0),n.push(e),g(e,"unused",Ae),","!==we.id)return y(")",t),M(Me,Ae),n;A()}else y(")")}(),ce["(metrics)"].verifyMaxParametersPerFunction(ce["(params)"]),Q(!1,!1,!0),ce["(metrics)"].verifyMaxStatementsPerFunction(),ce["(metrics)"].verifyMaxComplexityPerFunction(),je=i,xe=r,ce["(last)"]=Ae.line,ce["(lastcharacter)"]=Ae.character,ce=ce["(context)"],n}function re(e){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,verifyMaxStatementsPerFunction:function(){xe.maxstatements&&this.statementCount>xe.maxstatements&&d("Too many statements per function ("+this.statementCount+").",e)},verifyMaxParametersPerFunction:function(t){(t=t||[],xe.maxparams&&t.length>xe.maxparams)&&d("Too many parameters per function ("+t.length+").",e)},verifyMaxNestedBlockDepthPerFunction:function(){xe.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===xe.maxdepth+1&&d("Blocks are nested too deeply ("+this.nestedBlockDepth+").")},verifyMaxComplexityPerFunction:function(){var t=xe.maxcomplexity,n=this.ComplexityCount;t&&n>t&&d("Cyclomatic complexity is too high per function ("+n+").",e)}}}function ie(){ce["(metrics)"].ComplexityCount+=1}function ae(){switch(we.id){case"{":!function(){var e={},t=we;if(y("{"),"}"!==we.id)for(;;){if("(end)"===we.id)p("Missing '}' to match '{' from line {a}.",we,t.line);else{if("}"===we.id){d("Unexpected comma.",Ae);break}","===we.id?p("Unexpected comma.",we):"(string)"!==we.id&&d("Expected a string and instead saw {a}.",we,we.value)}if(!0===e[we.value]?d("Duplicate key '{a}'.",we,we.value):"__proto__"===we.value&&!xe.proto||"__iterator__"===we.value&&!xe.iterator?d("The '{a}' key may produce unexpected results.",we,we.value):e[we.value]=!0,y(),y(":"),ae(),","!==we.id)break;y(",")}y("}")}();break;case"[":!function(){var e=we;if(y("["),"]"!==we.id)for(;;){if("(end)"===we.id)p("Missing ']' to match '[' from line {a}.",we,e.line);else{if("]"===we.id){d("Unexpected comma.",Ae);break}","===we.id&&p("Unexpected comma.",we)}if(ae(),","!==we.id)break;y(",")}y("]")}();break;case"true":case"false":case"null":case"(number)":case"(string)":y();break;case"-":y("-"),Ae.character!==we.from&&d("Unexpected space after '-'.",Ae),k(Ae,we),y("(number)");break;default:p("Expected a JSON value.",we)}}var oe,se,ce,ue,le,fe,de,he,pe,me,ve,ge,be,we,ye,xe,ke,Ee,Me,Te,je,Le,Oe,Ae,_e,Se,Ue,Pe,qe,$e,Re,Ce,He,De,Ie={"<":!0,"<=":!0,"==":!0,"===":!0,"!==":!0,"!=":!0,">":!0,">=":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0},Ne={asi:!0,bitwise:!0,boss:!0,browser:!0,camelcase:!0,couch:!0,curly:!0,debug:!0,devel:!0,dojo:!0,eqeqeq:!0,eqnull:!0,es5:!0,esnext:!0,evil:!0,expr:!0,forin:!0,funcscope:!0,globalstrict:!0,immed:!0,iterator:!0,jquery:!0,lastsemic:!0,latedef:!0,laxbreak:!0,laxcomma:!0,loopfunc:!0,mootools:!0,multistr:!0,newcap:!0,noarg:!0,node:!0,noempty:!0,nonew:!0,nonstandard:!0,nomen:!0,onevar:!0,onecase:!0,passfail:!0,plusplus:!0,proto:!0,prototypejs:!0,regexdash:!0,regexp:!0,rhino:!0,undef:!0,unused:!0,scripturl:!0,shadow:!0,smarttabs:!0,strict:!0,sub:!0,supernew:!0,trailing:!0,validthis:!0,withstmt:!0,white:!0,worker:!0,wsh:!0,yui:!0},Be={maxlen:!1,indent:!1,maxerr:!1,predef:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1},Fe={bitwise:!0,forin:!0,newcap:!0,nomen:!0,plusplus:!0,regexp:!0,undef:!0,white:!0,eqeqeq:!0,onevar:!0},ze={eqeq:"eqeqeq",vars:"onevar",windows:"wsh"},Ve={ArrayBuffer:!1,ArrayBufferView:!1,Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,DataView:!1,DOMParser:!1,defaultStatus:!1,document:!1,event:!1,FileReader:!1,Float32Array:!1,Float64Array:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Image:!1,length:!1,localStorage:!1,location:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,print:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,top:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,WebSocket:!1,window:!1,Worker:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},We={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},Je={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},Ze={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},Xe=["closure","exception","global","label","outer","unused","var"],Ge={$:!1,jQuery:!1},Ye={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,Iframe:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},Qe={__filename:!1,__dirname:!1,Buffer:!1,console:!1,exports:!0,GLOBAL:!1,global:!1,module:!1,process:!1,require:!1,setTimeout:!1,clearTimeout:!1,setInterval:!1,clearInterval:!1},Ke={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},et={defineClass:!1,deserialize:!1,gc:!1,help:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},tt={Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,Set:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1,WeakMap:!1},nt={escape:!1,unescape:!1},rt={},it={importScripts:!0,postMessage:!0,self:!0},at={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},ot={YUI:!1,Y:!1,YUI_config:!1};qe=/[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,$e=/^\s*([(){}\[.,:;'"~\?\]#@]|==?=?|\/=(?!(\S*\/[gim]?))|\/(\*(jshint|jslint|members?|global)?|\/)?|\*[\/=]?|\+(?:=|\++)?|-(?:=|-+)?|%=?|&[&=]?|\|[|=]?|>>?>?=?|<([\/=!]|\!(\[|--)?|<=?)?|\^=?|\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\.[0-9]*)?([eE][+\-]?[0-9]+)?)/,Re=/\*\//,Ce=/^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,He=/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i,De=/^\s*\/\*\s*falls\sthrough\s*\*\/\s*$/,"function"!=typeof Array.isArray&&(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.apply(e)}),Array.prototype.forEach||(Array.prototype.forEach=function(e,t){for(var n=this.length,r=0;r<n;r++)e.call(t||this,this[r],r,this)}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e){if(null==this)throw new TypeError;var t=new Object(this),n=t.length>>>0;if(0===n)return-1;var r=0;if(arguments.length>0&&((r=Number(arguments[1]))!=r?r=0:0!==r&&r!=1/0&&r!=-1/0&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=n)return-1;for(var i=r>=0?r:Math.max(n-Math.abs(r),0);i<n;i++)if(i in t&&t[i]===e)return i;return-1}),"function"!=typeof Object.create&&(Object.create=function(t){return e.prototype=t,new e}),"function"!=typeof Object.keys&&(Object.keys=function(e){var n,r=[];for(n in e)t(e,n)&&r.push(n);return r});var st=function(){function e(){var e,t,n;return!(s>=me.length)&&(r=1,c=me[s],s+=1,xe.smarttabs?e=(t=c.match(/(\/\/)? \t/))&&!t[1]?0:-1:e=c.search(/ \t|\t [^\*]/),e>=0&&h("Mixed spaces and tabs.",s,e+1),(e=(c=c.replace(/\t/g,Oe)).search(qe))>=0&&h("Unsafe character.",s,e),xe.maxlen&&xe.maxlen<c.length&&h("Line too long.",s,c.length),(n=xe.trailing&&c.match(/^(.*?)\s+$/))&&!/^\s+$/.test(c)&&h("Trailing whitespace.",s,n[1].length+1),!0)}function n(e,n){var a,o;return o="(color)"===e||"(range)"===e?{type:e}:"(punctuator)"===e||"(identifier)"===e&&t(rt,n)?rt[n]||rt["(error)"]:rt[e],o=Object.create(o),("(string)"===e||"(range)"===e)&&!xe.scripturl&&He.test(n)&&h("Script URL.",s,i),"(identifier)"===e&&(o.identifier=!0,function(e){if(xe.proto||"__proto__"!==e)if(xe.iterator||"__iterator__"!==e){var t=/^(_+.*|.*_+)$/.test(e);if(xe.nomen&&t&&"_"!==e){if(xe.node&&"."!==Ae.id&&/^(__dirname|__filename)$/.test(e))return;h("Unexpected {a} in '{b}'.",s,i,"dangling '_'",e)}else xe.camelcase&&e.replace(/^_+/,"").indexOf("_")>-1&&!e.match(/^[A-Z0-9_]*$/)&&h("Identifier '{a}' is not in camel case.",s,i,n)}else h("'{a}' is only available in JavaScript 1.7.",s,i,e);else h("The '{a}' property is deprecated.",s,i,e)}(n)),o.value=n,o.line=s,o.character=r,o.from=i,"(endline)"!==(a=o.id)&&(Ee=a&&("(,=:[!&|?{};".indexOf(a.charAt(a.length-1))>=0||"return"===a||"case"===a)),o}var r,i,s,c;return{init:function(t){(me="string"==typeof t?t.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split("\n"):t)[0]&&"#!"===me[0].substr(0,2)&&(me[0]=""),s=0,e(),i=1},range:function(e,t){var a,o="";for(i=r,c.charAt(0)!==e&&m("Expected '{a}' and instead saw '{b}'.",s,r,e,c.charAt(0));;){switch(c=c.slice(1),r+=1,a=c.charAt(0)){case"":m("Missing '{a}'.",s,r,a);break;case t:return c=c.slice(1),r+=1,n("(range)",o);case"\\":h("Unexpected '{a}'.",s,r,a)}o+=a}},token:function(){function t(e){var t,n=e.exec(c);if(n)return w=n[0].length,t=n[1],d=t.charAt(0),c=c.substr(w),i=r+w-t.length,r+=w,t}function u(t){function a(e){var t=parseInt(c.substr(u+1,e),16);u+=e,t>=32&&t<=126&&34!==t&&92!==t&&39!==t&&h("Unnecessary escapement.",s,r),r+=e,o=String.fromCharCode(t)}var o,u,l="",f=!1;pe&&'"'!==t&&h("Strings must use doublequote.",s,r),xe.quotmark&&("single"===xe.quotmark&&"'"!==t?h("Strings must use singlequote.",s,r):"double"===xe.quotmark&&'"'!==t?h("Strings must use doublequote.",s,r):!0===xe.quotmark&&((Te=Te||t)!==t&&h("Mixed double and single quotes.",s,r))),u=0;e:for(;;){for(;u>=c.length;){u=0;var d=s,p=i;if(!e()){m("Unclosed string.",d,p);break e}f?f=!1:h("Unclosed string.",d,p)}if((o=c.charAt(u))===t)return r+=1,c=c.substr(u+1),n("(string)",l);if(o<" "){if("\n"===o||"\r"===o)break;h("Control character in string: {a}.",s,r+u,c.slice(0,u))}else if("\\"===o)switch(u+=1,r+=1,o=c.charAt(u),T=c.charAt(u+1),o){case"\\":case'"':case"/":break;case"'":pe&&h("Avoid \\'.",s,r);break;case"b":o="\b";break;case"f":o="\f";break;case"n":o="\n";break;case"r":o="\r";break;case"t":o="\t";break;case"0":o="\0",T>=0&&T<=7&&Le["use strict"]&&h("Octal literals are not allowed in strict mode.",s,r);break;case"u":a(4);break;case"v":pe&&h("Avoid \\v.",s,r),o="\v";break;case"x":pe&&h("Avoid \\x-.",s,r),a(2);break;case"":if(f=!0,xe.multistr){pe&&h("Avoid EOL escapement.",s,r),o="",r-=1;break}h("Bad escapement of EOL. Use option multistr if needed.",s,r);break;case"!":if("<"===c.charAt(u-2))break;default:h("Bad escapement.",s,r)}l+=o,r+=1,u+=1}}for(var f,d,p,v,g,b,w,y,x,k,E,M,T;;){if(!c)return n(e()?"(endline)":"(end)","");if(k=t($e)){if(a(d)||"_"===d||"$"===d)return n("(identifier)",k);if(o(d))return isFinite(Number(k))||h("Bad number '{a}'.",s,r,k),a(c.substr(0,1))&&h("Missing space after '{a}'.",s,r,k),"0"===d&&(o(p=k.substr(1,1))?"."!==Ae.id&&h("Don't use extra leading zeros '{a}'.",s,r,k):pe&&("x"===p||"X"===p)&&h("Avoid 0x-. '{a}'.",s,r,k)),"."===k.substr(k.length-1)&&h("A trailing decimal point can be confused with a dot '{a}'.",s,r,k),n("(number)",k);switch(k){case'"':case"'":return u(k);case"//":c="",Ae.comment=!0;break;case"/*":for(;!((b=c.search(Re))>=0);)e()||m("Unclosed comment.",s,r);c=c.substr(b+2),Ae.comment=!0;break;case"/*members":case"/*member":case"/*jshint":case"/*jslint":case"/*global":case"*/":return{value:k,type:"special",line:s,character:r,from:i};case"":break;case"/":if("="===c.charAt(0)&&m("A regular expression literal can be confused with '/='.",s,i),Ee){for(v=0,0,w=0;;){switch(f=!0,d=c.charAt(w),w+=1,d){case"":return m("Unclosed regular expression.",s,i),l("Stopping.",s,i);case"/":for(v>0&&h("{a} unterminated regular expression group(s).",s,i+w,v),d=c.substr(0,w-1),x={g:!0,i:!0,m:!0};!0===x[c.charAt(w)];)x[c.charAt(w)]=!1,w+=1;return r+=w,("/"===(x=(c=c.substr(w)).charAt(0))||"*"===x)&&m("Confusing regular expression.",s,i),n("(regexp)",d);case"\\":(d=c.charAt(w))<" "?h("Unexpected control character in regular expression.",s,i+w):"<"===d&&h("Unexpected escaped character '{a}' in regular expression.",s,i+w,d),w+=1;break;case"(":if(v+=1,f=!1,"?"===c.charAt(w))switch(w+=1,c.charAt(w)){case":":case"=":case"!":w+=1;break;default:h("Expected '{a}' and instead saw '{b}'.",s,i+w,":",c.charAt(w))}else 1;break;case"|":f=!1;break;case")":0===v?h("Unescaped '{a}'.",s,i+w,")"):v-=1;break;case" ":for(x=1;" "===c.charAt(w);)w+=1,x+=1;x>1&&h("Spaces are hard to count. Use {{a}}.",s,i+w,x);break;case"[":"^"===(d=c.charAt(w))&&(w+=1,"]"===c.charAt(w)&&m("Unescaped '{a}'.",s,i+w,"^")),"]"===d&&h("Empty class.",s,i+w-1),E=!1,M=!1;e:do{switch(d=c.charAt(w),w+=1,d){case"[":case"^":h("Unescaped '{a}'.",s,i+w,d),M?M=!1:E=!0;break;case"-":E&&!M?(E=!1,M=!0):M?M=!1:"]"===c.charAt(w)?M=!0:(xe.regexdash!==(2===w||3===w&&"^"===c.charAt(1))&&h("Unescaped '{a}'.",s,i+w-1,"-"),E=!0);break;case"]":M&&!xe.regexdash&&h("Unescaped '{a}'.",s,i+w-1,"-");break e;case"\\":(d=c.charAt(w))<" "?h("Unexpected control character in regular expression.",s,i+w):"<"===d&&h("Unexpected escaped character '{a}' in regular expression.",s,i+w,d),w+=1,/[wsd]/i.test(d)?(M&&(h("Unescaped '{a}'.",s,i+w,"-"),M=!1),E=!1):M?M=!1:E=!0;break;case"/":h("Unescaped '{a}'.",s,i+w-1,"/"),M?M=!1:E=!0;break;default:M?M=!1:E=!0}}while(d);break;case".":xe.regexp&&h("Insecure '{a}'.",s,i+w,d);break;case"]":case"?":case"{":case"}":case"+":case"*":h("Unescaped '{a}'.",s,i+w,d)}if(f)switch(c.charAt(w)){case"?":case"+":case"*":w+=1,"?"===c.charAt(w)&&(w+=1);break;case"{":if(w+=1,(d=c.charAt(w))<"0"||d>"9"){h("Expected a number and instead saw '{a}'.",s,i+w,d);break}for(w+=1,y=+d;!((d=c.charAt(w))<"0"||d>"9");)w+=1,y=+d+10*y;if(g=y,","===d&&(w+=1,g=1/0,(d=c.charAt(w))>="0"&&d<="9"))for(w+=1,g=+d;!((d=c.charAt(w))<"0"||d>"9");)w+=1,g=+d+10*g;"}"!==c.charAt(w)?h("Expected '{a}' and instead saw '{b}'.",s,i+w,"}",d):w+=1,"?"===c.charAt(w)&&(w+=1),y>g&&h("'{a}' should not be greater than '{b}'.",s,i+w,y,g)}}return d=c.substr(0,w-1),r+=w,c=c.substr(w),n("(regexp)",d)}return n("(punctuator)",k);default:return n("(punctuator)",k)}}else{for(k="",d="";c&&c<"!";)c=c.substr(1);c&&(m("Unexpected '{a}'.",s,r,c.substr(0,1)),c="")}}}}}();R("(number)",(function(){return this})),R("(string)",(function(){return this})),rt["(identifier)"]={type:"(identifier)",lbp:0,identifier:!0,nud:function(){var e,t=this.value,n=je[t];if("function"==typeof n?n=void 0:"boolean"==typeof n&&(e=ce,ce=ue[0],g(t,"var"),n=ce,ce=e),ce===n)switch(ce[t]){case"unused":ce[t]="var";break;case"unction":ce[t]="function",this.function=!0;break;case"function":this.function=!0;break;case"label":d("'{a}' is a statement label.",Ae,t)}else if(ce["(global)"])xe.undef&&"boolean"!=typeof ke[t]&&("typeof"!==oe&&"delete"!==oe||we&&("."===we.value||"["===we.value))&&f(ce,"'{a}' is not defined.",Ae,t),ee(Ae);else switch(ce[t]){case"closure":case"function":case"var":case"unused":d("'{a}' used out of scope.",Ae,t);break;case"label":d("'{a}' is a statement label.",Ae,t);break;case"outer":case"global":break;default:if(!0===n)ce[t]=!0;else if(null===n)d("'{a}' is not allowed.",Ae,t),ee(Ae);else if("object"!=typeof n)xe.undef&&("typeof"!==oe&&"delete"!==oe||we&&("."===we.value||"["===we.value))&&f(ce,"'{a}' is not defined.",Ae,t),ce[t]=!0,ee(Ae);else switch(n[t]){case"function":case"unction":this.function=!0,n[t]="closure",ce[t]=n["(global)"]?"global":"outer";break;case"var":case"unused":n[t]="closure",ce[t]=n["(global)"]?"global":"outer";break;case"closure":ce[t]=n["(global)"]?"global":"outer";break;case"label":d("'{a}' is a statement label.",Ae,t)}}return this},led:function(){p("Expected an operator and instead saw '{a}'.",we,we.value)}},R("(regexp)",(function(){return this})),S("(endline)"),S("(begin)"),S("(end)").reach=!0,S("</").reach=!0,S("<!"),S("\x3c!--"),S("--\x3e"),S("(error)").reach=!0,S("}").reach=!0,S(")"),S("]"),S('"').reach=!0,S("'").reach=!0,S(";"),S(":").reach=!0,S(","),S("#"),S("@"),C("else"),C("case").reach=!0,C("catch"),C("default").reach=!0,C("finally"),H("arguments",(function(e){Le["use strict"]&&ce["(global)"]&&d("Strict violation.",e)})),H("eval"),H("false"),H("Infinity"),H("null"),H("this",(function(e){Le["use strict"]&&!xe.validthis&&(ce["(statement)"]&&ce["(name)"].charAt(0)>"Z"||ce["(global)"])&&d("Possible strict violation.",e)})),H("true"),H("undefined"),B("="),B("+="),B("-="),B("*="),B("/=").nud=function(){p("A regular expression literal can be confused with '/='.")},B("%="),z("&="),z("|="),z("^="),z("<<="),z(">>="),z(">>>="),D("?",(function(e,t){return t.left=e,t.right=x(10),y(":"),t.else=x(10),t}),30),D("||","or",40),D("&&","and",50),F("|","bitor",70),F("^","bitxor",80),F("&","bitand",90),I("==",(function(e,t){return!(xe.eqnull&&("null"===e.value||"null"===t.value))&&xe.eqeqeq?d("Expected '{a}' and instead saw '{b}'.",this,"===","=="):N(e)?d("Use '{a}' to compare with '{b}'.",this,"===",e.value):N(t)&&d("Use '{a}' to compare with '{b}'.",this,"===",t.value),this})),I("==="),I("!=",(function(e,t){return!(xe.eqnull&&("null"===e.value||"null"===t.value))&&xe.eqeqeq?d("Expected '{a}' and instead saw '{b}'.",this,"!==","!="):N(e)?d("Use '{a}' to compare with '{b}'.",this,"!==",e.value):N(t)&&d("Use '{a}' to compare with '{b}'.",this,"!==",t.value),this})),I("!=="),I("<"),I(">"),I("<="),I(">="),F("<<","shiftleft",120),F(">>","shiftright",120),F(">>>","shiftrightunsigned",120),D("in","in",120),D("instanceof","instanceof",120),D("+",(function(e,t){var n=x(130);return e&&n&&"(string)"===e.id&&"(string)"===n.id?(e.value+=n.value,e.character=n.character,!xe.scripturl&&He.test(e.value)&&d("JavaScript URL.",e),e):(t.left=e,t.right=n,t)}),130),$("+","num"),$("+++",(function(){return d("Confusing pluses."),this.right=x(150),this.arity="unary",this})),D("+++",(function(e){return d("Confusing pluses."),this.left=e,this.right=x(130),this}),130),D("-","sub",130),$("-","neg"),$("---",(function(){return d("Confusing minuses."),this.right=x(150),this.arity="unary",this})),D("---",(function(e){return d("Confusing minuses."),this.left=e,this.right=x(130),this}),130),D("*","mult",140),D("/","div",140),D("%","mod",140),V("++"),$("++","preinc"),rt["++"].exps=!0,V("--"),$("--","predec"),rt["--"].exps=!0,$("delete",(function(){var e=x(0);return(!e||"."!==e.id&&"["!==e.id)&&d("Variables should not be deleted."),this.first=e,this})).exps=!0,$("~",(function(){return xe.bitwise&&d("Unexpected '{a}'.",this,"~"),x(150),this})),$("!",(function(){return this.right=x(150),this.arity="unary",!0===Ie[this.right.id]&&d("Confusing use of '{a}'.",this,"!"),this})),$("typeof","typeof"),$("new",(function(){var e,n=x(155);if(n&&"function"!==n.id)if(n.identifier)switch(n.new=!0,n.value){case"Number":case"String":case"Boolean":case"Math":case"JSON":d("Do not use {a} as a constructor.",Me,n.value);break;case"Function":xe.evil||d("The Function constructor is eval.");break;case"Date":case"RegExp":break;default:"function"!==n.id&&(e=n.value.substr(0,1),xe.newcap&&(e<"A"||e>"Z")&&!t(le,n.value)&&d("A constructor name should start with an uppercase letter.",Ae))}else"."!==n.id&&"["!==n.id&&"("!==n.id&&d("Bad constructor.",Ae);else xe.supernew||d("Weird construction. Delete 'new'.",this);return k(Ae,we),"("!==we.id&&!xe.supernew&&d("Missing '()' invoking a constructor.",Ae,Ae.value),this.first=n,this})),rt.new.exps=!0,$("void").exps=!0,D(".",(function(e,t){k(Me,Ae),E();var n=J();return"string"==typeof n&&K(n),t.left=e,t.right=n,!e||"arguments"!==e.value||"callee"!==n&&"caller"!==n?!xe.evil&&e&&"document"===e.value&&("write"===n||"writeln"===n)&&d("document.write can be a form of eval.",e):xe.noarg?d("Avoid arguments.{a}.",e,n):Le["use strict"]&&p("Strict violation."),!xe.evil&&("eval"===n||"execScript"===n)&&d("eval is evil."),t}),160,!0),D("(",(function(e,t){"}"!==Me.id&&")"!==Me.id&&E(Me,Ae),M(),xe.immed&&!e.immed&&"function"===e.id&&d("Wrap an immediate function invocation in parentheses to assist the reader in understanding that the expression is the result of a function, and not the function itself.");var n=0,r=[];if(e&&"(identifier)"===e.type&&e.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&-1==="Number String Boolean Date Object".indexOf(e.value)&&("Math"===e.value?d("Math is not a function.",e):xe.newcap&&d("Missing 'new' prefix when invoking a constructor.",e)),")"!==we.id)for(;r[r.length]=x(10),n+=1,","===we.id;)A();return y(")"),M(Me,Ae),"object"==typeof e&&("parseInt"===e.value&&1===n&&d("Missing radix parameter.",Ae),xe.evil||("eval"===e.value||"Function"===e.value||"execScript"===e.value?(d("eval is evil.",e),r[0]&&"(string)"===[0].id&&v(e,r[0].value)):!r[0]||"(string)"!==r[0].id||"setTimeout"!==e.value&&"setInterval"!==e.value?r[0]&&"(string)"===r[0].id&&"."===e.value&&"window"===e.left.value&&("setTimeout"===e.right||"setInterval"===e.right)&&(d("Implied eval is evil. Pass a function instead of a string.",e),v(e,r[0].value)):(d("Implied eval is evil. Pass a function instead of a string.",e),v(e,r[0].value))),!e.identifier&&"."!==e.id&&"["!==e.id&&"("!==e.id&&"&&"!==e.id&&"||"!==e.id&&"?"!==e.id&&d("Bad invocation.",e)),t.left=e,t}),155,!0).exps=!0,$("(",(function(){M(),"function"===we.id&&(we.immed=!0);var e=x(0);return y(")",this),M(Me,Ae),xe.immed&&"function"===e.id&&"("!==we.id&&("."!==we.id||"call"!==w().value&&"apply"!==w().value)&&d("Do not wrap function literals in parens unless they are to be immediately invoked.",this),e})),D("[",(function(e,t){E(Me,Ae),M();var n,r=x(0);return r&&"(string)"===r.type&&(!xe.evil&&("eval"===r.value||"execScript"===r.value)&&d("eval is evil.",t),K(r.value),!xe.sub&&Ce.test(r.value)&&((!(n=rt[r.value])||!n.reserved)&&d("['{a}'] is better written in dot notation.",Me,r.value))),y("]",t),M(Me,Ae),t.left=e,t.right=r,t}),160,!0),$("[",(function(){var e=Ae.line!==we.line;for(this.first=[],e&&(he+=xe.indent,we.from===he+xe.indent&&(he+=xe.indent));"(end)"!==we.id;){for(;","===we.id;)xe.es5||d("Extra comma."),y(",");if("]"===we.id)break;if(e&&Ae.line!==we.line&&L(),this.first.push(x(10)),","!==we.id)break;if(A(),"]"===we.id&&!xe.es5){d("Extra comma.",Ae);break}}return e&&(he-=xe.indent,L()),y("]",this),this})),function(e){e.nud=function(){function e(e,n){c[e]&&t(c,e)?d("Duplicate member '{a}'.",we,a):c[e]={},c[e].basic=!0,c[e].basicToken=n}function n(e,n){c[e]&&t(c,e)?(c[e].basic||c[e].setter)&&d("Duplicate member '{a}'.",we,a):c[e]={},c[e].setter=!0,c[e].setterToken=n}function r(e){c[e]&&t(c,e)?(c[e].basic||c[e].getter)&&d("Duplicate member '{a}'.",we,a):c[e]={},c[e].getter=!0,c[e].getterToken=Ae}var i,a,o,s,c={};for((i=Ae.line!==we.line)&&(he+=xe.indent,we.from===he+xe.indent&&(he+=xe.indent));"}"!==we.id;){if(i&&L(),"get"===we.value&&":"!==w().id)y("get"),xe.es5||p("get/set are ES5 features."),(a=te())||p("Missing property name."),r(a),s=we,k(Ae,we),(o=ne()["(params)"])&&d("Unexpected parameter '{a}' in get {b} function.",s,o[0],a),k(Ae,we);else if("set"===we.value&&":"!==w().id)y("set"),xe.es5||p("get/set are ES5 features."),(a=te())||p("Missing property name."),n(a,we),s=we,k(Ae,we),(!(o=ne()["(params)"])||1!==o.length)&&d("Expected a single parameter in set {a} function.",s,a);else{if(e(a=te(),we),"string"!=typeof a)break;y(":"),T(Ae,we),x(10)}if(K(a),","!==we.id)break;A(),(","===we.id||"}"===we.id&&!xe.es5)&&d("Extra comma.",Ae)}if(i&&(he-=xe.indent,L()),y("}",this),xe.es5)for(var u in c)t(c,u)&&c[u].setter&&!c[u].getter&&d("Setter is defined without getter.",c[u].setterToken);return this},e.fud=function(){p("Expected to see a statement and instead saw a block.",Ae)}}(S("{")),Ue=function(){var e=U("const",(function(e){var t,n,r;for(this.first=[];(T(Ae,we),t=J(),"const"===ce[t]&&d("const '"+t+"' has already been declared"),ce["(global)"]&&!1===ke[t]&&d("Redefinition of '{a}'.",Ae,t),g(t,"const"),!e)&&(n=Ae,this.first.push(Ae),"="!==we.id&&d("const '{a}' is initialized to 'undefined'.",Ae,t),"="===we.id&&(T(Ae,we),y("="),T(Ae,we),"undefined"===we.id&&d("It is not necessary to initialize '{a}' to 'undefined'.",Ae,t),"="===w(0).id&&we.identifier&&p("Constant {a} was not declared correctly.",we,we.value),r=x(0),n.first=r),","===we.id);)A();return this}));e.exps=!0};var ct=U("var",(function(e){var t,n,r;for(ce["(onevar)"]&&xe.onevar?d("Too many var statements."):ce["(global)"]||(ce["(onevar)"]=!0),this.first=[];(T(Ae,we),t=J(),xe.esnext&&"const"===ce[t]&&d("const '"+t+"' has already been declared"),ce["(global)"]&&!1===ke[t]&&d("Redefinition of '{a}'.",Ae,t),g(t,"unused",Ae),!e)&&(n=Ae,this.first.push(Ae),"="===we.id&&(T(Ae,we),y("="),T(Ae,we),"undefined"===we.id&&d("It is not necessary to initialize '{a}' to 'undefined'.",Ae,t),"="===w(0).id&&we.identifier&&p("Variable {a} was not declared correctly.",we,we.value),r=x(0),n.first=r),","===we.id);)A();return this}));ct.exps=!0,P("function",(function(){de&&d("Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.",Ae);var e=J();return xe.esnext&&"const"===ce[e]&&d("const '"+e+"' has already been declared"),k(Ae,we),g(e,"unction",Ae),ne(e,{statement:!0}),"("===we.id&&we.line===Ae.line&&p("Function declarations are not invocable. Wrap the whole function invocation in parens."),this})),$("function",(function(){var e=W();return e?k(Ae,we):T(Ae,we),ne(e),!xe.loopfunc&&ce["(loopage)"]&&d("Don't make functions within a loop."),this})),P("if",(function(){var e=we;return ie(),y("("),T(this,e),M(),x(20),"="===we.id&&(xe.boss||d("Assignment in conditional expression"),y("="),x(20)),y(")",e),M(Me,Ae),Q(!0,!0),"else"===we.id&&(T(Ae,we),y("else"),"if"===we.id||"switch"===we.id?X(!0):Q(!0,!0)),this})),P("try",(function(){var e;return Q(!1),"catch"===we.id&&(ie(),function(){var e,t=je;y("catch"),T(Ae,we),y("("),je=Object.create(t),e=we.value,"(identifier)"!==we.type&&d("Expected an identifier and instead saw '{a}'.",we,e=null),y(),y(")"),ce={"(name)":"(catch)","(line)":we.line,"(character)":we.character,"(context)":ce,"(breakage)":ce["(breakage)"],"(loopage)":ce["(loopage)"],"(scope)":je,"(statement)":!1,"(metrics)":re(we),"(catch)":!0,"(tokens)":{}},e&&g(e,"exception"),Ae.funct=ce,ue.push(ce),Q(!1),je=t,ce["(last)"]=Ae.line,ce["(lastcharacter)"]=Ae.character,ce=ce["(context)"]}(),e=!0),"finally"===we.id?(y("finally"),void Q(!1)):(e||p("Expected '{a}' and instead saw '{b}'.",we,"catch",we.value),this)})),P("while",(function(){var e=we;return ce["(breakage)"]+=1,ce["(loopage)"]+=1,ie(),y("("),T(this,e),M(),x(20),"="===we.id&&(xe.boss||d("Assignment in conditional expression"),y("="),x(20)),y(")",e),M(Me,Ae),Q(!0,!0),ce["(breakage)"]-=1,ce["(loopage)"]-=1,this})).labelled=!0,P("with",(function(){var e=we;return Le["use strict"]?p("'with' is not allowed in strict mode.",Ae):xe.withstmt||d("Don't use 'with'.",Ae),y("("),T(this,e),M(),x(0),y(")",e),M(Me,Ae),Q(!0,!0),this})),P("switch",(function(){var e=we,t=!1;for(ce["(breakage)"]+=1,y("("),T(this,e),M(),this.condition=x(20),y(")",e),M(Me,Ae),T(Ae,we),e=we,y("{"),T(Ae,we),he+=xe.indent,this.cases=[];;)switch(we.id){case"case":switch(ce["(verb)"]){case"break":case"case":case"continue":case"return":case"switch":case"throw":break;default:De.test(me[we.line-2])||d("Expected a 'break' statement before 'case'.",Ae)}L(-xe.indent),y("case"),this.cases.push(x(20)),ie(),t=!0,y(":"),ce["(verb)"]="case";break;case"default":switch(ce["(verb)"]){case"break":case"continue":case"return":case"throw":break;default:De.test(me[we.line-2])||d("Expected a 'break' statement before 'default'.",Ae)}L(-xe.indent),y("default"),t=!0,y(":");break;case"}":return he-=xe.indent,L(),y("}",e),1!==this.cases.length&&"true"!==this.condition.id&&"false"!==this.condition.id||xe.onecase||d("This 'switch' should be an 'if'.",this),ce["(breakage)"]-=1,void(ce["(verb)"]=void 0);case"(end)":return void p("Missing '{a}'.",we,"}");default:if(t)switch(Ae.id){case",":return void p("Each value should have its own case label.");case":":t=!1,G();break;default:return void p("Missing ':' on a case clause.",Ae)}else{if(":"!==Ae.id)return void p("Expected '{a}' and instead saw '{b}'.",we,"case",we.value);y(":"),p("Unexpected '{a}'.",Ae,":"),G()}}})).labelled=!0,U("debugger",(function(){return xe.debug||d("All 'debugger' statements should be removed."),this})).exps=!0,function(){var e=U("do",(function(){ce["(breakage)"]+=1,ce["(loopage)"]+=1,ie(),this.first=Q(!0),y("while");var e=we;return T(Ae,e),y("("),M(),x(20),"="===we.id&&(xe.boss||d("Assignment in conditional expression"),y("="),x(20)),y(")",e),M(Me,Ae),ce["(breakage)"]-=1,ce["(loopage)"]-=1,this}));e.labelled=!0,e.exps=!0}(),P("for",(function(){var e,t=we;if(ce["(breakage)"]+=1,ce["(loopage)"]+=1,ie(),y("("),T(this,t),M(),"in"===w("var"===we.id?1:0).id){if("var"===we.id)y("var"),ct.fud.call(ct,!0);else{switch(ce[we.value]){case"unused":ce[we.value]="var";break;case"var":break;default:d("Bad for in variable '{a}'.",we,we.value)}y()}return y("in"),x(20),y(")",t),e=Q(!0,!0),xe.forin&&e&&(e.length>1||"object"!=typeof e[0]||"if"!==e[0].value)&&d("The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.",this),ce["(breakage)"]-=1,ce["(loopage)"]-=1,this}if(";"!==we.id)if("var"===we.id)y("var"),ct.fud.call(ct);else for(;x(0,"for"),","===we.id;)A();if(O(Ae),y(";"),";"!==we.id&&(x(20),"="===we.id&&(xe.boss||d("Assignment in conditional expression"),y("="),x(20))),O(Ae),y(";"),";"===we.id&&p("Expected '{a}' and instead saw '{b}'.",we,")",";"),")"!==we.id)for(;x(0,"for"),","===we.id;)A();return y(")",t),M(Me,Ae),Q(!0,!0),ce["(breakage)"]-=1,ce["(loopage)"]-=1,this})).labelled=!0,U("break",(function(){var e=we.value;return 0===ce["(breakage)"]&&d("Unexpected '{a}'.",we,this.value),xe.asi||O(this),";"!==we.id&&Ae.line===we.line&&("label"!==ce[e]?d("'{a}' is not a statement label.",we,e):je[e]!==ce&&d("'{a}' is out of scope.",we,e),this.first=we,y()),Z("break"),this})).exps=!0,U("continue",(function(){var e=we.value;return 0===ce["(breakage)"]&&d("Unexpected '{a}'.",we,this.value),xe.asi||O(this),";"!==we.id?Ae.line===we.line&&("label"!==ce[e]?d("'{a}' is not a statement label.",we,e):je[e]!==ce&&d("'{a}' is out of scope.",we,e),this.first=we,y()):ce["(loopage)"]||d("Unexpected '{a}'.",we,this.value),Z("continue"),this})).exps=!0,U("return",(function(){return this.line===we.line?("(regexp)"===we.id&&d("Wrap the /regexp/ literal in parens to disambiguate the slash operator."),";"!==we.id&&!we.reach&&(T(Ae,we),"="===w().value&&!xe.boss&&h("Did you mean to return a conditional instead of an assignment?",Ae.line,Ae.character+1),this.first=x(0))):xe.asi||O(this),Z("return"),this})).exps=!0,U("throw",(function(){return O(this),T(Ae,we),this.first=x(20),Z("throw"),this})).exps=!0,C("class"),C("const"),C("enum"),C("export"),C("extends"),C("import"),C("super"),C("let"),C("yield"),C("implements"),C("interface"),C("package"),C("private"),C("protected"),C("public"),C("static");var ut=function(e,a,o){var s,l,f,p,v,g={};if(a&&a.scope?r.scope=a.scope:(r.errors=[],r.undefs=[],r.internals=[],r.blacklist={},r.scope="(main)"),ke=Object.create(tt),se=Object.create(null),c(ke,o||{}),a)for((s=a.predef)&&(!Array.isArray(s)&&"object"==typeof s&&(s=Object.keys(s)),s.forEach((function(e){var t;"-"===e[0]?(t=e.slice(1),r.blacklist[t]=t):ke[e]=!0}))),v=Object.keys(a),p=0;p<v.length;p++)g[v[p]]=a[v[p]],"newcap"===v[p]&&!1===a[v[p]]&&(g["(explicitNewcap)"]=!0),"indent"===v[p]&&(g.white=!0);for((xe=g).indent=xe.indent||4,xe.maxerr=xe.maxerr||50,Oe="",l=0;l<xe.indent;l+=1)Oe+=" ";if(he=1,le=Object.create(ke),ce={"(global)":!0,"(name)":"(global)","(scope)":je=le,"(breakage)":0,"(loopage)":0,"(tokens)":{},"(metrics)":re(we)},ue=[ce],Se=[],null,ge={},be=null,fe={},de=!1,ve=[],pe=!1,Pe=0,me=[],_e=[],!i(e)&&!Array.isArray(e))return m("Input is neither a string nor an array of strings.",0),!1;if(i(e)&&/^\s*$/g.test(e))return m("Input is an empty string.",0),!1;if(0===e.length)return m("Input is an empty array.",0),!1;for(var b in st.init(e),Ee=!0,Le={},Me=Ae=we=rt["(begin)"],a)t(a,b)&&n(b,Ae);u(),c(ke,o||{}),A.first=!0,Te=void 0;try{switch(y(),we.id){case"{":case"[":xe.laxbreak=!0,pe=!0,ae();break;default:Y(),Le["use strict"]&&!xe.globalstrict&&d('Use the function form of "use strict".',Me),G()}y(we&&"."!==we.value?"(end)":void 0);var w=function(e,t){do{if("string"==typeof t[e])return"unused"===t[e]?t[e]="var":"unction"===t[e]&&(t[e]="closure"),!0;t=t["(context)"]}while(t);return!1},x=function(e,t){if(fe[e]){for(var n=[],r=0;r<fe[e].length;r+=1)fe[e][r]!==t&&n.push(fe[e][r]);0===n.length?delete fe[e]:fe[e]=n}},k=function(e,t){var n=t.line,r=t.character;xe.unused&&h("'{a}' is defined but never used.",n,r,e),_e.push({name:e,line:n,character:r})},E=function(e,t){var n=e[t],r=e["(tokens)"][t];"("!==t.charAt(0)&&("unused"!==n&&"unction"!==n||e["(params)"]&&-1!==e["(params)"].indexOf(t)||k(t,r))};for(l=0;l<r.undefs.length;l+=1)w((f=r.undefs[l].slice(0))[2].value,f[0])?x(f[2].value,f[2].line):d.apply(d,f.slice(1));for(var M in ue.forEach((function(e){for(var n in e)t(e,n)&&E(e,n);if(e["(params)"])for(var r,i=e["(params)"].slice(),a=i.pop();a;){if(r=e[a],"undefined"===a)return;if("unused"!==r&&"unction"!==r)return;k(a,e["(tokens)"][a]),a=i.pop()}})),se)t(se,M)&&!t(le,M)&&k(M,se[M])}catch(e){if(e){var T=we||{};r.errors.push({raw:e.raw,reason:e.message,line:e.line||T.line,character:e.character||T.from},null)}}if("(main)"===r.scope)for(a=a||{},l=0;l<r.internals.length;l+=1)f=r.internals[l],a.scope=f.elem,ut(f.value,a,o);return 0===r.errors.length};return ut.data=function(){var e,n,r,i,a,o,s={functions:[],options:xe},c=[];for(a in ut.errors.length&&(s.errors=ut.errors),pe&&(s.json=!0),fe)t(fe,a)&&c.push({name:a,line:fe[a]});for(c.length>0&&(s.implieds=c),Se.length>0&&(s.urls=Se),(o=Object.keys(je)).length>0&&(s.globals=o),r=1;r<ue.length;r+=1){for(n=ue[r],e={},i=0;i<Xe.length;i+=1)e[Xe[i]]=[];for(i=0;i<Xe.length;i+=1)0===e[Xe[i]].length&&delete e[Xe[i]];e.name=n["(name)"],e.param=n["(params)"],e.line=n["(line)"],e.character=n["(character)"],e.last=n["(last)"],e.lastcharacter=n["(lastcharacter)"],s.functions.push(e)}for(a in _e.length>0&&(s.unused=_e),[],ge)if("number"==typeof ge[a]){s.member=ge;break}return s},ut.jshint=ut,ut}();"object"==typeof t&&t&&(t.JSHINT=r)}));