Browse Source

Merge pull request #544 from shaddockh/TSH-ATOMIC-EDITOR-TSLINT

Adding TSLint process to the build
JoshEngebretson 10 years ago
parent
commit
2a3bbc33cb
100 changed files with 2906 additions and 273 deletions
  1. 78 13
      Build/Scripts/BuildCommon.js
  2. 0 0
      Build/node_modules/ansi-styles/ansi-styles.js
  3. 78 52
      Build/node_modules/ansi-styles/package.json
  4. 0 0
      Build/node_modules/ansi-styles/readme.md
  5. 0 0
      Build/node_modules/async/.travis.yml
  6. 0 0
      Build/node_modules/async/LICENSE
  7. 0 0
      Build/node_modules/async/README.md
  8. 0 0
      Build/node_modules/async/bower.json
  9. 0 0
      Build/node_modules/async/component.json
  10. 0 0
      Build/node_modules/async/lib/async.js
  11. 82 56
      Build/node_modules/async/package.json
  12. 0 0
      Build/node_modules/async/support/sync-package-managers.js
  13. 0 0
      Build/node_modules/balanced-match/.npmignore
  14. 0 0
      Build/node_modules/balanced-match/.travis.yml
  15. 21 0
      Build/node_modules/balanced-match/LICENSE.md
  16. 0 0
      Build/node_modules/balanced-match/Makefile
  17. 9 0
      Build/node_modules/balanced-match/README.md
  18. 0 0
      Build/node_modules/balanced-match/example.js
  19. 50 0
      Build/node_modules/balanced-match/index.js
  20. 98 0
      Build/node_modules/balanced-match/package.json
  21. 28 0
      Build/node_modules/balanced-match/test/balanced.js
  22. 3 0
      Build/node_modules/brace-expansion/.npmignore
  23. 1 0
      Build/node_modules/brace-expansion/README.md
  24. 0 0
      Build/node_modules/brace-expansion/example.js
  25. 0 0
      Build/node_modules/brace-expansion/index.js
  26. 100 0
      Build/node_modules/brace-expansion/package.json
  27. 0 0
      Build/node_modules/chalk/index.js
  28. 76 51
      Build/node_modules/chalk/package.json
  29. 0 0
      Build/node_modules/chalk/readme.md
  30. 0 0
      Build/node_modules/concat-map/.travis.yml
  31. 0 0
      Build/node_modules/concat-map/LICENSE
  32. 0 0
      Build/node_modules/concat-map/README.markdown
  33. 0 0
      Build/node_modules/concat-map/example/map.js
  34. 0 0
      Build/node_modules/concat-map/index.js
  35. 109 0
      Build/node_modules/concat-map/package.json
  36. 0 0
      Build/node_modules/concat-map/test/map.js
  37. 0 0
      Build/node_modules/filelist/Jakefile
  38. 0 0
      Build/node_modules/filelist/README.md
  39. 0 0
      Build/node_modules/filelist/index.js
  40. 0 0
      Build/node_modules/filelist/node_modules/minimatch/.npmignore
  41. 0 0
      Build/node_modules/filelist/node_modules/minimatch/LICENSE
  42. 0 0
      Build/node_modules/filelist/node_modules/minimatch/README.md
  43. 0 0
      Build/node_modules/filelist/node_modules/minimatch/minimatch.js
  44. 82 0
      Build/node_modules/filelist/node_modules/minimatch/package.json
  45. 0 0
      Build/node_modules/filelist/node_modules/minimatch/test/basic.js
  46. 0 0
      Build/node_modules/filelist/node_modules/minimatch/test/brace-expand.js
  47. 0 0
      Build/node_modules/filelist/node_modules/minimatch/test/caching.js
  48. 0 0
      Build/node_modules/filelist/node_modules/minimatch/test/defaults.js
  49. 0 0
      Build/node_modules/filelist/node_modules/minimatch/test/extglob-ending-with-state-char.js
  50. 0 0
      Build/node_modules/filelist/node_modules/utilities/Jakefile
  51. 0 0
      Build/node_modules/filelist/node_modules/utilities/README.md
  52. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/array.js
  53. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/async.js
  54. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/core.js
  55. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/date.js
  56. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/event_buffer.js
  57. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/file.js
  58. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/i18n.js
  59. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/index.js
  60. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/inflection.js
  61. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/log.js
  62. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/network.js
  63. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/object.js
  64. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/request.js
  65. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/sorted_collection.js
  66. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/string.js
  67. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/uri.js
  68. 0 0
      Build/node_modules/filelist/node_modules/utilities/lib/xml.js
  69. 59 33
      Build/node_modules/filelist/node_modules/utilities/package.json
  70. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/array.js
  71. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/core.js
  72. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/date.js
  73. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/event_buffer.js
  74. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/file.js
  75. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/i18n.js
  76. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/inflection.js
  77. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/logging.js
  78. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/network.js
  79. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/object.js
  80. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/sorted_collection.js
  81. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/string.js
  82. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/uri.js
  83. 0 0
      Build/node_modules/filelist/node_modules/utilities/test/xml.js
  84. 59 30
      Build/node_modules/filelist/package.json
  85. 4 0
      Build/node_modules/findup-sync/.npmignore
  86. 22 0
      Build/node_modules/findup-sync/LICENSE-MIT
  87. 47 0
      Build/node_modules/findup-sync/README.md
  88. 49 0
      Build/node_modules/findup-sync/lib/findup-sync.js
  89. 0 0
      Build/node_modules/findup-sync/node_modules/glob/LICENSE
  90. 357 0
      Build/node_modules/findup-sync/node_modules/glob/README.md
  91. 177 0
      Build/node_modules/findup-sync/node_modules/glob/common.js
  92. 649 0
      Build/node_modules/findup-sync/node_modules/glob/glob.js
  93. 0 0
      Build/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/LICENSE
  94. 0 0
      Build/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/README.md
  95. 0 0
      Build/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/browser.js
  96. 0 0
      Build/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/minimatch.js
  97. 63 38
      Build/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/package.json
  98. 97 0
      Build/node_modules/findup-sync/node_modules/glob/package.json
  99. 409 0
      Build/node_modules/findup-sync/node_modules/glob/sync.js
  100. 99 0
      Build/node_modules/findup-sync/package.json

+ 78 - 13
Build/Scripts/BuildCommon.js

@@ -3,9 +3,51 @@ var os = require('os');
 var path = require("path");
 var host = require("./Host");
 var atomicRoot = host.atomicRoot;
