http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/lex.js
----------------------------------------------------------------------
diff --git 
a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/lex.js 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/lex.js
new file mode 100644
index 0000000..5a3e37f
--- /dev/null
+++ 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/lex.js
@@ -0,0 +1,1589 @@
+/*
+ * Lexical analysis and token construction.
+ */
+
+"use strict";
+
+var _      = require("underscore");
+var events = require("events");
+var reg    = require("./reg.js");
+var state  = require("./state.js").state;
+
+var unicodeData = require("../data/ascii-identifier-data.js");
+var asciiIdentifierStartTable = unicodeData.asciiIdentifierStartTable;
+var asciiIdentifierPartTable = unicodeData.asciiIdentifierPartTable;
+var nonAsciiIdentifierStartTable = 
require("../data/non-ascii-identifier-start.js");
+var nonAsciiIdentifierPartTable = 
require("../data/non-ascii-identifier-part-only.js");
+
+// Some of these token types are from JavaScript Parser API
+// while others are specific to JSHint parser.
+// JS Parser API: 
https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API
+
+var Token = {
+       Identifier: 1,
+       Punctuator: 2,
+       NumericLiteral: 3,
+       StringLiteral: 4,
+       Comment: 5,
+       Keyword: 6,
+       NullLiteral: 7,
+       BooleanLiteral: 8,
+       RegExp: 9
+};
+
+// Object that handles postponed lexing verifications that checks the parsed
+// environment state.
+
+function asyncTrigger() {
+       var _checks = [];
+
+       return {
+               push: function (fn) {
+                       _checks.push(fn);
+               },
+
+               check: function () {
+                       for (var check = 0; check < _checks.length; ++check) {
+                               _checks[check]();
+                       }
+
+                       _checks.splice(0, _checks.length);
+               }
+       };
+}
+
+/*
+ * Lexer for JSHint.
+ *
+ * This object does a char-by-char scan of the provided source code
+ * and produces a sequence of tokens.
+ *
+ *   var lex = new Lexer("var i = 0;");
+ *   lex.start();
+ *   lex.token(); // returns the next token
+ *
+ * You have to use the token() method to move the lexer forward
+ * but you don't have to use its return value to get tokens. In addition
+ * to token() method returning the next token, the Lexer object also
+ * emits events.
+ *
+ *   lex.on("Identifier", function (data) {
+ *     if (data.name.indexOf("_") >= 0) {
+ *       // Produce a warning.
+ *     }
+ *   });
+ *
+ * Note that the token() method returns tokens in a JSLint-compatible
+ * format while the event emitter uses a slightly modified version of
+ * Mozilla's JavaScript Parser API. Eventually, we will move away from
+ * JSLint format.
+ */
+function Lexer(source) {
+       var lines = source;
+
+       if (typeof lines === "string") {
+               lines = lines
+                       .replace(/\r\n/g, "\n")
+                       .replace(/\r/g, "\n")
+                       .split("\n");
+       }
+
+       // If the first line is a shebang (#!), make it a blank and move on.
+       // Shebangs are used by Node scripts.
+
+       if (lines[0] && lines[0].substr(0, 2) === "#!") {
+               if (lines[0].indexOf("node") !== -1) {
+                       state.option.node = true;
+               }
+               lines[0] = "";
+       }
+
+       this.emitter = new events.EventEmitter();
+       this.source = source;
+       this.setLines(lines);
+       this.prereg = true;
+
+       this.line = 0;
+       this.char = 1;
+       this.from = 1;
+       this.input = "";
+
+       for (var i = 0; i < state.option.indent; i += 1) {
+               state.tab += " ";
+       }
+}
+
+Lexer.prototype = {
+       _lines: [],
+
+       getLines: function () {
+               this._lines = state.lines;
+               return this._lines;
+       },
+
+       setLines: function (val) {
+               this._lines = val;
+               state.lines = this._lines;
+       },
+
+       /*
+        * Return the next i character without actually moving the
+        * char pointer.
+        */
+       peek: function (i) {
+               return this.input.charAt(i || 0);
+       },
+
+       /*
+        * Move the char pointer forward i times.
+        */
+       skip: function (i) {
+               i = i || 1;
+               this.char += i;
+               this.input = this.input.slice(i);
+       },
+
+       /*
+        * Subscribe to a token event. The API for this method is similar
+        * Underscore.js i.e. you can subscribe to multiple events with
+        * one call:
+        *
+        *   lex.on("Identifier Number", function (data) {
+        *     // ...
+        *   });
+        */
+       on: function (names, listener) {
+               names.split(" ").forEach(function (name) {
+                       this.emitter.on(name, listener);
+               }.bind(this));
+       },
+
+       /*
+        * Trigger a token event. All arguments will be passed to each
+        * listener.
+        */
+       trigger: function () {
+               this.emitter.emit.apply(this.emitter, 
Array.prototype.slice.call(arguments));
+       },
+
+       /*
+        * Postpone a token event. the checking condition is set as
+        * last parameter, and the trigger function is called in a
+        * stored callback. To be later called using the check() function
+        * by the parser. This avoids parser's peek() to give the lexer
+        * a false context.
+        */
+       triggerAsync: function (type, args, checks, fn) {
+               checks.push(function () {
+                       if (fn()) {
+                               this.trigger(type, args);
+                       }
+               }.bind(this));
+       },
+
+       /*
+        * Extract a punctuator out of the next sequence of characters
+        * or return 'null' if its not possible.
+        *
+        * This method's implementation was heavily influenced by the
+        * scanPunctuator function in the Esprima parser's source code.
+        */
+       scanPunctuator: function () {
+               var ch1 = this.peek();
+               var ch2, ch3, ch4;
+
+               switch (ch1) {
+               // Most common single-character punctuators
+               case ".":
+                       if ((/^[0-9]$/).test(this.peek(1))) {
+                               return null;
+                       }
+                       if (this.peek(1) === "." && this.peek(2) === ".") {
+                               return {
+                                       type: Token.Punctuator,
+                                       value: "..."
+                               };
+                       }
+                       /* falls through */
+               case "(":
+               case ")":
+               case ";":
+               case ",":
+               case "{":
+               case "}":
+               case "[":
+               case "]":
+               case ":":
+               case "~":
+               case "?":
+                       return {
+                               type: Token.Punctuator,
+                               value: ch1
+                       };
+
+               // A pound sign (for Node shebangs)
+               case "#":
+                       return {
+                               type: Token.Punctuator,
+                               value: ch1
+                       };
+
+               // We're at the end of input
+               case "":
+                       return null;
+               }
+
+               // Peek more characters
+
+               ch2 = this.peek(1);
+               ch3 = this.peek(2);
+               ch4 = this.peek(3);
+
+               // 4-character punctuator: >>>=
+
+               if (ch1 === ">" && ch2 === ">" && ch3 === ">" && ch4 === "=") {
+                       return {
+                               type: Token.Punctuator,
+                               value: ">>>="
+                       };
+               }
+
+               // 3-character punctuators: === !== >>> <<= >>=
+
+               if (ch1 === "=" && ch2 === "=" && ch3 === "=") {
+                       return {
+                               type: Token.Punctuator,
+                               value: "==="
+                       };
+               }
+
+               if (ch1 === "!" && ch2 === "=" && ch3 === "=") {
+                       return {
+                               type: Token.Punctuator,
+                               value: "!=="
+                       };
+               }
+
+               if (ch1 === ">" && ch2 === ">" && ch3 === ">") {
+                       return {
+                               type: Token.Punctuator,
+                               value: ">>>"
+                       };
+               }
+
+               if (ch1 === "<" && ch2 === "<" && ch3 === "=") {
+                       return {
+                               type: Token.Punctuator,
+                               value: "<<="
+                       };
+               }
+
+               if (ch1 === ">" && ch2 === ">" && ch3 === "=") {
+                       return {
+                               type: Token.Punctuator,
+                               value: ">>="
+                       };
+               }
+
+               // Fat arrow punctuator
+               if (ch1 === "=" && ch2 === ">") {
+                       return {
+                               type: Token.Punctuator,
+                               value: ch1 + ch2
+                       };
+               }
+
+               // 2-character punctuators: <= >= == != ++ -- << >> && ||
+               // += -= *= %= &= |= ^= (but not /=, see below)
+               if (ch1 === ch2 && ("+-<>&|".indexOf(ch1) >= 0)) {
+                       return {
+                               type: Token.Punctuator,
+                               value: ch1 + ch2
+                       };
+               }
+
+               if ("<>=!+-*%&|^".indexOf(ch1) >= 0) {
+                       if (ch2 === "=") {
+                               return {
+                                       type: Token.Punctuator,
+                                       value: ch1 + ch2
+                               };
+                       }
+
+                       return {
+                               type: Token.Punctuator,
+                               value: ch1
+                       };
+               }
+
+               // Special case: /=. We need to make sure that this is an
+               // operator and not a regular expression.
+
+               if (ch1 === "/") {
+                       if (ch2 === "=" && 
/\/=(?!(\S*\/[gim]?))/.test(this.input)) {
+                               // /= is not a part of a regular expression, 
return it as a
+                               // punctuator.
+                               return {
+                                       type: Token.Punctuator,
+                                       value: "/="
+                               };
+                       }
+
+                       return {
+                               type: Token.Punctuator,
+                               value: "/"
+                       };
+               }
+
+               return null;
+       },
+
+       /*
+        * Extract a comment out of the next sequence of characters and/or
+        * lines or return 'null' if its not possible. Since comments can
+        * span across multiple lines this method has to move the char
+        * pointer.
+        *
+        * In addition to normal JavaScript comments (// and /*) this method
+        * also recognizes JSHint- and JSLint-specific comments such as
+        * /*jshint, /*jslint, /*globals and so on.
+        */
+       scanComments: function () {
+               var ch1 = this.peek();
+               var ch2 = this.peek(1);
+               var rest = this.input.substr(2);
+               var startLine = this.line;
+               var startChar = this.char;
+
+               // Create a comment token object and make sure it
+               // has all the data JSHint needs to work with special
+               // comments.
+
+               function commentToken(label, body, opt) {
+                       var special = ["jshint", "jslint", "members", "member", 
"globals", "global", "exported"];
+                       var isSpecial = false;
+                       var value = label + body;
+                       var commentType = "plain";
+                       opt = opt || {};
+
+                       if (opt.isMultiline) {
+                               value += "*/";
+                       }
+
+                       special.forEach(function (str) {
+                               if (isSpecial) {
+                                       return;
+                               }
+
+                               // Don't recognize any special comments other 
than jshint for single-line
+                               // comments. This introduced many problems with 
legit comments.
+                               if (label === "//" && str !== "jshint") {
+                                       return;
+                               }
+
+                               if (body.substr(0, str.length) === str) {
+                                       isSpecial = true;
+                                       label = label + str;
+                                       body = body.substr(str.length);
+                               }
+
+                               if (!isSpecial && body.charAt(0) === " " && 
body.substr(1, str.length) === str) {
+                                       isSpecial = true;
+                                       label = label + " " + str;
+                                       body = body.substr(str.length + 1);
+                               }
+
+                               if (!isSpecial) {
+                                       return;
+                               }
+
+                               switch (str) {
+                               case "member":
+                                       commentType = "members";
+                                       break;
+                               case "global":
+                                       commentType = "globals";
+                                       break;
+                               default:
+                                       commentType = str;
+                               }
+                       });
+
+                       return {
+                               type: Token.Comment,
+                               commentType: commentType,
+                               value: value,
+                               body: body,
+                               isSpecial: isSpecial,
+                               isMultiline: opt.isMultiline || false,
+                               isMalformed: opt.isMalformed || false
+                       };
+               }
+
+               // End of unbegun comment. Raise an error and skip that input.
+               if (ch1 === "*" && ch2 === "/") {
+                       this.trigger("error", {
+                               code: "E018",
+                               line: startLine,
+                               character: startChar
+                       });
+
+                       this.skip(2);
+                       return null;
+               }
+
+               // Comments must start either with // or /*
+               if (ch1 !== "/" || (ch2 !== "*" && ch2 !== "/")) {
+                       return null;
+               }
+
+               // One-line comment
+               if (ch2 === "/") {
+                       this.skip(this.input.length); // Skip to the EOL.
+                       return commentToken("//", rest);
+               }
+
+               var body = "";
+
+               /* Multi-line comment */
+               if (ch2 === "*") {
+                       this.skip(2);
+
+                       while (this.peek() !== "*" || this.peek(1) !== "/") {
+                               if (this.peek() === "") { // End of Line
+                                       body += "\n";
+
+                                       // If we hit EOF and our comment is 
still unclosed,
+                                       // trigger an error and end the comment 
implicitly.
+                                       if (!this.nextLine()) {
+                                               this.trigger("error", {
+                                                       code: "E017",
+                                                       line: startLine,
+                                                       character: startChar
+                                               });
+
+                                               return commentToken("/*", body, 
{
+                                                       isMultiline: true,
+                                                       isMalformed: true
+                                               });
+                                       }
+                               } else {
+                                       body += this.peek();
+                                       this.skip();
+                               }
+                       }
+
+                       this.skip(2);
+                       return commentToken("/*", body, { isMultiline: true });
+               }
+       },
+
+       /*
+        * Extract a keyword out of the next sequence of characters or
+        * return 'null' if its not possible.
+        */
+       scanKeyword: function () {
+               var result = /^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input);
+               var keywords = [
+                       "if", "in", "do", "var", "for", "new",
+                       "try", "let", "this", "else", "case",
+                       "void", "with", "enum", "while", "break",
+                       "catch", "throw", "const", "yield", "class",
+                       "super", "return", "typeof", "delete",
+                       "switch", "export", "import", "default",
+                       "finally", "extends", "function", "continue",
+                       "debugger", "instanceof"
+               ];
+
+               if (result && keywords.indexOf(result[0]) >= 0) {
+                       return {
+                               type: Token.Keyword,
+                               value: result[0]
+                       };
+               }
+
+               return null;
+       },
+
+       /*
+        * Extract a JavaScript identifier out of the next sequence of
+        * characters or return 'null' if its not possible. In addition,
+        * to Identifier this method can also produce BooleanLiteral
+        * (true/false) and NullLiteral (null).
+        */
+       scanIdentifier: function () {
+               var id = "";
+               var index = 0;
+               var type, char;
+
+               function isNonAsciiIdentifierStart(code) {
+                       return nonAsciiIdentifierStartTable.indexOf(code) > -1;
+               }
+
+               function isNonAsciiIdentifierPart(code) {
+                       return isNonAsciiIdentifierStart(code) || 
nonAsciiIdentifierPartTable.indexOf(code) > -1;
+               }
+
+               function isHexDigit(str) {
+                       return (/^[0-9a-fA-F]$/).test(str);
+               }
+
+               var readUnicodeEscapeSequence = function () {
+                       /*jshint validthis:true */
+                       index += 1;
+
+                       if (this.peek(index) !== "u") {
+                               return null;
+                       }
+
+                       var ch1 = this.peek(index + 1);
+                       var ch2 = this.peek(index + 2);
+                       var ch3 = this.peek(index + 3);
+                       var ch4 = this.peek(index + 4);
+                       var code;
+
+                       if (isHexDigit(ch1) && isHexDigit(ch2) && 
isHexDigit(ch3) && isHexDigit(ch4)) {
+                               code = parseInt(ch1 + ch2 + ch3 + ch4, 16);
+
+                               if (asciiIdentifierPartTable[code] || 
isNonAsciiIdentifierPart(code)) {
+                                       index += 5;
+                                       return "\\u" + ch1 + ch2 + ch3 + ch4;
+                               }
+
+                               return null;
+                       }
+
+                       return null;
+               }.bind(this);
+
+               var getIdentifierStart = function () {
+                       /*jshint validthis:true */
+                       var chr = this.peek(index);
+                       var code = chr.charCodeAt(0);
+
+                       if (code === 92) {
+                               return readUnicodeEscapeSequence();
+                       }
+
+                       if (code < 128) {
+                               if (asciiIdentifierStartTable[code]) {
+                                       index += 1;
+                                       return chr;
+                               }
+
+                               return null;
+                       }
+
+                       if (isNonAsciiIdentifierStart(code)) {
+                               index += 1;
+                               return chr;
+                       }
+
+                       return null;
+               }.bind(this);
+
+               var getIdentifierPart = function () {
+                       /*jshint validthis:true */
+                       var chr = this.peek(index);
+                       var code = chr.charCodeAt(0);
+
+                       if (code === 92) {
+                               return readUnicodeEscapeSequence();
+                       }
+
+                       if (code < 128) {
+                               if (asciiIdentifierPartTable[code]) {
+                                       index += 1;
+                                       return chr;
+                               }
+
+                               return null;
+                       }
+
+                       if (isNonAsciiIdentifierPart(code)) {
+                               index += 1;
+                               return chr;
+                       }
+
+                       return null;
+               }.bind(this);
+
+               char = getIdentifierStart();
+               if (char === null) {
+                       return null;
+               }
+
+               id = char;
+               for (;;) {
+                       char = getIdentifierPart();
+
+                       if (char === null) {
+                               break;
+                       }
+
+                       id += char;
+               }
+
+               switch (id) {
+               case "true":
+               case "false":
+                       type = Token.BooleanLiteral;
+                       break;
+               case "null":
+                       type = Token.NullLiteral;
+                       break;
+               default:
+                       type = Token.Identifier;
+               }
+
+               return {
+                       type: type,
+                       value: id
+               };
+       },
+
+       /*
+        * Extract a numeric literal out of the next sequence of
+        * characters or return 'null' if its not possible. This method
+        * supports all numeric literals described in section 7.8.3
+        * of the EcmaScript 5 specification.
+        *
+        * This method's implementation was heavily influenced by the
+        * scanNumericLiteral function in the Esprima parser's source code.
+        */
+       scanNumericLiteral: function () {
+               var index = 0;
+               var value = "";
+               var length = this.input.length;
+               var char = this.peek(index);
+               var bad;
+
+               function isDecimalDigit(str) {
+                       return (/^[0-9]$/).test(str);
+               }
+
+               function isOctalDigit(str) {
+                       return (/^[0-7]$/).test(str);
+               }
+
+               function isHexDigit(str) {
+                       return (/^[0-9a-fA-F]$/).test(str);
+               }
+
+               function isIdentifierStart(ch) {
+                       return (ch === "$") || (ch === "_") || (ch === "\\") ||
+                               (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= 
"Z");
+               }
+
+               // Numbers must start either with a decimal digit or a point.
+
+               if (char !== "." && !isDecimalDigit(char)) {
+                       return null;
+               }
+
+               if (char !== ".") {
+                       value = this.peek(index);
+                       index += 1;
+                       char = this.peek(index);
+
+                       if (value === "0") {
+                               // Base-16 numbers.
+                               if (char === "x" || char === "X") {
+                                       index += 1;
+                                       value += char;
+
+                                       while (index < length) {
+                                               char = this.peek(index);
+                                               if (!isHexDigit(char)) {
+                                                       break;
+                                               }
+                                               value += char;
+                                               index += 1;
+                                       }
+
+                                       if (value.length <= 2) { // 0x
+                                               return {
+                                                       type: 
Token.NumericLiteral,
+                                                       value: value,
+                                                       isMalformed: true
+                                               };
+                                       }
+
+                                       if (index < length) {
+                                               char = this.peek(index);
+                                               if (isIdentifierStart(char)) {
+                                                       return null;
+                                               }
+                                       }
+
+                                       return {
+                                               type: Token.NumericLiteral,
+                                               value: value,
+                                               base: 16,
+                                               isMalformed: false
+                                       };
+                               }
+
+                               // Base-8 numbers.
+                               if (isOctalDigit(char)) {
+                                       index += 1;
+                                       value += char;
+                                       bad = false;
+
+                                       while (index < length) {
+                                               char = this.peek(index);
+
+                                               // Numbers like '019' (note the 
9) are not valid octals
+                                               // but we still parse them and 
mark as malformed.
+
+                                               if (isDecimalDigit(char)) {
+                                                       bad = true;
+                                               } else if (!isOctalDigit(char)) 
{
+                                                       break;
+                                               }
+                                               value += char;
+                                               index += 1;
+                                       }
+
+                                       if (index < length) {
+                                               char = this.peek(index);
+                                               if (isIdentifierStart(char)) {
+                                                       return null;
+                                               }
+                                       }
+
+                                       return {
+                                               type: Token.NumericLiteral,
+                                               value: value,
+                                               base: 8,
+                                               isMalformed: false
+                                       };
+                               }
+
+                               // Decimal numbers that start with '0' such as 
'09' are illegal
+                               // but we still parse them and return as 
malformed.
+
+                               if (isDecimalDigit(char)) {
+                                       index += 1;
+                                       value += char;
+                               }
+                       }
+
+                       while (index < length) {
+                               char = this.peek(index);
+                               if (!isDecimalDigit(char)) {
+                                       break;
+                               }
+                               value += char;
+                               index += 1;
+                       }
+               }
+
+               // Decimal digits.
+
+               if (char === ".") {
+                       value += char;
+                       index += 1;
+
+                       while (index < length) {
+                               char = this.peek(index);
+                               if (!isDecimalDigit(char)) {
+                                       break;
+                               }
+                               value += char;
+                               index += 1;
+                       }
+               }
+
+               // Exponent part.
+
+               if (char === "e" || char === "E") {
+                       value += char;
+                       index += 1;
+                       char = this.peek(index);
+
+                       if (char === "+" || char === "-") {
+                               value += this.peek(index);
+                               index += 1;
+                       }
+
+                       char = this.peek(index);
+                       if (isDecimalDigit(char)) {
+                               value += char;
+                               index += 1;
+
+                               while (index < length) {
+                                       char = this.peek(index);
+                                       if (!isDecimalDigit(char)) {
+                                               break;
+                                       }
+                                       value += char;
+                                       index += 1;
+                               }
+                       } else {
+                               return null;
+                       }
+               }
+
+               if (index < length) {
+                       char = this.peek(index);
+                       if (isIdentifierStart(char)) {
+                               return null;
+                       }
+               }
+
+               return {
+                       type: Token.NumericLiteral,
+                       value: value,
+                       base: 10,
+                       isMalformed: !isFinite(value)
+               };
+       },
+
+       /*
+        * Extract a string out of the next sequence of characters and/or
+        * lines or return 'null' if its not possible. Since strings can
+        * span across multiple lines this method has to move the char
+        * pointer.
+        *
+        * This method recognizes pseudo-multiline JavaScript strings:
+        *
+        *   var str = "hello\
+        *   world";
+        */
+       scanStringLiteral: function (checks) {
+               /*jshint loopfunc:true */
+               var quote = this.peek();
+
+               // String must start with a quote.
+               if (quote !== "\"" && quote !== "'") {
+                       return null;
+               }
+
+               // In JSON strings must always use double quotes.
+               this.triggerAsync("warning", {
+                       code: "W108",
+                       line: this.line,
+                       character: this.char // +1?
+               }, checks, function () { return state.jsonMode && quote !== 
"\""; });
+
+               var value = "";
+               var startLine = this.line;
+               var startChar = this.char;
+               var allowNewLine = false;
+
+               this.skip();
+
+               while (this.peek() !== quote) {
+                       while (this.peek() === "") { // End Of Line
+
+                               // If an EOL is not preceded by a backslash, 
show a warning
+                               // and proceed like it was a legit multi-line 
string where
+                               // author simply forgot to escape the newline 
symbol.
+                               //
+                               // Another approach is to implicitly close a 
string on EOL
+                               // but it generates too many false positives.
+
+                               if (!allowNewLine) {
+                                       this.trigger("warning", {
+                                               code: "W112",
+                                               line: this.line,
+                                               character: this.char
+                                       });
+                               } else {
+                                       allowNewLine = false;
+
+                                       // Otherwise show a warning if multistr 
option was not set.
+                                       // For JSON, show warning no matter 
what.
+
+                                       this.triggerAsync("warning", {
+                                               code: "W043",
+                                               line: this.line,
+                                               character: this.char
+                                       }, checks, function () { return 
!state.option.multistr; });
+
+                                       this.triggerAsync("warning", {
+                                               code: "W042",
+                                               line: this.line,
+                                               character: this.char
+                                       }, checks, function () { return 
state.jsonMode && state.option.multistr; });
+                               }
+
+                               // If we get an EOF inside of an unclosed 
string, show an
+                               // error and implicitly close it at the EOF 
point.
+
+                               if (!this.nextLine()) {
+                                       this.trigger("error", {
+                                               code: "E029",
+                                               line: startLine,
+                                               character: startChar
+                                       });
+
+                                       return {
+                                               type: Token.StringLiteral,
+                                               value: value,
+                                               isUnclosed: true,
+                                               quote: quote
+                                       };
+                               }
+                       }
+
+                       allowNewLine = false;
+                       var char = this.peek();
+                       var jump = 1; // A length of a jump, after we're done
+                                     // parsing this character.
+
+                       if (char < " ") {
+                               // Warn about a control character in a string.
+                               this.trigger("warning", {
+                                       code: "W113",
+                                       line: this.line,
+                                       character: this.char,
+                                       data: [ "<non-printable>" ]
+                               });
+                       }
+
+                       // Special treatment for some escaped characters.
+
+                       if (char === "\\") {
+                               this.skip();
+                               char = this.peek();
+
+                               switch (char) {
+                               case "'":
+                                       this.triggerAsync("warning", {
+                                               code: "W114",
+                                               line: this.line,
+                                               character: this.char,
+                                               data: [ "\\'" ]
+                                       }, checks, function () {return 
state.jsonMode; });
+                                       break;
+                               case "b":
+                                       char = "\\b";
+                                       break;
+                               case "f":
+                                       char = "\\f";
+                                       break;
+                               case "n":
+                                       char = "\\n";
+                                       break;
+                               case "r":
+                                       char = "\\r";
+                                       break;
+                               case "t":
+                                       char = "\\t";
+                                       break;
+                               case "0":
+                                       char = "\\0";
+
+                                       // Octal literals fail in strict mode.
+                                       // Check if the number is between 00 
and 07.
+                                       var n = parseInt(this.peek(1), 10);
+                                       this.triggerAsync("warning", {
+                                               code: "W115",
+                                               line: this.line,
+                                               character: this.char
+                                       }, checks,
+                                       function () { return n >= 0 && n <= 7 
&& state.directive["use strict"]; });
+                                       break;
+                               case "u":
+                                       char = 
String.fromCharCode(parseInt(this.input.substr(1, 4), 16));
+                                       jump = 5;
+                                       break;
+                               case "v":
+                                       this.triggerAsync("warning", {
+                                               code: "W114",
+                                               line: this.line,
+                                               character: this.char,
+                                               data: [ "\\v" ]
+                                       }, checks, function () { return 
state.jsonMode; });
+
+                                       char = "\v";
+                                       break;
+                               case "x":
+                                       var     x = 
parseInt(this.input.substr(1, 2), 16);
+
+                                       this.triggerAsync("warning", {
+                                               code: "W114",
+                                               line: this.line,
+                                               character: this.char,
+                                               data: [ "\\x-" ]
+                                       }, checks, function () { return 
state.jsonMode; });
+
+                                       char = String.fromCharCode(x);
+                                       jump = 3;
+                                       break;
+                               case "\\":
+                                       char = "\\\\";
+                                       break;
+                               case "\"":
+                                       char = "\\\"";
+                                       break;
+                               case "/":
+                                       break;
+                               case "":
+                                       allowNewLine = true;
+                                       char = "";
+                                       break;
+                               case "!":
+                                       if (value.slice(value.length - 2) === 
"<") {
+                                               break;
+                                       }
+
+                                       /*falls through */
+                               default:
+                                       // Weird escaping.
+                                       this.trigger("warning", {
+                                               code: "W044",
+                                               line: this.line,
+                                               character: this.char
+                                       });
+                               }
+                       }
+
+                       value += char;
+                       this.skip(jump);
+               }
+
+               this.skip();
+               return {
+                       type: Token.StringLiteral,
+                       value: value,
+                       isUnclosed: false,
+                       quote: quote
+               };
+       },
+
+       /*
+        * Extract a regular expression out of the next sequence of
+        * characters and/or lines or return 'null' if its not possible.
+        *
+        * This method is platform dependent: it accepts almost any
+        * regular expression values but then tries to compile and run
+        * them using system's RegExp object. This means that there are
+        * rare edge cases where one JavaScript engine complains about
+        * your regular expression while others don't.
+        */
+       scanRegExp: function () {
+               var index = 0;
+               var length = this.input.length;
+               var char = this.peek();
+               var value = char;
+               var body = "";
+               var flags = [];
+               var malformed = false;
+               var isCharSet = false;
+               var terminated;
+
+               var scanUnexpectedChars = function () {
+                       // Unexpected control character
+                       if (char < " ") {
+                               malformed = true;
+                               this.trigger("warning", {
+                                       code: "W048",
+                                       line: this.line,
+                                       character: this.char
+                               });
+                       }
+
+                       // Unexpected escaped character
+                       if (char === "<") {
+                               malformed = true;
+                               this.trigger("warning", {
+                                       code: "W049",
+                                       line: this.line,
+                                       character: this.char,
+                                       data: [ char ]
+                               });
+                       }
+               }.bind(this);
+
+               // Regular expressions must start with '/'
+               if (!this.prereg || char !== "/") {
+                       return null;
+               }
+
+               index += 1;
+               terminated = false;
+
+               // Try to get everything in between slashes. A couple of
+               // cases aside (see scanUnexpectedChars) we don't really
+               // care whether the resulting expression is valid or not.
+               // We will check that later using the RegExp object.
+
+               while (index < length) {
+                       char = this.peek(index);
+                       value += char;
+                       body += char;
+
+                       if (isCharSet) {
+                               if (char === "]") {
+                                       if (this.peek(index - 1) !== "\\" || 
this.peek(index - 2) === "\\") {
+                                               isCharSet = false;
+                                       }
+                               }
+
+                               if (char === "\\") {
+                                       index += 1;
+                                       char = this.peek(index);
+                                       body += char;
+                                       value += char;
+
+                                       scanUnexpectedChars();
+                               }
+
+                               index += 1;
+                               continue;
+                       }
+
+                       if (char === "\\") {
+                               index += 1;
+                               char = this.peek(index);
+                               body += char;
+                               value += char;
+
+                               scanUnexpectedChars();
+
+                               if (char === "/") {
+                                       index += 1;
+                                       continue;
+                               }
+
+                               if (char === "[") {
+                                       index += 1;
+                                       continue;
+                               }
+                       }
+
+                       if (char === "[") {
+                               isCharSet = true;
+                               index += 1;
+                               continue;
+                       }
+
+                       if (char === "/") {
+                               body = body.substr(0, body.length - 1);
+                               terminated = true;
+                               index += 1;
+                               break;
+                       }
+
+                       index += 1;
+               }
+
+               // A regular expression that was never closed is an
+               // error from which we cannot recover.
+
+               if (!terminated) {
+                       this.trigger("error", {
+                               code: "E015",
+                               line: this.line,
+                               character: this.from
+                       });
+
+                       return void this.trigger("fatal", {
+                               line: this.line,
+                               from: this.from
+                       });
+               }
+
+               // Parse flags (if any).
+
+               while (index < length) {
+                       char = this.peek(index);
+                       if (!/[gim]/.test(char)) {
+                               break;
+                       }
+                       flags.push(char);
+                       value += char;
+                       index += 1;
+               }
+
+               // Check regular expression for correctness.
+
+               try {
+                       new RegExp(body, flags.join(""));
+               } catch (err) {
+                       malformed = true;
+                       this.trigger("error", {
+                               code: "E016",
+                               line: this.line,
+                               character: this.char,
+                               data: [ err.message ] // Platform dependent!
+                       });
+               }
+
+               return {
+                       type: Token.RegExp,
+                       value: value,
+                       flags: flags,
+                       isMalformed: malformed
+               };
+       },
+
+       /*
+        * Scan for any occurence of mixed tabs and spaces. If smarttabs option
+        * is on, ignore tabs followed by spaces.
+        *
+        * Tabs followed by one space followed by a block comment are allowed.
+        */
+       scanMixedSpacesAndTabs: function () {
+               var at, match;
+
+               if (state.option.smarttabs) {
+                       // Negative look-behind for "//"
+                       match = this.input.match(/(\/\/|^\s?\*)? \t/);
+                       at = match && !match[1] ? 0 : -1;
+               } else {
+                       at = this.input.search(/ \t|\t [^\*]/);
+               }
+
+               return at;
+       },
+
+       /*
+        * Scan for characters that get silently deleted by one or more 
browsers.
+        */
+       scanUnsafeChars: function () {
+               return this.input.search(reg.unsafeChars);
+       },
+
+       /*
+        * Produce the next raw token or return 'null' if no tokens can be 
matched.
+        * This method skips over all space characters.
+        */
+       next: function (checks) {
+               this.from = this.char;
+
+               // Move to the next non-space character.
+               var start;
+               if (/\s/.test(this.peek())) {
+                       start = this.char;
+
+                       while (/\s/.test(this.peek())) {
+                               this.from += 1;
+                               this.skip();
+                       }
+
+                       if (this.peek() === "") { // EOL
+                               if (!/^\s*$/.test(this.getLines()[this.line - 
1]) && state.option.trailing) {
+                                       this.trigger("warning", { code: "W102", 
line: this.line, character: start });
+                               }
+                       }
+               }
+
+               // Methods that work with multi-line structures and move the
+               // character pointer.
+
+               var match = this.scanComments() ||
+                       this.scanStringLiteral(checks);
+
+               if (match) {
+                       return match;
+               }
+
+               // Methods that don't move the character pointer.
+
+               match =
+                       this.scanRegExp() ||
+                       this.scanPunctuator() ||
+                       this.scanKeyword() ||
+                       this.scanIdentifier() ||
+                       this.scanNumericLiteral();
+
+               if (match) {
+                       this.skip(match.value.length);
+                       return match;
+               }
+
+               // No token could be matched, give up.
+
+               return null;
+       },
+
+       /*
+        * Switch to the next line and reset all char pointers. Once
+        * switched, this method also checks for mixed spaces and tabs
+        * and other minor warnings.
+        */
+       nextLine: function () {
+               var char;
+
+               if (this.line >= this.getLines().length) {
+                       return false;
+               }
+
+               this.input = this.getLines()[this.line];
+               this.line += 1;
+               this.char = 1;
+               this.from = 1;
+
+               var startsWith = function (prefix) {
+                       return this.indexOf(prefix) === 0;
+               };
+               var endsWith = function (suffix) {
+                       return this.indexOf(suffix, this.length - 
suffix.length) !== -1;
+               };
+               var inputTrimmed = this.input.trim();
+
+               // If we are ignoring linter errors, replace the input with 
empty string
+               // if it doesn't already at least start or end a multi-line 
comment
+               if (state.ignoreLinterErrors === true) {
+                       if (! (startsWith.call(inputTrimmed, "/*") || 
endsWith.call(inputTrimmed, "*/"))) {
+                               this.input = "";
+                       }
+               }
+
+               char = this.scanMixedSpacesAndTabs();
+               if (char >= 0) {
+                       this.trigger("warning", { code: "W099", line: 
this.line, character: char + 1 });
+               }
+
+               this.input = this.input.replace(/\t/g, state.tab);
+               char = this.scanUnsafeChars();
+
+               if (char >= 0) {
+                       this.trigger("warning", { code: "W100", line: 
this.line, character: char });
+               }
+
+               // If there is a limit on line length, warn when lines get too
+               // long.
+
+               if (state.option.maxlen && state.option.maxlen < 
this.input.length) {
+                       var inComment = state.tokens.curr.comment ||
+                               startsWith.call(inputTrimmed, "//") ||
+                               startsWith.call(inputTrimmed, "/*");
+
+                       var shouldTriggerError = !inComment || 
!reg.maxlenException.test(inputTrimmed);
+
+                       if (shouldTriggerError) {
+                               this.trigger("warning", { code: "W101", line: 
this.line, character: this.input.length });
+                       }
+               }
+
+               return true;
+       },
+
+       /*
+        * This is simply a synonym for nextLine() method with a friendlier
+        * public name.
+        */
+       start: function () {
+               this.nextLine();
+       },
+
+       /*
+        * Produce the next token. This function is called by advance() to get
+        * the next token. It retuns a token in a JSLint-compatible format.
+        */
+       token: function () {
+               /*jshint loopfunc:true */
+               var checks = asyncTrigger();
+               var token;
+
+
+               function isReserved(token, isProperty) {
+                       if (!token.reserved) {
+                               return false;
+                       }
+                       var meta = token.meta;
+
+                       if (meta && meta.isFutureReservedWord && 
state.option.inES5()) {
+                               // ES3 FutureReservedWord in an ES5 environment.
+                               if (!meta.es5) {
+                                       return false;
+                               }
+
+                               // Some ES5 FutureReservedWord identifiers are 
active only
+                               // within a strict mode environment.
+                               if (meta.strictOnly) {
+                                       if (!state.option.strict && 
!state.directive["use strict"]) {
+                                               return false;
+                                       }
+                               }
+
+                               if (isProperty) {
+                                       return false;
+                               }
+                       }
+
+                       return true;
+               }
+
+               // Produce a token object.
+               var create = function (type, value, isProperty) {
+                       /*jshint validthis:true */
+                       var obj;
+
+                       if (type !== "(endline)" && type !== "(end)") {
+                               this.prereg = false;
+                       }
+
+                       if (type === "(punctuator)") {
+                               switch (value) {
+                               case ".":
+                               case ")":
+                               case "~":
+                               case "#":
+                               case "]":
+                                       this.prereg = false;
+                                       break;
+                               default:
+                                       this.prereg = true;
+                               }
+
+                               obj = Object.create(state.syntax[value] || 
state.syntax["(error)"]);
+                       }
+
+                       if (type === "(identifier)") {
+                               if (value === "return" || value === "case" || 
value === "typeof") {
+                                       this.prereg = true;
+                               }
+
+                               if (_.has(state.syntax, value)) {
+                                       obj = Object.create(state.syntax[value] 
|| state.syntax["(error)"]);
+
+                                       // If this can't be a reserved keyword, 
reset the object.
+                                       if (!isReserved(obj, isProperty && type 
=== "(identifier)")) {
+                                               obj = null;
+                                       }
+                               }
+                       }
+
+                       if (!obj) {
+                               obj = Object.create(state.syntax[type]);
+                       }
+
+                       obj.identifier = (type === "(identifier)");
+                       obj.type = obj.type || type;
+                       obj.value = value;
+                       obj.line = this.line;
+                       obj.character = this.char;
+                       obj.from = this.from;
+
+                       if (isProperty && obj.identifier) {
+                               obj.isProperty = isProperty;
+                       }
+
+                       obj.check = checks.check;
+
+                       return obj;
+               }.bind(this);
+
+               for (;;) {
+                       if (!this.input.length) {
+                               return create(this.nextLine() ? "(endline)" : 
"(end)", "");
+                       }
+
+                       token = this.next(checks);
+
+                       if (!token) {
+                               if (this.input.length) {
+                                       // Unexpected character.
+                                       this.trigger("error", {
+                                               code: "E024",
+                                               line: this.line,
+                                               character: this.char,
+                                               data: [ this.peek() ]
+                                       });
+
+                                       this.input = "";
+                               }
+
+                               continue;
+                       }
+
+                       switch (token.type) {
+                       case Token.StringLiteral:
+                               this.triggerAsync("String", {
+                                       line: this.line,
+                                       char: this.char,
+                                       from: this.from,
+                                       value: token.value,
+                                       quote: token.quote
+                               }, checks, function () { return true; });
+
+                               return create("(string)", token.value);
+                       case Token.Identifier:
+                               this.trigger("Identifier", {
+                                       line: this.line,
+                                       char: this.char,
+                                       from: this.form,
+                                       name: token.value,
+                                       isProperty: state.tokens.curr.id === "."
+                               });
+
+                               /* falls through */
+                       case Token.Keyword:
+                       case Token.NullLiteral:
+                       case Token.BooleanLiteral:
+                               return create("(identifier)", token.value, 
state.tokens.curr.id === ".");
+
+                       case Token.NumericLiteral:
+                               if (token.isMalformed) {
+                                       this.trigger("warning", {
+                                               code: "W045",
+                                               line: this.line,
+                                               character: this.char,
+                                               data: [ token.value ]
+                                       });
+                               }
+
+                               this.triggerAsync("warning", {
+                                       code: "W114",
+                                       line: this.line,
+                                       character: this.char,
+                                       data: [ "0x-" ]
+                               }, checks, function () { return token.base === 
16 && state.jsonMode; });
+
+                               this.triggerAsync("warning", {
+                                       code: "W115",
+                                       line: this.line,
+                                       character: this.char
+                               }, checks, function () {
+                                       return state.directive["use strict"] && 
token.base === 8;
+                               });
+
+                               this.trigger("Number", {
+                                       line: this.line,
+                                       char: this.char,
+                                       from: this.from,
+                                       value: token.value,
+                                       base: token.base,
+                                       isMalformed: token.malformed
+                               });
+
+                               return create("(number)", token.value);
+
+                       case Token.RegExp:
+                               return create("(regexp)", token.value);
+
+                       case Token.Comment:
+                               state.tokens.curr.comment = true;
+
+                               if (token.isSpecial) {
+                                       return {
+                                               id: '(comment)',
+                                               value: token.value,
+                                               body: token.body,
+                                               type: token.commentType,
+                                               isSpecial: token.isSpecial,
+                                               line: this.line,
+                                               character: this.char,
+                                               from: this.from
+                                       };
+                               }
+
+                               break;
+
+                       case "":
+                               break;
+
+                       default:
+                               return create("(punctuator)", token.value);
+                       }
+               }
+       }
+};
+
+exports.Lexer = Lexer;

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/messages.js
----------------------------------------------------------------------
diff --git 
a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/messages.js
 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/messages.js