+var glob = require('glob');
+
+var Tslint = require("tslint");
 
 namespace('build', function() {
 
+  // Linting task
+  task('lint_typescript', {
+      async: true
+  }, function(fileMask, failOnError) {
+
+    console.log("TSLINT: Linting files in " + fileMask);
+    var lintConfig = JSON.parse(fs.readFileSync("./Script/tslint.json"));
+    var options = {
+        configuration: lintConfig,
+        formatter: "prose"
+    };
+
+    // lint
+    // Since TSLint does not yet support recursively searching for files, then we need to
+    // create a command per file.  The main issue with this is that it will abort on the first error instead
+    // of listing out all lint errors
+    glob(fileMask, function(err, results) {
+      var lintErrors = [];
+      results.forEach(function(filename) {
+
+        var contents = fs.readFileSync(filename, "utf8");
+
+        var ll = new Tslint(filename, contents, options);
+        var result = ll.lint();
+        if (result.failureCount > 0) {
+            lintErrors.push(result.output);
+        }
+      });
+      if (lintErrors.length > 0) {
+          console.warn("TSLINT: WARNING - Lint errors detected");
+          console.warn(lintErrors.join(''));
+          if (failOnError) {
+              fail("TSLint errors detected");
+          }
+      }
+      complete();
+    });
+  });
+
   task('genscripts', {
     async: true
   }, function(platform) {
@@ -14,27 +56,50 @@ namespace('build', function() {
 
         var modules = host.getScriptModules(platform);
         var bindCmd = host.atomicTool + " bind \"" + atomicRoot + "\" ";
+        var node;
+        var tsc = "./Build/node_modules/typescript/lib/tsc";
+        var tslint = "./Build/node_modules/tslint/lib/tslint-cli";
+
+        switch(os.platform()) {
+            case "win32":
+                node = "Build/Windows/node/node.exe";
+                break;
+            case "darwin":
+                node = "Build/Mac/node/node";
+                break;
+            case "linux":
+                node = "Build/Linux/node/node";
+                break;
+        }
 
         var cmds = [];
         for (var pkgName in modules) {
             cmds.push(bindCmd + "Script/Packages/" + pkgName + "/ " + platform);
         }
 
-        // Compile the Editor Scripts
-        if (os.platform() == "win32")
-          cmds.push(atomicRoot + "Build/Windows/node/node.exe " + atomicRoot + "Build/TypeScript/tsc.js -p " + atomicRoot + "Script");
-        else if (os.platform() == "darwin")
-          cmds.push(atomicRoot + "Build/Mac/node/node " + atomicRoot + "Build/TypeScript/tsc.js -p " + atomicRoot + "Script");
-        else if (os.platform() == "linux") {
-          cmds.push(atomicRoot + "Build/Linux/node/node " + atomicRoot + "Build/TypeScript/tsc.js -p " + atomicRoot + "Script");
-        }
-        jake.exec(cmds, function() {
+        if (node) {
+          // compile
+          cmds.push(node + " " + tsc + " -p ./Script");
+
+          var lintTask = jake.Task['build:lint_typescript'];
+
+          lintTask.addListener('complete', function () {
+            console.log("\n\nLint: Typescript linting complete.\n\n");
+            jake.exec(cmds, function() {
 
-          complete();
+               complete();
+
+            }, {
+              printStdout: true
+            });
+          });
+
+          lintTask.invoke("./Script/AtomicEditor/**/*.ts", false);
+
+        } else {
+            throw new Error("Node not configured for this platform: " + os.platform());
+        }
 
-        }, {
-          printStdout: true
-        });
 
   });
 

+ 0 - 0
Build/node_modules/jake/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js → Build/node_modules/ansi-styles/ansi-styles.js


+ 78 - 52
Build/node_modules/jake/node_modules/chalk/node_modules/ansi-styles/package.json → Build/node_modules/ansi-styles/package.json

@@ -1,75 +1,101 @@
 {
-  "name": "ansi-styles",
-  "version": "1.0.0",
-  "description": "ANSI escape codes for colorizing strings in the terminal",
-  "keywords": [
-    "ansi",
-    "styles",
-    "color",
-    "colour",
-    "colors",
-    "terminal",
-    "console",
-    "cli",
-    "string",
-    "tty",
-    "escape",
-    "formatting",
-    "rgb",
-    "256",
-    "shell",
-    "xterm",
-    "log",
-    "logging",
-    "command-line",
-    "text"
+  "_args": [
+    [
+      "ansi-styles@~1.0.0",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/chalk"
+    ]
   ],
-  "homepage": "https://github.com/sindresorhus/ansi-styles",
-  "bugs": {
-    "url": "https://github.com/sindresorhus/ansi-styles/issues"
+  "_from": "ansi-styles@>=1.0.0 <1.1.0",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/ansi-styles",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "sindresorhus"
   },
-  "license": "MIT",
+  "_npmVersion": "1.3.15",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "ansi-styles",
+    "raw": "ansi-styles@~1.0.0",
+    "rawSpec": "~1.0.0",
+    "scope": null,
+    "spec": ">=1.0.0 <1.1.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
+  "_shasum": "cb102df1c56f5123eab8b67cd7b98027a0279178",
+  "_shrinkwrap": null,
+  "_spec": "ansi-styles@~1.0.0",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/chalk",
   "author": {
-    "name": "Sindre Sorhus",
     "email": "[email protected]",
+    "name": "Sindre Sorhus",
     "url": "http://sindresorhus.com"
   },
-  "files": [
-    "ansi-styles.js"
-  ],
-  "main": "ansi-styles",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/sindresorhus/ansi-styles.git"
-  },
-  "scripts": {
-    "test": "mocha"
+  "bugs": {
+    "url": "https://github.com/sindresorhus/ansi-styles/issues"
   },
+  "dependencies": {},
+  "description": "ANSI escape codes for colorizing strings in the terminal",
   "devDependencies": {
     "mocha": "~1.12.0"
   },
-  "engines": {
-    "node": ">=0.8.0"
-  },
-  "_id": "[email protected]",
+  "directories": {},
   "dist": {
     "shasum": "cb102df1c56f5123eab8b67cd7b98027a0279178",
     "tarball": "http://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz"
   },
-  "_from": "ansi-styles@>=1.0.0 <1.1.0",
-  "_npmVersion": "1.3.15",
-  "_npmUser": {
-    "name": "sindresorhus",
-    "email": "[email protected]"
+  "engines": {
+    "node": ">=0.8.0"
   },
+  "files": [
+    "ansi-styles.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/ansi-styles",
+  "keywords": [
+    "256",
+    "ansi",
+    "cli",
+    "color",
+    "colors",
+    "colour",
+    "command-line",
+    "console",
+    "escape",
+    "formatting",
+    "log",
+    "logging",
+    "rgb",
+    "shell",
+    "string",
+    "styles",
+    "terminal",
+    "text",
+    "tty",
+    "xterm"
+  ],
+  "license": "MIT",
+  "main": "ansi-styles",
   "maintainers": [
     {
       "name": "sindresorhus",
       "email": "[email protected]"
     }
   ],
-  "directories": {},
-  "_shasum": "cb102df1c56f5123eab8b67cd7b98027a0279178",
-  "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
-  "readme": "ERROR: No README data found!"
+  "name": "ansi-styles",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/sindresorhus/ansi-styles.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "1.0.0"
 }

+ 0 - 0
Build/node_modules/jake/node_modules/chalk/node_modules/ansi-styles/readme.md → Build/node_modules/ansi-styles/readme.md


+ 0 - 0
Build/node_modules/jake/node_modules/async/.travis.yml → Build/node_modules/async/.travis.yml


+ 0 - 0
Build/node_modules/jake/node_modules/async/LICENSE → Build/node_modules/async/LICENSE


+ 0 - 0
Build/node_modules/jake/node_modules/async/README.md → Build/node_modules/async/README.md


+ 0 - 0
Build/node_modules/jake/node_modules/async/bower.json → Build/node_modules/async/bower.json


+ 0 - 0
Build/node_modules/jake/node_modules/async/component.json → Build/node_modules/async/component.json


+ 0 - 0
Build/node_modules/jake/node_modules/async/lib/async.js → Build/node_modules/async/lib/async.js


+ 82 - 56
Build/node_modules/jake/node_modules/async/package.json → Build/node_modules/async/package.json

@@ -1,69 +1,78 @@
 {
-  "name": "async",
-  "description": "Higher-order functions and common patterns for asynchronous code",
-  "main": "lib/async.js",
-  "author": {
-    "name": "Caolan McMahon"
+  "_args": [
+    [
+      "[email protected]",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/jake"
+    ]
+  ],
+  "_from": "async@>=0.9.0 <0.10.0",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/async",
+  "_nodeVersion": "2.0.1",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "beaugunderson"
   },
-  "version": "0.9.2",
-  "keywords": [
-    "async",
-    "callback",
-    "utility",
-    "module"
+  "_npmVersion": "2.9.0",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "async",
+    "raw": "[email protected]",
+    "rawSpec": "0.9.x",
+    "scope": null,
+    "spec": ">=0.9.0 <0.10.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/jake"
   ],
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/caolan/async.git"
+  "_resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+  "_shasum": "aea74d5e61c1f899613bf64bda66d4c78f2fd17d",
+  "_shrinkwrap": null,
+  "_spec": "[email protected]",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/jake",
+  "author": {
+    "name": "Caolan McMahon"
   },
   "bugs": {
     "url": "https://github.com/caolan/async/issues"
   },
-  "license": "MIT",
+  "dependencies": {},
+  "description": "Higher-order functions and common patterns for asynchronous code",
   "devDependencies": {
-    "nodeunit": ">0.0.0",
-    "uglify-js": "1.2.x",
+    "lodash": ">=2.4.1",
     "nodelint": ">0.0.0",
-    "lodash": ">=2.4.1"
+    "nodeunit": ">0.0.0",
+    "uglify-js": "1.2.x"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "aea74d5e61c1f899613bf64bda66d4c78f2fd17d",
+    "tarball": "http://registry.npmjs.org/async/-/async-0.9.2.tgz"
   },
+  "gitHead": "de3a16091d5125384eff4a54deb3998b13c3814c",
+  "homepage": "https://github.com/caolan/async#readme",
   "jam": {
-    "main": "lib/async.js",
+    "categories": [
+      "Utilities"
+    ],
     "include": [
-      "lib/async.js",
+      "LICENSE",
       "README.md",
-      "LICENSE"
+      "lib/async.js"
     ],
-    "categories": [
-      "Utilities"
-    ]
-  },
-  "scripts": {
-    "test": "nodeunit test/test-async.js"
-  },
-  "spm": {
     "main": "lib/async.js"
   },
-  "volo": {
-    "main": "lib/async.js",
-    "ignore": [
-      "**/.*",
-      "node_modules",
-      "bower_components",
-      "test",
-      "tests"
-    ]
-  },
-  "gitHead": "de3a16091d5125384eff4a54deb3998b13c3814c",
-  "homepage": "https://github.com/caolan/async#readme",
-  "_id": "[email protected]",
-  "_shasum": "aea74d5e61c1f899613bf64bda66d4c78f2fd17d",
-  "_from": "async@>=0.9.0 <0.10.0",
-  "_npmVersion": "2.9.0",
-  "_nodeVersion": "2.0.1",
-  "_npmUser": {
-    "name": "beaugunderson",
-    "email": "[email protected]"
-  },
+  "keywords": [
+    "async",
+    "callback",
+    "module",
+    "utility"
+  ],
+  "license": "MIT",
+  "main": "lib/async.js",
   "maintainers": [
     {
       "name": "caolan",
@@ -74,11 +83,28 @@
       "email": "[email protected]"
     }
   ],
-  "dist": {
-    "shasum": "aea74d5e61c1f899613bf64bda66d4c78f2fd17d",
-    "tarball": "http://registry.npmjs.org/async/-/async-0.9.2.tgz"
+  "name": "async",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/caolan/async.git"
   },
-  "directories": {},
-  "_resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
-  "readme": "ERROR: No README data found!"
+  "scripts": {
+    "test": "nodeunit test/test-async.js"
+  },
+  "spm": {
+    "main": "lib/async.js"
+  },
+  "version": "0.9.2",
+  "volo": {
+    "ignore": [
+      "**/.*",
+      "bower_components",
+      "node_modules",
+      "test",
+      "tests"
+    ],
+    "main": "lib/async.js"
+  }
 }

+ 0 - 0
Build/node_modules/jake/node_modules/async/support/sync-package-managers.js → Build/node_modules/async/support/sync-package-managers.js


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore → Build/node_modules/balanced-match/.npmignore


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml → Build/node_modules/balanced-match/.travis.yml


+ 21 - 0
Build/node_modules/balanced-match/LICENSE.md

@@ -0,0 +1,21 @@
+(MIT)
+
+Copyright (c) 2013 Julian Gruber &lt;[email protected]&gt;
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile → Build/node_modules/balanced-match/Makefile


+ 9 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md → Build/node_modules/balanced-match/README.md

@@ -47,6 +47,15 @@ If there's no match, `undefined` will be returned.
 
 If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']`.
 
+### var r = balanced.range(a, b, str)
+
+For the first non-nested matching pair of `a` and `b` in `str`, return an
+array with indexes: `[ <a index>, <b index> ]`.
+
+If there's no match, `undefined` will be returned.
+
+If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]`.
+
 ## Installation
 
 With [npm](https://npmjs.org) do:

+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js → Build/node_modules/balanced-match/example.js


+ 50 - 0
Build/node_modules/balanced-match/index.js

@@ -0,0 +1,50 @@
+module.exports = balanced;
+function balanced(a, b, str) {
+  var r = range(a, b, str);
+
+  return r && {
+    start: r[0],
+    end: r[1],
+    pre: str.slice(0, r[0]),
+    body: str.slice(r[0] + a.length, r[1]),
+    post: str.slice(r[1] + b.length)
+  };
+}
+
+balanced.range = range;
+function range(a, b, str) {
+  var begs, beg, left, right, result;
+  var ai = str.indexOf(a);
+  var bi = str.indexOf(b, ai + 1);
+  var i = ai;
+
+  if (ai >= 0 && bi > 0) {
+    begs = [];
+    left = str.length;
+
+    while (i < str.length && i >= 0 && ! result) {
+      if (i == ai) {
+        begs.push(i);
+        ai = str.indexOf(a, i + 1);
+      } else if (begs.length == 1) {
+        result = [ begs.pop(), bi ];
+      } else {
+        beg = begs.pop();
+        if (beg < left) {
+          left = beg;
+          right = bi;
+        }
+
+        bi = str.indexOf(b, i + 1);
+      }
+
+      i = ai < bi && ai >= 0 ? ai : bi;
+    }
+
+    if (begs.length) {
+      result = [ left, right ];
+    }
+  }
+
+  return result;
+}

+ 98 - 0
Build/node_modules/balanced-match/package.json

@@ -0,0 +1,98 @@
+{
+  "_args": [
+    [
+      "balanced-match@^0.3.0",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/brace-expansion"
+    ]
+  ],
+  "_from": "balanced-match@>=0.3.0 <0.4.0",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/balanced-match",
+  "_nodeVersion": "4.2.1",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "juliangruber"
+  },
+  "_npmVersion": "2.14.7",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "balanced-match",
+    "raw": "balanced-match@^0.3.0",
+    "rawSpec": "^0.3.0",
+    "scope": null,
+    "spec": ">=0.3.0 <0.4.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/brace-expansion"
+  ],
+  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz",
+  "_shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756",
+  "_shrinkwrap": null,
+  "_spec": "balanced-match@^0.3.0",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/brace-expansion",
+  "author": {
+    "email": "[email protected]",
+    "name": "Julian Gruber",
+    "url": "http://juliangruber.com"
+  },
+  "bugs": {
+    "url": "https://github.com/juliangruber/balanced-match/issues"
+  },
+  "dependencies": {},
+  "description": "Match balanced character pairs, like \"{\" and \"}\"",
+  "devDependencies": {
+    "tape": "~4.2.2"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756",
+    "tarball": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz"
+  },
+  "gitHead": "a7114b0986554787e90b7ac595a043ca75ea77e5",
+  "homepage": "https://github.com/juliangruber/balanced-match",
+  "keywords": [
+    "balanced",
+    "match",
+    "parse",
+    "regexp",
+    "test"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "maintainers": [
+    {
+      "name": "juliangruber",
+      "email": "[email protected]"
+    }
+  ],
+  "name": "balanced-match",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/juliangruber/balanced-match.git"
+  },
+  "scripts": {
+    "test": "make test"
+  },
+  "testling": {
+    "browsers": [
+      "android-browser/4.2..latest",
+      "chrome/25..latest",
+      "chrome/canary",
+      "firefox/20..latest",
+      "firefox/nightly",
+      "ie/8..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "opera/12..latest",
+      "opera/next",
+      "safari/5.1..latest"
+    ],
+    "files": "test/*.js"
+  },
+  "version": "0.3.0"
+}

+ 28 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js → Build/node_modules/balanced-match/test/balanced.js

@@ -52,5 +52,33 @@ test('balanced', function(t) {
     body: 'in<b>nest</b>',
     post: 'post'
   });
+  t.deepEqual(balanced('{{', '}}', 'pre{{{in}}}post'), {
+    start: 3,
+    end: 9,
+    pre: 'pre',
+    body: '{in}',
+    post: 'post'
+  });
+  t.deepEqual(balanced('{{{', '}}', 'pre{{{in}}}post'), {
+    start: 3,
+    end: 8,
+    pre: 'pre',
+    body: 'in',
+    post: '}post'
+  });
+  t.deepEqual(balanced('{', '}', 'pre{{first}in{second}post'), {
+    start: 4,
+    end: 10,
+    pre: 'pre{',
+    body: 'first',
+    post: 'in{second}post'
+  });
+  t.deepEqual(balanced('<?', '?>', 'pre<?>post'), {
+    start: 3,
+    end: 4,
+    pre: 'pre',
+    body: '',
+    post: 'post'
+  });
   t.end();
 });

+ 3 - 0
Build/node_modules/brace-expansion/.npmignore

@@ -0,0 +1,3 @@
+test
+.gitignore
+.travis.yml

+ 1 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md → Build/node_modules/brace-expansion/README.md

@@ -4,6 +4,7 @@
 as known from sh/bash, in JavaScript.
 
 [![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion)
+[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion)
 
 [![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion)
 

+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js → Build/node_modules/brace-expansion/example.js


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js → Build/node_modules/brace-expansion/index.js


+ 100 - 0
Build/node_modules/brace-expansion/package.json

@@ -0,0 +1,100 @@
+{
+  "_args": [
+    [
+      "brace-expansion@^1.0.0",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/minimatch"
+    ]
+  ],
+  "_from": "brace-expansion@>=1.0.0 <2.0.0",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/brace-expansion",
+  "_nodeVersion": "4.2.1",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "juliangruber"
+  },
+  "_npmVersion": "2.14.7",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "brace-expansion",
+    "raw": "brace-expansion@^1.0.0",
+    "rawSpec": "^1.0.0",
+    "scope": null,
+    "spec": ">=1.0.0 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/minimatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz",
+  "_shasum": "f21445d0488b658e2771efd870eff51df29f04ef",
+  "_shrinkwrap": null,
+  "_spec": "brace-expansion@^1.0.0",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/minimatch",
+  "author": {
+    "email": "[email protected]",
+    "name": "Julian Gruber",
+    "url": "http://juliangruber.com"
+  },
+  "bugs": {
+    "url": "https://github.com/juliangruber/brace-expansion/issues"
+  },
+  "dependencies": {
+    "balanced-match": "^0.3.0",
+    "concat-map": "0.0.1"
+  },
+  "description": "Brace expansion as known from sh/bash",
+  "devDependencies": {
+    "tape": "4.2.2"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "f21445d0488b658e2771efd870eff51df29f04ef",
+    "tarball": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz"
+  },
+  "gitHead": "b03773a30fa516b1374945b68e9acb6253d595fa",
+  "homepage": "https://github.com/juliangruber/brace-expansion",
+  "keywords": [],
+  "license": "MIT",
+  "main": "index.js",
+  "maintainers": [
+    {
+      "name": "juliangruber",
+      "email": "[email protected]"
+    },
+    {
+      "name": "isaacs",
+      "email": "[email protected]"
+    }
+  ],
+  "name": "brace-expansion",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/juliangruber/brace-expansion.git"
+  },
+  "scripts": {
+    "gentest": "bash test/generate.sh",
+    "test": "tape test/*.js"
+  },
+  "testling": {
+    "browsers": [
+      "android-browser/4.2..latest",
+      "chrome/25..latest",
+      "chrome/canary",
+      "firefox/20..latest",
+      "firefox/nightly",
+      "ie/8..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "opera/12..latest",
+      "opera/next",
+      "safari/5.1..latest"
+    ],
+    "files": "test/*.js"
+  },
+  "version": "1.1.2"
+}

+ 0 - 0
Build/node_modules/jake/node_modules/chalk/index.js → Build/node_modules/chalk/index.js


+ 76 - 51
Build/node_modules/jake/node_modules/chalk/package.json → Build/node_modules/chalk/package.json

@@ -1,78 +1,103 @@
 {
-  "name": "chalk",
-  "version": "0.4.0",
-  "description": "Terminal string styling done right. Created because the `colors` module does some really horrible things.",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/sindresorhus/chalk.git"
+  "_args": [
+    [
+      "[email protected]",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/jake"
+    ]
+  ],
+  "_from": "chalk@>=0.4.0 <0.5.0",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/chalk",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "sindresorhus"
+  },
+  "_npmVersion": "1.3.17",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "chalk",
+    "raw": "[email protected]",
+    "rawSpec": "0.4.x",
+    "scope": null,
+    "spec": ">=0.4.0 <0.5.0",
+    "type": "range"
   },
+  "_requiredBy": [
+    "/jake"
+  ],
+  "_resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
+  "_shasum": "5199a3ddcd0c1efe23bc08c1b027b06176e0c64f",
+  "_shrinkwrap": null,
+  "_spec": "[email protected]",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/jake",
   "author": {
-    "name": "Sindre Sorhus",
     "email": "[email protected]",
+    "name": "Sindre Sorhus",
     "url": "http://sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/chalk/issues"
+  },
+  "dependencies": {
+    "ansi-styles": "~1.0.0",
+    "has-color": "~0.1.0",
+    "strip-ansi": "~0.1.0"
+  },
+  "description": "Terminal string styling done right. Created because the `colors` module does some really horrible things.",
+  "devDependencies": {
+    "mocha": "~1.x"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "5199a3ddcd0c1efe23bc08c1b027b06176e0c64f",
+    "tarball": "http://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz"
+  },
   "engines": {
     "node": ">=0.8.0"
   },
-  "scripts": {
-    "test": "mocha"
-  },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/chalk",
   "keywords": [
+    "256",
+    "ansi",
+    "cli",
     "color",
-    "colour",
     "colors",
-    "terminal",
+    "colour",
+    "command-line",
     "console",
-    "cli",
-    "string",
-    "ansi",
-    "styles",
-    "tty",
     "formatting",
-    "rgb",
-    "256",
-    "shell",
-    "xterm",
     "log",
     "logging",
-    "command-line",
-    "text"
+    "rgb",
+    "shell",
+    "string",
+    "styles",
+    "terminal",
+    "text",
+    "tty",
+    "xterm"
   ],
-  "dependencies": {
-    "has-color": "~0.1.0",
-    "ansi-styles": "~1.0.0",
-    "strip-ansi": "~0.1.0"
-  },
-  "devDependencies": {
-    "mocha": "~1.x"
-  },
-  "bugs": {
-    "url": "https://github.com/sindresorhus/chalk/issues"
-  },
-  "homepage": "https://github.com/sindresorhus/chalk",
-  "_id": "[email protected]",
-  "dist": {
-    "shasum": "5199a3ddcd0c1efe23bc08c1b027b06176e0c64f",
-    "tarball": "http://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz"
-  },
-  "_from": "chalk@>=0.4.0 <0.5.0",
-  "_npmVersion": "1.3.17",
-  "_npmUser": {
-    "name": "sindresorhus",
-    "email": "[email protected]"
-  },
+  "license": "MIT",
   "maintainers": [
     {
       "name": "sindresorhus",
       "email": "[email protected]"
     }
   ],
-  "directories": {},
-  "_shasum": "5199a3ddcd0c1efe23bc08c1b027b06176e0c64f",
-  "_resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
-  "readme": "ERROR: No README data found!"
+  "name": "chalk",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/sindresorhus/chalk.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "0.4.0"
 }

+ 0 - 0
Build/node_modules/jake/node_modules/chalk/readme.md → Build/node_modules/chalk/readme.md


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml → Build/node_modules/concat-map/.travis.yml


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE → Build/node_modules/concat-map/LICENSE


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown → Build/node_modules/concat-map/README.markdown


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js → Build/node_modules/concat-map/example/map.js


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js → Build/node_modules/concat-map/index.js


+ 109 - 0
Build/node_modules/concat-map/package.json

@@ -0,0 +1,109 @@
+{
+  "_args": [
+    [
+      "[email protected]",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/brace-expansion"
+    ]
+  ],
+  "_from": "[email protected]",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/concat-map",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "substack"
+  },
+  "_npmVersion": "1.3.21",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "concat-map",
+    "raw": "[email protected]",
+    "rawSpec": "0.0.1",
+    "scope": null,
+    "spec": "0.0.1",
+    "type": "version"
+  },
+  "_requiredBy": [
+    "/brace-expansion"
+  ],
+  "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+  "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
+  "_shrinkwrap": null,
+  "_spec": "[email protected]",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/brace-expansion",
+  "author": {
+    "email": "[email protected]",
+    "name": "James Halliday",
+    "url": "http://substack.net"
+  },
+  "bugs": {
+    "url": "https://github.com/substack/node-concat-map/issues"
+  },
+  "dependencies": {},
+  "description": "concatenative mapdashery",
+  "devDependencies": {
+    "tape": "~2.4.0"
+  },
+  "directories": {
+    "example": "example",
+    "test": "test"
+  },
+  "dist": {
+    "shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
+    "tarball": "http://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+  },
+  "homepage": "https://github.com/substack/node-concat-map",
+  "keywords": [
+    "concat",
+    "concatMap",
+    "functional",
+    "higher-order",
+    "map"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "maintainers": [
+    {
+      "name": "substack",
+      "email": "[email protected]"
+    }
+  ],
+  "name": "concat-map",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/substack/node-concat-map.git"
+  },
+  "scripts": {
+    "test": "tape test/*.js"
+  },
+  "testling": {
+    "browsers": {
+      "chrome": [
+        10,
+        22
+      ],
+      "ff": [
+        10,
+        15,
+        3.5
+      ],
+      "ie": [
+        6,
+        7,
+        8,
+        9
+      ],
+      "opera": [
+        12
+      ],
+      "safari": [
+        5.1
+      ]
+    },
+    "files": "test/*.js"
+  },
+  "version": "0.0.1"
+}

+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js → Build/node_modules/concat-map/test/map.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/Jakefile → Build/node_modules/filelist/Jakefile


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/README.md → Build/node_modules/filelist/README.md


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/index.js → Build/node_modules/filelist/index.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/minimatch/.npmignore → Build/node_modules/filelist/node_modules/minimatch/.npmignore


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/minimatch/LICENSE → Build/node_modules/filelist/node_modules/minimatch/LICENSE


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/minimatch/README.md → Build/node_modules/filelist/node_modules/minimatch/README.md


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/minimatch/minimatch.js → Build/node_modules/filelist/node_modules/minimatch/minimatch.js


+ 82 - 0
Build/node_modules/filelist/node_modules/minimatch/package.json

@@ -0,0 +1,82 @@
+{
+  "_args": [
+    [
+      "[email protected]",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/filelist"
+    ]
+  ],
+  "_from": "[email protected]",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/filelist/minimatch",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "isaacs"
+  },
+  "_npmVersion": "1.4.10",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "minimatch",
+    "raw": "[email protected]",
+    "rawSpec": "0.3.0",
+    "scope": null,
+    "spec": "0.3.0",
+    "type": "version"
+  },
+  "_requiredBy": [
+    "/filelist"
+  ],
+  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
+  "_shasum": "275d8edaac4f1bb3326472089e7949c8394699dd",
+  "_shrinkwrap": null,
+  "_spec": "[email protected]",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/filelist",
+  "author": {
+    "email": "[email protected]",
+    "name": "Isaac Z. Schlueter",
+    "url": "http://blog.izs.me"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/minimatch/issues"
+  },
+  "dependencies": {
+    "lru-cache": "2",
+    "sigmund": "~1.0.0"
+  },
+  "description": "a glob matcher in javascript",
+  "devDependencies": {
+    "tap": ""
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "275d8edaac4f1bb3326472089e7949c8394699dd",
+    "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz"
+  },
+  "engines": {
+    "node": "*"
+  },
+  "homepage": "https://github.com/isaacs/minimatch",
+  "license": {
+    "type": "MIT",
+    "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE"
+  },
+  "main": "minimatch.js",
+  "maintainers": [
+    {
+      "name": "isaacs",
+      "email": "[email protected]"
+    }
+  ],
+  "name": "minimatch",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/minimatch.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "version": "0.3.0"
+}

+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/minimatch/test/basic.js → Build/node_modules/filelist/node_modules/minimatch/test/basic.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/minimatch/test/brace-expand.js → Build/node_modules/filelist/node_modules/minimatch/test/brace-expand.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/minimatch/test/caching.js → Build/node_modules/filelist/node_modules/minimatch/test/caching.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/minimatch/test/defaults.js → Build/node_modules/filelist/node_modules/minimatch/test/defaults.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/minimatch/test/extglob-ending-with-state-char.js → Build/node_modules/filelist/node_modules/minimatch/test/extglob-ending-with-state-char.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/Jakefile → Build/node_modules/filelist/node_modules/utilities/Jakefile


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/README.md → Build/node_modules/filelist/node_modules/utilities/README.md


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/array.js → Build/node_modules/filelist/node_modules/utilities/lib/array.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/async.js → Build/node_modules/filelist/node_modules/utilities/lib/async.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/core.js → Build/node_modules/filelist/node_modules/utilities/lib/core.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/date.js → Build/node_modules/filelist/node_modules/utilities/lib/date.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/event_buffer.js → Build/node_modules/filelist/node_modules/utilities/lib/event_buffer.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/file.js → Build/node_modules/filelist/node_modules/utilities/lib/file.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/i18n.js → Build/node_modules/filelist/node_modules/utilities/lib/i18n.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/index.js → Build/node_modules/filelist/node_modules/utilities/lib/index.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/inflection.js → Build/node_modules/filelist/node_modules/utilities/lib/inflection.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/log.js → Build/node_modules/filelist/node_modules/utilities/lib/log.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/network.js → Build/node_modules/filelist/node_modules/utilities/lib/network.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/object.js → Build/node_modules/filelist/node_modules/utilities/lib/object.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/request.js → Build/node_modules/filelist/node_modules/utilities/lib/request.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/sorted_collection.js → Build/node_modules/filelist/node_modules/utilities/lib/sorted_collection.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/string.js → Build/node_modules/filelist/node_modules/utilities/lib/string.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/uri.js → Build/node_modules/filelist/node_modules/utilities/lib/uri.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/lib/xml.js → Build/node_modules/filelist/node_modules/utilities/lib/xml.js


+ 59 - 33
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/package.json → Build/node_modules/filelist/node_modules/utilities/package.json

@@ -1,55 +1,81 @@
 {
-  "name": "utilities",
-  "description": "A classic collection of JavaScript utilities",
-  "keywords": [
-    "utilities",
-    "utils",
-    "jake",
-    "geddy"
+  "_args": [
+    [
+      "[email protected]",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/filelist"
+    ]
   ],
-  "version": "0.0.37",
+  "_from": "[email protected]",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/filelist/utilities",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "mde"
+  },
+  "_npmVersion": "1.4.9",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "utilities",
+    "raw": "[email protected]",
+    "rawSpec": "0.0.37",
+    "scope": null,
+    "spec": "0.0.37",
+    "type": "version"
+  },
+  "_requiredBy": [
+    "/filelist"
+  ],
+  "_resolved": "https://registry.npmjs.org/utilities/-/utilities-0.0.37.tgz",
+  "_shasum": "a3470d0a7f688142d9e8a57cee1128f12e19e196",
+  "_shrinkwrap": null,
+  "_spec": "[email protected]",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/filelist",
   "author": {
-    "name": "Matthew Eernisse",
     "email": "[email protected]",
+    "name": "Matthew Eernisse",
     "url": "http://fleegix.org"
   },
-  "main": "./lib/index.js",
-  "scripts": {
-    "test": "jake test"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/mde/utilities.git"
+  "bugs": {
+    "url": "https://github.com/mde/utilities/issues"
   },
+  "dependencies": {},
+  "description": "A classic collection of JavaScript utilities",
   "devDependencies": {
     "jake": "latest"
   },
+  "directories": {},
+  "dist": {
+    "shasum": "a3470d0a7f688142d9e8a57cee1128f12e19e196",
+    "tarball": "http://registry.npmjs.org/utilities/-/utilities-0.0.37.tgz"
+  },
   "engines": {
     "node": "*"
   },
-  "bugs": {
-    "url": "https://github.com/mde/utilities/issues"
-  },
   "homepage": "https://github.com/mde/utilities",
-  "_id": "[email protected]",
-  "_shasum": "a3470d0a7f688142d9e8a57cee1128f12e19e196",
-  "_resolved": "https://registry.npmjs.org/utilities/-/utilities-0.0.37.tgz",
-  "_from": "[email protected]",
-  "_npmVersion": "1.4.9",
-  "_npmUser": {
-    "name": "mde",
-    "email": "[email protected]"
-  },
+  "keywords": [
+    "geddy",
+    "jake",
+    "utilities",
+    "utils"
+  ],
+  "main": "./lib/index.js",
   "maintainers": [
     {
       "name": "mde",
       "email": "[email protected]"
     }
   ],
-  "dist": {
-    "shasum": "a3470d0a7f688142d9e8a57cee1128f12e19e196",
-    "tarball": "http://registry.npmjs.org/utilities/-/utilities-0.0.37.tgz"
+  "name": "utilities",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/mde/utilities.git"
   },
-  "directories": {},
-  "readme": "ERROR: No README data found!"
+  "scripts": {
+    "test": "jake test"
+  },
+  "version": "0.0.37"
 }

+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/array.js → Build/node_modules/filelist/node_modules/utilities/test/array.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/core.js → Build/node_modules/filelist/node_modules/utilities/test/core.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/date.js → Build/node_modules/filelist/node_modules/utilities/test/date.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/event_buffer.js → Build/node_modules/filelist/node_modules/utilities/test/event_buffer.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/file.js → Build/node_modules/filelist/node_modules/utilities/test/file.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/i18n.js → Build/node_modules/filelist/node_modules/utilities/test/i18n.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/inflection.js → Build/node_modules/filelist/node_modules/utilities/test/inflection.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/logging.js → Build/node_modules/filelist/node_modules/utilities/test/logging.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/network.js → Build/node_modules/filelist/node_modules/utilities/test/network.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/object.js → Build/node_modules/filelist/node_modules/utilities/test/object.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/sorted_collection.js → Build/node_modules/filelist/node_modules/utilities/test/sorted_collection.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/string.js → Build/node_modules/filelist/node_modules/utilities/test/string.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/uri.js → Build/node_modules/filelist/node_modules/utilities/test/uri.js


+ 0 - 0
Build/node_modules/jake/node_modules/filelist/node_modules/utilities/test/xml.js → Build/node_modules/filelist/node_modules/utilities/test/xml.js


+ 59 - 30
Build/node_modules/jake/node_modules/filelist/package.json → Build/node_modules/filelist/package.json

@@ -1,54 +1,83 @@
 {
-  "name": "filelist",
-  "version": "0.0.4",
-  "description": "Lazy-evaluating list of files, based on globs or regex patterns",
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+  "_args": [
+    [
+      "[email protected]",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/jake"
+    ]
+  ],
+  "_from": "filelist@>=0.0.0 <0.1.0",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/filelist",
+  "_nodeVersion": "0.10.33",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "mde"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/mde/filelist.git"
+  "_npmVersion": "2.1.11",
+  "_phantomChildren": {
+    "lru-cache": "2.7.3",
+    "sigmund": "1.0.1"
   },
-  "keywords": [
-    "file",
-    "utility",
-    "glob"
+  "_requested": {
+    "name": "filelist",
+    "raw": "[email protected]",
+    "rawSpec": "0.0.x",
+    "scope": null,
+    "spec": ">=0.0.0 <0.1.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/jake"
   ],
+  "_resolved": "https://registry.npmjs.org/filelist/-/filelist-0.0.4.tgz",
+  "_shasum": "d7d65a03748b788906676996fc45a0c680ded8d5",
+  "_shrinkwrap": null,
+  "_spec": "[email protected]",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/jake",
   "author": {
-    "name": "Matthew Eernisse",
     "email": "[email protected]",
+    "name": "Matthew Eernisse",
     "url": "http://fleegix.org"
   },
-  "license": "Apache 2",
   "bugs": {
     "url": "https://github.com/mde/filelist/issues"
   },
-  "homepage": "https://github.com/mde/filelist",
   "dependencies": {
     "minimatch": "0.3.0",
     "utilities": "0.0.37"
   },
-  "_id": "[email protected]",
-  "_shasum": "d7d65a03748b788906676996fc45a0c680ded8d5",
-  "_resolved": "https://registry.npmjs.org/filelist/-/filelist-0.0.4.tgz",
-  "_from": "filelist@>=0.0.0 <0.1.0",
-  "_npmVersion": "2.1.11",
-  "_nodeVersion": "0.10.33",
-  "_npmUser": {
-    "name": "mde",
-    "email": "[email protected]"
+  "description": "Lazy-evaluating list of files, based on globs or regex patterns",
+  "devDependencies": {},
+  "directories": {},
+  "dist": {
+    "shasum": "d7d65a03748b788906676996fc45a0c680ded8d5",
+    "tarball": "http://registry.npmjs.org/filelist/-/filelist-0.0.4.tgz"
   },
+  "homepage": "https://github.com/mde/filelist",
+  "keywords": [
+    "file",
+    "glob",
+    "utility"
+  ],
+  "license": "Apache 2",
+  "main": "index.js",
   "maintainers": [
     {
       "name": "mde",
       "email": "[email protected]"
     }
   ],
-  "dist": {
-    "shasum": "d7d65a03748b788906676996fc45a0c680ded8d5",
-    "tarball": "http://registry.npmjs.org/filelist/-/filelist-0.0.4.tgz"
+  "name": "filelist",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/mde/filelist.git"
   },
-  "directories": {},
-  "readme": "ERROR: No README data found!"
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "0.0.4"
 }

+ 4 - 0
Build/node_modules/findup-sync/.npmignore

@@ -0,0 +1,4 @@
+test
+.travis.yml
+.jshintrc
+Gruntfile.js

+ 22 - 0
Build/node_modules/findup-sync/LICENSE-MIT

@@ -0,0 +1,22 @@
+Copyright (c) 2013 "Cowboy" Ben Alman
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.

+ 47 - 0
Build/node_modules/findup-sync/README.md

@@ -0,0 +1,47 @@
+# findup-sync [![Build Status](https://secure.travis-ci.org/cowboy/node-findup-sync.png?branch=master)](http://travis-ci.org/cowboy/node-findup-sync)
+
+Find the first file matching a given pattern in the current directory or the nearest ancestor directory.
+
+## Getting Started
+Install the module with: `npm install findup-sync`
+
+```js
+var findup = require('findup-sync');
+
+// Start looking in the CWD.
+var filepath1 = findup('{a,b}*.txt');
+
+// Start looking somewhere else, and ignore case (probably a good idea).
+var filepath2 = findup('{a,b}*.txt', {cwd: '/some/path', nocase: true});
+```
+
+## Usage
+
+```js
+findup(patternOrPatterns [, minimatchOptions])
+```
+
+### patternOrPatterns
+Type: `String` or `Array`  
+Default: none
+
+One or more wildcard glob patterns. Or just filenames.
+
+### minimatchOptions
+Type: `Object`  
+Default: `{}`
+
+Options to be passed to [minimatch](https://github.com/isaacs/minimatch).
+
+Note that if you want to start in a different directory than the current working directory, specify a `cwd` property here.
+
+## Contributing
+In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).
+
+## Release History
+2014-12-17 - v0.2.1 - updated to glob 4.3.  
+2014-12-16 - v0.2.0 - Removed lodash, updated to glob 4.x.  
+2014-03-14 - v0.1.3 - Updated dependencies.  
+2013-03-08 - v0.1.2 - Updated dependencies. Fixed a Node 0.9.x bug. Updated unit tests to work cross-platform.  
+2012-11-15 - v0.1.1 - Now works without an options object.  
+2012-11-01 - v0.1.0 - Initial release.

+ 49 - 0
Build/node_modules/findup-sync/lib/findup-sync.js

@@ -0,0 +1,49 @@
+/*
+ * findup-sync
+ * https://github.com/cowboy/node-findup-sync
+ *
+ * Copyright (c) 2013 "Cowboy" Ben Alman
+ * Licensed under the MIT license.
+ */
+
+'use strict';
+
+// Nodejs libs.
+var path = require('path');
+
+// External libs.
+var glob = require('glob');
+
+// Search for a filename in the given directory or all parent directories.
+module.exports = function(patterns, options) {
+  // Normalize patterns to an array.
+  if (!Array.isArray(patterns)) { patterns = [patterns]; }
+  // Create globOptions so that it can be modified without mutating the
+  // original object.
+  var globOptions = Object.create(options || {});
+  globOptions.maxDepth = 1;
+  globOptions.cwd = path.resolve(globOptions.cwd || '.');
+
+  var files, lastpath;
+  do {
+    // Search for files matching patterns.
+    files = patterns.map(function(pattern) {
+      return glob.sync(pattern, globOptions);
+    }).reduce(function(a, b) {
+      return a.concat(b);
+    }).filter(function(entry, index, arr) {
+      return index === arr.indexOf(entry);
+    });
+    // Return file if found.
+    if (files.length > 0) {
+      return path.resolve(path.join(globOptions.cwd, files[0]));
+    }
+    // Go up a directory.
+    lastpath = globOptions.cwd;
+    globOptions.cwd = path.resolve(globOptions.cwd, '..');
+  // If parentpath is the same as basedir, we can't go any higher.
+  } while (globOptions.cwd !== lastpath);
+
+  // No files were found!
+  return null;
+};

+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/LICENSE → Build/node_modules/findup-sync/node_modules/glob/LICENSE


+ 357 - 0
Build/node_modules/findup-sync/node_modules/glob/README.md

@@ -0,0 +1,357 @@
+[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Dependency Status](https://david-dm.org/isaacs/node-glob.svg)](https://david-dm.org/isaacs/node-glob) [![devDependency Status](https://david-dm.org/isaacs/node-glob/dev-status.svg)](https://david-dm.org/isaacs/node-glob#info=devDependencies) [![optionalDependency Status](https://david-dm.org/isaacs/node-glob/optional-status.svg)](https://david-dm.org/isaacs/node-glob#info=optionalDependencies)
+
+# Glob
+
+Match files using the patterns the shell uses, like stars and stuff.
+
+This is a glob implementation in JavaScript.  It uses the `minimatch`
+library to do its matching.
+
+![](oh-my-glob.gif)
+
+## Usage
+
+```javascript
+var glob = require("glob")
+
+// options is optional
+glob("**/*.js", options, function (er, files) {
+  // files is an array of filenames.
+  // If the `nonull` option is set, and nothing
+  // was found, then files is ["**/*.js"]
+  // er is an error object or null.
+})
+```
+
+## Glob Primer
+
+"Globs" are the patterns you type when you do stuff like `ls *.js` on
+the command line, or put `build/*` in a `.gitignore` file.
+
+Before parsing the path part patterns, braced sections are expanded
+into a set.  Braced sections start with `{` and end with `}`, with any
+number of comma-delimited sections within.  Braced sections may contain
+slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`.
+
+The following characters have special magic meaning when used in a
+path portion:
+
+* `*` Matches 0 or more characters in a single path portion
+* `?` Matches 1 character
+* `[...]` Matches a range of characters, similar to a RegExp range.
+  If the first character of the range is `!` or `^` then it matches
+  any character not in the range.
+* `!(pattern|pattern|pattern)` Matches anything that does not match
+  any of the patterns provided.
+* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the
+  patterns provided.
+* `+(pattern|pattern|pattern)` Matches one or more occurrences of the
+  patterns provided.
+* `*(a|b|c)` Matches zero or more occurrences of the patterns provided
+* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns
+  provided
+* `**` If a "globstar" is alone in a path portion, then it matches
+  zero or more directories and subdirectories searching for matches.
+  It does not crawl symlinked directories.
+
+### Dots
+
+If a file or directory path portion has a `.` as the first character,
+then it will not match any glob pattern unless that pattern's
+corresponding path part also has a `.` as its first character.
+
+For example, the pattern `a/.*/c` would match the file at `a/.b/c`.
+However the pattern `a/*/c` would not, because `*` does not start with
+a dot character.
+
+You can make glob treat dots as normal characters by setting
+`dot:true` in the options.
+
+### Basename Matching
+
+If you set `matchBase:true` in the options, and the pattern has no
+slashes in it, then it will seek for any file anywhere in the tree
+with a matching basename.  For example, `*.js` would match
+`test/simple/basic.js`.
+
+### Negation
+
+The intent for negation would be for a pattern starting with `!` to
+match everything that *doesn't* match the supplied pattern.  However,
+the implementation is weird, and for the time being, this should be
+avoided.  The behavior will change or be deprecated in version 5.
+
+### Empty Sets
+
+If no matching files are found, then an empty array is returned.  This
+differs from the shell, where the pattern itself is returned.  For
+example:
+
+    $ echo a*s*d*f
+    a*s*d*f
+
+To get the bash-style behavior, set the `nonull:true` in the options.
+
+### See Also:
+
+* `man sh`
+* `man bash` (Search for "Pattern Matching")
+* `man 3 fnmatch`
+* `man 5 gitignore`
+* [minimatch documentation](https://github.com/isaacs/minimatch)
+
+## glob.hasMagic(pattern, [options])
+
+Returns `true` if there are any special characters in the pattern, and
+`false` otherwise.
+
+Note that the options affect the results.  If `noext:true` is set in
+the options object, then `+(a|b)` will not be considered a magic
+pattern.  If the pattern has a brace expansion, like `a/{b/c,x/y}`
+then that is considered magical, unless `nobrace:true` is set in the
+options.
+
+## glob(pattern, [options], cb)
+
+* `pattern` {String} Pattern to be matched
+* `options` {Object}
+* `cb` {Function}
+  * `err` {Error | null}
+  * `matches` {Array<String>} filenames found matching the pattern
+
+Perform an asynchronous glob search.
+
+## glob.sync(pattern, [options])
+
+* `pattern` {String} Pattern to be matched
+* `options` {Object}
+* return: {Array<String>} filenames found matching the pattern
+
+Perform a synchronous glob search.
+
+## Class: glob.Glob
+
+Create a Glob object by instantiating the `glob.Glob` class.
+
+```javascript
+var Glob = require("glob").Glob
+var mg = new Glob(pattern, options, cb)
+```
+
+It's an EventEmitter, and starts walking the filesystem to find matches
+immediately.
+
+### new glob.Glob(pattern, [options], [cb])
+
+* `pattern` {String} pattern to search for
+* `options` {Object}
+* `cb` {Function} Called when an error occurs, or matches are found
+  * `err` {Error | null}
+  * `matches` {Array<String>} filenames found matching the pattern
+
+Note that if the `sync` flag is set in the options, then matches will
+be immediately available on the `g.found` member.
+
+### Properties
+
+* `minimatch` The minimatch object that the glob uses.
+* `options` The options object passed in.
+* `aborted` Boolean which is set to true when calling `abort()`.  There
+  is no way at this time to continue a glob search after aborting, but
+  you can re-use the statCache to avoid having to duplicate syscalls.
+* `statCache` Collection of all the stat results the glob search
+  performed.
+* `cache` Convenience object.  Each field has the following possible
+  values:
+  * `false` - Path does not exist
+  * `true` - Path exists
+  * `'DIR'` - Path exists, and is not a directory
+  * `'FILE'` - Path exists, and is a directory
+  * `[file, entries, ...]` - Path exists, is a directory, and the
+    array value is the results of `fs.readdir`
+* `statCache` Cache of `fs.stat` results, to prevent statting the same
+  path multiple times.
+* `symlinks` A record of which paths are symbolic links, which is
+  relevant in resolving `**` patterns.
+
+### Events
+
+* `end` When the matching is finished, this is emitted with all the
+  matches found.  If the `nonull` option is set, and no match was found,
+  then the `matches` list contains the original pattern.  The matches
+  are sorted, unless the `nosort` flag is set.
+* `match` Every time a match is found, this is emitted with the matched.
+* `error` Emitted when an unexpected error is encountered, or whenever
+  any fs error occurs if `options.strict` is set.
+* `abort` When `abort()` is called, this event is raised.
+
+### Methods
+
+* `pause` Temporarily stop the search
+* `resume` Resume the search
+* `abort` Stop the search forever
+
+### Options
+
+All the options that can be passed to Minimatch can also be passed to
+Glob to change pattern matching behavior.  Also, some have been added,
+or have glob-specific ramifications.
+
+All options are false by default, unless otherwise noted.
+
+All options are added to the Glob object, as well.
+
+If you are running many `glob` operations, you can pass a Glob object
+as the `options` argument to a subsequent operation to shortcut some
+`stat` and `readdir` calls.  At the very least, you may pass in shared
+`symlinks`, `statCache`, and `cache` options, so that parallel glob
+operations will be sped up by sharing information about the
+filesystem.
+
+* `cwd` The current working directory in which to search.  Defaults
+  to `process.cwd()`.
+* `root` The place where patterns starting with `/` will be mounted
+  onto.  Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix
+  systems, and `C:\` or some such on Windows.)
+* `dot` Include `.dot` files in normal matches and `globstar` matches.
+  Note that an explicit dot in a portion of the pattern will always
+  match dot files.
+* `nomount` By default, a pattern starting with a forward-slash will be
+  "mounted" onto the root setting, so that a valid filesystem path is
+  returned.  Set this flag to disable that behavior.
+* `mark` Add a `/` character to directory matches.  Note that this
+  requires additional stat calls.
+* `nosort` Don't sort the results.
+* `stat` Set to true to stat *all* results.  This reduces performance
+  somewhat, and is completely unnecessary, unless `readdir` is presumed
+  to be an untrustworthy indicator of file existence.
+* `silent` When an unusual error is encountered when attempting to
+  read a directory, a warning will be printed to stderr.  Set the
+  `silent` option to true to suppress these warnings.
+* `strict` When an unusual error is encountered when attempting to
+  read a directory, the process will just continue on in search of
+  other matches.  Set the `strict` option to raise an error in these
+  cases.
+* `cache` See `cache` property above.  Pass in a previously generated
+  cache object to save some fs calls.
+* `statCache` A cache of results of filesystem information, to prevent
+  unnecessary stat calls.  While it should not normally be necessary
+  to set this, you may pass the statCache from one glob() call to the
+  options object of another, if you know that the filesystem will not
+  change between calls.  (See "Race Conditions" below.)
+* `symlinks` A cache of known symbolic links.  You may pass in a
+  previously generated `symlinks` object to save `lstat` calls when
+  resolving `**` matches.
+* `sync` Perform a synchronous glob search.
+* `nounique` In some cases, brace-expanded patterns can result in the
+  same file showing up multiple times in the result set.  By default,
+  this implementation prevents duplicates in the result set.  Set this
+  flag to disable that behavior.
+* `nonull` Set to never return an empty set, instead returning a set
+  containing the pattern itself.  This is the default in glob(3).
+* `debug` Set to enable debug logging in minimatch and glob.
+* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets.
+* `noglobstar` Do not match `**` against multiple filenames.  (Ie,
+  treat it as a normal `*` instead.)
+* `noext` Do not match `+(a|b)` "extglob" patterns.
+* `nocase` Perform a case-insensitive match.  Note: on
+  case-insensitive filesystems, non-magic patterns will match by
+  default, since `stat` and `readdir` will not raise errors.
+* `matchBase` Perform a basename-only match if the pattern does not
+  contain any slash characters.  That is, `*.js` would be treated as
+  equivalent to `**/*.js`, matching all js files in all directories.
+* `nonegate` Suppress `negate` behavior.  (See below.)
+* `nocomment` Suppress `comment` behavior.  (See below.)
+* `nonull` Return the pattern when no matches are found.
+* `nodir` Do not match directories, only files.
+
+## Comparisons to other fnmatch/glob implementations
+
+While strict compliance with the existing standards is a worthwhile
+goal, some discrepancies exist between node-glob and other
+implementations, and are intentional.
+
+If the pattern starts with a `!` character, then it is negated.  Set the
+`nonegate` flag to suppress this behavior, and treat leading `!`
+characters normally.  This is perhaps relevant if you wish to start the
+pattern with a negative extglob pattern like `!(a|B)`.  Multiple `!`
+characters at the start of a pattern will negate the pattern multiple
+times.
+
+If a pattern starts with `#`, then it is treated as a comment, and
+will not match anything.  Use `\#` to match a literal `#` at the
+start of a line, or set the `nocomment` flag to suppress this behavior.
+
+The double-star character `**` is supported by default, unless the
+`noglobstar` flag is set.  This is supported in the manner of bsdglob
+and bash 4.3, where `**` only has special significance if it is the only
+thing in a path part.  That is, `a/**/b` will match `a/x/y/b`, but
+`a/**b` will not.
+
+Note that symlinked directories are not crawled as part of a `**`,
+though their contents may match against subsequent portions of the
+pattern.  This prevents infinite loops and duplicates and the like.
+
+If an escaped pattern has no matches, and the `nonull` flag is set,
+then glob returns the pattern as-provided, rather than
+interpreting the character escapes.  For example,
+`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
+`"*a?"`.  This is akin to setting the `nullglob` option in bash, except
+that it does not resolve escaped pattern characters.
+
+If brace expansion is not disabled, then it is performed before any
+other interpretation of the glob pattern.  Thus, a pattern like
+`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
+**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
+checked for validity.  Since those two are valid, matching proceeds.
+
+## Windows
+
+**Please only use forward-slashes in glob expressions.**
+
+Though windows uses either `/` or `\` as its path separator, only `/`
+characters are used by this glob implementation.  You must use
+forward-slashes **only** in glob expressions.  Back-slashes will always
+be interpreted as escape characters, not path separators.
+
+Results from absolute patterns such as `/foo/*` are mounted onto the
+root setting using `path.join`.  On windows, this will by default result
+in `/foo/*` matching `C:\foo\bar.txt`.
+
+## Race Conditions
+
+Glob searching, by its very nature, is susceptible to race conditions,
+since it relies on directory walking and such.
+
+As a result, it is possible that a file that exists when glob looks for
+it may have been deleted or modified by the time it returns the result.
+
+As part of its internal implementation, this program caches all stat
+and readdir calls that it makes, in order to cut down on system
+overhead.  However, this also makes it even more susceptible to races,
+especially if the cache or statCache objects are reused between glob
+calls.
+
+Users are thus advised not to use a glob result as a guarantee of
+filesystem state in the face of rapid changes.  For the vast majority
+of operations, this is never a problem.
+
+## Contributing
+
+Any change to behavior (including bugfixes) must come with a test.
+
+Patches that fail tests or reduce performance will be rejected.
+
+```
+# to run tests
+npm test
+
+# to re-generate test fixtures
+npm run test-regen
+
+# to benchmark against bash/zsh
+npm run bench
+
+# to profile javascript
+npm run prof
+```

+ 177 - 0
Build/node_modules/findup-sync/node_modules/glob/common.js

@@ -0,0 +1,177 @@
+exports.alphasort = alphasort
+exports.alphasorti = alphasorti
+exports.isAbsolute = process.platform === "win32" ? absWin : absUnix
+exports.setopts = setopts
+exports.ownProp = ownProp
+exports.makeAbs = makeAbs
+exports.finish = finish
+exports.mark = mark
+
+function ownProp (obj, field) {
+  return Object.prototype.hasOwnProperty.call(obj, field)
+}
+
+var path = require("path")
+var minimatch = require("minimatch")
+var Minimatch = minimatch.Minimatch
+
+function absWin (p) {
+  if (absUnix(p)) return true
+  // pull off the device/UNC bit from a windows path.
+  // from node's lib/path.js
+  var splitDeviceRe =
+      /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/
+  var result = splitDeviceRe.exec(p)
+  var device = result[1] || ''
+  var isUnc = device && device.charAt(1) !== ':'
+  var isAbsolute = !!result[2] || isUnc // UNC paths are always absolute
+
+  return isAbsolute
+}
+
+function absUnix (p) {
+  return p.charAt(0) === "/" || p === ""
+}
+
+function alphasorti (a, b) {
+  return a.toLowerCase().localeCompare(b.toLowerCase())
+}
+
+function alphasort (a, b) {
+  return a.localeCompare(b)
+}
+
+
+function setopts (self, pattern, options) {
+  if (!options)
+    options = {}
+
+  // base-matching: just use globstar for that.
+  if (options.matchBase && -1 === pattern.indexOf("/")) {
+    if (options.noglobstar) {
+      throw new Error("base matching requires globstar")
+    }
+    pattern = "**/" + pattern
+  }
+
+  self.pattern = pattern
+  self.strict = options.strict !== false
+  self.dot = !!options.dot
+  self.mark = !!options.mark
+  self.nodir = !!options.nodir
+  if (self.nodir)
+    self.mark = true
+  self.sync = !!options.sync
+  self.nounique = !!options.nounique
+  self.nonull = !!options.nonull
+  self.nosort = !!options.nosort
+  self.nocase = !!options.nocase
+  self.stat = !!options.stat
+  self.noprocess = !!options.noprocess
+
+  self.maxLength = options.maxLength || Infinity
+  self.cache = options.cache || Object.create(null)
+  self.statCache = options.statCache || Object.create(null)
+  self.symlinks = options.symlinks || Object.create(null)
+
+  self.changedCwd = false
+  var cwd = process.cwd()
+  if (!ownProp(options, "cwd"))
+    self.cwd = cwd
+  else {
+    self.cwd = options.cwd
+    self.changedCwd = path.resolve(options.cwd) !== cwd
+  }
+
+  self.root = options.root || path.resolve(self.cwd, "/")
+  self.root = path.resolve(self.root)
+  if (process.platform === "win32")
+    self.root = self.root.replace(/\\/g, "/")
+
+  self.nomount = !!options.nomount
+
+  self.minimatch = new Minimatch(pattern, options)
+  self.options = self.minimatch.options
+}
+
+function finish (self) {
+  var nou = self.nounique
+  var all = nou ? [] : Object.create(null)
+
+  for (var i = 0, l = self.matches.length; i < l; i ++) {
+    var matches = self.matches[i]
+    if (!matches) {
+      if (self.nonull) {
+        // do like the shell, and spit out the literal glob
+        var literal = self.minimatch.globSet[i]
+        if (nou)
+          all.push(literal)
+        else
+          all[literal] = true
+      }
+    } else {
+      // had matches
+      var m = Object.keys(matches)
+      if (nou)
+        all.push.apply(all, m)
+      else
+        m.forEach(function (m) {
+          all[m] = true
+        })
+    }
+  }
+
+  if (!nou)
+    all = Object.keys(all)
+
+  if (!self.nosort)
+    all = all.sort(self.nocase ? alphasorti : alphasort)
+
+  // at *some* point we statted all of these
+  if (self.mark) {
+    for (var i = 0; i < all.length; i++) {
+      all[i] = self._mark(all[i])
+    }
+    if (self.nodir) {
+      all = all.filter(function (e) {
+        return !(/\/$/.test(e))
+      })
+    }
+  }
+
+  self.found = all
+}
+
+function mark (self, p) {
+  var c = self.cache[p]
+  var m = p
+  if (c) {
+    var isDir = c === 'DIR' || Array.isArray(c)
+    var slash = p.slice(-1) === '/'
+
+    if (isDir && !slash)
+      m += '/'
+    else if (!isDir && slash)
+      m = m.slice(0, -1)
+
+    if (m !== p) {
+      self.statCache[m] = self.statCache[p]
+      self.cache[m] = self.cache[p]
+    }
+  }
+
+  return m
+}
+
+// lotta situps...
+function makeAbs (self, f) {
+  var abs = f
+  if (f.charAt(0) === "/") {
+    abs = path.join(self.root, f)
+  } else if (exports.isAbsolute(f)) {
+    abs = f
+  } else if (self.changedCwd) {
+    abs = path.resolve(self.cwd, f)
+  }
+  return abs
+}

+ 649 - 0
Build/node_modules/findup-sync/node_modules/glob/glob.js

@@ -0,0 +1,649 @@
+// Approach:
+//
+// 1. Get the minimatch set
+// 2. For each pattern in the set, PROCESS(pattern, false)
+// 3. Store matches per-set, then uniq them
+//
+// PROCESS(pattern, inGlobStar)
+// Get the first [n] items from pattern that are all strings
+// Join these together.  This is PREFIX.
+//   If there is no more remaining, then stat(PREFIX) and
+//   add to matches if it succeeds.  END.
+//
+// If inGlobStar and PREFIX is symlink and points to dir
+//   set ENTRIES = []
+// else readdir(PREFIX) as ENTRIES
+//   If fail, END
+//
+// with ENTRIES
+//   If pattern[n] is GLOBSTAR
+//     // handle the case where the globstar match is empty
+//     // by pruning it out, and testing the resulting pattern
+//     PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
+//     // handle other cases.
+//     for ENTRY in ENTRIES (not dotfiles)
+//       // attach globstar + tail onto the entry
+//       // Mark that this entry is a globstar match
+//       PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
+//
+//   else // not globstar
+//     for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
+//       Test ENTRY against pattern[n]
+//       If fails, continue
+//       If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
+//
+// Caveat:
+//   Cache all stats and readdirs results to minimize syscall.  Since all
+//   we ever care about is existence and directory-ness, we can just keep
+//   `true` for files, and [children,...] for directories, or `false` for
+//   things that don't exist.
+
+module.exports = glob
+
+var fs = require('fs')
+var minimatch = require('minimatch')
+var Minimatch = minimatch.Minimatch
+var inherits = require('inherits')
+var EE = require('events').EventEmitter
+var path = require('path')
+var assert = require('assert')
+var globSync = require('./sync.js')
+var common = require('./common.js')
+var alphasort = common.alphasort
+var alphasorti = common.alphasorti
+var isAbsolute = common.isAbsolute
+var setopts = common.setopts
+var ownProp = common.ownProp
+var inflight = require('inflight')
+var util = require('util')
+
+var once = require('once')
+
+function glob (pattern, options, cb) {
+  if (typeof options === 'function') cb = options, options = {}
+  if (!options) options = {}
+
+  if (options.sync) {
+    if (cb)
+      throw new TypeError('callback provided to sync glob')
+    return globSync(pattern, options)
+  }
+
+  return new Glob(pattern, options, cb)
+}
+
+glob.sync = globSync
+var GlobSync = glob.GlobSync = globSync.GlobSync
+
+// old api surface
+glob.glob = glob
+
+glob.hasMagic = function (pattern, options_) {
+  var options = util._extend({}, options_)
+  options.noprocess = true
+
+  var g = new Glob(pattern, options)
+  var set = g.minimatch.set
+  if (set.length > 1)
+    return true
+
+  for (var j = 0; j < set[0].length; j++) {
+    if (typeof set[0][j] !== 'string')
+      return true
+  }
+
+  return false
+}
+
+glob.Glob = Glob
+inherits(Glob, EE)
+function Glob (pattern, options, cb) {
+  if (typeof options === 'function') {
+    cb = options
+    options = null
+  }
+
+  if (options && options.sync) {
+    if (cb)
+      throw new TypeError('callback provided to sync glob')
+    return new GlobSync(pattern, options)
+  }
+
+  if (!(this instanceof Glob))
+    return new Glob(pattern, options, cb)
+
+  setopts(this, pattern, options)
+
+  // process each pattern in the minimatch set
+  var n = this.minimatch.set.length
+
+  // The matches are stored as {<filename>: true,...} so that
+  // duplicates are automagically pruned.
+  // Later, we do an Object.keys() on these.
+  // Keep them as a list so we can fill in when nonull is set.
+  this.matches = new Array(n)
+
+  if (typeof cb === 'function') {
+    cb = once(cb)
+    this.on('error', cb)
+    this.on('end', function (matches) {
+      cb(null, matches)
+    })
+  }
+
+  var self = this
+  var n = this.minimatch.set.length
+  this._processing = 0
+  this.matches = new Array(n)
+
+  this._emitQueue = []
+  this._processQueue = []
+  this.paused = false
+
+  if (this.noprocess)
+    return this
+
+  if (n === 0)
+    return done()
+
+  for (var i = 0; i < n; i ++) {
+    this._process(this.minimatch.set[i], i, false, done)
+  }
+
+  function done () {
+    --self._processing
+    if (self._processing <= 0)
+      self._finish()
+  }
+}
+
+Glob.prototype._finish = function () {
+  assert(this instanceof Glob)
+  if (this.aborted)
+    return
+
+  //console.error('FINISH', this.matches)
+  common.finish(this)
+  this.emit('end', this.found)
+}
+
+Glob.prototype._mark = function (p) {
+  return common.mark(this, p)
+}
+
+Glob.prototype._makeAbs = function (f) {
+  return common.makeAbs(this, f)
+}
+
+Glob.prototype.abort = function () {
+  this.aborted = true
+  this.emit('abort')
+}
+
+Glob.prototype.pause = function () {
+  if (!this.paused) {
+    this.paused = true
+    this.emit('pause')
+  }
+}
+
+Glob.prototype.resume = function () {
+  if (this.paused) {
+    this.emit('resume')
+    this.paused = false
+    if (this._emitQueue.length) {
+      var eq = this._emitQueue.slice(0)
+      this._emitQueue.length = 0
+      for (var i = 0; i < eq.length; i ++) {
+        var e = eq[i]
+        this._emitMatch(e[0], e[1])
+      }
+    }
+    if (this._processQueue.length) {
+      var pq = this._processQueue.slice(0)
+      this._processQueue.length = 0
+      for (var i = 0; i < pq.length; i ++) {
+        var p = pq[i]
+        this._processing--
+        this._process(p[0], p[1], p[2], p[3])
+      }
+    }
+  }
+}
+
+Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
+  assert(this instanceof Glob)
+  assert(typeof cb === 'function')
+
+  if (this.aborted)
+    return
+
+  this._processing++
+  if (this.paused) {
+    this._processQueue.push([pattern, index, inGlobStar, cb])
+    return
+  }
+
+  //console.error('PROCESS %d', this._processing, pattern)
+
+  // Get the first [n] parts of pattern that are all strings.
+  var n = 0
+  while (typeof pattern[n] === 'string') {
+    n ++
+  }
+  // now n is the index of the first one that is *not* a string.
+
+  // see if there's anything else
+  var prefix
+  switch (n) {
+    // if not, then this is rather simple
+    case pattern.length:
+      this._processSimple(pattern.join('/'), index, cb)
+      return
+
+    case 0:
+      // pattern *starts* with some non-trivial item.
+      // going to readdir(cwd), but not include the prefix in matches.
+      prefix = null
+      break
+
+    default:
+      // pattern has some string bits in the front.
+      // whatever it starts with, whether that's 'absolute' like /foo/bar,
+      // or 'relative' like '../baz'
+      prefix = pattern.slice(0, n).join('/')
+      break
+  }
+
+  var remain = pattern.slice(n)
+
+  // get the list of entries.
+  var read
+  if (prefix === null)
+    read = '.'
+  else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
+    if (!prefix || !isAbsolute(prefix))
+      prefix = '/' + prefix
+    read = prefix
+  } else
+    read = prefix
+
+  var abs = this._makeAbs(read)
+
+  var isGlobStar = remain[0] === minimatch.GLOBSTAR
+  if (isGlobStar)
+    this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)
+  else
+    this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)
+}
+
+
+Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
+  var self = this
+  this._readdir(abs, inGlobStar, function (er, entries) {
+    return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
+  })
+}
+
+Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+
+  // if the abs isn't a dir, then nothing can match!
+  if (!entries)
+    return cb()
+
+  // It will only match dot entries if it starts with a dot, or if
+  // dot is set.  Stuff like @(.foo|.bar) isn't allowed.
+  var pn = remain[0]
+  var negate = !!this.minimatch.negate
+  var rawGlob = pn._glob
+  var dotOk = this.dot || rawGlob.charAt(0) === '.'
+
+  var matchedEntries = []
+  for (var i = 0; i < entries.length; i++) {
+    var e = entries[i]
+    if (e.charAt(0) !== '.' || dotOk) {
+      var m
+      if (negate && !prefix) {
+        m = !e.match(pn)
+      } else {
+        m = e.match(pn)
+      }
+      if (m)
+        matchedEntries.push(e)
+    }
+  }
+
+  //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
+
+  var len = matchedEntries.length
+  // If there are no matched entries, then nothing matches.
+  if (len === 0)
+    return cb()
+
+  // if this is the last remaining pattern bit, then no need for
+  // an additional stat *unless* the user has specified mark or
+  // stat explicitly.  We know they exist, since readdir returned
+  // them.
+
+  if (remain.length === 1 && !this.mark && !this.stat) {
+    if (!this.matches[index])
+      this.matches[index] = Object.create(null)
+
+    for (var i = 0; i < len; i ++) {
+      var e = matchedEntries[i]
+      if (prefix) {
+        if (prefix !== '/')
+          e = prefix + '/' + e
+        else
+          e = prefix + e
+      }
+
+      if (e.charAt(0) === '/' && !this.nomount) {
+        e = path.join(this.root, e)
+      }
+      this._emitMatch(index, e)
+    }
+    // This was the last one, and no stats were needed
+    return cb()
+  }
+
+  // now test all matched entries as stand-ins for that part
+  // of the pattern.
+  remain.shift()
+  for (var i = 0; i < len; i ++) {
+    var e = matchedEntries[i]
+    var newPattern
+    if (prefix) {
+      if (prefix !== '/')
+        e = prefix + '/' + e
+      else
+        e = prefix + e
+    }
+    this._process([e].concat(remain), index, inGlobStar, cb)
+  }
+  cb()
+}
+
+Glob.prototype._emitMatch = function (index, e) {
+  if (this.aborted)
+    return
+
+  if (!this.matches[index][e]) {
+    if (this.paused) {
+      this._emitQueue.push([index, e])
+      return
+    }
+
+    if (this.nodir) {
+      var c = this.cache[this._makeAbs(e)]
+      if (c === 'DIR' || Array.isArray(c))
+        return
+    }
+
+    this.matches[index][e] = true
+    if (!this.stat && !this.mark)
+      return this.emit('match', e)
+
+    var self = this
+    this._stat(this._makeAbs(e), function (er, c, st) {
+      self.emit('stat', e, st)
+      self.emit('match', e)
+    })
+  }
+}
+
+Glob.prototype._readdirInGlobStar = function (abs, cb) {
+  if (this.aborted)
+    return
+
+  var lstatkey = 'lstat\0' + abs
+  var self = this
+  var lstatcb = inflight(lstatkey, lstatcb_)
+
+  if (lstatcb)
+    fs.lstat(abs, lstatcb)
+
+  function lstatcb_ (er, lstat) {
+    if (er)
+      return cb()
+
+    var isSym = lstat.isSymbolicLink()
+    self.symlinks[abs] = isSym
+
+    // If it's not a symlink or a dir, then it's definitely a regular file.
+    // don't bother doing a readdir in that case.
+    if (!isSym && !lstat.isDirectory()) {
+      self.cache[abs] = 'FILE'
+      cb()
+    } else
+      self._readdir(abs, false, cb)
+  }
+}
+
+Glob.prototype._readdir = function (abs, inGlobStar, cb) {
+  if (this.aborted)
+    return
+
+  cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
+  if (!cb)
+    return
+
+  //console.error('RD %j %j', +inGlobStar, abs)
+  if (inGlobStar && !ownProp(this.symlinks, abs))
+    return this._readdirInGlobStar(abs, cb)
+
+  if (ownProp(this.cache, abs)) {
+    var c = this.cache[abs]
+    if (!c || c === 'FILE')
+      return cb()
+
+    if (Array.isArray(c))
+      return cb(null, c)
+  }
+
+  var self = this
+  fs.readdir(abs, readdirCb(this, abs, cb))
+}
+
+function readdirCb (self, abs, cb) {
+  return function (er, entries) {
+    if (er)
+      self._readdirError(abs, er, cb)
+    else
+      self._readdirEntries(abs, entries, cb)
+  }
+}
+
+Glob.prototype._readdirEntries = function (abs, entries, cb) {
+  if (this.aborted)
+    return
+
+  // if we haven't asked to stat everything, then just
+  // assume that everything in there exists, so we can avoid
+  // having to stat it a second time.
+  if (!this.mark && !this.stat) {
+    for (var i = 0; i < entries.length; i ++) {
+      var e = entries[i]
+      if (abs === '/')
+        e = abs + e
+      else
+        e = abs + '/' + e
+      this.cache[e] = true
+    }
+  }
+
+  this.cache[abs] = entries
+  return cb(null, entries)
+}
+
+Glob.prototype._readdirError = function (f, er, cb) {
+  if (this.aborted)
+    return
+
+  // handle errors, and cache the information
+  switch (er.code) {
+    case 'ENOTDIR': // totally normal. means it *does* exist.
+      this.cache[f] = 'FILE'
+      break
+
+    case 'ENOENT': // not terribly unusual
+    case 'ELOOP':
+    case 'ENAMETOOLONG':
+    case 'UNKNOWN':
+      this.cache[f] = false
+      break
+
+    default: // some unusual error.  Treat as failure.
+      this.cache[f] = false
+      if (this.strict) return this.emit('error', er)
+      if (!this.silent) console.error('glob error', er)
+      break
+  }
+  return cb()
+}
+
+Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {
+  var self = this
+  this._readdir(abs, inGlobStar, function (er, entries) {
+    self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
+  })
+}
+
+
+Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+  //console.error('pgs2', prefix, remain[0], entries)
+
+  // no entries means not a dir, so it can never have matches
+  // foo.txt/** doesn't match foo.txt
+  if (!entries)
+    return cb()
+
+  // test without the globstar, and with every child both below
+  // and replacing the globstar.
+  var remainWithoutGlobStar = remain.slice(1)
+  var gspref = prefix ? [ prefix ] : []
+  var noGlobStar = gspref.concat(remainWithoutGlobStar)
+
+  // the noGlobStar pattern exits the inGlobStar state
+  this._process(noGlobStar, index, false, cb)
+
+  var isSym = this.symlinks[abs]
+  var len = entries.length
+
+  // If it's a symlink, and we're in a globstar, then stop
+  if (isSym && inGlobStar)
+    return cb()
+
+  for (var i = 0; i < len; i++) {
+    var e = entries[i]
+    if (e.charAt(0) === '.' && !this.dot)
+      continue
+
+    // these two cases enter the inGlobStar state
+    var instead = gspref.concat(entries[i], remainWithoutGlobStar)
+    this._process(instead, index, true, cb)
+
+    var below = gspref.concat(entries[i], remain)
+    this._process(below, index, true, cb)
+  }
+
+  cb()
+}
+
+Glob.prototype._processSimple = function (prefix, index, cb) {
+  // XXX review this.  Shouldn't it be doing the mounting etc
+  // before doing stat?  kinda weird?
+  var self = this
+  this._stat(prefix, function (er, exists) {
+    self._processSimple2(prefix, index, er, exists, cb)
+  })
+}
+Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {
+
+  //console.error('ps2', prefix, exists)
+
+  if (!this.matches[index])
+    this.matches[index] = Object.create(null)
+
+  // If it doesn't exist, then just mark the lack of results
+  if (!exists)
+    return cb()
+
+  if (prefix && isAbsolute(prefix) && !this.nomount) {
+    var trail = /[\/\\]$/.test(prefix)
+    if (prefix.charAt(0) === '/') {
+      prefix = path.join(this.root, prefix)
+    } else {
+      prefix = path.resolve(this.root, prefix)
+      if (trail)
+        prefix += '/'
+    }
+  }
+
+  if (process.platform === 'win32')
+    prefix = prefix.replace(/\\/g, '/')
+
+  // Mark this as a match
+  this._emitMatch(index, prefix)
+  cb()
+}
+
+// Returns either 'DIR', 'FILE', or false
+Glob.prototype._stat = function (f, cb) {
+  var abs = f
+  if (f.charAt(0) === '/')
+    abs = path.join(this.root, f)
+  else if (this.changedCwd)
+    abs = path.resolve(this.cwd, f)
+
+
+  if (f.length > this.maxLength)
+    return cb()
+
+  if (!this.stat && ownProp(this.cache, f)) {
+    var c = this.cache[f]
+
+    if (Array.isArray(c))
+      c = 'DIR'
+
+    // It exists, but not how we need it
+    if (abs.slice(-1) === '/' && c !== 'DIR')
+      return cb()
+
+    return cb(null, c)
+  }
+
+  var exists
+  var stat = this.statCache[abs]
+  if (stat !== undefined) {
+    if (stat === false)
+      return cb(null, stat)
+    else
+      return cb(null, stat.isDirectory() ? 'DIR' : 'FILE', stat)
+  }
+
+  var self = this
+  var statcb = inflight('stat\0' + abs, statcb_)
+  if (statcb)
+    fs.stat(abs, statcb)
+
+  function statcb_ (er, stat) {
+    self._stat2(f, abs, er, stat, cb)
+  }
+}
+
+Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
+  if (er) {
+    this.statCache[abs] = false
+    return cb()
+  }
+
+  this.statCache[abs] = stat
+
+  if (abs.slice(-1) === '/' && !stat.isDirectory())
+    return cb(null, false, stat)
+
+  var c = stat.isDirectory() ? 'DIR' : 'FILE'
+  this.cache[f] = this.cache[f] || c
+  return cb(null, c, stat)
+}

+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/LICENSE → Build/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/LICENSE


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/README.md → Build/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/README.md


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/browser.js → Build/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/browser.js


+ 0 - 0
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/minimatch.js → Build/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/minimatch.js


+ 63 - 38
Build/node_modules/fs-extra/node_modules/rimraf/node_modules/glob/node_modules/minimatch/package.json → Build/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/package.json

@@ -1,63 +1,88 @@
 {
+  "_args": [
+    [
+      "minimatch@^2.0.1",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/findup-sync/node_modules/glob"
+    ]
+  ],
+  "_from": "minimatch@>=2.0.1 <3.0.0",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/findup-sync/glob/minimatch",
+  "_nodeVersion": "2.2.1",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "isaacs"
+  },
+  "_npmVersion": "3.1.0",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "minimatch",
+    "raw": "minimatch@^2.0.1",
+    "rawSpec": "^2.0.1",
+    "scope": null,
+    "spec": ">=2.0.1 <3.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/findup-sync/glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
+  "_shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7",
+  "_shrinkwrap": null,
+  "_spec": "minimatch@^2.0.1",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/findup-sync/node_modules/glob",
   "author": {
-    "name": "Isaac Z. Schlueter",
     "email": "[email protected]",
+    "name": "Isaac Z. Schlueter",
     "url": "http://blog.izs.me"
   },