new file mode 100644
index 0000000..fd5221e
--- /dev/null
+++ 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/messages.js
@@ -0,0 +1,221 @@
+"use strict";
+
+var _ = require("underscore");
+
+var errors = {
+       // JSHint options
+       E001: "Bad option: '{a}'.",
+       E002: "Bad option value.",
+
+       // JSHint input
+       E003: "Expected a JSON value.",
+       E004: "Input is neither a string nor an array of strings.",
+       E005: "Input is empty.",
+       E006: "Unexpected early end of program.",
+
+       // Strict mode
+       E007: "Missing \"use strict\" statement.",
+       E008: "Strict violation.",
+       E009: "Option 'validthis' can't be used in a global scope.",
+       E010: "'with' is not allowed in strict mode.",
+
+       // Constants
+       E011: "const '{a}' has already been declared.",
+       E012: "const '{a}' is initialized to 'undefined'.",
+       E013: "Attempting to override '{a}' which is a constant.",
+
+       // Regular expressions
+       E014: "A regular expression literal can be confused with '/='.",
+       E015: "Unclosed regular expression.",
+       E016: "Invalid regular expression.",
+
+       // Tokens
+       E017: "Unclosed comment.",
+       E018: "Unbegun comment.",
+       E019: "Unmatched '{a}'.",
+       E020: "Expected '{a}' to match '{b}' from line {c} and instead saw 
'{d}'.",
+       E021: "Expected '{a}' and instead saw '{b}'.",
+       E022: "Line breaking error '{a}'.",
+       E023: "Missing '{a}'.",
+       E024: "Unexpected '{a}'.",
+       E025: "Missing ':' on a case clause.",
+       E026: "Missing '}' to match '{' from line {a}.",
+       E027: "Missing ']' to match '[' from line {a}.",
+       E028: "Illegal comma.",
+       E029: "Unclosed string.",
+
+       // Everything else
+       E030: "Expected an identifier and instead saw '{a}'.",
+       E031: "Bad assignment.", // FIXME: Rephrase
+       E032: "Expected a small integer or 'false' and instead saw '{a}'.",
+       E033: "Expected an operator and instead saw '{a}'.",
+       E034: "get/set are ES5 features.",
+       E035: "Missing property name.",
+       E036: "Expected to see a statement and instead saw a block.",
+       E037: null,
+       E038: null,
+       E039: "Function declarations are not invocable. Wrap the whole function 
invocation in parens.",
+       E040: "Each value should have its own case label.",
+       E041: "Unrecoverable syntax error.",
+       E042: "Stopping.",
+       E043: "Too many errors.",
+       E044: null,
+       E045: "Invalid for each loop.",
+       E046: "A yield statement shall be within a generator function (with 
syntax: `function*`)",
+       E047: null, // Vacant
+       E048: "Let declaration not directly within block.",
+       E049: "A {a} cannot be named '{b}'.",
+       E050: "Mozilla requires the yield expression to be parenthesized here.",
+       E051: "Regular parameters cannot come after default parameters."
+};
+
+var warnings = {
+       W001: "'hasOwnProperty' is a really bad name.",
+       W002: "Value of '{a}' may be overwritten in IE 8 and earlier.",
+       W003: "'{a}' was used before it was defined.",
+       W004: "'{a}' is already defined.",
+       W005: "A dot following a number can be confused with a decimal point.",
+       W006: "Confusing minuses.",
+       W007: "Confusing pluses.",
+       W008: "A leading decimal point can be confused with a dot: '{a}'.",
+       W009: "The array literal notation [] is preferrable.",
+       W010: "The object literal notation {} is preferrable.",
+       W011: "Unexpected space after '{a}'.",
+       W012: "Unexpected space before '{a}'.",
+       W013: "Missing space after '{a}'.",
+       W014: "Bad line breaking before '{a}'.",
+       W015: "Expected '{a}' to have an indentation at {b} instead at {c}.",
+       W016: "Unexpected use of '{a}'.",
+       W017: "Bad operand.",
+       W018: "Confusing use of '{a}'.",
+       W019: "Use the isNaN function to compare with NaN.",
+       W020: "Read only.",
+       W021: "'{a}' is a function.",
+       W022: "Do not assign to the exception parameter.",
+       W023: "Expected an identifier in an assignment and instead saw a 
function invocation.",
+       W024: "Expected an identifier and instead saw '{a}' (a reserved word).",
+       W025: "Missing name in function declaration.",
+       W026: "Inner functions should be listed at the top of the outer 
function.",
+       W027: "Unreachable '{a}' after '{b}'.",
+       W028: "Label '{a}' on {b} statement.",
+       W030: "Expected an assignment or function call and instead saw an 
expression.",
+       W031: "Do not use 'new' for side effects.",
+       W032: "Unnecessary semicolon.",
+       W033: "Missing semicolon.",
+       W034: "Unnecessary directive \"{a}\".",
+       W035: "Empty block.",
+       W036: "Unexpected /*member '{a}'.",
+       W037: "'{a}' is a statement label.",
+       W038: "'{a}' used out of scope.",
+       W039: "'{a}' is not allowed.",
+       W040: "Possible strict violation.",
+       W041: "Use '{a}' to compare with '{b}'.",
+       W042: "Avoid EOL escaping.",
+       W043: "Bad escaping of EOL. Use option multistr if needed.",
+       W044: "Bad or unnecessary escaping.",
+       W045: "Bad number '{a}'.",
+       W046: "Don't use extra leading zeros '{a}'.",
+       W047: "A trailing decimal point can be confused with a dot: '{a}'.",
+       W048: "Unexpected control character in regular expression.",
+       W049: "Unexpected escaped character '{a}' in regular expression.",
+       W050: "JavaScript URL.",
+       W051: "Variables should not be deleted.",
+       W052: "Unexpected '{a}'.",
+       W053: "Do not use {a} as a constructor.",
+       W054: "The Function constructor is a form of eval.",
+       W055: "A constructor name should start with an uppercase letter.",
+       W056: "Bad constructor.",
+       W057: "Weird construction. Is 'new' necessary?",
+       W058: "Missing '()' invoking a constructor.",
+       W059: "Avoid arguments.{a}.",
+       W060: "document.write can be a form of eval.",
+       W061: "eval can be harmful.",
+       W062: "Wrap an immediate function invocation in parens " +
+               "to assist the reader in understanding that the expression " +
+               "is the result of a function, and not the function itself.",
+       W063: "Math is not a function.",
+       W064: "Missing 'new' prefix when invoking a constructor.",
+       W065: "Missing radix parameter.",
+       W066: "Implied eval. Consider passing a function instead of a string.",
+       W067: "Bad invocation.",
+       W068: "Wrapping non-IIFE function literals in parens is unnecessary.",
+       W069: "['{a}'] is better written in dot notation.",
+       W070: "Extra comma. (it breaks older versions of IE)",
+       W071: "This function has too many statements. ({a})",
+       W072: "This function has too many parameters. ({a})",
+       W073: "Blocks are nested too deeply. ({a})",
+       W074: "This function's cyclomatic complexity is too high. ({a})",
+       W075: "Duplicate key '{a}'.",
+       W076: "Unexpected parameter '{a}' in get {b} function.",
+       W077: "Expected a single parameter in set {a} function.",
+       W078: "Setter is defined without getter.",
+       W079: "Redefinition of '{a}'.",
+       W080: "It's not necessary to initialize '{a}' to 'undefined'.",
+       W081: "Too many var statements.",
+       W082: "Function declarations should not be placed in blocks. " +
+               "Use a function expression or move the statement to the top of 
" +
+               "the outer function.",
+       W083: "Don't make functions within a loop.",
+       W084: "Expected a conditional expression and instead saw an 
assignment.",
+       W085: "Don't use 'with'.",
+       W086: "Expected a 'break' statement before '{a}'.",
+       W087: "Forgotten 'debugger' statement?",
+       W088: "Creating global 'for' variable. Should be 'for (var {a} ...'.",
+       W089: "The body of a for in should be wrapped in an if statement to 
filter " +
+               "unwanted properties from the prototype.",
+       W090: "'{a}' is not a statement label.",
+       W091: "'{a}' is out of scope.",
+       W093: "Did you mean to return a conditional instead of an assignment?",
+       W094: "Unexpected comma.",
+       W095: "Expected a string and instead saw {a}.",
+       W096: "The '{a}' key may produce unexpected results.",
+       W097: "Use the function form of \"use strict\".",
+       W098: "'{a}' is defined but never used.",
+       W099: "Mixed spaces and tabs.",
+       W100: "This character may get silently deleted by one or more 
browsers.",
+       W101: "Line is too long.",
+       W102: "Trailing whitespace.",
+       W103: "The '{a}' property is deprecated.",
+       W104: "'{a}' is only available in JavaScript 1.7.",
+       W105: "Unexpected {a} in '{b}'.",
+       W106: "Identifier '{a}' is not in camel case.",
+       W107: "Script URL.",
+       W108: "Strings must use doublequote.",
+       W109: "Strings must use singlequote.",
+       W110: "Mixed double and single quotes.",
+       W112: "Unclosed string.",
+       W113: "Control character in string: {a}.",
+       W114: "Avoid {a}.",
+       W115: "Octal literals are not allowed in strict mode.",
+       W116: "Expected '{a}' and instead saw '{b}'.",
+       W117: "'{a}' is not defined.",
+       W118: "'{a}' is only available in Mozilla JavaScript extensions (use 
moz option).",
+       W119: "'{a}' is only available in ES6 (use esnext option).",
+       W120: "You might be leaking a variable ({a}) here.",
+       W121: "Extending prototype of native object: '{a}'.",
+       W122: "Invalid typeof value '{a}'",
+       W123: "'{a}' is already defined in outer scope.",
+       W124: "A generator function shall contain a yield statement."
+};
+
+var info = {
+       I001: "Comma warnings can be turned off with 'laxcomma'.",
+       I002: "Reserved words as properties can be used under the 'es5' 
option.",
+       I003: "ES5 option is now set per default"
+};
+
+exports.errors = {};
+exports.warnings = {};
+exports.info = {};
+
+_.each(errors, function (desc, code) {
+       exports.errors[code] = { code: code, desc: desc };
+});
+
+_.each(warnings, function (desc, code) {
+       exports.warnings[code] = { code: code, desc: desc };
+});
+
+_.each(info, function (desc, code) {
+       exports.info[code] = { code: code, desc: desc };
+});

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/reg.js
----------------------------------------------------------------------
diff --git 
a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/reg.js 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/reg.js
new file mode 100644
index 0000000..6c43b7e
--- /dev/null
+++ 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/reg.js
@@ -0,0 +1,38 @@
+/*
+ * Regular expressions. Some of these are stupidly long.
+ */
+
+/*jshint maxlen:1000 */
+
+"use string";
+
+// Unsafe comment or string (ax)
+exports.unsafeString =
+       /@cc|<\/?|script|\]\s*\]|<\s*!|&lt/i;
+
+// Unsafe characters that are silently deleted by one or more browsers (cx)
+exports.unsafeChars =
+       
/[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/;
+
+// Characters in strings that need escaping (nx and nxg)
+exports.needEsc =
+       
/[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/;
+
+exports.needEscGlobal =
+       
/[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+
+// Star slash (lx)
+exports.starSlash = /\*\//;
+
+// Identifier (ix)
+exports.identifier = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/;
+
+// JavaScript URL (jx)
+exports.javascriptURL = 
/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i;
+
+// Catches /* falls through */ comments (ft)
+exports.fallsThrough = /^\s*\/\*\s*falls?\sthrough\s*\*\/\s*$/;
+
+// very conservative rule (eg: only one space between the start of the comment 
and the first character)
+// to relax the maxlen option
+exports.maxlenException = /^(?:(?:\/\/|\/\*|\*) ?)?[^ ]+$/;

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/state.js
----------------------------------------------------------------------
diff --git 
a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/state.js
 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/state.js
new file mode 100644
index 0000000..c2538ff
--- /dev/null
+++ 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/state.js
@@ -0,0 +1,26 @@
+"use strict";
+
+var state = {
+       syntax: {},
+
+       reset: function () {
+               this.tokens = {
+                       prev: null,
+                       next: null,
+                       curr: null
+               };
+
+               this.option = {};
+               this.ignored = {};
+               this.directive = {};
+               this.jsonMode = false;
+               this.jsonWarnings = [];
+               this.lines = [];
+               this.tab = "";
+               this.cache = {}; // Node.JS doesn't have Map. Sniff.
+               this.ignoreLinterErrors = false;    // Blank out 
non-multi-line-commented
+                                                                               
        // lines when ignoring linter errors
+       }
+};
+
+exports.state = state;

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/style.js
----------------------------------------------------------------------
diff --git 
a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/style.js
 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/style.js
new file mode 100644
index 0000000..a768b97
--- /dev/null
+++ 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/style.js
@@ -0,0 +1,171 @@
+"use strict";
+
+exports.register = function (linter) {
+       // Check for properties named __proto__. This special property was
+       // deprecated and then re-introduced for ES6.
+
+       linter.on("Identifier", function style_scanProto(data) {
+               if (linter.getOption("proto")) {
+                       return;
+               }
+
+               if (data.name === "__proto__") {
+                       linter.warn("W103", {
+                               line: data.line,
+                               char: data.char,
+                               data: [ data.name ]
+                       });
+               }
+       });
+
+       // Check for properties named __iterator__. This is a special property
+       // available only in browsers with JavaScript 1.7 implementation.
+
+       linter.on("Identifier", function style_scanIterator(data) {
+               if (linter.getOption("iterator")) {
+                       return;
+               }
+
+               if (data.name === "__iterator__") {
+                       linter.warn("W104", {
+                               line: data.line,
+                               char: data.char,
+                               data: [ data.name ]
+                       });
+               }
+       });
+
+       // Check for dangling underscores.
+
+       linter.on("Identifier", function style_scanDangling(data) {
+               if (!linter.getOption("nomen")) {
+                       return;
+               }
+
+               // Underscore.js
+               if (data.name === "_") {
+                       return;
+               }
+
+               // In Node, __dirname and __filename should be ignored.
+               if (linter.getOption("node")) {
+                       if (/^(__dirname|__filename)$/.test(data.name) && 
!data.isProperty) {
+                               return;
+                       }
+               }
+
+               if (/^(_+.*|.*_+)$/.test(data.name)) {
+                       linter.warn("W105", {
+                               line: data.line,
+                               char: data.from,
+                               data: [ "dangling '_'", data.name ]
+                       });
+               }
+       });
+
+       // Check that all identifiers are using camelCase notation.
+       // Exceptions: names like MY_VAR and _myVar.
+
+       linter.on("Identifier", function style_scanCamelCase(data) {
+               if (!linter.getOption("camelcase")) {
+                       return;
+               }
+
+               if (data.name.replace(/^_+|_+$/g, "").indexOf("_") > -1 && 
!data.name.match(/^[A-Z0-9_]*$/)) {
+                       linter.warn("W106", {
+                               line: data.line,
+                               char: data.from,
+                               data: [ data.name ]
+                       });
+               }
+       });
+
+       // Enforce consistency in style of quoting.
+
+       linter.on("String", function style_scanQuotes(data) {
+               var quotmark = linter.getOption("quotmark");
+               var code;
+
+               if (!quotmark) {
+                       return;
+               }
+
+               // If quotmark is set to 'single' warn about all double-quotes.
+
+               if (quotmark === "single" && data.quote !== "'") {
+                       code = "W109";
+               }
+
+               // If quotmark is set to 'double' warn about all single-quotes.
+
+               if (quotmark === "double" && data.quote !== "\"") {
+                       code = "W108";
+               }
+
+               // If quotmark is set to true, remember the first quotation 
style
+               // and then warn about all others.
+
+               if (quotmark === true) {
+                       if (!linter.getCache("quotmark")) {
+                               linter.setCache("quotmark", data.quote);
+                       }
+
+                       if (linter.getCache("quotmark") !== data.quote) {
+                               code = "W110";
+                       }
+               }
+
+               if (code) {
+                       linter.warn(code, {
+                               line: data.line,
+                               char: data.char,
+                       });
+               }
+       });
+
+       linter.on("Number", function style_scanNumbers(data) {
+               if (data.value.charAt(0) === ".") {
+                       // Warn about a leading decimal point.
+                       linter.warn("W008", {
+                               line: data.line,
+                               char: data.char,
+                               data: [ data.value ]
+                       });
+               }
+
+               if (data.value.substr(data.value.length - 1) === ".") {
+                       // Warn about a trailing decimal point.
+                       linter.warn("W047", {
+                               line: data.line,
+                               char: data.char,
+                               data: [ data.value ]
+                       });
+               }
+
+               if (/^00+/.test(data.value)) {
+                       // Multiple leading zeroes.
+                       linter.warn("W046", {
+                               line: data.line,
+                               char: data.char,
+                               data: [ data.value ]
+                       });
+               }
+       });
+
+       // Warn about script URLs.
+
+       linter.on("String", function style_scanJavaScriptURLs(data) {
+               var re = 
/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i;
+
+               if (linter.getOption("scripturl")) {
+                       return;
+               }
+
+               if (re.test(data.value)) {
+                       linter.warn("W107", {
+                               line: data.line,
+                               char: data.char
+                       });
+               }
+       });
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/vars.js
----------------------------------------------------------------------
diff --git 
a/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/vars.js 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/vars.js
new file mode 100644
index 0000000..2a127d7
--- /dev/null
+++ 
b/ApacheCMDA_Backend_1.0/project/target/node-modules/webjars/jshint/src/vars.js
@@ -0,0 +1,596 @@
+// jshint -W001
+
+"use strict";
+
+// Identifiers provided by the ECMAScript standard.
+
+exports.reservedVars = {
+       arguments : false,
+       NaN       : false
+};
+
+exports.ecmaIdentifiers = {
+       Array              : false,
+       Boolean            : false,
+       Date               : false,
+       decodeURI          : false,
+       decodeURIComponent : false,
+       encodeURI          : false,
+       encodeURIComponent : false,
+       Error              : false,
+       "eval"             : false,
+       EvalError          : false,
+       Function           : false,
+       hasOwnProperty     : false,
+       isFinite           : false,
+       isNaN              : false,
+       JSON               : false,
+       Math               : false,
+       Map                : false,
+       Number             : false,
+       Object             : false,
+       parseInt           : false,
+       parseFloat         : false,
+       RangeError         : false,
+       ReferenceError     : false,
+       RegExp             : false,
+       Set                : false,
+       String             : false,
+       SyntaxError        : false,
+       TypeError          : false,
+       URIError           : false,
+       WeakMap            : false
+};
+
+// Global variables commonly provided by a web browser environment.
+
+exports.browser = {
+       Audio                : false,
+       Blob                 : false,
+       addEventListener     : false,
+       applicationCache     : false,
+       atob                 : false,
+       blur                 : false,
+       btoa                 : false,
+       CanvasGradient       : false,
+       CanvasPattern        : false,
+       CanvasRenderingContext2D: false,
+       clearInterval        : false,
+       clearTimeout         : false,
+       close                : false,
+       closed               : false,
+       CustomEvent          : false,
+       DOMParser            : false,
+       defaultStatus        : false,
+       document             : false,
+       Element              : false,
+       ElementTimeControl   : false,
+       event                : false,
+       FileReader           : false,
+       FormData             : false,
+       focus                : false,
+       frames               : false,
+       getComputedStyle     : false,
+       HTMLElement          : false,
+       HTMLAnchorElement    : false,
+       HTMLBaseElement      : false,
+       HTMLBlockquoteElement: false,
+       HTMLBodyElement      : false,
+       HTMLBRElement        : false,
+       HTMLButtonElement    : false,
+       HTMLCanvasElement    : false,
+       HTMLDirectoryElement : false,
+       HTMLDivElement       : false,
+       HTMLDListElement     : false,
+       HTMLFieldSetElement  : false,
+       HTMLFontElement      : false,
+       HTMLFormElement      : false,
+       HTMLFrameElement     : false,
+       HTMLFrameSetElement  : false,
+       HTMLHeadElement      : false,
+       HTMLHeadingElement   : false,
+       HTMLHRElement        : false,
+       HTMLHtmlElement      : false,
+       HTMLIFrameElement    : false,
+       HTMLImageElement     : false,
+       HTMLInputElement     : false,
+       HTMLIsIndexElement   : false,
+       HTMLLabelElement     : false,
+       HTMLLayerElement     : false,
+       HTMLLegendElement    : false,
+       HTMLLIElement        : false,
+       HTMLLinkElement      : false,
+       HTMLMapElement       : false,
+       HTMLMenuElement      : false,
+       HTMLMetaElement      : false,
+       HTMLModElement       : false,
+       HTMLObjectElement    : false,
+       HTMLOListElement     : false,
+       HTMLOptGroupElement  : false,
+       HTMLOptionElement    : false,
+       HTMLParagraphElement : false,
+       HTMLParamElement     : false,
+       HTMLPreElement       : false,
+       HTMLQuoteElement     : false,
+       HTMLScriptElement    : false,
+       HTMLSelectElement    : false,
+       HTMLStyleElement     : false,
+       HTMLTableCaptionElement: false,
+       HTMLTableCellElement : false,
+       HTMLTableColElement  : false,
+       HTMLTableElement     : false,
+       HTMLTableRowElement  : false,
+       HTMLTableSectionElement: false,
+       HTMLTextAreaElement  : false,
+       HTMLTitleElement     : false,
+       HTMLUListElement     : false,
+       HTMLVideoElement     : false,
+       history              : false,
+       Image                : false,
+       length               : false,
+       localStorage         : false,
+       location             : false,
+       MessageChannel       : false,
+       MessageEvent         : false,
+       MessagePort          : false,
+       MouseEvent           : false,
+       moveBy               : false,
+       moveTo               : false,
+       MutationObserver     : false,
+       name                 : false,
+       Node                 : false,
+       NodeFilter           : false,
+       navigator            : false,
+       onbeforeunload       : true,
+       onblur               : true,
+       onerror              : true,
+       onfocus              : true,
+       onload               : true,
+       onresize             : true,
+       onunload             : true,
+       open                 : false,
+       openDatabase         : false,
+       opener               : false,
+       Option               : false,
+       parent               : false,
+       print                : false,
+       removeEventListener  : false,
+       resizeBy             : false,
+       resizeTo             : false,
+       screen               : false,
+       scroll               : false,
+       scrollBy             : false,
+       scrollTo             : false,
+       sessionStorage       : false,
+       setInterval          : false,
+       setTimeout           : false,
+       SharedWorker         : false,
+       status               : false,
+       SVGAElement          : false,
+       SVGAltGlyphDefElement: false,
+       SVGAltGlyphElement   : false,
+       SVGAltGlyphItemElement: false,
+       SVGAngle             : false,
+       SVGAnimateColorElement: false,
+       SVGAnimateElement    : false,
+       SVGAnimateMotionElement: false,
+       SVGAnimateTransformElement: false,
+       SVGAnimatedAngle     : false,
+       SVGAnimatedBoolean   : false,
+       SVGAnimatedEnumeration: false,
+       SVGAnimatedInteger   : false,
+       SVGAnimatedLength    : false,
+       SVGAnimatedLengthList: false,
+       SVGAnimatedNumber    : false,
+       SVGAnimatedNumberList: false,
+       SVGAnimatedPathData  : false,
+       SVGAnimatedPoints    : false,
+       SVGAnimatedPreserveAspectRatio: false,
+       SVGAnimatedRect      : false,
+       SVGAnimatedString    : false,
+       SVGAnimatedTransformList: false,
+       SVGAnimationElement  : false,
+       SVGCSSRule           : false,
+       SVGCircleElement     : false,
+       SVGClipPathElement   : false,
+       SVGColor             : false,
+       SVGColorProfileElement: false,
+       SVGColorProfileRule  : false,
+       SVGComponentTransferFunctionElement: false,
+       SVGCursorElement     : false,
+       SVGDefsElement       : false,
+       SVGDescElement       : false,
+       SVGDocument          : false,
+       SVGElement           : false,
+       SVGElementInstance   : false,
+       SVGElementInstanceList: false,
+       SVGEllipseElement    : false,
+       SVGExternalResourcesRequired: false,
+       SVGFEBlendElement    : false,
+       SVGFEColorMatrixElement: false,
+       SVGFEComponentTransferElement: false,
+       SVGFECompositeElement: false,
+       SVGFEConvolveMatrixElement: false,
+       SVGFEDiffuseLightingElement: false,
+       SVGFEDisplacementMapElement: false,
+       SVGFEDistantLightElement: false,
+       SVGFEFloodElement    : false,
+       SVGFEFuncAElement    : false,
+       SVGFEFuncBElement    : false,
+       SVGFEFuncGElement    : false,
+       SVGFEFuncRElement    : false,
+       SVGFEGaussianBlurElement: false,
+       SVGFEImageElement    : false,
+       SVGFEMergeElement    : false,
+       SVGFEMergeNodeElement: false,
+       SVGFEMorphologyElement: false,
+       SVGFEOffsetElement   : false,
+       SVGFEPointLightElement: false,
+       SVGFESpecularLightingElement: false,
+       SVGFESpotLightElement: false,
+       SVGFETileElement     : false,
+       SVGFETurbulenceElement: false,
+       SVGFilterElement     : false,
+       SVGFilterPrimitiveStandardAttributes: false,
+       SVGFitToViewBox      : false,
+       SVGFontElement       : false,
+       SVGFontFaceElement   : false,
+       SVGFontFaceFormatElement: false,
+       SVGFontFaceNameElement: false,
+       SVGFontFaceSrcElement: false,
+       SVGFontFaceUriElement: false,
+       SVGForeignObjectElement: false,
+       SVGGElement          : false,
+       SVGGlyphElement      : false,
+       SVGGlyphRefElement   : false,
+       SVGGradientElement   : false,
+       SVGHKernElement      : false,
+       SVGICCColor          : false,
+       SVGImageElement      : false,
+       SVGLangSpace         : false,
+       SVGLength            : false,
+       SVGLengthList        : false,
+       SVGLineElement       : false,
+       SVGLinearGradientElement: false,
+       SVGLocatable         : false,
+       SVGMPathElement      : false,
+       SVGMarkerElement     : false,
+       SVGMaskElement       : false,
+       SVGMatrix            : false,
+       SVGMetadataElement   : false,
+       SVGMissingGlyphElement: false,
+       SVGNumber            : false,
+       SVGNumberList        : false,
+       SVGPaint             : false,
+       SVGPathElement       : false,
+       SVGPathSeg           : false,
+       SVGPathSegArcAbs     : false,
+       SVGPathSegArcRel     : false,
+       SVGPathSegClosePath  : false,
+       SVGPathSegCurvetoCubicAbs: false,
+       SVGPathSegCurvetoCubicRel: false,
+       SVGPathSegCurvetoCubicSmoothAbs: false,
+       SVGPathSegCurvetoCubicSmoothRel: false,
+       SVGPathSegCurvetoQuadraticAbs: false,
+       SVGPathSegCurvetoQuadraticRel: false,
+       SVGPathSegCurvetoQuadraticSmoothAbs: false,
+       SVGPathSegCurvetoQuadraticSmoothRel: false,
+       SVGPathSegLinetoAbs  : false,
+       SVGPathSegLinetoHorizontalAbs: false,
+       SVGPathSegLinetoHorizontalRel: false,
+       SVGPathSegLinetoRel  : false,
+       SVGPathSegLinetoVerticalAbs: false,
+       SVGPathSegLinetoVerticalRel: false,
+       SVGPathSegList       : false,
+       SVGPathSegMovetoAbs  : false,
+       SVGPathSegMovetoRel  : false,
+       SVGPatternElement    : false,
+       SVGPoint             : false,
+       SVGPointList         : false,
+       SVGPolygonElement    : false,
+       SVGPolylineElement   : false,
+       SVGPreserveAspectRatio: false,
+       SVGRadialGradientElement: false,
+       SVGRect              : false,
+       SVGRectElement       : false,
+       SVGRenderingIntent   : false,
+       SVGSVGElement        : false,
+       SVGScriptElement     : false,
+       SVGSetElement        : false,
+       SVGStopElement       : false,
+       SVGStringList        : false,
+       SVGStylable          : false,
+       SVGStyleElement      : false,
+       SVGSwitchElement     : false,
+       SVGSymbolElement     : false,
+       SVGTRefElement       : false,
+       SVGTSpanElement      : false,
+       SVGTests             : false,
+       SVGTextContentElement: false,
+       SVGTextElement       : false,
+       SVGTextPathElement   : false,
+       SVGTextPositioningElement: false,
+       SVGTitleElement      : false,
+       SVGTransform         : false,
+       SVGTransformList     : false,
+       SVGTransformable     : false,
+       SVGURIReference      : false,
+       SVGUnitTypes         : false,
+       SVGUseElement        : false,
+       SVGVKernElement      : false,
+       SVGViewElement       : false,
+       SVGViewSpec          : false,
+       SVGZoomAndPan        : false,
+       TimeEvent            : false,
+       top                  : false,
+       URL                  : false,
+       WebSocket            : false,
+       window               : false,
+       Worker               : false,
+       XMLHttpRequest       : false,
+       XMLSerializer        : false,
+       XPathEvaluator       : false,
+       XPathException       : false,
+       XPathExpression      : false,
+       XPathNamespace       : false,
+       XPathNSResolver      : false,
+       XPathResult          : false
+};
+
+exports.devel = {
+       alert  : false,
+       confirm: false,
+       console: false,
+       Debug  : false,
+       opera  : false,
+       prompt : false
+};
+
+exports.worker = {
+       importScripts: true,
+       postMessage  : true,
+       self         : true
+};
+
+// Widely adopted global names that are not part of ECMAScript standard
+exports.nonstandard = {
+       escape  : false,
+       unescape: false
+};
+
+// Globals provided by popular JavaScript environments.
+
+exports.couch = {
+       "require" : false,
+       respond   : false,
+       getRow    : false,
+       emit      : false,
+       send      : false,
+       start     : false,
+       sum       : false,
+       log       : false,
+       exports   : false,
+       module    : false,
+       provides  : false
+};
+
+exports.node = {
+       __filename    : false,
+       __dirname     : false,
+       GLOBAL        : false,
+       global        : false,
+       module        : false,
+       require       : false,
+
+       // These globals are writeable because Node allows the following
+       // usage pattern: var Buffer = require("buffer").Buffer;
+
+       Buffer        : true,
+       console       : true,
+       exports       : true,
+       process       : true,
+       setTimeout    : true,
+       clearTimeout  : true,
+       setInterval   : true,
+       clearInterval : true,
+       setImmediate  : true, // v0.9.1+
+       clearImmediate: true  // v0.9.1+
+};
+
+exports.phantom = {
+       phantom      : true,
+       require      : true,
+       WebPage      : true,
+       console      : true, // in examples, but undocumented
+       exports      : true  // v1.7+
+};
+
+exports.rhino = {
+       defineClass  : false,
+       deserialize  : false,
+       gc           : false,
+       help         : false,
+       importPackage: false,
+       "java"       : false,
+       load         : false,
+       loadClass    : false,
+       print        : false,
+       quit         : false,
+       readFile     : false,
+       readUrl      : false,
+       runCommand   : false,
+       seal         : false,
+       serialize    : false,
+       spawn        : false,
+       sync         : false,
+       toint32      : false,
+       version      : false
+};
+
+exports.shelljs = {
+       target       : false,
+       echo         : false,
+       exit         : false,
+       cd           : false,
+       pwd          : false,
+       ls           : false,
+       find         : false,
+       cp           : false,
+       rm           : false,
+       mv           : false,
+       mkdir        : false,
+       test         : false,
+       cat          : false,
+       sed          : false,
+       grep         : false,
+       which        : false,
+       dirs         : false,
+       pushd        : false,
+       popd         : false,
+       env          : false,
+       exec         : false,
+       chmod        : false,
+       config       : false,
+       error        : false,
+       tempdir      : false
+};
+
+exports.typed = {
+       ArrayBuffer         : false,
+       ArrayBufferView     : false,
+       DataView            : false,
+       Float32Array        : false,
+       Float64Array        : false,
+       Int16Array          : false,
+       Int32Array          : false,
+       Int8Array           : false,
+       Uint16Array         : false,
+       Uint32Array         : false,
+       Uint8Array          : false,
+       Uint8ClampedArray   : false
+};
+
+exports.wsh = {
+       ActiveXObject            : true,
+       Enumerator               : true,
+       GetObject                : true,
+       ScriptEngine             : true,
+       ScriptEngineBuildVersion : true,
+       ScriptEngineMajorVersion : true,
+       ScriptEngineMinorVersion : true,
+       VBArray                  : true,
+       WSH                      : true,
+       WScript                  : true,
+       XDomainRequest           : true
+};
+
+// Globals provided by popular JavaScript libraries.
+
+exports.dojo = {
+       dojo     : false,
+       dijit    : false,
+       dojox    : false,
+       define   : false,
+       "require": false
+};
+
+exports.jquery = {
+       "$"    : false,
+       jQuery : false
+};
+
+exports.mootools = {
+       "$"           : false,
+       "$$"          : false,
+       Asset         : false,
+       Browser       : false,
+       Chain         : false,
+       Class         : false,
+       Color         : false,
+       Cookie        : false,
+       Core          : false,
+       Document      : false,
+       DomReady      : false,
+       DOMEvent      : false,
+       DOMReady      : false,
+       Drag          : false,
+       Element       : false,
+       Elements      : false,
+       Event         : false,
+       Events        : false,
+       Fx            : false,
+       Group         : false,
+       Hash          : false,
+       HtmlTable     : false,
+       Iframe        : false,
+       IframeShim    : false,
+       InputValidator: false,
+       instanceOf    : false,
+       Keyboard      : false,
+       Locale        : false,
+       Mask          : false,
+       MooTools      : false,
+       Native        : false,
+       Options       : false,
+       OverText      : false,
+       Request       : false,
+       Scroller      : false,
+       Slick         : false,
+       Slider        : false,
+       Sortables     : false,
+       Spinner       : false,
+       Swiff         : false,
+       Tips          : false,
+       Type          : false,
+       typeOf        : false,
+       URI           : false,
+       Window        : false
+};
+
+exports.prototypejs = {
+       "$"               : false,
+       "$$"              : false,
+       "$A"              : false,
+       "$F"              : false,
+       "$H"              : false,
+       "$R"              : false,
+       "$break"          : false,
+       "$continue"       : false,
+       "$w"              : false,
+       Abstract          : false,
+       Ajax              : false,
+       Class             : false,
+       Enumerable        : false,
+       Element           : false,
+       Event             : false,
+       Field             : false,
+       Form              : false,
+       Hash              : false,
+       Insertion         : false,
+       ObjectRange       : false,
+       PeriodicalExecuter: false,
+       Position          : false,
+       Prototype         : false,
+       Selector          : false,
+       Template          : false,
+       Toggle            : false,
+       Try               : false,
+       Autocompleter     : false,
+       Builder           : false,
+       Control           : false,
+       Draggable         : false,
+       Draggables        : false,
+       Droppables        : false,
+       Effect            : false,
+       Sortable          : false,
+       SortableObserver  : false,
+       Sound             : false,
+       Scriptaculous     : false
+};
+
+exports.yui = {
+       YUI       : false,
+       Y         : false,
+       YUI_config: false
+};
+

Reply via email to