-  "name": "minimatch",
-  "description": "a glob matcher in javascript",
-  "version": "2.0.10",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/minimatch.git"
-  },
-  "main": "minimatch.js",
-  "scripts": {
-    "posttest": "standard minimatch.js test/*.js",
-    "test": "tap test/*.js",
-    "prepublish": "browserify -o browser.js -e minimatch.js -s minimatch --bare"
-  },
-  "engines": {
-    "node": "*"
+  "bugs": {
+    "url": "https://github.com/isaacs/minimatch/issues"
   },
   "dependencies": {
     "brace-expansion": "^1.0.0"
   },
+  "description": "a glob matcher in javascript",
   "devDependencies": {
     "browserify": "^9.0.3",
     "standard": "^3.7.2",
     "tap": "^1.2.0"
   },
-  "license": "ISC",
-  "files": [
-    "minimatch.js",
-    "browser.js"
-  ],
-  "gitHead": "6afb85f0c324b321f76a38df81891e562693e257",
-  "bugs": {
-    "url": "https://github.com/isaacs/minimatch/issues"
-  },
-  "homepage": "https://github.com/isaacs/minimatch#readme",
-  "_id": "[email protected]",
-  "_shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7",
-  "_from": "minimatch@^2.0.1",
-  "_npmVersion": "3.1.0",
-  "_nodeVersion": "2.2.1",
-  "_npmUser": {
-    "name": "isaacs",
-    "email": "[email protected]"
-  },
+  "directories": {},
   "dist": {
     "shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7",
     "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz"
   },
+  "engines": {
+    "node": "*"
+  },
+  "files": [
+    "browser.js",
+    "minimatch.js"
+  ],
+  "gitHead": "6afb85f0c324b321f76a38df81891e562693e257",
+  "homepage": "https://github.com/isaacs/minimatch#readme",
+  "license": "ISC",
+  "main": "minimatch.js",
   "maintainers": [
     {
       "name": "isaacs",
       "email": "[email protected]"
     }
   ],
-  "directories": {},
-  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
-  "readme": "ERROR: No README data found!"
+  "name": "minimatch",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/minimatch.git"
+  },
+  "scripts": {
+    "posttest": "standard minimatch.js test/*.js",
+    "prepublish": "browserify -o browser.js -e minimatch.js -s minimatch --bare",
+    "test": "tap test/*.js"
+  },
+  "version": "2.0.10"
 }

+ 97 - 0
Build/node_modules/findup-sync/node_modules/glob/package.json

@@ -0,0 +1,97 @@
+{
+  "_args": [
+    [
+      "glob@~4.3.0",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/findup-sync"
+    ]
+  ],
+  "_from": "glob@>=4.3.0 <4.4.0",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/findup-sync/glob",
+  "_nodeVersion": "0.10.35",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "isaacs"
+  },
+  "_npmVersion": "2.2.0",
+  "_phantomChildren": {},
+  "_requested": {
+    "name": "glob",
+    "raw": "glob@~4.3.0",
+    "rawSpec": "~4.3.0",
+    "scope": null,
+    "spec": ">=4.3.0 <4.4.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/findup-sync"
+  ],
+  "_resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz",
+  "_shasum": "80fbb08ca540f238acce5d11d1e9bc41e75173d3",
+  "_shrinkwrap": null,
+  "_spec": "glob@~4.3.0",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/findup-sync",
+  "author": {
+    "email": "[email protected]",
+    "name": "Isaac Z. Schlueter",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/node-glob/issues"
+  },
+  "dependencies": {
+    "inflight": "^1.0.4",
+    "inherits": "2",
+    "minimatch": "^2.0.1",
+    "once": "^1.3.0"
+  },
+  "description": "a little globber",
+  "devDependencies": {
+    "mkdirp": "0",
+    "rimraf": "^2.2.8",
+    "tap": "^0.5.0",
+    "tick": "0.0.6"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "80fbb08ca540f238acce5d11d1e9bc41e75173d3",
+    "tarball": "http://registry.npmjs.org/glob/-/glob-4.3.5.tgz"
+  },
+  "engines": {
+    "node": "*"
+  },
+  "files": [
+    "common.js",
+    "glob.js",
+    "sync.js"
+  ],
+  "gitHead": "9de4cb6bfeb9c8458cf188fe91447b99bf8f3cfd",
+  "homepage": "https://github.com/isaacs/node-glob",
+  "license": "ISC",
+  "main": "glob.js",
+  "maintainers": [
+    {
+      "name": "isaacs",
+      "email": "[email protected]"
+    }
+  ],
+  "name": "glob",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/node-glob.git"
+  },
+  "scripts": {
+    "bench": "bash benchmark.sh",
+    "benchclean": "bash benchclean.sh",
+    "prepublish": "npm run benchclean",
+    "prof": "bash prof.sh && cat profile.txt",
+    "profclean": "rm -f v8.log profile.txt",
+    "test": "npm run profclean && tap test/*.js",
+    "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js"
+  },
+  "version": "4.3.5"
+}

+ 409 - 0
Build/node_modules/findup-sync/node_modules/glob/sync.js

@@ -0,0 +1,409 @@
+module.exports = globSync
+globSync.GlobSync = GlobSync
+
+var fs = require('fs')
+var minimatch = require('minimatch')
+var Minimatch = minimatch.Minimatch
+var Glob = require('./glob.js').Glob
+var util = require('util')
+var path = require('path')
+var assert = require('assert')
+var common = require('./common.js')
+var alphasort = common.alphasort
+var alphasorti = common.alphasorti
+var isAbsolute = common.isAbsolute
+var setopts = common.setopts
+var ownProp = common.ownProp
+
+function globSync (pattern, options) {
+  if (typeof options === 'function' || arguments.length === 3)
+    throw new TypeError('callback provided to sync glob')
+
+  return new GlobSync(pattern, options).found
+}
+
+function GlobSync (pattern, options) {
+  if (!pattern)
+    throw new Error('must provide pattern')
+
+  if (typeof options === 'function' || arguments.length === 3)
+    throw new TypeError('callback provided to sync glob')
+
+  if (!(this instanceof GlobSync))
+    return new GlobSync(pattern, options)
+
+  setopts(this, pattern, options)
+
+  if (this.noprocess)
+    return this
+
+  var n = this.minimatch.set.length
+  this.matches = new Array(n)
+  for (var i = 0; i < n; i ++) {
+    this._process(this.minimatch.set[i], i, false)
+  }
+  this._finish()
+}
+
+GlobSync.prototype._finish = function () {
+  assert(this instanceof GlobSync)
+  common.finish(this)
+}
+
+
+GlobSync.prototype._process = function (pattern, index, inGlobStar) {
+  assert(this instanceof GlobSync)
+
+  // Get the first [n] parts of pattern that are all strings.
+  var n = 0
+  while (typeof pattern[n] === 'string') {
+    n ++
+  }
+  // now n is the index of the first one that is *not* a string.
+
+  // See if there's anything else
+  var prefix
+  switch (n) {
+    // if not, then this is rather simple
+    case pattern.length:
+      this._processSimple(pattern.join('/'), index)
+      return
+
+    case 0:
+      // pattern *starts* with some non-trivial item.
+      // going to readdir(cwd), but not include the prefix in matches.
+      prefix = null
+      break
+
+    default:
+      // pattern has some string bits in the front.
+      // whatever it starts with, whether that's 'absolute' like /foo/bar,
+      // or 'relative' like '../baz'
+      prefix = pattern.slice(0, n).join('/')
+      break
+  }
+
+  var remain = pattern.slice(n)
+
+  // get the list of entries.
+  var read
+  if (prefix === null)
+    read = '.'
+  else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
+    if (!prefix || !isAbsolute(prefix))
+      prefix = '/' + prefix
+    read = prefix
+  } else
+    read = prefix
+
+  var abs = this._makeAbs(read)
+
+  var isGlobStar = remain[0] === minimatch.GLOBSTAR
+  if (isGlobStar)
+    this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)
+  else
+    this._processReaddir(prefix, read, abs, remain, index, inGlobStar)
+}
+
+GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
+  var entries = this._readdir(abs, inGlobStar)
+
+  // if the abs isn't a dir, then nothing can match!
+  if (!entries)
+    return
+
+  // It will only match dot entries if it starts with a dot, or if
+  // dot is set.  Stuff like @(.foo|.bar) isn't allowed.
+  var pn = remain[0]
+  var negate = !!this.minimatch.negate
+  var rawGlob = pn._glob
+  var dotOk = this.dot || rawGlob.charAt(0) === '.'
+
+  var matchedEntries = []
+  for (var i = 0; i < entries.length; i++) {
+    var e = entries[i]
+    if (e.charAt(0) !== '.' || dotOk) {
+      var m
+      if (negate && !prefix) {
+        m = !e.match(pn)
+      } else {
+        m = e.match(pn)
+      }
+      if (m)
+        matchedEntries.push(e)
+    }
+  }
+
+  var len = matchedEntries.length
+  // If there are no matched entries, then nothing matches.
+  if (len === 0)
+    return
+
+  // if this is the last remaining pattern bit, then no need for
+  // an additional stat *unless* the user has specified mark or
+  // stat explicitly.  We know they exist, since readdir returned
+  // them.
+
+  if (remain.length === 1 && !this.mark && !this.stat) {
+    if (!this.matches[index])
+      this.matches[index] = Object.create(null)
+
+    for (var i = 0; i < len; i ++) {
+      var e = matchedEntries[i]
+      if (prefix) {
+        if (prefix.slice(-1) !== '/')
+          e = prefix + '/' + e
+        else
+          e = prefix + e
+      }
+
+      if (e.charAt(0) === '/' && !this.nomount) {
+        e = path.join(this.root, e)
+      }
+      this.matches[index][e] = true
+    }
+    // This was the last one, and no stats were needed
+    return
+  }
+
+  // now test all matched entries as stand-ins for that part
+  // of the pattern.
+  remain.shift()
+  for (var i = 0; i < len; i ++) {
+    var e = matchedEntries[i]
+    var newPattern
+    if (prefix)
+      newPattern = [prefix, e]
+    else
+      newPattern = [e]
+    this._process(newPattern.concat(remain), index, inGlobStar)
+  }
+}
+
+
+GlobSync.prototype._emitMatch = function (index, e) {
+  if (!this.matches[index][e]) {
+    if (this.nodir) {
+      var c = this.cache[this._makeAbs(e)]
+      if (c === 'DIR' || Array.isArray(c))
+        return
+    }
+
+    this.matches[index][e] = true
+    if (this.stat || this.mark)
+      this._stat(this._makeAbs(e))
+  }
+}
+
+
+GlobSync.prototype._readdirInGlobStar = function (abs) {
+  var entries
+  var lstat
+  var stat
+  try {
+    lstat = fs.lstatSync(abs)
+  } catch (er) {
+    // lstat failed, doesn't exist
+    return null
+  }
+
+  var isSym = lstat.isSymbolicLink()
+  this.symlinks[abs] = isSym
+
+  // If it's not a symlink or a dir, then it's definitely a regular file.
+  // don't bother doing a readdir in that case.
+  if (!isSym && !lstat.isDirectory())
+    this.cache[abs] = 'FILE'
+  else
+    entries = this._readdir(abs, false)
+
+  return entries
+}
+
+GlobSync.prototype._readdir = function (abs, inGlobStar) {
+  var entries
+
+  if (inGlobStar && !ownProp(this.symlinks, abs))
+    return this._readdirInGlobStar(abs)
+
+  if (ownProp(this.cache, abs)) {
+    var c = this.cache[abs]
+    if (!c || c === 'FILE')
+      return null
+
+    if (Array.isArray(c))
+      return c
+  }
+
+  try {
+    return this._readdirEntries(abs, fs.readdirSync(abs))
+  } catch (er) {
+    this._readdirError(abs, er)
+    return null
+  }
+}
+
+GlobSync.prototype._readdirEntries = function (abs, entries) {
+  // if we haven't asked to stat everything, then just
+  // assume that everything in there exists, so we can avoid
+  // having to stat it a second time.
+  if (!this.mark && !this.stat) {
+    for (var i = 0; i < entries.length; i ++) {
+      var e = entries[i]
+      if (abs === '/')
+        e = abs + e
+      else
+        e = abs + '/' + e
+      this.cache[e] = true
+    }
+  }
+
+  this.cache[abs] = entries
+
+  // mark and cache dir-ness
+  return entries
+}
+
+GlobSync.prototype._readdirError = function (f, er) {
+  // handle errors, and cache the information
+  switch (er.code) {
+    case 'ENOTDIR': // totally normal. means it *does* exist.
+      this.cache[f] = 'FILE'
+      break
+
+    case 'ENOENT': // not terribly unusual
+    case 'ELOOP':
+    case 'ENAMETOOLONG':
+    case 'UNKNOWN':
+      this.cache[f] = false
+      break
+
+    default: // some unusual error.  Treat as failure.
+      this.cache[f] = false
+      if (this.strict) throw er
+      if (!this.silent) console.error('glob error', er)
+      break
+  }
+}
+
+GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
+
+  var entries = this._readdir(abs, inGlobStar)
+
+  // no entries means not a dir, so it can never have matches
+  // foo.txt/** doesn't match foo.txt
+  if (!entries)
+    return
+
+  // test without the globstar, and with every child both below
+  // and replacing the globstar.
+  var remainWithoutGlobStar = remain.slice(1)
+  var gspref = prefix ? [ prefix ] : []
+  var noGlobStar = gspref.concat(remainWithoutGlobStar)
+
+  // the noGlobStar pattern exits the inGlobStar state
+  this._process(noGlobStar, index, false)
+
+  var len = entries.length
+  var isSym = this.symlinks[abs]
+
+  // If it's a symlink, and we're in a globstar, then stop
+  if (isSym && inGlobStar)
+    return
+
+  for (var i = 0; i < len; i++) {
+    var e = entries[i]
+    if (e.charAt(0) === '.' && !this.dot)
+      continue
+
+    // these two cases enter the inGlobStar state
+    var instead = gspref.concat(entries[i], remainWithoutGlobStar)
+    this._process(instead, index, true)
+
+    var below = gspref.concat(entries[i], remain)
+    this._process(below, index, true)
+  }
+}
+
+GlobSync.prototype._processSimple = function (prefix, index) {
+  // XXX review this.  Shouldn't it be doing the mounting etc
+  // before doing stat?  kinda weird?
+  var exists = this._stat(prefix)
+
+  if (!this.matches[index])
+    this.matches[index] = Object.create(null)
+
+  // If it doesn't exist, then just mark the lack of results
+  if (!exists)
+    return
+
+  if (prefix && isAbsolute(prefix) && !this.nomount) {
+    var trail = /[\/\\]$/.test(prefix)
+    if (prefix.charAt(0) === '/') {
+      prefix = path.join(this.root, prefix)
+    } else {
+      prefix = path.resolve(this.root, prefix)
+      if (trail)
+        prefix += '/'
+    }
+  }
+
+  if (process.platform === 'win32')
+    prefix = prefix.replace(/\\/g, '/')
+
+  // Mark this as a match
+  this.matches[index][prefix] = true
+}
+
+// Returns either 'DIR', 'FILE', or false
+GlobSync.prototype._stat = function (f) {
+  var abs = f
+  if (f.charAt(0) === '/')
+    abs = path.join(this.root, f)
+  else if (this.changedCwd)
+    abs = path.resolve(this.cwd, f)
+
+
+  if (f.length > this.maxLength)
+    return false
+
+  if (!this.stat && ownProp(this.cache, f)) {
+    var c = this.cache[f]
+
+    if (Array.isArray(c))
+      c = 'DIR'
+
+    // It exists, but not how we need it
+    if (abs.slice(-1) === '/' && c !== 'DIR')
+      return false
+
+    return c
+  }
+
+  var exists
+  var stat = this.statCache[abs]
+  if (!stat) {
+    try {
+      stat = fs.statSync(abs)
+    } catch (er) {
+      return false
+    }
+  }
+
+  this.statCache[abs] = stat
+
+  if (abs.slice(-1) === '/' && !stat.isDirectory())
+    return false
+
+  var c = stat.isDirectory() ? 'DIR' : 'FILE'
+  this.cache[f] = this.cache[f] || c
+  return c
+}
+
+GlobSync.prototype._mark = function (p) {
+  return common.mark(this, p)
+}
+
+GlobSync.prototype._makeAbs = function (f) {
+  return common.makeAbs(this, f)
+}

+ 99 - 0
Build/node_modules/findup-sync/package.json

@@ -0,0 +1,99 @@
+{
+  "_args": [
+    [
+      "findup-sync@~0.2.1",
+      "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/tslint"
+    ]
+  ],
+  "_from": "findup-sync@>=0.2.1 <0.3.0",
+  "_id": "[email protected]",
+  "_inCache": true,
+  "_installable": true,
+  "_location": "/findup-sync",
+  "_npmUser": {
+    "email": "[email protected]",
+    "name": "tkellen"
+  },
+  "_npmVersion": "2.0.0",
+  "_phantomChildren": {
+    "inflight": "1.0.4",
+    "inherits": "2.0.1",
+    "minimatch": "2.0.10",
+    "once": "1.3.3"
+  },
+  "_requested": {
+    "name": "findup-sync",
+    "raw": "findup-sync@~0.2.1",
+    "rawSpec": "~0.2.1",
+    "scope": null,
+    "spec": ">=0.2.1 <0.3.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/tslint"
+  ],
+  "_resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.2.1.tgz",
+  "_shasum": "e0a90a450075c49466ee513732057514b81e878c",
+  "_shrinkwrap": null,
+  "_spec": "findup-sync@~0.2.1",
+  "_where": "/Users/shaddockh/Development/AtomicProjects/AtomicGameEngineFork/AtomicGameEngine/Build/node_modules/tslint",
+  "author": {
+    "name": "\"Cowboy\" Ben Alman",
+    "url": "http://benalman.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/cowboy/node-findup-sync/issues"
+  },
+  "dependencies": {
+    "glob": "~4.3.0"
+  },
+  "description": "Find the first file matching a given pattern in the current directory or the nearest ancestor directory.",
+  "devDependencies": {
+    "grunt": "~0.4.4",
+    "grunt-contrib-jshint": "~0.9.2",
+    "grunt-contrib-nodeunit": "~0.3.3"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "e0a90a450075c49466ee513732057514b81e878c",
+    "tarball": "http://registry.npmjs.org/findup-sync/-/findup-sync-0.2.1.tgz"
+  },
+  "engines": {
+    "node": ">= 0.6.0"
+  },
+  "gitHead": "c392a8a921d4d2655b4fe17e3d1a2f4ced14f858",
+  "homepage": "https://github.com/cowboy/node-findup-sync",
+  "keywords": [
+    "file",
+    "find",
+    "glob"
+  ],
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://github.com/cowboy/node-findup-sync/blob/master/LICENSE-MIT"
+    }
+  ],
+  "main": "lib/findup-sync",
+  "maintainers": [
+    {
+      "name": "cowboy",
+      "email": "[email protected]"
+    },
+    {
+      "name": "tkellen",
+      "email": "[email protected]"
+    }
+  ],
+  "name": "findup-sync",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/cowboy/node-findup-sync.git"
+  },
+  "scripts": {
+    "test": "grunt nodeunit"
+  },
+  "version": "0.2.1"
+}

Some files were not shown because too many files changed in this diff